[MANUAL] Создаем своего Global Gatekeeper

Тема в разделе "Установка и настройка (Setup and configuration)", создана пользователем root, 24 авг 2014.

  1. root

    root Administrator Команда форума Administrator Moderator Developers Team

    Регистрация:
    23 авг 2014
    Сообщения:
    253
    Симпатии:
    56
    Баллы:
    11
    В этом мануале мы научимся создавать собственного ГК.
    Для работы нам понадобятся следующие файлы в папке Script вашего сервера:

    1. npcdata.txt
    2. ai.obj
    3. npcpos.txt
    Прежде всего вам нужно вставить код npcdata.txt (желательно в конец файла):
    Код:
    npc_begin       teleporter      36006   [gk_global]     level=70        acquire_exp_rate=0      acquire_sp=0    unsowing=1      clan={} ignore_clan_list={}     clan_help_range=300     slot_chest=[]   slot_rhand=[]   slot_lhand=[]   shield_defense_rate=0   shield_defense=0        skill_list={@s_race_undead;@s_full_magic_defence}       npc_ai={[gk_global];{[fnHi]=[teleport_list.htm]};{[fnNobless]=[teleport_list.htm]};{[fnNoNobless]=[teleport_list.htm]};{[fnNoNoblessItem]=[teleport_list.htm]};{[fnYouAreChaotic]=[gk_global003.htm]};{[MoveAroundSocial]=0};{[MoveAroundSocial1]=134};{[MoveAroundSocial2]=134}}       category={}     race=human      sex=female      undying=1       can_be_attacked=0       corpse_time=7   no_sleep_mode=0 agro_range=1000 ground_high={120;0;0}   ground_low={50;0;0}     exp=429634528   org_hp=2444.46819       org_hp_regen=7.5        org_mp=1345.8   org_mp_regen=2.7        collision_radius={8;8}  collision_height={20;20}        str=40  int=21  dex=30  wit=20  con=43  men=10  base_attack_type=sword  base_attack_range=40    base_damage_range={0;0;80;120}  base_rand_dam=30        base_physical_attack=688.86373  base_critical=4 physical_hit_modify=4.75        base_attack_speed=253   base_reuse_delay=0      base_magic_attack=470.40463     base_defend=295.91597   base_magic_defend=216.53847     physical_avoid_modify=0 soulshot_count=0        spiritshot_count=0      hit_time_factor=0.6     item_make_list={}       corpse_make_list={}     additional_make_list={} additional_make_multi_list={}   hp_increase=0   mp_increase=0   safe_height=100 npc_end
    Далее добавляем код в AI.obj
    Код:
    class 1 gk_global : teleporterproperty_define_begin
        telposlist_begin Position
            {"Coliseum"; 146440; 46723; -3400; 0; 0 }
            {"Giran Arena"; 73579; 142709; -3768; 0; 0 }
            {"Gludin Arena"; -87297; 142365; -3648; 0; 0 }        
        telposlist_end
        telposlist_begin PositionNoblessNoItemTown
            {"Talking Island Village"; -84141; 244623; -3729; 0; 0 }
            {"Elven Village"; 46951; 51550; -2976; 0; 0 }
            {"Dark Elven Village"; 9709; 15566; -4500; 0; 0 }
            {"Orc Village"; -45158; -112583; -236; 0; 0 }
            {"Dwarven Village"; 115120; -178224; -917; 0; 0 }
            {"Gludin Village"; -80826; 149775; -3043; 0; 0 }
            {"Gludio Castle Town"; -12694; 122776; -3114; 0; 0 }
            {"Town of Dion"; 15671; 142994; -2704; 0; 0 }
            {"Giran Castle Town"; 83382; 147983; -3400; 0; 0 }
            {"Giran Harbor"; 47935; 186810; -3420; 0; 0 }
            {"Heine"; 111455; 219400; -3546; 0; 0 }
            {"Hunters Village"; 117088; 76931; -2670; 0; 0 }
            {"Town of Oren"; 83011; 53207; -1470; 0; 0 }
            {"Ivory Tower"; 85343; 16267; -3640; 0; 0 }
            {"Town of Aden"; 146783; 25808; -2000; 0; 0 }
            {"Town of Goddard"; 147978; -55408; -2728; 0; 0 }
            {"Rune Township"; 43826; -47688; -792; 0; 0 }
            {"Town of Schuttgart"; 87093; -143329; -1288; 0; 0 }
        telposlist_end
        telposlist_begin PositionNoblessNoItemField
            {"Elven Ruins [Lv 10-20]"; 48586; 248459; -6160; 0; 0 }
            {"Elven Fortess [Lv 10-20]"; 27630; 74962; -3808; 0; 0 }
            {"Execution Grounds [Lv 20-40]"; 44589; 148484; -3696; 0; 0 }
            {"Fortress Resistance [Lv 25-35]"; 48651; 111342; -2128; 0; 0 }
            {"Aligator Island [Lv 35-45]"; 115309; 190650; -3584; 0; 0 }
            {"Death Pass [Lv 40-50]"; 71411; 118056; -3672; 0; 0 }
            {"Cruma Tower [Lv 35-45]"; 17209; 114182; -3440; 0; 0 }
            {"Hardin's Private Academic [Lv 35-50]"; 105918; 109759; -3208; 0; 0 }
            {"Enchanted Valley [Lv 45-55]"; 124904; 61992; -3920; 0; 0 }
            {"Frozen Labyrinth [Lv 50-60]"; 111584; -111996; -1320; 0; 0 }
            {"The Forbidden Gateway [Lv 54-65]"; 185319; 20218; -3264; 0; 0 }
            {"Antharas Lair [Lv 50-75]"; 131152; 114471; -3720; 0; 0 }
            {"Blazing Swamp [Lv 65-75]"; 159455; -12931; -2872; 0; 0 }
            {"Silent Valley [Lv 65-75]"; 170866; 55794; -5240; 0; 0 }
            {"Swamp of Scream [Lv 70-75]"; 70479; -49999; -3272; 0; 0 }
            {"Valley of Saints [Lv 65-70]"; 81278; -75070; -3728; 0; 0 }
            {"Primeval Isle [Lv 70-75]"; 6993; -22078; -3336; 0; 0 }
        telposlist_end
        telposlist_begin PositionNoblessNoItemSSQ
            {"Giants Cave [Lv 79-85]"; 183505; 47449; 4368; 0; 0 }
        telposlist_end
    property_define_end
    class_end
    Пример, где добавить код:
    Код:
    ......class_end
    ...WHITE SPACE HERE...
    ...WHITE SPACE HERE...
    paste code here
    ...WHITE SPACE HERE...
    Теперь перейдем в папку HTML на сервере и создадим файл teleport_list.htm с следующим кодом:
    Код:
    <html>    <head>
            <title>Global Gatekeeper</title>
        </head>
        <body>
            <br>Where would you like to go?<br><br>
            <a action="bypass -h menu_select?ask=-21&reply=1">Teleport to another town. </a><br> 
            <a action="bypass -h menu_select?ask=-21&reply=2">Teleport to a hunting ground.</a><br> 
            <a action="bypass -h menu_select?ask=-21&reply=3">Teleport to a custom farming zone.</a><br>
            <a action="bypass -h teleport_request">Teleport to a PvP arena.</a>
        </body>
    </html>
    Теперь последняя часть - расстановка координат и autospawn привратника на сервере:

    Ищем в файле npcpos.txt имя привратника, например gatekeeper_belladonna в Gludio.
    Код:
    npcmaker_ex_begin    [gludio08_npc1921_020]    name=[gludio_npc1921_02001]    ai=[default_maker]    maximum_npc=4
    npc_ex_begin    [gatekeeper_belladonna]    pos={-12736;122816;-3114;49152}    total=1    respawn=1min    npc_ex_end
    Теперь сменим maximum_npc=4 на maximum_npc=5 и добавим новую строку после npc_ex_end
    Код:
    npc_ex_begin    [gk_global]    pos={POSX;POSY;POSZ;FACEDIRECTION}    total=1    respawn=1min    npc_ex_end
    Замените POSX,POSY,POSZ и FACEDIRECTION своими координатами.

    Пример:

    • North(N) : 49152
    • South(S) : 16384
    • West(W) : 32768
    • East(E) : 65536
    • NE = (N + E)/2 = (49152 + 65536)/2 = 57344
    • NW = (N + W)/2 = (49152 + 32768)/2 = 40960
    • WS = (W + S)/2 = (32768 + 16384)/2 = 24576
    • SE = (S + E)/2 = (16384 + 65536)/2 = 40960