• SiteAnalyzer, технический и SEO-анализ сайтов

Портал из NPC

как сделать портал из NPC

<<<<<< @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=)

Вроде ничего не забыл. Теперь можно запускать или перезапускать сервер.
 
Модификация клиента Айон запрещается соглашением по его использованию!
Я должен был предупредить:)
 
Смотря какая у тебя задумка. Если ты хочешь просто взять дружественного НПС, и по клику на нем тпшится, то тут гораздо проще реализация.

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