Добыча — руда с точек карты, очистка руды в ресурсы у NPC и перенос ресурсов в сумку. Сами виды руды, ресурсов, батарей и автошахт — предметные таблицы (OreItem, ResourceItem, BatteryItem, UNmannedminer, категория «Предметы»); здесь описана таблица очистки Script\OreCutting.dat.
Как работает
Точки добычи — пустышки карты *0dr (зоны с разной скоростью), *1dr (30 с), *2dr (вручную не добываются). Клиент отправляет серверу индекс точки из своего Map.edf, поэтому список точек в клиенте собирается из тех же пустышек в том же порядке.
Инструмент — оружие с m_nType = 10; батарея — заряд в секундах добычи; строки 6–9 BatteryItem — батареи автошахт, ручная добыча их не принимает (проверка по номеру строки).
Очистка (OreCutting): для каждой руды сервер собирает все строки с её кодом (до 100), находит ресурс по коду и складывает веса. Бросок — число 0…2³¹; берётся первая строка, у которой накопленная сумма больше броска. Вес — доля в 2³¹; вес 0 не выпадает; если сумма меньше 2³¹, остаток достаётся последней строке руды.
OreItem: строки одного цвета идут подряд в порядке +3, +2, +1, начиная с номера, кратного 3, иначе ручная добыча даёт руду соседнего цвета. m_dwOreProbability — не шанс добычи, а порог события «золотых коробок».
Что важно при правке
Коды руды и ресурса должны существовать; сумма весов — около 2³¹ (0x7FFF8000), недобор — предупреждение.
m_nmin_C_random ≤ m_nmax_C_random; 0/0 — руда не очищается, но деньги за очистку берутся.
Файлы категории
1 в реестре
Файл
Сторона
Формат
Уровень
Корпуса
Запись
Свод
Примечание
script\OreCutting.dat
сервер
dat
готов к полному
AoP ✓, GU ✓, Sirin ✓
AoP 136, GU 136, Sirin 136
mining.md
mining.md §1.2
«готов к полному» — формат разобран и поля описаны; «производный» — файл собирается из другого; «непрозрачный» — формат известен не до конца; «отложен» и «вне рамок» — файл студией не редактируется.
Используемые параметры
Поля, которые читает сервер, клиент или которые собираются из других файлов. Описание говорит, что поле значит и как оно действует; под ним — где это установлено.
script\OreCutting.datсерверный файл
Всего 4Известно 4Производное 0Не используется 0
Схема
Scripts\strs AOP\OreCutting.strs
Уровень реестра
готов к полному
Свод
mining.md §1.2
Смещ.
Поле
Что это и как действует
Куда идёт в клиент
Читает сервер
Роль
Статус
Данные
+0x000
m_dwIndex
номер строки
mining.md §1.2
—
—
—
известно
685 знач.; чаще 0 (0%)
+0x004
m_strCode
код руды; сервер перебирает все строки с этим кодом (не обязательно подряд)
mining.md §1.2
—
—
—
известно
20 знач.; чаще ioblu03 (6%)
+0x044
m_strResource_Item
код ресурса; должен существовать
mining.md §1.2, §8
—
—
—
известно
74 знач.; чаще irhst05 (3%)
+0x084
m_nCutting_probability
Доля строки = вес / 2³¹; каждый ресурс — отдельный бросок. Вес 0 — не выпадает. До 100 строк на руду
mining.md §3.4 (строка свода)
—
—
—
известно
21 знач.; чаще 644235 (20%)
Неиспользуемые параметры
В этой категории нет неиспользуемых параметров: все поля читает сервер, клиент или сборка.