Как создать зоны которые будут активироваться в зависимости от времени

Путь: gameserver\data\zone
Формат: XML, CronTab

И так начнем что же это такое! Данная система предназначена для реализации множества идей при реализации внутриигровых событий. Как пример в определенное время включается зона с флагом pvp или любым другим и спаунить мобов в этой зоне или же просто активировать зону. Так же как пример будет приведена более сложный ивент - отключить мирные зоны в Глудио и включение ПвП зон и заселение ее мобами на период активности данной зоны и делать при этом анонс запуска зоны и ее коллапсе. Простыми словами - активируем зону, спауним мобов по таймеру крона и так же с его помощью деактивировать зоны и спаун.

И так поехали с самого простого варианта:
В данном варианте мы активируем зону пвп зону баюма в 19:00 и выключаем ее в 20:00 при этом внутри зоны мы делаем спаун [cron_spawn] группы из data/spawn, так же делаем анонс о включении зоны и ее отключении. Теперь рассматриваем детально:
name="[baium_epic_fun]" - сама зона с которой мы работаем. ВАЖНО* имена зон не должны совпадать!
<set name="enabled" val="false" /> - в нашем примере зона выключена по умолчанию и включиться только по таймеру.
<set name="cronZoneEnablePattern" val="0 19 * * *" /> - параметр отвечает за активацию зоны в нужное нам время. Формат CronTab - как составить его https://crontab.guru/
<set name="cronZoneDisablePattern" val="0 20 * * *" /> - параметр отвечает за деактивацию зоны в нужное нам время. Формат CronTab - как составить его https://crontab.guru/
<set name="cronZoneEnableBroadcastSpawnEvent" val="[cron_spawn]" /> - Спаун лист который будет активирован при включении зоны event_name="[cron_spawn]" или любое другое название
<set name="cronZoneDisableBroadcastDespawnEvent" val="[cron_spawn]" /> - Спаун лист который будет деактивирован при включении зоны event_name="[cron_spawn]" или любое другое название
<set name="cronZoneEnableAnnounceCustomMessage" val="voicedcommandhandlers.Debug.Enabled" /> - Анонс который будет происходить при активации. Находиться в data/strings
<set name="cronZoneDisableAnnounceCustomMessage" val="voicedcommandhandlers.Debug.Disabled" /> - Анонс который будет происходить при деактивации. Находиться в data/strings
ВАЖНО* Та же не обязательно в зоне использовать все параметры, допустим вы не указываете анонс - его не будет. Допустим вы не указываете спаун в зоне - его не будет. Не обязательно это указывать, обязательными являются или cronZoneEnablePattern или cronZoneDisablePattern

XML:
    <zone name="[baium_epic_fun]" type="fun" >
        <set name="enabled" val="false" />
        <set name="cronZoneEnablePattern" val="0 19 * * *" />
        <set name="cronZoneDisablePattern" val="0 20 * * *" />
        <set name="cronZoneEnableBroadcastSpawnEvent" val="[cron_spawn]" />
        <set name="cronZoneDisableBroadcastDespawnEvent" val="[cron_spawn]" />
        <set name="cronZoneEnableAnnounceCustomMessage" val="voicedcommandhandlers.Debug.Enabled" />
        <set name="cronZoneDisableAnnounceCustomMessage" val="voicedcommandhandlers.Debug.Disabled" />
        <polygon>
            <coords loc="116616 17576 10032 10232" />
            <coords loc="117064 16552 10032 10232" />
            <coords loc="117032 15592 10032 10232" />
            <coords loc="116664 14632 10032 10232" />
            <coords loc="116024 14008 10032 10232" />
            <coords loc="115128 13640 10032 10232" />
            <coords loc="114136 13624 10032 10232" />
            <coords loc="113256 13992 10032 10232" />
            <coords loc="112568 14664 10032 10232" />
            <coords loc="112216 15592 10032 10232" />
            <coords loc="112216 16552 10032 10232" />
            <coords loc="112600 17432 10032 10232" />
            <coords loc="113288 18120 10032 10232" />
            <coords loc="114152 18472 10032 10232" />
            <coords loc="115144 18488 10032 10232" />
            <coords loc="116152 18024 10032 10232" />
        </polygon>
    </zone>

Сам пример спауна:

XML:
<spawn name="[custom_spawn]" event_name="[cron_spawn]">
    <npc id="20001" count="1" respawn="60" pos="114856 16616 10080 38521" />
    <npc id="20001" count="1" respawn="60" pos="114636 16443 10080 40014" />
    <npc id="20001" count="1" respawn="60" pos="114504 16168 10080 46038" />
    <npc id="20001" count="1" respawn="60" pos="114520 16040 10080 50449" />
    <npc id="20001" count="1" respawn="60" pos="114616 15944 10080 3355" />
    <npc id="20001" count="1" respawn="60" pos="114877 16012 10080 1875" />
    <npc id="20001" count="1" respawn="60" pos="115024 16105 10080 7805" />
    <npc id="20001" count="1" respawn="60" pos="115278 16421 10080 5636" />
    <npc id="20001" count="1" respawn="60" pos="115416 16200 10080 46871" />
    <npc id="20001" count="1" respawn="60" pos="115328 16074 10080 40959" />
</spawn>


2) Теперь рассматриваем более сложный вариант, пристегните ремни. Мы делаем полную деактивацию мирных зон в городе Глудио, делаем ее ПвП зоной, деспауним мирных НПЦ и спауним Мобов. Потом включаем мирную зону, отключаем мобов и спауним мирных НПЦ.
И все это будет начинаться в 16:00 и заканчиваться в 16:30.

В городе Глудио есть 2 зоны которые расчерчивают ее [guldiocastle_town_peace1] и [guldiocastle_town_peace2] и так мы их отключаем на период нашего ивента и выключаем по истечению
<set name="cronZoneDisablePattern" val="0 16 * * *" /> - выключаем мирную зоны [guldiocastle_town_peace1] и [guldiocastle_town_peace2]
<set name="cronZoneEnablePattern" val="31 16 * * *" /> - включаем мирную зоны [guldiocastle_town_peace1] и [guldiocastle_town_peace2]
Деспауним всех мирных НПЦ - и тут начинаются пируэты, нам необходимо собрать всех мирных НПЦ в одну группу и назначим ей в спауне event_name="[gludio_peace_npc]"
По окончанию анонсируем о том что ивент закончился - в data/strings добавляем строку zone_gludio_pvp.Disable=Город Глудо стал мирным!

Пример:
XML:
<zone name="[guldiocastle_town_peace1]" type="peace_zone" >
        <set name="cronZoneDisablePattern" val="0 16 * * *" />
        <set name="cronZoneEnablePattern" val="31 16 * * *" />
        <set name="cronZoneDisableBroadcastDespawnEvent" val="[gludio_peace_npc]" />
        <set name="cronZoneDisableAnnounceCustomMessage" val="zone_gludio_pvp.Disable" />
        <polygon>
            <coords loc="-11998 123905 -3245 -2745" />
            <coords loc="-12880 126192 -3245 -2745" />
            <coords loc="-13928 126485 -3245 -2745" />
            <coords loc="-14408 126484 -3245 -2745" />
            <coords loc="-15239 126174 -3245 -2745" />
            <coords loc="-16120 125367 -3245 -2745" />
            <coords loc="-16551 124468 -3245 -2745" />
            <coords loc="-16550 123911 -3245 -2745" />
            <coords loc="-16509 123323 -3245 -2745" />
            <coords loc="-14638 122381 -3245 -2745" />
            <coords loc="-12022 122270 -3245 -2745" />
        </polygon>
    </zone>
    <zone name="[guldiocastle_town_peace2]" type="peace_zone" >
        <set name="cronZoneDisablePattern" val="0 16 * * *" />
        <set name="cronZoneEnablePattern" val="30 16 * * *" />
        <polygon>
            <coords loc="-14956 121115 -3156 -2656" />
            <coords loc="-12670 121093 -3156 -2656" />
            <coords loc="-12021 121755 -3156 -2656" />
            <coords loc="-12019 123005 -3156 -2656" />
            <coords loc="-15400 123009 -3156 -2656" />
        </polygon>
    </zone>

Теперь нам нужно активировать ПвП зону вместо выключенных мирных зон:
<set name="cronZoneEnablePattern" val="1 16 * * *" /> - включаем пвп зоны [guldiocastle_town_pvp1] и [guldiocastle_town_pvp2]
<set name="cronZoneEnablePattern" val="31 16 * * *" /> - включаем мирную зоны [guldiocastle_town_pvp1] и [guldiocastle_town_pvp2]
Спауним всех мобов - создаем свою группу с мобами спауне event_name="[gludio_pvp_mobs]"
Аннонсируем о том что ивент начался - в data/strings добавляем строку zone_gludio_pvp.Enable=Город Глудо стал не безопасным! Сразитесь с монстрами и игроками за награду

XML:
<zone name="[guldiocastle_town_pvp1]" type="battle_zone" >
        <set name="cronZoneEnablePattern" val="1 16 * * *" />
        <set name="cronZoneDisablePattern" val="30 16 * * *" />
        <set name="cronZoneEnableBroadcastSpawnEvent" val="[gludio_pvp_mobs]" />
        <set name="cronZoneEnableAnnounceCustomMessage" val="zone_gludio_pvp.Enable" />
        <polygon>
            <coords loc="-11998 123905 -3245 -2745" />
            <coords loc="-12880 126192 -3245 -2745" />
            <coords loc="-13928 126485 -3245 -2745" />
            <coords loc="-14408 126484 -3245 -2745" />
            <coords loc="-15239 126174 -3245 -2745" />
            <coords loc="-16120 125367 -3245 -2745" />
            <coords loc="-16551 124468 -3245 -2745" />
            <coords loc="-16550 123911 -3245 -2745" />
            <coords loc="-16509 123323 -3245 -2745" />
            <coords loc="-14638 122381 -3245 -2745" />
            <coords loc="-12022 122270 -3245 -2745" />
        </polygon>
    </zone>
    <zone name="[guldiocastle_town_pvp2]" type="battle_zone" >
        <set name="cronZoneEnablePattern" val="1 16 * * *" />
        <set name="cronZoneDisablePattern" val="30 16 * * *" />
        <polygon>
            <coords loc="-14956 121115 -3156 -2656" />
            <coords loc="-12670 121093 -3156 -2656" />
            <coords loc="-12021 121755 -3156 -2656" />
            <coords loc="-12019 123005 -3156 -2656" />
            <coords loc="-15400 123009 -3156 -2656" />
        </polygon>
    </zone>


Теперь весь набор параметров:

"cronZoneEnablePattern" - когда будет включена зона по крону. Пример <set name="cronZoneEnablePattern" val="0 18 * * *" />
"cronZoneEnableBroadcastSpawnEvent" - какой ивент спаунить при активации <set name="cronZoneEnableBroadcastSpawnEvent" val="[gludio_peace_npc]" />
"cronZoneEnableBroadcastDespawnEvent" - какой ивент деспаунить при активации <set name="cronZoneEnableBroadcastSpawnEvent" val="[gludio_pvp_mobs]" />
"cronZoneEnableAnnounceCustomMessage" - что мы анонсируем при включении зоны <set name="cronZoneEnableAnnounceCustomMessage" val="zone_gludio_pvp.Enable" />

"cronZoneDisablePattern" - когда будет выключена зона по крону. Пример <set name="cronZoneEnablePattern" val="0 19 * * *" />
"cronZoneDisableBroadcastSpawnEvent" - какой ивент деспаунить при отключении зоны <set name="cronZoneEnableBroadcastSpawnEvent" val="[gludio_peace_npc]" />
"cronZoneDisableBroadcastDespawnEvent"" - какой ивент деспаунить отключении зоны <set name="cronZoneEnableBroadcastSpawnEvent" val="[gludio_pvp_mobs]" />
"cronZoneDisableAnnounceCustomMessage" " - что мы анонсируем отключении зоны <set name="cronZoneEnableAnnounceCustomMessage" val="zone_gludio_pvp.Disable" />

Вся система ограничена только лишь вашей фантазии, при помощи данного инструмента вы можете делать любые игровые ивенты, активировать зоны и спаун, ротировать зоны по своему и все что вам прийдет на ум.
 
Last edited:
Могу ли я как-то добавить появления НПС-а в то время когда активируеться фарм зона ? и по его окончанию он пропадет , и зона закроеться...
yes you can. Look again the tutorial.
 
voicedcommandhandlers.Debug.Enabled=Debug mode enabled.
я могу войс команды сам дописывать ? или они привязаны к чему-то ?
Наприм. :
voicedcommandhandlers.Event.Enabled=Фарм зона блабла бла бла активирована
voicedcommandhandlers.Event.Disabled= Фарм зона закрыта блаб лаб ла бла бла
мне просто надо свои, а их надо 4 шт. на вкл\выкл фарм зоны и пвп вкл\выкл
 
Так попробуйте. Только это пример, поменяйте всё что нужно под себя(за исключением уровня).
XML:
    <zone name="[название зоны2]" type="fun" >
        <set name="enabled" val="false" />
        <set name="cronZoneEnablePattern" val="12 19 * * *" />
        <set name="cronZoneDisablePattern" val="13 19 * * *" />
        <set name="playerMinLevel" val="1" />
        <set name="playerMaxLevel" val="99" />
        <set name="playerLevelLimitBackLoc" val="-25464 172424 -4203" /> - меняю ТП в ГИРАН
        <polygon>
            <coords loc="-25464 172424 -4203" /> - кори зоны
            <coords loc="-25464 172424 -4203" />
            <coords loc="-25464 172424 -4203" />
            <coords loc="-25464 172424 -4203" />
        </polygon>
    </zone>
Добавляю это после своей фарм зоны, ничего не меняеться...добавил ещё надписть что через 1 минуту выс отправит в город, персонаж остаёться в зоне фарма но без мобов.


<zone name="[farm_zone_off]" type="fun" >
<set name="enabled" val="false" />
<set name="cronZoneEnablePattern" val="45 14 * * *" />
<set name="cronZoneDisablePattern" val="46 14 * * *" />
<set name="playerMinLevel" val="1" />
<set name="playerMaxLevel" val="99" />
<set name="playerLevelLimitBackLoc" val="83476 148391 -3408 53988" />
<set name="cronZoneDisableAnnounceCustomMessage" val="voicedcommandhandlers.FarmPVP.Disabled" />
<polygon>
 
Подскажите, почему при переходе с peace_zone в battle_zone игроки не флагаются, пвп\пк не засчитывается ?
 
Last edited:
Ну обычная у меня type="no_summon" >, потом включается type="dummy" >
Но это под меня сделано, ты себе можешь настроить как тебе нужно
потом включается type="dummy" > - что это означает?
 
ну а какой тайп выбрать или как его настроить что бы игроки флагались и считало пвп\пк ?
Скорее всего в конфигах должно быть, где ты будешь вводить индексы/ид зон, не знаю точно как у вас реализовано.
Возможно есть что то похожее.

Code:
# Список индексов пвп зон, в которых работает пвп счетчик
PvPKillsZones = 20, 21, 22
 
Скорее всего в конфигах должно быть, где ты будешь вводить индексы/ид зон, не знаю точно как у вас реализовано.
Возможно есть что то похожее.

Code:
# Список индексов пвп зон, в которых работает пвп счетчик
PvPKillsZones = 20, 21, 22
увы не видел такого в конфигах ((
 
ну а какой тайп выбрать или как его настроить что бы игроки флагались и считало пвп\пк ?
<!-- Для включения AOE Fun зоны к какому либо РБ - всех или отдельно, необходимо их включить. По умполчанию они выключены
<set name="enabled" val="false" />
на
<set name="enabled" val="true" />

Что бы в зоне засчитывалось ПвП влючите конфиг - gameserver/config/pvp.properties PvPCountingInFunZone = True

https://lucera2.com/threads/kak-razmechat-i-sozdavat-svoi-zony-video-gajd.1556/
Вот видос от дизера , там подробно. Есть типы зоны, если тебе нужно масс пвп , допустим - это AOE funТы заходишь в файл зоны, добавляешь свои корды и если нужно, другие настройки ( подробнее тут https://lucera2.com/threads/bystrye-ssylki-po-instrukcijam.4441/) . Ну а дальше смотришь, если нужно, чтобы она была временная, то делаешь ее по крону,

Code:
<zone name="[baium_epic_fun]" type="fun" >
        <set name="enabled" val="false" />
    <set name="cronZoneEnablePattern" val="0 21 * * 3,6" />
        <set name="cronZoneDisablePattern" val="0 23 * * 3,6" />


-->
 
как можно сделать возрождение в этой же зоне? если тебя убили, то появляться в этой же зоне
 
[24.03.24 01:50:26] RestartPointParser: Exception: java.lang.RuntimeException: RestartPointParser: restart_loc not found : [farm_zone22]!
java.lang.RuntimeException: RestartPointParser: restart_loc not found : [farm_zone22]!
зона есть, куда я ее только не пихал... все равно нету пишет в логе
 
и ещё момент, когда в этой же зоне "встаешь" после убийства, что нужно что бы хп\мп\цп были 100%?
 
Всем привет! А возможно добавить в свою зону настройку, как на ТвТ, чтобы при появлении в зоне, скрывалось отображения клановых значков и имена игроков?
 
Всем привет! А возможно добавить в свою зону настройку, как на ТвТ, чтобы при появлении в зоне, скрывалось отображения клановых значков и имена игроков?
нет, пвп это инстанц. В инстанце после телепорта такое возможно делать. Можно делать данжы, можно делать что угодно после телепорта. На входе в зону такое делать нельзя.
И это не имеет никакого отношения к time dependency zone
 
Back
Top