↑ ↓

Портал из NPC

Тема в разделе "Помощь", создана пользователем igorladik, 29 окт 2021.

  1. TopicStarter Overlay
    Offline

    igorladik Рядовой

    4
    0
    27
    Кредиты:
    $132,06
    Репутация:
    0
    как сделать портал из NPC
     
  2. Offline

    yayaya Ефрейтор Команда форума

    587
    183
    76
    Кредиты:
    $20.524,68
    Репутация:
    38
    <<<<<< @Ferriya - 03 Июнь 2011 - 22:53>>>>>>>>>
    Если твоя задумка заключается в том, чтобы поставить телепорт в одной локации, и он тебя будет просто телепортировать по определенным координатам в ту же или другую локацию, то тут придется немного поработать и с клиентом и с сервером. Суть в том, что придется сделать телепорт как нового нпц в клиенте, а в сервере указать где он будет спавниться и куда будет телепортировать.

    Работа на первый раз кажется немного трудной.
    Нужны 2 программы, выкладывались они неоднократно на этом форуме - Aion Unpack для распаковки .pak файлов в клиенте и Aion Extract для расшифровки .xml файлов. Рекомендуется использовать текстовый редактор AkelPad, так как он быстрее остальных справляется с файлами большого объема.

    Сначала нужно определить, какого нпц мы возьмем за основу для телепорта. Вот например в бездне есть данж 25 лвл, там есть красивый телепорт для входа в него, можно взять за основу. Взять в таргет телепорт и коммандой //info определить его ID, записать на листок и выходить из игры.

    Далее идем в клиент Aion\Data\Npcs и с помощью Aion Unpack распаковывем файл Npcs.pak, просто перетащив его в программу. Появится папке Npcs. Далее нужно расшифровать файлы с помощью Aion Extract. В папке Npcs, которая тут появилась нам нужен только 1 файл - client_npcs.xml, его надо закинуть туда же где и Npcs.pak, а новую папку Npcs можно удалить.

    С помощью программы AkelPad открываем этот массивный файл client_npcs.xml и поиском ищем ID того телепорта, который на листок записали.

    Примерно такой будет там текст:
    Спойлер
    <npc_client>
    <id>700414</id> - Придумывает свой ID, например 256001
    <name>AB1_Corridor_Q4702</name> Запомнить название. Теперь название свое придумать, для файла, который будет отвечать за название объекта в игре.
    <desc>STR_OBJ_AB1_Corridor_Q4702</desc>
    <dir>NPC/Level_Object/TeleportCorridor</dir>
    <mesh>TeleportCorridor</mesh>
    <ui_type>craft</ui_type> - тип должен быть такой - craft
    <cursor_type>action</cursor_type> - тип должен быть такой - action
    <hide_path>0</hide_path>
    <erect>1</erect>
    <bound_radius>
    <front>0.500000</front>
    <side>0.700000</side>
    <upper>2.000000</upper>
    </bound_radius>
    <scale>100</scale>
    <weapon_scale>100</weapon_scale>
    <altitude>0.000000</altitude>
    <stare_angle>75.000000</stare_angle>
    <stare_distance>15.000000</stare_distance>
    <move_speed_normal_walk>0.000000</move_speed_normal_walk>
    <art_org_move_speed_normal_walk>0.000000</art_org_move_speed_normal_walk>
    <move_speed_normal_run>0.000000</move_speed_normal_run>
    <move_speed_combat_run>0.000000</move_speed_combat_run>
    <art_org_speed_combat_run>0.000000</art_org_speed_combat_run>
    <in_time>0.100000</in_time>
    <out_time>0.500000</out_time>
    <neck_angle>90.000000</neck_angle>
    <spine_angle>10.000000</spine_angle>
    <pushed_range>0.000000</pushed_range>
    <hpgauge_level>3</hpgauge_level>
    <magical_skill_boost>0</magical_skill_boost>
    <attack_delay>2000</attack_delay>
    <ai_name>AB1_Corridor_Q4702</ai_name>
    <tribe>Field_Object_Dark</tribe>
    <pet_ai_name>Pet</pet_ai_name>
    <npc_type>general</npc_type>
    <talking_distance>7.000000</talking_distance>
    <talk_delay_time>3</talk_delay_time>
    <user_animation>quest_energyblow</user_animation>
    </npc_client>

    Вот такой текст, найденый в файле выделяем от тега <npc_client> до тега </npc_client> и копируем в конец файла перед последним общим закрывающим тегом.

    После того как скопировали текст, редактируем некоторые значения которые указаны под спойлером.


    Следующий шаг. Идем в Aion\Data\Strings\
    Также как и с прошлым .pak файлом, распаковываем и расшифровываем. Из новой папки Strings перекидываем файл client_strings_npc.xml в туже папку где и Strings.pak

    Открываем файл и ищем там название из прошлого файла которое надо было запомнить (AB1_Corridor_Q4702). Ищем и видим текст:
    Спойлер
    <string>
    <id>371146</id> - Придумать свой ID имени, например 512001
    <name>STR_OBJ_AB1_Corridor_Q4702</name> - Сюда ввести наше название как в прошлом файле.
    <body>차원의 회랑</body> - Тут будет имя Нпц (телепорта) в игре, например Teleport
    </string>

    Так же и тут. Сначала надо скопировать найденое в конец файла, перед закрывающим тегом, а только потом редактировать скопированное. Отредактировать и на этом клиентская часть закончена, теперь создан уникальный нпц в клиенте, который надо спавнить сервером и определить его свойства.

    Вот теперь придется зайти в игру и определить, где будет стоять телепорт и куда он будет телепортировать. Может мой способ не самый лучший, но расскажу как знаю. Идем туда где хотим поставить телепорт и спавним коммандой //spawn оригинальный телепорт, ID которого брали за основу. Теперь коммандой //info можно получить его месторасположение - ID локации, x, y, z. Получив эти нужные данные надо убрать проспавненый телепорт коммандой //delete, потому что данные о спавне будут храниться в самом сервере, если забыть удалить, то могут 2 телепорта друг в друге появиться. Нам нужны лишь данные от спавна этого нпц-телепорта - ID локации, x, y, z

    Теперь идем в сервер по пути gameserver/data/static_data/spawns/Npcs/
    Тут ищем нужный файл по локации и копируем фрагмент в файле:

    <spawn map="120010000" npcid="799735" pool="1" interval="295">
    <object h="66" x="1153.3182" y="1344.8033" z="209.6744"/>
    </spawn>

    Его также надо скопировать в конец перед закрывающим тегом, потом отредактировать.
    map= ID локации
    npcid= ID нашего телепорта
    Координаты заменить на те, который будут отвечать где будет телепорт стоять.


    Идем по пути gameserver/data/static_data/npcs/npc_templates.xml Этот файл отвечает за то, как будет выглядеть наш нпц и его имя в игре. Ищем перевоначальный ID телепорта который был за основу. Находим примерно такой текст:

    <npc_template npc_id="700414" level="1" name="Teleport" name_id="371146" npc_type="PORTAL" height="2.0" rank="NORMAL" tribe="FIELD_OBJECT_DARK" hpgauge="3" state="65">
    <stats maxMp="52" maxHp="172" maxXp="100" block="11" parry="11" mdef="11" pdef="11" crit="11" power="11" evasion="11" accuracy="11" magic_accuracy="11" walk_speed="0.0" run_speed="0.0" run_speed_fight="0.0" fly_speed="0.0" />
    </npc_template>

    Скопируем этот текст в конец файла перед закрывающим тегом и потом редактируем.
    npc_id= наш ID. name= наше имя. name_id= ID имени как в клиенте в файле client_strings_npc.xml


    Теперь надо идти по пути gameserver/data/static_data/portals/portal_templates.xml
    Ищем в файле ID первоначального телепорта котрый был за основу. Находим текст

    <portal npcid="700414" instance="true" minlevel="25" maxlevel="28" group="true" race="ASMODIANS">
    <entrypoint mapid="400010000" x="876.7211" y="3079.2874" z="1644.5786" race="ASMODIANS"/>
    <exitpoint mapid="300030000" x="513" y="668" z="331"/>
    </portal>

    и так же копируем в конец файла перед закрывающим тегом (просто потом легко так найти что менял и поправить)

    Тут нужно исправить npcid на ID нашего телепорта.
    instance="false" должно быть
    group="false" тоже поправить, и далее меняем точку входа (<entrypoint mapid=...) с тех данных которые получили спавном телепорта и определением его координат.

    <exitpoint mapid=... - точка выхода, так же можно как и с точкой входа, в игре проспавнить телепорт который был за основу, коммандой //info снять его координаты, коммандой //delete удалить спавн этого телепорта из базы данных. Нам нужны только данные. ID локации, x, y, z. Полученные данные записать в точку выхода (<exitpoint mapid=)

    Вроде ничего не забыл. Теперь можно запускать или перезапускать сервер.
     
  3. Offline

    yayaya Ефрейтор Команда форума

    587
    183
    76
    Кредиты:
    $20.524,68
    Репутация:
    38
    Модификация клиента Айон запрещается соглашением по его использованию!
    Я должен был предупредить:)
     
  4. TopicStarter Overlay
    Offline

    igorladik Рядовой

    4
    0
    27
    Кредиты:
    $132,06
    Репутация:
    0
    у меня нет portal_templates.xml только portal_template2
     
  5. Offline

    GlobalArt Рядовой

    73
    12
    36
    Кредиты:
    $663,31
    Репутация:
    -1
    Смотря какая у тебя задумка. Если ты хочешь просто взять дружественного НПС, и по клику на нем тпшится, то тут гораздо проще реализация.

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