Название Neora было дано из Neo (новый) и Ra (от rarara.dll), это по сути проект состоящий из DLL-аддона для движка PDK, который нынче куда популярнее чистого старого dll на оригинал из-за своих крайне продвинутых фич типа поддержки png, загрузки перед боем и т.д.. Но чего-то от dll нам всё-таки не хватает. А я недавно сел заниматься модами. И мне приспичило. Такая история :) Neora - Гибрид Alkarter's Exe и Silva's and folks DLL
Эта основа для мода совместима с уже существующими модами наPDK 1.2+, однако начиная сNeora 2.00+некоторые атрибуты и тэги изменены или переименованы, поэтому если вы сидите не на старой версии - потребуется сделать несколько замен текста в коде.
- Добавлен State 3xxyzzz для остановки времени —— xx - вероятность Time Stop —— zzz - время Time Stop —— y - тип тайм-стопа: ————— 0 - останавливает ВСЁ, кроме атакующего ————— 1 - останавливает ВСЁ, кроме персонажей и объектов с командой атакующего ————— 2 - останавливает ВСЕ объекты, кроме персонажей
- Добавлен State 2xxxyyy, где ХХХ - число маны, которое вы собираетесь отнять. Если маны хватает переход происходит согласно "Next:". Если же маны не хватает, происходит переход в YYY.
- Добавлены статусы управлением направления взгляда объекта: ————— Статус 30 - объект разворачивается строго влево ————— Статус 31 - объект разворачивается строго вправо
- Добавлен Статус 9ххх. При срабатывании атакующего ITR на цель, этот атакующий объект совершит переход в кадр ХХХ, где ХХХ может быть от 0 до 799 (значение не больше лимита кадров). Создано для валидации каких-либо действий у персонажа.
Bodies:
- Переработан алгоритм "bdy: 1xxx", теперь заложники берут команду того, кто их освободил! А также функция теперь может быть использована не только с Criminal.dat (ID 300). Кроме того тело теперь позволяет отправлять в кадр 0.
- Добавлена функция "bdy: 2xxx", которая работает точно так же, как и 1xxx. Без Тряски.
- Добавлена функция "bdy: 3xxx", которая работает точно так же, как и 1xxx, но также позволяет использовать даже команде врагов (Team 5), и активировать объект-заложник снарядами.
- Добавлена функция "bdy: 4xxx", которая работает точно так же, как и 3xxx. Без Тряски.
- Добавлено Bdy 50, где персонаж, получающий урон, не перейдет в болевые кадры и его приемы не будут прерваны.
- Добавлен комплексный аналог тела с переходом "bdy: 1xxyyyzzzw", где: ~~~ XX - вероятность срабатывания в %, 0 = 100% ————— YYY - кадр, куда должена будет перейти Цель, (800~999) - перехода не будет ————— ZZZ - кадр, куда должен будет перейти Атакующий, (800~999) - перехода не будет ————— W - дополнительный эффект от срабатывания: —————————— Без тряски: —————————— 0 ~ ничего не происходит —————————— 1 ~ Цель получит команду —————————— 2 ~ Цель получит урон —————————— 3 ~ Цель получит урон и команду Атакующего —————————— С тряской: —————————— 4 ~ ничего не происходит + тряска —————————— 5 ~ Цель получит команду Атакующего + тряска —————————— 6 ~ Цель получит урон Атакующего + тряска —————————— 7 ~ Цель получит урон и команду Атакующего + тряска
- Добавлен Body Kind 1XXYYYZ: ————— XX - % вероятности срабатывания (0 = 100%) ————— YYY - % возвращаемого урона атакующему ————— Z - тип возвращаемого урона (Тип урона, на данной стадии разработки эта переменная просто зарезервирована, поэтому используйте значение "0") (Броня персонажа действует ПЕРЕД данным "bdy", что означает, что пока броня не будет разбита, данное Тело не будет действовать. Действует только с Type-0 целью и атакующим)
- Добавлен "Itr\Kind: 1000" для мгновенных перемещений в координаты X, Y и Z Для перемещения используются атрибуты "x:", "y:" и "z:" внутри ITR. Укажите "Injury:", чтобы объект сменил свой кадр сразу после перехода в указанное место. Все 4 атрибута поддерживают значение "-1", означающее "пропустить параметр". Дополнительно ——— "dvx:" - требуемое число HP для перехода ——— "dvy:" - требуемое число MP для перехода (Здоровье и мана вычитаются только если оба параметра соответствует минимальным требованиям для переноса объекта)
Effects: ——— Effect 50, он не издает звуков, а так же не отправляет в болевые кадры персонажа. ——— Effect 1XXX - где атакующий теряет XXX здоровья, при срабатывании атаки. Может убить ——— Effect 2XXX - где атакующий восстанавливает XXX здоровья, при срабатывании атаки по type-0. Не превышает лимита ХП ——— Effect 3XXX - где атакующий восстанавливает XXX здоровья, при срабатывании атаки по любому type. Не превышает лимита ХП ——— Effect 4XXX - где атакующий теряет XXX маны, при срабатывании атаки ——— Effect 5XXX - где атакующий восстанавливает XXX маны, при срабатывании атаки по type-0 ——— Effect 6XXX - где атакующий восстанавливает XXX маны, при срабатывании атаки по любому type ——— Effect 7XXX, где XXX - количество маны, которое отнимет атака у жертвы ——— Effect 8XXX, где XXX - количество маны, которое отнимет атака у жертвы и отдаёт атакующему ——— Effect 9ХХХ, где ХХХ - кадр, куда будет отправлена жертва с Type-0.
Эффектам можно определить звук эффекта через тэг "sound: N", где N: ——— 0 - обычный звук удара ——— 1 - звук удара по блоку и броне Julian ——— 2 - звук удара сбивающего с ног \ звук сильного удара ——— 3 - удар по камню ——— 4 - удар по бейсбольной бите ——— 5 - звук шага \ приземления персонажа ——— 6 - звук падения тела на землю ——— 7 - звук Дэш прыжка ——— 8 - звук попадания t3 объекта во что-либо ——— 9 - звук разрушающегося камня ——— 10 - звук стрелы Генри попадающей в землю ——— 11 - заглушенный звук пронзания ——— 12 - звонкий звук пронзания ——— 13 - звук отбивания Мячика Битой ——— 14 - звук заморозки Льдом ——— 15 - звук разбивания Льда ——— 16 - звук поджигания ——— 17 - звук удара по броне Louis и Knight
Attributes:
Огромное количество новых атрибутов, которые прописываются между "bmp_begin" и "bmp_end": —— "start_hp:" - базовое значение здоровья на старте сражения
—— "start_hp_max:" - базовое значение максимального здоровье на старте сражения
—— "hp_regen:" - количество регенерируемого здоровья за раз. Можно выставлять отрицательные значения. У всех персонажей обычная регенерация равна 1, поэтому если написать "regen_hp: 3", вы получите 1+3 здоровья в регенерации, а "hp_regen: -1" отключит регенерацию вовсе.
—— "hp_regen_cd:" - время отката в Wait, прежде чем очередная порция "hp_regen" поступит в персонажа. Может быть использовано даже когда "regen_hp" не указан. У атрибута есть встроенный таймер в 11 тактов (от оригинального LF2), поэтому если вы хотите отключить задержку полностью, то введите -11, в сумме получится 0, то есть нулевая задержка. Значения ниже -11 не работают, так как задержка не может быть в сумме отрицательной.
—— "hp_dark_regen:" - количество регенерируемого темного здоровья за раз
—— "hp_dark_regen_cd:" - время отката в Wait, прежде чем очередная порция "hp_dark_regen" поступит в персонажа
—— "hp_limit:" - лимит здоровья, который ни при каких обстоятельствах не может быть превышен (хардкап)
—— "hp_regen_type:" - принцип работы регенерации здоровья. При "0" отрицательная регенерация может убить персонажа. При "1" регенерация не работает при здоровье ниже "hp_regen_min:" и выше "hp_regen_max" При "2" будет всё то же, что и при значении "1", но отрицательная регенерация не сможет убить персонажа.
—— "hp_regen_min:" - значение, ниже которого эффект регенерации перестает действовать
—— "hp_regen_max:" - значение, выше которого эффект регенерации перестает действовать
—— "hp_regen_hurt_cd:" - после получения урона персонаж не будет регенерировать указанное время.
—— "start_mp:" - базовое значение маны на старте сражения
—— "start_mp_max:" - базовое значение максимальной маны на старте сражения
—— "mp_regen:" - количество регенерируемой маны за раз, можно выставлять отрицательные значения. У всех персонажей обычная регенерация равна 1 (до +4 при низком здоровье).
—— "regen_mp_cd:" - время отката в Wait, прежде чем очередная порция "mp_regen" поступит в персонажа. Может быть использовано даже когда "mp_regen" не указан. У атрибута есть встроенный таймер в 2 такта (от оригинального LF2), поэтому если вы хотите отключить задержку полностью, то введите -2, в сумме получится 0, то есть нулевая задержка. Значения ниже -2 не работают, так как задержка не может быть в сумме отрицательной.
—— "mp_limit:" - лимит максимального запаса маны, который невозможно превысить
—— "mp_regen_type:" - принцип работы регенерации здоровья. При "0" мана может регенерироваться быстрее, если персонаж потерял часть здоровья. "mp_regen:" суммируется с обычным рассчетом количества регенерируемой маны от потерянного здоровья. При "1" мана регенерируется всегда фиксированное значение равное "mp_regen:".
—— "mp_regen_cap:" - при достижении указанного значения мана перестает регенерировать сама по себе. (Пример: персонаж способен восстановить сам только часть силы, а оставшуюся часть - только с помощью бутылочек). Тонкости механики: 1. Кап Регенерации так же ограничивает количество маны, которое будет у персонажа после перехода из одной стадии в другую. 2. Кап Регенерации НЕ сбросит ману вниз, если её уже больше, чем указано в ограничении регенерации, например бутылочками молока или пива.
—— "mp_regen_hurt_cd:" - после получения урона персонаж не будет регенерировать ману указанное время.
—— "mp_regen_on_hurt:" - количество MP, которое будет получать персонаж каждый раз, как получает урон ( за исключением падающих с неба ящиков xD )
// Надеюсь, что с новыми атрибутами по ресурсам Вас ничто не остановит сделать каждого персонажа уникальным!
—— "stat_#:" - кучка статов, от "stat_1:" до "stat_10:", которые можно добавлять персонажу. Они могут повысить урон персонажа в % от выбранного стата, то есть с относительным значением.
—— "resist_#:" - кучка статов-сопротивлений объекта тому или иному типу урона. Например, если персонажа атакуют с ITR внутри которого есть "dtype: 5", то против этого урона будет действовать "resist_5:", занижая урон или вовсе защищая от него. Если у персонажа накапливается сопротивление от 100% или больше - он перестает переходить в кадры ТБ.
—— "crit_chance:" - шанс нанести критический урон любой из атак. Значение складывается с "crit_chance:" из шапки персонажа\объекта
—— "crit_power:" - % от урона, который будет нанесен в случае срабатывания критического эффекта. Значение складывается с "crit_power:" из шапки персонажа\объекта.
- Новый атрибут "dtype:" определяющий тип урона, который сейчас наносит персонаж. Возможно значение от 0 до 7.
- Новый атрибут "scale_stat:" определяет источник для дополнительного урона. Можно указать значение от 0 до 7, оно будет считано из "stat_N", где N - указанное здесь число.
- Новый атрибут "scale_value:" - определяет значение в %, от значения статы, указанной в источнике "scale_stat".
Допустим Stat_1 персонажа равен 40. Тогда получим 40 * 200% = 80 урона. "scale_stat: 1" - считывает "Stat_1" из шапки персонажа. 100 + 80 урона = 180 урона будет нанесено. Допустим, что dtype: 0 или его отсутствие - это обычные физические атаки ЛФ2. А dtype: 1 - это огненные атаки. Допустим, что мы сделали атаку против Firen, у которого есть "resist_1: 50", то есть 50% сопротивления. Тогда он получит 180 - 50% = 90 урона в итоге.*)
// Если scale_stat указан не у персонажа, то значение будет браться у того, кто выпустил, создал или отбил этот снаряд, тем самым, проще говоря, наследуя значение у своего хозяина. Поэтому создавая прокачку для персонажа вы автоматически можете создавать эту прокачку и для его снарядов в нужных вам пропорциях!
- Добавлен новый атрибут "ohp:" (opoint health power), в котором можно указать здоровье призываемого персонажа или клона.
Stages: - Теперь рандом призыва можно использовать опционально. Используйте "x: 1xxxxx", где xxxxx - координата призыва. В этом случае призыв будет происходить без рандома. Пример: "x: 100300" призовет объект на координату 300 по Х, без рандомизации, а "x: 300" будет использовать рандом, как в оригинальном движке LF2.
- Теперь "act: zzz" может работать с type 0 \ 1 \ 2 \ 3 \ 4 \ 5 \ 6.
- Переработан атрибут "act:". Добавлен % вероятности перехода объекта в этот номер кадра. Используйте "act: xxxyyyzz", где ZZ - это шанс перехода в этот кадр, YYY - куда перейдет, если шанс сработал, и XXX - куда перейдет, если шанс НЕ сработал. Обычный "act: zzz" так же работает, если вам нужен безусловный переход.
F-keys: - Теперь можно включить работу F6, F7, F8, F9 клавиш для всех режимов или использовать шаблоны или выбрать какие клавиши в каких режимах вы желаете разрешить. Настраивается через DLL. - Теперь F7 снова может воскрешать персонажей после того, как раунд закончился, как было в LF 1.9. Включено по умолчанию. + нажатие теперь так же отменяет приближение появления таблички (бывалый баг в старых версиях LF2, бойцы живы после F7, но табличка уже не даст биться) - Переработан эффект F7 клавиши, теперь нажатие также снимает эффекты Яда, Замедления, Молчания и Конфуза, которые были введены в PDK - Переработан эффект F9 клавиши. Теперь клавиша не уничтожает t0 объекты в режимах отличных от VS Mode. Кроме того добавлены фильтры объектов по ID или Type, Специально для тех, кто использует объекты как ключевые элементы карт или стадий. Настраивается через DLL.
Other: - "hiden:" теперь вводится как "hidden:" - "confus:" теперь вводится как "confuse:" - "manacle:" теперь вводится как "silence:" - "delay:" теперь вводится как "slow:" - "respond:" заменен на "sound:" и используется для выбора звука "effect".
- Последняя версия PDK 1.2 со всеми функциями (ехе от Алькартера) - Изменен статус транформации, теперь он работает как обычный 8ххх, но без +140 кадров. Для ID вроде Бандита и других сделаны исключения, добавляющие им +140. - Вынесены ресурсы-картинки из EXE в папку \sprite\UI\ и в PNG формате. - Включена поддержка прозрачности в картинках меню и элементах интерфейса (RFace.png, *_s.bmp, FRAME.png, e.c.t.) - Добавлена функция перманентной валидации реплеев. Теперь игра любой реплей будет считать валидным, даже если он из устаревшей версии вашего мода! По умолчанию функция включена. - Исправлено отсутствие удвоенной регенерации MP у Julian и Firzen! - В комплекте движка есть правильные dat-файлы с верной бронёй Louis, Knight и Julian, соответствующие оригинальному LF2 - Исправлен баг от PDK с курсором, который пропадал после нажатия Start Game. - Возвращена возможность выбора команды в Стадиях, как было в ранних версиях LF2 :) Включено по умолчанию. - Переработана функция сложности для Battle Mode, теперь режим CRAZY! доступен и для него. Включено по умолчанию. - Изменен алгоритм регена маны, благодаря чему теперь увеличение регенерации маны действительно работает от недостающего количества здоровья. Теперь даже если у объекта 1 000 000 здоровья, он всё равно будет получать увеличение регенерации по достижению определенного % здоровья. В оригинале учет всегда велся относительно 500 здоровья, не учитывая какое было максимальное здоровье персонажа. - Добавлено замедление времени при нанесении добивающего удара по последней цели в матче. Включено по умолчанию. - Теперь можно сменить название окна игры. На странице DLL "lf2.asm" найдите переменную "GameName" и измените название на желаемое. - В углу экрана больше не отображается отладочная информация в виде "u0 d0 l0 r0" и т.д.
Tweaks:
- Переписан код для управления регенерациями Здоровья (HP) и Маны (MP) с привязкой к ID. Демонстрационно-увеличенные значения применены к ID 55.
- Настройка стартовых значений координат: ——— Возможность включить через DLL рандомный спавн команды игроков при игре в стадиях, как если бы это был VS режим. ——— Возможность установить точную точку спавна команды игроков в стадиях по X \ Z.
- Управление стартовыми значениями MP для разных режимов: ——— Возможность установить начальное значение MP для Игроков для разных режимов игры. (По умолчанию в VS режиме 200 mp, в Stage режиме 500 mp). Возможно выставлять значения для отдельных ID персонажей. ——— Возможность установить начальное значение MP для Компов для разных режимов игры. (По умолчанию в VS режиме 200 mp, в Stage режиме 500 mp). Возможно выставлять значения для отдельных ID персонажей.
- Добавлен код сброса координат фоновой картинки в меню выбора персонажа в 0.0, для активации убрать знаки комментариев ";" у процедуры "ResetCoord"
- Добавлена возможность включить "нейтральность" у всех игроков, которые проходят стадию, вместо первой команды. Все могут убить всех, THIS IS HARDCORE!!.
- Добавлена возможность использовать собствнные ХП-бары для персонажей. (Демонстрационную версию можете увидеть, поиграв за Julian)
- Не работают heavy_* атрибуты в шапке персонажей (отсутствие считывания атрибутов) Пост 1 - Порча работы модов софтом Dropbox v.3+ (природа бага неизвестна) - Странные прыжки с разворотом (отсутствие считывания изначального направления) Пост 1 - Невозможно сбросить прием нажатиями стрелок после падения (отсутствие считывания во время лежания) Пост 1 - Измененная регистрация нажатий (возможно не баг?) Пост 1 - Отсутствует AI для Julian (ID 52) и Justin
艾爾卡特 (Alkarter) - разработчик движка, который на LFF был именован как PDK Drakken - Создание DLL-прототипа с патчингом в реальном времени Lord Silva - модификация DLL под нужды LF2 Archer-Dante - адаптация DLL для работы в PDK и добавление новых функций Surik - информационная поддержка по разработке
Смотрю тут, у темы уже за 7к+ просмотров перевалило. Видимо тут не только внимание обращают, но ещё и как справочник используется активно темка. Я рад, что результаты дают о себе знать. Маленький вопрос: - Когда первый пост был закреплен - так было удобнее?
И ещё Не смотря на то, что есть желание самому всё перепробовать, я меньше многих на лфф эксперементировал с самим PDK, поэтому деталей, тонкостей и просто более "верных" переводов, чем на странице PDK, или нюансов - не знаю.
Буду очень благодарен, если кто-то сможет составить список функций на своём опыте, а не переводе. Так как мне в любом случае придется уделить этому время, если материала не будет, отнимая время из общего времени, которое можно было бы уделить развитию Неоры.
Если кто-то сможет с этим помочь и взять за это, то можно сообщить лично, или здесь.
Coding in Assembly requires a mix of: 80% of brain, passion, intuition, creativity 10% of programming skills 10% of tan levels in your blood.
Espada_55, перевод там не удобный совсем. И не полный. Поэтому и хочется сделать лучше Если возьмешься, то страница переводов будет новая открыта. Уже как для Неоры, и после завершения перевода всего что есть в PDK 1.2, страницы с обычным ПДК\ЛДК я удалю. Думаю это оченвидно, что они больше не будут никому нужны.
Coding in Assembly requires a mix of: 80% of brain, passion, intuition, creativity 10% of programming skills 10% of tan levels in your blood.
Archer, как уже говорил лично, мпоинт я переводил и тестировал. так что там с личным опытом. (за исключением части с машинным переводом) в дополнение к существующему про веапон_пис: Внимание! Это вставки в существующий текст, поэтому их сложно понять без существующего текста.
weapon_piece
Можно создавать неск. блоков weapon_piece, они будут работать framea: количество кадров для случайного создания осколка. 0 - параметр игнорируется. Итоговый диапазон кадров при framea != 0 : [act;act+framea-1], т.е. при framea: 1 эффект будет такой же, как при framea: 0 act: -"некое число" крашит игру. исключение -0: -0 = 0, поэтому такого эффекта нет (ну вот делать мне просто нехуй) amount: 0 создает один, а не ноль ----- как видно из примера можно не указывать oid. Если он не указан, то используется стандартный файл broken_weapon.dat
Я думал, ты в курсе этого. Ок, поясню в другой форме. Известно, что у персонажей есть такие параметры, как скорость ходьбы, скорость бега. Также у них есть отдельные параметры для скорости ходьбы и бега, когда персонаж держит тяжёлый предмет (камень/ящик/доспех).
Я заметил, что в игре на ПДК параметры heavy_ как бы игнорируются. Персонаж с тяжёлым предметом перемещается с той же скоростью, что и без предмета. Гифки в спойлерах ниже проиллюстрируют это явление.
Понимаю, что дело кроется в ПДК. Возможно ли это исправить? Если да, то это и есть моё пожелание :)
Шапку закрепил, дополнил разными красотами, и просто поправил ляпы оформления.
Записал пожелания и ссылки на них Так же завел графу "известных багов"
А раздел "шаблоны" разделил на "шаблоны" и "кастомизация". Во второй попадают вещи, которые настраивать в целом не нужно, а для использования достаточно убрать комментарии в DLL-проекте. В дальнейшем на раздел "Кастомизация планируется сделать большой упор". То есть по факту это фичи, которые стоит включать по желания каждую отдельно, а включение всего сразу просто приведет игру к крашу или хаосу. Это что-то вроде разных вещей по тонкой настройке игры.
И к проекту применена лицензия CC с BY SA NC Надеюсь на ваше понимание относительно данного решения.
В плане реализации новых идей для устаревшего движка вещь замечательная, но встрял на такой дурной дури. Что с айди делать в плане скрытых персов? Ставишь им привычные по движку LF2 айди скрытности и вроде всё ок- в выборе персонажей их нету. Но трансформации с их участием уже не работают, все функции движения выполняются, но заканчиваешь ты его тем же айди, без превращения.
Nairomi, не пойму, что тебе нужно, но в PDK есть параметр hiden: x, где x принимает значения 0,1,2. 0 - персонаж виден всегда, 1 - персонаж виден после ввода пароля, 2 - персонаж никогда не виден (тут есть баг - абсолютно скрытых персонажей можно выбрать через рандом)
Кстати. нашел интересную вещь, про которую вроде как не написано. facing поидее равен 0/1. но он влияет непосредственно на "поворот" камеры. Например, когда поворачиваешься слева направо, камера немного двигается вправо (если позволяет карта). Если смотреть вправо и поставить значение -1, то камера двинется еще правее. Если 2, то левее. таким образом можно делать новый способ катсцен. осталось запилить стейты или еще чего для этого. Воть.
Забыл сказать, если facing отличен от 0/1, то персонаж не отображается [ Маленький Фриз говорит: это сообщение было отредактировано!]