MOD / Lua API

Руководство по созданию MOD и Lua API

Узнайте, как создать MOD, писать конфигурационные скрипты на Lua, настраивать параметры существ и понимать правила приоритета и песочницы.

01

1. Быстрый старт

1.1 Создайте папку MOD

Создайте новую папку в каталоге игры Mods/. Имя папки станет именем вашего MOD:

ПлатформаПуть к каталогу Mods
WindowsGameDirectory/MesozoicDawn_Data/StreamingAssets/Mods/
Сервер LinuxGameDirectory/MesozoicDawn_Data/StreamingAssets/Mods/
AndroidInternalStorage/Android/data/com.../files/Mods/
iOSAppSandbox/Documents/Mods/
Mods/
└── MyFirstMod/          ← Корневая папка вашего MOD
    ├── mod.json         ← Манифест MOD (рекомендуется)
    └── CharacterAsset/  ← Размещайте Lua-скрипты здесь
        └── allo.txt     ← Конфигурация аллозавра

1.2 Создайте mod.json (рекомендуется)

{
  "Name": "MyFirstMod",
  "Author": "Ваше имя",
  "Version": "1.0",
  "SupportedVersion": "0.6.*",
  "Priority": 0,
  "Description": "Мой первый MOD"
}

1.3 Напишите свой первый Lua-скрипт

Поместите следующий код в CharacterAsset/allo.txt:

-- Настройка здоровья и урона аллозавра
CharacterAsset = {
    race    = "allo",       -- Тег расы (должен совпадать с существующей расой в игре)
    health  = 30000.0,       -- Очки здоровья
    damage  = 350.0,         -- Базовый урон
    speed   = 30.0,          -- Скорость передвижения (км/ч)
}

1.4 Включение MOD в игре

  1. Запустите игру и откройте Управление MOD на экране входа.
  2. Нажмите Load MOD, чтобы просканировать локальные MOD.
  3. Найдите свой MOD и нажмите Enable.
  4. Нажмите Save, чтобы выйти из менеджера MOD.
  5. Подключитесь к серверу, и изменённые значения вступят в силу сразу же.
02

2. Изменение параметров существа

Конфигурация параметров существа позволяет изменять характеристики существ. Все поддерживаемые поля должны быть указаны в таблице CharacterAsset Lua-скрипта. Любое пропущенное поле сохранит исходное значение игры.

Базовые и категориальные настройки

ПолеОписание
raceОбязательно. Тег расы, которую нужно изменить.
nameОтображаемое имя существа.
volumeКлассификация размера существа от 0 до 5.
habitТип среды обитания от 0 до 5 (0 = наземный, 1 = околоводный, 3 = водный...).
typeКатегория существа от 0 до 5 (0 = хищник, 1 = травоядный...).

Параметры выживания и боя

ПолеОписание
healthМаксимальный предел здоровья.
staminaМаксимальный запас выносливости. Когда он исчерпан, спринт и тяжёлые атаки недоступны.
hunger / waterМаксимальные запасы голода и воды.
attack / defendБазовый наносимый урон и базовая защита корпуса.
pen / tenУровень пробития атаки и уровень защитной стойкости.
03

3. Изменение навыков и хитбоксов

3.1 Шаблон настройки навыка

CharacterSkill = {
    bite = {
        Race        = "allo",   -- Обязательный тег расы
        AttackName  = "Укус",   -- Название атаки
        AttackOrder = 1,         -- Индекс порядка атаки
        AttackType  = 0,         -- 0 = пасть, 1 = хвост, 2 = топот
        DamageMode  = 0,         -- 0 = одиночная цель, 1 = AOE
        AttackRange = 1.5,       -- Радиус столкновения (метры)
        Modify      = 1.5,       -- Множитель урона
    }
}

3.2 Переопределение хитбокса

Используйте CharacterHitGroup, чтобы изменить уязвимость головы аллозавра:

CharacterHitGroup = {
    head = {
        Race              = "allo",
        PartType          = 0,     -- 0 = голова
        PenetrationRate   = 0.6,   -- Множитель пробития брони
        DamageMultiplier  = 1.5,   -- Множитель входящего урона
    }
}
04

4. Дополнительно: окружение и управление

Механизм приоритета

Когда несколько MOD изменяют одно и то же поле одной и той же расы, большее значение Priority выполняется позже и поэтому побеждает. Значение по умолчанию равно 0.

Безопасность песочницы Lua

  • os, io: системные команды и файловый ввод-вывод заблокированы.
  • dofile, package: запуск произвольных локальных файлов и внешних динамических библиотек заблокирован.

Управление сервером

Администраторы могут использовать /modReload для перезагрузки числовых значений, навыков и настроек скинов из текущих файлов MOD. Добавление новых рас всё ещё требует перезапуска.