Перейти к публикации
Планета Deus Ex

MVV

Invisible Hand
  • Публикации

    361
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем MVV

  1. bHasIt всё-же нужно сохранять, ведь это признак того, есть у игрока какое-то приращение или нет.

    Но ведь отсутствие флага или 0 в качестве уровня приращения однозначно говорит о том, установлено ли у игрока это приращение. Тут сложность при создании экземпляров класса Augmentation при загрузке игры или смене локации?

     

    О-па, в AugmentationManager.uc уже даже есть уже перечисление классов приращений, лучше тогда эти индексы использовать. Хм, и они хранят приращения игрока в виде односвязного списка, причём next засунули в само приращение... В общем, по идее надо в этот менеджер добавить функцию воссоздания приращений из флагов.

     

     

    А как работает взятие предмета в руки? Разве нельзя имитировать это взятие при смене локации?

  2. Ок, тогда пусть лучше идентификаторы приращений будут однобайтные:

    AugSpeed = 0x00
    AugTarget = 0x01
    AugCloak = 0x02
    AugBallistic = 0x03
    AugRadarTrans = 0x04
    AugShield = 0x05
    AugEnviro = 0x06
    AugEMP = 0x07
    AugCombat = 0x08
    AugHealing = 0x09
    AugStealth = 0x0A
    AugIFF = 0x0B
    AugLight = 0x0C
    AugMuscle = 0x0D
    AugVision = 0x0E
    AugDrone = 0x0F
    AugDefense = 0x10
    AugAqualung = 0x11
    AugDatalink = 0x12
    AugHeartLung = 0x13
    AugPower = 0x14
    AugNone = 0xFF (если надо сослаться на отсутствие приращения)
    В слотах приращений можно хранить эти идентификаторы. Признаки активности и уровни можно уже связывать с конкретными приращениями, банально их можно хранить в виде массивов, индексы в котором будут эти самые идентификаторы. Ну а для экспериментирования - можно банально во флагах AugLightActive, AugLightLevel, ... Или для каждого приращения во флаге уместить и уровень, и активность, и номер ячейки в теле: flag = (augId << 24) + (augCellIndex << 16) + (level << 8) + (isActive). Тогда извлекаем значение флага AugLight в переменную flag, ((flag >> 16) & 0xFF) - индекс ячейки, ((flag >> 8) & 0xFF) - уровень, (flag & 0xFF) - активность. И на каждое приращение понадобится только по одному флагу.

    Флаг возможности усиления синтетическим сердцем, как было сказано - константный параметр самого приращения, можно возвращать методом класса приращения, его нет смысла хранить отдельно. При особом желании можно в константном массиве какого-нибудь класса хранить эти флаги.

     

    Номер клавиши вообще не вижу смысла связывать с приращениями. Или вы имеете в виду номер ячейки, которой можно управлять командой ActivateAugmentation? Тогда для этого надо просто глобально хранить массив идентификаторов приращений, и по идентификатору обращаться к слоту и переключать состояние... Ну или если во флагах, то во флаге AugSlot12 хранить значение AugLight, и то при условии, что нигде в User.ini эта привязка не задаётся, т.к. тогда её надо читать оттуда, а не сохранять с игрой.

  3. Для каждой ячейки аугментаций, насколько я понимаю, вполне достаточно целого числа, надо лишь хранить номер приращения и уровень:

     

    AugNone = 0
    AugLight = 0x0100
    AugDefense = 0x0200
    AugMuscle = 0x0300
    AugRadarTrans = 0x0400
    AugDrone = 0x0500
    AugCombat = 0x0600
    AugAqualung = 0x0700
    AugSpeed = 0x0800
    AugBallistic = 0x0900
    AugCloak = 0x0A00
    AugDatalink = 0x0B00
    AugEMP = 0x0C00
    AugEnviro = 0x0D00
    AugIFF = 0x0E00
    AugShield = 0x0F00
    AugStealth = 0x1000
    AugTarget = 0x1100
    AugHeartLung = 0x1200
    AugPower = 0x1300
    AugHealing = 0x1400
    AugVision = 0x1500
    И значение в ячейке будет slot = augId + level, и обратно augId = slot & 0xFF00, level = slot & 0x00FF. Если это хранить во флагах, то на каждый слот надо по одному флагу (AugSlotCranial1, AugSlotEyes1, AugSlotArms1, AugSlotSubdermal1, AugSlotSubdermal2, ...), или те же самые слоты можно в виде полей структурки описать.
  4. Теперь навыки сохраняются после перехода на другую карту :D Вот и пригодились флаги Int ))

    Попробую сделать также с аугментациями.

    Интересное решение. Но вообще наверное описание состояния игрока (здоровья, навыков, приращений) можно структурку в DeusExGlobals поместить, которую при сохранении помещать в SaveInfo, а при загрузке - обратно в DeusExGlobals. А что-то сложное (цели, заметки, карты, инвентарь) - в нативный объект в GameManager.
  5. Если скорость сделать повыше, может и ничего будет смотреться, если, скажем, секунды за пол будет всё описание рисоваться (можно опцию сделать, когда нечего делать будет). Но вообще оно не так и нужно.

  6. Собственно, в окне сохранения уже есть шум, когда скриншот не загружен, и он тоже вполне неплох:

    dxsg.jpg

    Кстати, заметил " to slot" в заголовках окон загрузки/сохранения - по-моему, лучше без них: "Load Game", "Save Game".

  7. Я про эти пробелы писал ещё давным давно, теперь и мой глаз они не режут:)

     

    Play a Mod... - тоже надо с большой.

     

    И для заголовка окна лучше шрифт HarRierC, который не полужирный, он практически на 100% подходит:

    dxmenufont.gif

  8. Смотрю на меню, что-то не то, проверил - да, так и есть, в оригинальной игре в английском меню на кнопках каждое слово кроме предлогов с большой буквы: New Game, Play Intro, ...

     

    Ещё в заголовках окон надо шрифт раздобыть, как в оригинале.

  9. Я обычно таскал арбалет, дубинку, шокер, обрез, штурмовую, снайперку, ракетницу, гранаты, мультитулы и отмычки - итого остается 1 свободная ячейка для флакончика Амброзии:) Но когда захотелось ещё и Зуб Дракона носить, пришлось от штурмовой избавиться (остальное бросать хотелось меньше), а жалко, т.к. у неё есть подствольник.

  10. Насчёт размера инвентаря - можно дополнительный навык сделать для увеличения, можно энергонезависимое приращение (типа, прокачка ног для увеличения подъёмной силы), можно просто на легком уровне делать инвентарь больше:)

  11. Технически можно создать TTF-шрифты с глифами из DeusEx и потом их загружать, тогда будут и Юникод, и ностальгия:)

    И вроде как можно в пределах процесса просто подгружать шрифт в памяти без установки, если делать это из модуля (проверить надо).

  12. Основа вполне повторяющаяся, просто полосатый фон (64х64 без лишних деталей можно прямо с этой картинки взять), плюс "дорожки" и светлые пятна там, где располагаются "дорожки" и элементы управления. Но они в любом случае понадобятся, только когда диалог будет завершён.

  13. Прикол как раз в том, что в GMDX я даже до ворот замка дойти не успевал, террористы с территории замка видели солдат снаружи и лезли на рожон - и неважно, с какого входа заходишь, в любой момент они могли выйти к Аннушке на верную смерть.

     

    А в оригинальном деусе мог зайти с любого входа и выполнить задание, не попавшись никому на глаза, или же мог всех повырубать, и штурмом это не было... И заходить со стороны замка круче - отмычку тратить не надо:)

  14. Во второй миссии вообще не помню, проверяется ли, убиты террористы или без сознания. Ты их вырубал или мимо проскальзывал везде?

     

    И вообще, описанный баг влияет только в случае, когда сохранение от русской игры открываешь в английской, если играть только ту или только другую, он не должен влиять.

  15. Сделаем:) однако более правильным будет отображать дату и время не папки сохранения, а главного файла сохранения, т.к. дата папки меняется при добавлении/удалении файлов в ней.

  16. О проблеме сообщили в 2016 году, а последняя версия инсталлятора вышла... Выводы?:)

    Вообще, полагаю, проблема не сильно многих касается, т.к. вряд ли много кто играет в обе версии (русскую и английскую). А исправить проблему легко - убрать строчку msgNotDead= из DeusEx.rut в текстовом редакторе.

×
×
  • Создать...