Извлеченные простеньким скриптом данные из a.obj по спискам телепортов у тех или иных NPC и сохраненные в JSON.
По этим данным уже можно по необходимости сгенерировать списки под свой сервер в нужном формате.
В архиве данные от следующих хроник:
Данные о конкретном телепорте состоят из 6 значений, которые обозначают следующее:
в хрониках ниже HF строка с названием места телепортации, а с HF и выше - id строки из NpcString с названием;
координата X;
координата Y;
координата Z;
цена телепортации (обычно в адене, но необязательно);
id замка, статус которого надо проверять при попытке запросить телепортацию - если задано id замка и он в осаде, то эта телепортация недоступна.
Данные извлекались простейшим скриптом, который на 99% совпадает с скриптом отсюда. Единственное отличие по сути, что в ai.obj ищутся списки telposlist вместо buyselllist.
Кстати еще немного полезной информации по телепортам через гейткиперов в городах, которая может пригодиться тем кто пилит относительно свежие хроники, но не разобрался для чего нужен пакет RequestSetSelectedQuestZoneId приходящий иногда от клиента.
Этот пакет присылает id локации, в которую надо перемещаться на текущем этапе квеста, выбранного приоритетным в окне квестов.
А само id это служит для того чтобы при формировании списка телепортов у гейткипера вариант с телепортом в эту локацию отображался в списке первым, выделенным другим цветом и иконкой, чтобы вобщем игроку не приходилось внимательно искать нужную локацию в зачастую достаточно большом списке телепортов.
Данные о связях между локациями телепортов у нпс и id этих локаций можно взять из файла teleportquestpath.txt птс хомки, ну или выстроить их самому. по названиям/id из ZoneName клиента.
Чисто вот как пример:
XML:
<npcid="30006"zone_id="35"><!-- Миллия [Хранитель Портала] / Milia [Gatekeeper] / [rapunzel] --><groupname="Position"><teleportname="1010199"loc="148024 -55281 -2728"price="120000"/><!-- Годдард / Goddard --><teleportname="1010005"loc="-14593 123936 -3112"price="33000"/><!-- Глудио / Gludio --><teleportname="1010007"loc="83551 147945 -3400"price="67000"/><!-- Гиран / Giran --><teleportname="1010006"loc="15472 142880 -2699"price="51000"/><!-- Дион / Dion --><teleportname="1010200"loc="43835 -47749 -792"price="100000"/><!-- Руна / Rune --><teleportname="1010049"loc="111455 219400 -3546"price="68000"/><!-- Хейн / Heine --><teleportname="1010574"loc="87126 -143520 -1288"price="130000"/><!-- Шутгарт / Schuttgart --><teleportname="1010023"loc="146783 25808 -2000"price="100000"/><!-- Аден / Aden --><teleportname="1010013"loc="82971 53207 -1470"price="84000"/><!-- Орен / Oren --><teleportname="1010724"loc="207512 86588 -1000"price="100000"/><!-- Древний Город Аркан / Ancient City Arcan --><teleportname="1010004"loc="-80684 149770 -3043"price="22000"/><!-- Глудин / Gludin --><teleportname="1010020"loc="117088 76931 -2670"price="87000"/><!-- Деревня Охотников / Hunters' Village --><teleportname="1010155"loc="46939 51300 -2992"price="52000"/><!-- Эльфийская Деревня / Elven Village --><teleportname="1010156"loc="11167 16012 -4584"price="54000"/><!-- Деревня Темных Эльфов / Dark Elf Village --><teleportname="1010157"loc="-44124 -113390 -240"price="75000"/><!-- Деревня Орков / Orc Village --><teleportname="1010158"loc="115357 -178212 -928"price="98000"/><!-- Деревня Гномов / Dwarven Village --><teleportname="1010648"loc="-117001 46589 360"price="42000"/><!-- Деревня Камаэль / Kamael Village --><teleportname="1010741"loc="-80536 247716 -3488"price="6800"/><!-- Бенон / Faeron --><teleportname="1010740"loc="-114986 226633 -2864"price="6000"/><!-- Гробница Душ / Reliquary of the Giants --><teleportname="1010739"loc="-109300 237498 -2944"price="3900"/><!-- Руины Эсагира / Ruins of Ye Sagira --></group><groupname="PositionNoblessNeedItemField"item_id="13722"><teleportname="1010506"loc="-87328 142266 -3640"price="1"/><!-- Арена Глудина / Gludin Arena --><teleportname="1010507"loc="73579 142709 -3768"price="1"/><!-- Арена Гирана / Giran Arena --><teleportname="1010053"loc="146440 46723 -3400"price="1"/><!-- Колизей / Coliseum --></group><groupname="PositionNoblessNoItemField"><teleportname="1010506"loc="-87328 142266 -3640"price="1000"/><!-- Арена Глудина / Gludin Arena --><teleportname="1010507"loc="73579 142709 -3768"price="1000"/><!-- Арена Гирана / Giran Arena --><teleportname="1010053"loc="146440 46723 -3400"price="1000"/><!-- Колизей / Coliseum --></group><groupname="PositionNewbie"><teleportname="1010156"loc="9709 15566 -4500"price="1"/><!-- Деревня Темных Эльфов / Dark Elf Village --><teleportname="1010158"loc="115120 -178224 -917"price="1"/><!-- Деревня Гномов / Dwarven Village --><teleportname="1010155"loc="46943 51417 -2976"price="1"/><!-- Эльфийская Деревня / Elven Village --><teleportname="1010157"loc="-45158 -112583 -236"price="1"/><!-- Деревня Орков / Orc Village --></group><quest_path><teleportname="1010199"zone_id="269"/><!-- Годдард / Goddard --><teleportname="1010005"zone_id="20"/><!-- Глудио / Gludio --><teleportname="1010007"zone_id="43"/><!-- Гиран / Giran --><teleportname="1010006"zone_id="48"/><!-- Дион / Dion --><teleportname="1010200"zone_id="291"/><!-- Руна / Rune --><teleportname="1010049"zone_id="118"/><!-- Хейн / Heine --><teleportname="1010574"zone_id="326"/><!-- Шутгарт / Schuttgart --><teleportname="1010023"zone_id="77"/><!-- Аден / Aden --><teleportname="1010013"zone_id="101"/><!-- Орен / Oren --><teleportname="1010724"zone_id="511"/><!-- Древний Город Аркан / Ancient City Arcan --><teleportname="1010004"zone_id="21"/><!-- Глудин / Gludin --><teleportname="1010020"zone_id="173;74"/><!-- Деревня Охотников / Hunters' Village --><teleportname="1010155"zone_id="113"/><!-- Эльфийская Деревня / Elven Village --><teleportname="1010156"zone_id="107"/><!-- Деревня Темных Эльфов / Dark Elf Village --><teleportname="1010157"zone_id="62"/><!-- Деревня Орков / Orc Village --><teleportname="1010158"zone_id="64"/><!-- Деревня Гномов / Dwarven Village --><teleportname="1010648"zone_id="409"/><!-- Деревня Камаэль / Kamael Village --><teleportname="1010741"zone_id="542;584"/><!-- Бенон / Faeron --><teleportname="1010740"zone_id="549"/><!-- Гробница Душ / Reliquary of the Giants --><teleportname="1010739"zone_id="525"/><!-- Руины Эсагира / Ruins of Ye Sagira --></quest_path></npc>
Например от клиента пришел пакет в котором активной квест локой была задана лока с id 173, т.е. Деревня Охотников.
В итоге у этого гейткипера пункт телепортации Деревня Охотников будет отображаться первым в списке, хотя реально он находится где-то в середине списка.
Ну а в коде генерации списков все это реализовывается проще некуда.
На данном сайте используются файлы cookie, чтобы персонализировать содержимое и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.