Как делать спаун

Deazer

Head Developer
Staff member
Как делать Спаун и Сохранение точек спауна
Специфика нашего сервера состоит в том что у нас все данные о местоположении NPC находятся в XML формате.

1. Месторасположения данных: gameserver\data\spawn
2. Вам необходимо создать файл к примеру 96_96.xml с следующим содержимым. По сути мы создали пустой файл без спауна.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE list SYSTEM "spawn.dtd">
<list>
</list>


3. Теперь переходим к генерации местоположения НПЦ (spawn).
Для Администратора доступны такие команды как:
3.1. //spawn_pos npc_id - генерирует одиночный спаун. Предназначен к спауну НЕ мобов,а телепортеров и т.д.
После чего нам в логи сервера генерируется вот такие данные
<spawn name="[custom_spawn]">
<npc id="40010" count="1" respawn="60" pos="82520 149192 -3472 57343" />
</spawn>


3.2. //spawn_loc (радиус)300 (npc_id)40010 .
Спаун локации (в основном используется что бы быстро заселить локацию) - т.е. мы строим квадрат за счет длинны ребра.
Так же в 1 квадрат мы можем добавлять множество НПЦ
Мы получаем вот такие данные
<spawn name="[custom_spawn]">
<mesh>
<vertex x="82306" y="149106" minz="-3472" maxz="-3344" />
<vertex x="82606" y="149106" minz="-3472" maxz="-3344" />
<vertex x="82606" y="149406" minz="-3472" maxz="-3344" />
<vertex x="82306" y="149406" minz="-3472" maxz="-3344" />
</mesh>
<npc id="40010" count="1" respawn="60" />
<npc id="40011" count="1" respawn="60" />
<npc id="40012" count="1" respawn="60" />
</spawn>

На выходе мы вставляем данные в наш файл 96_96.xml и в нем мы имеем по факту.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE list SYSTEM "spawn.dtd">
<list>
<spawn name="[custom_spawn]">
<npc id="40010" count="1" respawn="60" pos="82520 149192 -3472 57343" />
</spawn>
<spawn name="[custom_spawn]">
<mesh>
<vertex x="82306" y="149106" minz="-3472" maxz="-3344" />
<vertex x="82606" y="149106" minz="-3472" maxz="-3344" />
<vertex x="82606" y="149406" minz="-3472" maxz="-3344" />
<vertex x="82306" y="149406" minz="-3472" maxz="-3344" />
</mesh>
<npc id="40010" count="1" respawn="60" />
</spawn>
</list>

Теперь переходим к значению строк:
npc id="40010" - ID НПЦ которого мы хотим отспаунить
count="1" - Количество Мобов или НПЦ которых нам нужно заспаунить в данном квадрате.
Очень удобно если нам необходимо быстро заселить целую локацию. Указываем нужное нам количество НПЦ
respawn="60" - Время через которое НПЦ появиться после смерти.
name="" - Вообще все равно, можете указать любой вам удобный. Можете просто пользоваться [custom_spawn]
 
Last edited:
А можно обычным методом спавнить? У меня исчезают монстры после рестарта, которых спавнил командой //spawn id
Если первым способом, то только нпц можно, а вторым только в квадрате, а если прямоугольник надо?
 
А можно обычным методом спавнить? У меня исчезают монстры после рестарта, которых спавнил командой //spawn id
Если первым способом, то только нпц можно, а вторым только в квадрате, а если прямоугольник надо?
2 типа спауна, точечный и локационный. В первом варианте 1 точка, в другом полигональная - т.е. минимум 3 точки
 
Такой вопрос, в папке spawn есть файлы разделенные на квадраты со спавном мобов, например 2415 кетра. через шифт клик смотрю маркер мобов которых хочу убрать, нахожу в файле, удаляю например.
Code:
<spawn name="[godard12_2415_02]">
        <mesh>    <!-- [godard12_2415_02]    {{136676;-88396;-4492;-3492};{139764;-88056;-4492;-3492};{140164;-86940;-4492;-3492};{139372;-86212;-4492;-3492};{135484;-85736;-4492;-3492};{135576;-87860;-4492;-3492}} -->
            <vertex x="136676" y="-88396" minz="-4492" maxz="-3492" />
            <vertex x="139764" y="-88056" minz="-4492" maxz="-3492" />
            <vertex x="140164" y="-86940" minz="-4492" maxz="-3492" />
            <vertex x="139372" y="-86212" minz="-4492" maxz="-3492" />
            <vertex x="135484" y="-85736" minz="-4492" maxz="-3492" />
            <vertex x="135576" y="-87860" minz="-4492" maxz="-3492" />
        </mesh>
        <npc id="21324" count="8" respawn="120" respawn_rand="80" />    <!-- [ketra_orc_footman]    pos=anywhere    total=8    respawn=120sec    respawn_rand=80sec -->
        <npc id="21325" count="8" respawn="120" respawn_rand="80" />    <!-- [ketra_war_hound]    pos=anywhere    total=8    respawn=120sec    respawn_rand=80sec -->
        <npc id="21326" count="8" respawn="120" respawn_rand="80" />    <!-- [grazing_kukaburo]    pos=anywhere    total=8    respawn=120sec    respawn_rand=80sec -->
        <npc id="21343" count="2" respawn="100" respawn_rand="30" />    <!-- [ketra_orc_legatus]    pos=anywhere    total=2    respawn=100sec    respawn_rand=30sec    Privates=[ketra_elite_guard:ketra_elite_guard:1:0sec;ketra_elite_guard:ketra_elite_guard:1:0sec] -->
    </spawn>

потом делаю ребут сервера, захожу, а мобы на месте... как их убрать?
 
Такой вопрос, в папке spawn есть файлы разделенные на квадраты со спавном мобов, например 2415 кетра. через шифт клик смотрю маркер мобов которых хочу убрать, нахожу в файле, удаляю например.
Code:
<spawn name="[godard12_2415_02]">
        <mesh>    <!-- [godard12_2415_02]    {{136676;-88396;-4492;-3492};{139764;-88056;-4492;-3492};{140164;-86940;-4492;-3492};{139372;-86212;-4492;-3492};{135484;-85736;-4492;-3492};{135576;-87860;-4492;-3492}} -->
            <vertex x="136676" y="-88396" minz="-4492" maxz="-3492" />
            <vertex x="139764" y="-88056" minz="-4492" maxz="-3492" />
            <vertex x="140164" y="-86940" minz="-4492" maxz="-3492" />
            <vertex x="139372" y="-86212" minz="-4492" maxz="-3492" />
            <vertex x="135484" y="-85736" minz="-4492" maxz="-3492" />
            <vertex x="135576" y="-87860" minz="-4492" maxz="-3492" />
        </mesh>
        <npc id="21324" count="8" respawn="120" respawn_rand="80" />    <!-- [ketra_orc_footman]    pos=anywhere    total=8    respawn=120sec    respawn_rand=80sec -->
        <npc id="21325" count="8" respawn="120" respawn_rand="80" />    <!-- [ketra_war_hound]    pos=anywhere    total=8    respawn=120sec    respawn_rand=80sec -->
        <npc id="21326" count="8" respawn="120" respawn_rand="80" />    <!-- [grazing_kukaburo]    pos=anywhere    total=8    respawn=120sec    respawn_rand=80sec -->
        <npc id="21343" count="2" respawn="100" respawn_rand="30" />    <!-- [ketra_orc_legatus]    pos=anywhere    total=2    respawn=100sec    respawn_rand=30sec    Privates=[ketra_elite_guard:ketra_elite_guard:1:0sec;ketra_elite_guard:ketra_elite_guard:1:0sec] -->
    </spawn>

потом делаю ребут сервера, захожу, а мобы на месте... как их убрать?
хм, помог shutdown, рестарта ему не хватало...
 
ну ты уж совсем за дурака не считай ))
Ну других вариантов нет. При рестарте сервера по новой парсятся xml файлы спавна и по этим данным сравняться мобы . Сервер не может взять какие то данные из другова места. Это просто не возможно.
 
Back
Top