Скиллы, классовые скиллы, эффекты зелий и патронов
script\BulletItemEffect.dat, script\ClassSkill.dat …
Всего 54 Известно 53 Производное 0 Не используется 1Персонажи и существа
Пять таблиц эффектов, потолки мастерства, SkillForce.edf
Скиллы, форс, классовые скиллы и эффекты зелий и патронов — пять серверных таблиц с двумя схемами (Skill.dat, ClassSkill.dat, BulletItemEffect.dat, PotionItemEffect.dat по одной схеме и Force.dat по своей). Клиентские SkillForce.edf и NDSkillForce.edf выводятся из серверных: тот же порядок и число записей в каждом блоке, код — hex-число; правила преобразования проверены побайтно. Потолки мастерства — четыре таблицы *MasteryLimit.dat ↔ блок 5 Character.edf.
*MasteryLimit.dat по классу и уровню, в очках по формуле уровень ↔ очки.m_nAttackable ≠ 0, форму атаки 0–7, типы оружия в m_strFixWeapon и снаряд для оружия с патронами; атакующий форс применяется только с посохом.m_nTempEffectType (−1, 0–57, 70–75; иное роняет сервер), постоянный эффект и кого затрагивает m_nContAreaType (0, 1, 2, 3, 10; значения 2 и 3 работают как 0), аура — скилл вида 4 с радиусом m_nBonusDistance.BulletItemEffect с кодами 15 и 16 (иначе сервер не стартует), 17 — для мгновенного эффекта 46.Skill.dat.ForceItem.m_strForce_Codekey указывает на существующий код Force.dat; классовый скилл должен быть в списке класса нужного типа.Клиентский SkillForce.edf собирается из серверных Force.dat, Skill.dat, ClassSkill.dat, BulletItemEffect.dat, PotionItemEffect.dat генератором R&D\disasm\skillforce\gen.py; на паре AoP результат совпал побайтно (sfcheck.py, skills.md §17). Поэтому все поля клиентской записи — производные; байты, которые генератор не пишет, — константа 0.
| Файл | Сторона | Формат | Уровень | Корпуса | Запись | Свод | Примечание |
|---|---|---|---|---|---|---|---|
script\BulletItemEffect.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 1168, GU 1168, Sirin 1168 | skills.md, items.md | схема скиллов (Skill.strs); items.md §11.3, skills.md §9 |
script\ClassSkill.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 1168, GU 1168, Sirin 1168 | skills.md | skills.md §9–10 |
script\Force.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 1088, GU 1088, Sirin 1088 | skills.md | skills.md §9: своя схема, короче Skill на 0x50 |
script\PotionItemEffect.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 1168, GU 1168, Sirin 1168 | skills.md, items.md | схема скиллов (Skill.strs); items.md §11.3, skills.md §9 |
script\RangerMasteryLimit.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 232, GU 232, Sirin 232 | skills.md | skills.md §6.1–6.2 |
script\Skill.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 1168, GU 1168, Sirin 1168 | skills.md | skills.md §9–10 |
script\SpecialistMasteryLimit.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 232, GU 232, Sirin 232 | skills.md | skills.md §6.1–6.2 |
script\SpiritualistMasteryLimit.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 232, GU 232, Sirin 232 | skills.md | skills.md §6.1–6.2 |
script\WarriorMasteryLimit.dat | сервер | dat | готов к полному | AoP ✓, GU ✓, Sirin ✓ | AoP 232, GU 232, Sirin 232 | skills.md | skills.md §6.1–6.2 |
DataTable\<язык>\NDSkillForce.edf | клиент | edf | производный | AoP ✓ (en-ph, ru-ru), GU ✓ (en-gb, ru-ru), Sirin ✓ (en-gb, ru-ru) | AoP 5 секц.: 544×5, GU 5 секц.: 544×5, Sirin… | skills.md, localization.md | Производный из: названия и описания скиллов, форса, эффектов. skills.md §17 |
DataTable\SkillForce.edf | клиент | edf | производный | AoP ✓, GU ✓, Sirin ✓ | AoP 5 секц.: 1096/1120×4, GU 5 секц.: 1096/1… | skills.md, items.md | Производный из: Force.dat, Skill.dat, ClassSkill.dat, BulletItemEffect.dat, PotionItemEffect.dat. skills.md §17 |
«готов к полному» — формат разобран и поля описаны; «производный» — файл собирается из другого; «непрозрачный» — формат известен не до конца; «отложен» и «вне рамок» — файл студией не редактируется.
Файлы категории разбиты на группы; у каждой группы и подгруппы своя страница с полями только её файлов.
script\BulletItemEffect.dat, script\ClassSkill.dat …
Всего 54 Известно 53 Производное 0 Не используется 1script\RangerMasteryLimit.dat, script\SpecialistMasteryLimit.dat …
Всего 10 Известно 8 Производное 0 Не используется 2DataTable\<язык>\NDSkillForce.edf; DataTable\SkillForce.edf
Всего 110 Известно 0 Производное 110 Не используется 0Поля, которые не читает ни сервер, ни клиент. Для каждого — почему так решено и где это установлено. Редактор сохраняет их байты как есть.
script\BulletItemEffect.dat, script\ClassSkill.dat, script\PotionItemEffect.dat, script\Skill.dat серверный файл| Смещ. | Поле | Почему не используется | Данные |
|---|---|---|---|
+0x378 | m_nTempParamCode | не используется: сервер поле не читает; клиент получает как код блока мгновенного эффекта, но читателя кода нет; подсказка зелья с кодом 0/1/2 одинакова (игра, G110, 29.10.2026); сохранять как при импорте, для новых записей — 0 skills.md §17.3; game-checks.md G110 | 4 знач.; чаще -1 (87%) |
script\Force.dat серверный файл| Смещ. | Поле | Почему не используется | Данные |
|---|---|---|---|
+0x344 | m_nTempParamCode | не используется: сервер поле не читает; клиент получает как код блока мгновенного эффекта, но читателя кода нет; подсказка зелья с кодом 0/1/2 одинакова (игра, G110, 29.10.2026); сохранять как при импорте, для новых записей — 0 skills.md §17.3; game-checks.md G110 | 3 знач.; чаще -1 (92%) |
script\RangerMasteryLimit.dat, script\SpecialistMasteryLimit.dat, script\SpiritualistMasteryLimit.dat, script\WarriorMasteryLimit.dat серверный файл| Смещ. | Поле | Почему не используется | Данные |
|---|---|---|---|
+0x000 | m_dwIndex | не читается skills.md §6.1: свод — «0x00 | m_dwIndex | — | не читается»; в клиентский файл не идёт (блок 4 Character.edf сопоставлен полностью, skills.md §6.6) | 66 знач.; чаще 0 (2%) |
+0x004 | m_strCode | не читается (в AoP везде 0)skills.md §6.1: свод — «0x04 | m_strCode (64) | — | не читается (в AoP везде 0)»; в клиентский файл не идёт (блок 4 Character.edf сопоставлен полностью, skills.md §6.6) | всегда 0 |