КРУПНЕЙШЕЕ СООБЩЕСТВО LINEAGE 2 НА РУССКОМТВОЁ СООБЩЕСТВО LINEAGE 2

  • +10 000 ИГРОКОВ
  • ПРОВЕРЕННЫЕ СЕРВЕРА
  • ЕЖЕДНЕВНОЕ ОБНОВЛЕНИЕ
ВЫБЕРИ СВОЁ СЛЕДУЮЩЕЕ ПРИКЛЮЧЕНИЕ
ИССЛЕДУЙ L2CALENDAR

Что вы ищете?

Поиск по разделам сайта.

ТОП СЕРВЕРА

Лучшие сервера Lineage 2.

Блог

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

Влог

Видео, осады, PvP и моменты сообщества.

Ссылки

Клиенты, загрузки и ресурсы для Lineage 2.

Стримеры

Стримы сообщества.

Рекрутинг

Рекрутинг кланов и конст-пати (КП).

Купить VIP (АВТО)

Страница покупки VIP-размещения.

Добавить сервер (Бесплатно)

Добавьте свой сервер в календарь.

Продлить VIP время

Продлите VIP-размещение.

Найдено разделов: 9.

Спавн NPC в Lineage 2: как добавлять, исправлять и удалять спавны

L2Calendar Team5 мин чтения
Спавн NPC в Lineage 2: практический гайд для владельцев

Редактирование спавна NPC в Lineage 2 кажется простой задачей, пока поставленный вами NPC не исчезает после рестарта, а удалённый стражник наутро снова не стоит в городе. Почти всегда проблема в двух вещах: вы не знаете, какая админ-команда делает спавн постоянным, или правите не то хранилище. В этом гайде разберём оба момента для эмуляторов семейства L2J. Команды и пути к файлам меняются от сборки к сборке, поэтому прежде чем доверять любому названию отсюда, сверьтесь с исходниками своего пака.

Где ваш эмулятор хранит спавны

Прежде чем что-то трогать в игре, выясните, что сервер читает при запуске. Решает это не хроника, а ветка эмулятора.

  • Классический L2J (спавны в SQL). Спавны лежат в двух таблицах базы данных: spawnlist и custom_spawnlist. Каждая строка содержит count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay. Строки в кастомной таблице могут использовать те же ID, что и в стандартной.
  • L2J Mobius и более новые ветки (спавны в XML). Спавны хранятся в XML-файлах в dist/game/data/spawns/<Region>/ и проверяются по схеме xsd/spawns.xsd.
  • Другие форки (aCis и подобные). У них своя структура. Откройте загрузчик спавнов в исходниках и проследите, какие файлы он разбирает, вместо того чтобы гадать.

Запись спавна в стиле Mobius выглядит так (пример из диффа 2022 года, эпохи Fafurion, так что ваша схема может немного отличаться):

<list>
  <spawn name="BalthusKnights">
    <group>
      <npc id="34359" x="190569" y="168057" z="-11228" heading="29292" respawnTime="60sec" />
    </group>
  </spawn>
</list>
ХранилищеГдеПереживёт обновление датапака?
spawnlist (SQL)Игровая база данныхНет. Обновления её перезаписывают.
custom_spawnlist (SQL)Игровая база данныхДа. Обновления её не трогают.
XML-файлы спавновdata/spawns/<Region>/Только если вы отслеживаете свои правки (отдельный файл или своя ветка в git)
Спавн NPC в Lineage 2: практический гайд для владельцев
Lineage II © NCSOFT

Добавление NPC в игре: //spawn или //spawn_once

На L2J Server (датапак High Five) расстановкой занимается AdminSpawn.java. Базовый синтаксис:

//spawn <id> [count] [respawnTime]

Порядок аргументов важен. Время респавна читается только если указано и количество, поэтому //spawn 20001 60 означает не «респавн каждые 60», а 60 мобов. Пишите //spawn 20001 1 60.

Варианты команды отличаются тем, насколько спавн постоянный:

  1. //spawn и //spawn_monster добавляют спавн как постоянный, то есть он должен вернуться после рестарта.
  2. //spawn_once добавляет непостоянный спавн и отключает его респавн. Убили его, и он больше не появится. Подходит для ивент-боссов, тестовых мобов и разовых GM-шоу.
  3. Всё, что заспавнено, пока вы находитесь в инстансе, всегда непостоянно, какой бы командой вы ни пользовались. Если новый NPC пропал, проверьте, не стояли ли вы в инстансе, когда его ставили.

Тот же обработчик регистрирует //show_spawns, //list_spawns, //list_positions, //unspawnall, //respawnall, //spawnday и //spawnnight. Перед расстановкой запустите //list_spawns: так вы увидите, что уже стоит на месте, и не поставите второго NPC поверх первого.

Совет: встаньте ровно туда, где должен стоять NPC, и повернитесь в нужную сторону, прежде чем вводить команду. Большинство криво поставленных NPC появляется, когда координаты потом перебивают вручную.

Таймеры респавна и дневные или ночные спавны

Респавн задаётся задержкой и необязательным случайным разбросом. В SQL-структуре это respawn_delay и respawn_random. В XML у Mobius это атрибут respawnTime с единицей измерения, например respawnTime="60sec".

Два правила, которые стоит запомнить (по документации менеджера спавнов на базе Mobius):

  • Респавн включается, только если задержка больше 0. Задержка 0 означает, что после смерти NPC не вернётся.
  • Если минимальная и максимальная задержка различаются, сервер выбирает случайное значение между ними. Именно этот разброс не даёт кемперам выставлять таймер на моба до секунды.

Для NPC, которые появляются только ночью или только днём, в SQL-версиях L2J используйте periodOfDay: 0 означает всегда, 1 только днём, 2 только ночью. Команды //spawnday и //spawnnight названы в честь этих дневных и ночных наборов спавнов. Прежде чем полагаться на них при тестах, проверьте, что именно они делают в вашей сборке.

Спавн NPC в Lineage 2: практический гайд для владельцев (2)
Lineage II © NCSOFT

Удаление NPC, которые возвращаются

Возьмите NPC в таргет и введите //delete. На L2J Server AdminDelete.java удаляет живой экземпляр, вызывает stopRespawn() и убирает спавн из SpawnTable, а если это рейд-босс, то из RaidBossSpawnManager.

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

  1. Перед удалением запишите ID NPC и примерные координаты (поможет //list_spawns).
  2. Найдите соответствующую строку в spawnlist или custom_spawnlist либо строку <npc> в XML-файле региона.
  3. Удалите её там, затем перезапустите сервер или перезагрузите спавны.
  4. Если запись была в spawnlist, зафиксируйте изменение. Следующее обновление датапака может вернуть её обратно.

Перезагрузка после правки: что применяется на лету

На этом спотыкаются многие. На L2J Server //reload npc перезагружает шаблоны NPC через NpcData.load(). Позиции спавнов она не перезагружает, а типа spawn у //reload вообще нет. Среди поддерживаемых типов: config, npc, quest, htm, multisell, buylist, skill, item, door, zone и effect.

Для спавнов есть отдельная команда //spawn_reload. Примерное правило:

  • Изменили шаблон NPC: //reload npc (и //reload htm, если правили его HTML-страницы).
  • Изменили строки или файлы спавнов: //spawn_reload.
  • Поменяли много всего сразу на живом сервере: делайте это в техработы и перезапускайте сервер. Массовая перезагрузка при игроках онлайн легко оборачивается задвоенными мобами, которых потом приходится чистить вручную.

Безопасный порядок работы со спавнами

  1. Перед каждой сессией правок делайте бэкап таблиц спавнов или папки data/spawns.
  2. Своих NPC держите в custom_spawnlist или в отдельном собственном XML-файле, а не вписывайте прямо в стандартные файлы.
  3. Ставьте NPC в игре через //spawn, проверьте респавн, убив его, затем перезапустите тестовый сервер и убедитесь, что спавн сохранился.
  4. Ведите журнал добавленных и удалённых ID и координат, чтобы повторить правки после обновления эмулятора.

Когда мир вычищен, а кастомные NPC работают стабильно, игрокам всё ещё нужно найти ваш сервер. Добавьте сервер в L2Calendar бесплатно, чтобы он появился в календаре открытий. Если хотите больше внимания в неделю запуска, VIP-размещение поднимет его выше в списках.

Частые вопросы

Чем //spawn отличается от //spawn_once?
На L2J Server //spawn (и //spawn_monster) добавляет спавн как постоянный. //spawn_once добавляет непостоянный спавн и отключает его респавн, так что после смерти NPC больше не появится. Всё, что GM заспавнил, находясь в инстансе, всегда непостоянно.
Что править: spawnlist или custom_spawnlist?
В L2J на SQL своих NPC добавляйте в custom_spawnlist. Обновления датапака эту таблицу не трогают, а spawnlist при обновлении может быть перезаписана. Ветки на XML, такие как L2J Mobius, хранят спавны в файлах в data/spawns, поэтому держите свои добавления в отдельном собственном файле и отслеживайте правки.
Почему NPC, удалённый через //delete, вернулся после рестарта?
//delete удаляет живого NPC, останавливает его респавн и убирает его из таблицы спавнов в памяти, но запись в хранилище, в зависимости от сборки, может уцелеть. Найдите соответствующую строку в spawnlist или custom_spawnlist либо строку npc в XML-файле спавнов и удалите её там.
Применяет ли //reload npc изменения спавнов?
Нет. На L2J Server //reload npc перезагружает шаблоны NPC через NpcData.load(), а типа spawn у //reload нет. Для изменений спавнов используйте отдельную команду //spawn_reload, а при крупных правках перезапускайте сервер во время техработ.

Топ Приватные Серверы Lineage 2 и Список Открытий

L2Calendar — ведущий топ-лист и календарь приватных серверов легендарной MMORPG Lineage II. Ищете ли вы серверы L2 Interlude, новые запуски High Five или Classic — наша платформа отслеживает все топ приватные серверы в одном месте.

Будьте в курсе лучших топ серверов Lineage 2. Наш календарь показывает предстоящие открытия, рейты серверов от крафта до массового PvP, хроники и время запуска. Больше не пропустите открытие топ сервера L2 — сохраняйте L2Calendar в закладки.

Ищете идеальный L2 сервер? Просмотрите наш полный список топ приватных серверов Lineage 2, открывающихся в 2025/2026. От лоу-рейт крафт серверов до хай-рейт PvP — найдите своё следующее приключение в Lineage II здесь.