Steelgar Опубликовано 31 октября, 2011 Поделиться Опубликовано 31 октября, 2011 (изменено) Ревизия 24702 Проблема: появление мобов из трупов Contaminated Morek Warrior, Contaminated Batur Warrior (id 22704), Contaminated Batur Warrior (id 22705) Должно быть: Информация из ai.obj Из трупа мобов, что выше, с вероятностью 2% должен вылазить 1 моб, любой из списка: 1. Появится Turka Commander's Ghost Запускается респавн мобов Turka Follower's Ghost в жестко заданных позициях, ниже информация. 2. Появится с 50% вероятностью (да еще раз вероятность считается, хз зачем так редко) Guard of the Grave Этот моб не убиваемый, двигаться не может. Бьет только скилом s_npc_party30_m_long_range_dd_fire9 affect_range = 200. При чем, после двух минут, с момента его появления появится Chieftain's Treasure Chest и сам моб Guard of the Grave исчезнет. Этот ящик исчезает после 5 минут его появления, если никто его не убьет. В итоге, вероятность появления вкусного сундучка получается 0,5% при убийстве мобов, что указаны вначале. Исходники: 1. Contaminated Morek Warrior класс ai_legend_orc_warrior /*************************************************************************** * Change Log * ------------------ * 31.10.2011 * Script Decompiled by SauDecompiler build 102306.2 * ***************************************************************************/ class ai_legend_orc_warrior : warrior_basic { handler: EventHandler CREATED() { super; } EventHandler MY_DYING(maker0,last_attacker) { if( gg->Rand(100) < 2 ) { select(gg->Rand(2)) { case 0: maker0 = myself->GetMyMaker(); if( gg->IsNull(maker0) == 0 ) { myself->CreateOnePrivateEx(1022707,"ai_legend_orc_ev_vice",0,0,gg->FloatToInt(myself.sm.x),gg->FloatToInt(myself.sm.y),gg->FloatToInt(myself.sm.z),0,gg->GetIndexFromCreature(last_attacker),0,0); gg->SendMakerScriptEvent(maker0,2114001,0,0); } break; case 1: if( gg->Rand(2) < 1 ) { myself->CreateOnePrivateEx(1018815,"ai_legend_orc_ev_leader",0,0,gg->FloatToInt(myself.sm.x),gg->FloatToInt(myself.sm.y),gg->FloatToInt(myself.sm.z),0,gg->GetIndexFromCreature(last_attacker),0,0); } break; } } } } 2. Guard of the Grave класс ai_legend_orc_ev_leader Chieftain's Treasure Chest класс ai_legend_orc_treasure Turka Follower's Ghost: Turka Commander's Ghost при следующем респе мобов будут и эти андеды. Вот и их данные респа: territory_begin [schuttgart17_2114_26p] {{47612;-124917;-3732;-3032};{47300;-124152;-3732;-3032};{46523;-123820;-3732;-3032};{45759;-124156;-3732;-3032};{45617;-124699;-3732;-3032};{45940;-125618;-3732;-3032};{46577;-126012;-3732;-3032};{47305;-125678;-3732;-3032}} territory_end npcmaker_ex_begin [schuttgart17_2114_26p] name=[schuttgart17_2114_26pm1] ai=[default_maker] ai_parameters={[on_start_spawn]=0} maximum_npc=10 npc_ex_begin [legend_orc_1grudge] pos={46880;-125776;-3664;20000} total=1 respawn=0sec npc_ex_end npc_ex_begin [legend_orc_1grudge] pos={47386;-125264;-3664;27792} total=1 respawn=0sec npc_ex_end npc_ex_begin [legend_orc_1grudge] pos={47381;-124555;-3664;-29416} total=1 respawn=0sec npc_ex_end npc_ex_begin [legend_orc_1grudge] pos={46880;-124056;-3664;-21488} total=1 respawn=0sec npc_ex_end npc_ex_begin [legend_orc_1grudge] pos={46177;-124057;-3664;-12336} total=1 respawn=0sec npc_ex_end npcmaker_ex_end Объединяет их параметр name и vice_maker_name = schuttgart17_2114_26pm1 Вокруг каждой пирамиды будет по 8 андедов около 5 пирамид и около последней пирамиды 5 андедов. Возможно идет привязка к конкретной пирамиде, т.е. с какой пирамиды был убит моб, около той и появятся это хз. /*************************************************************************** * Change Log * ------------------ * 31.10.2011 * Script Decompiled by SauDecompiler build 102306.2 * ***************************************************************************/ class ai_legend_orc_ev_leader : wizard_basic { handler: EventHandler CREATED(c0) { myself->Shout(gg->MakeFString(1800863,"","","","","")); myself->AddTimerEx(2114001,( ( 2 * 60 ) * 1000 )); myself->LookNeighbor(500); super; } EventHandler SEE_CREATURE(creature) { myself->AddAttackDesire(creature,0,20000); myself->AddUseSkillDesire(creature,Skill01_ID,0,0,5000000); myself.c_ai0 = creature; myself->AddTimerEx(2114009,1000); } EventHandler ATTACKED(attacker) { myself->AddAttackDesire(attacker,0,20000); myself->AddUseSkillDesire(attacker,Skill01_ID,0,0,5000000); myself.c_ai0 = attacker; myself->AddTimerEx(2114009,1000); } EventHandler TIMER_FIRED_EX(timer_id) { if( timer_id == 2114001 ) { myself->CreateOnePrivateEx(1018816,"ai_legend_orc_treasure",0,0,gg->FloatToInt(myself.sm.x),gg->FloatToInt(myself.sm.y),gg->FloatToInt(myself.sm.z),0,0,0,0); myself->SetVisible(0); myself->Suicide(); } if( timer_id == 2114009 ) { if( myself->IsNullCreature(myself.top_desire_target) == 0 && myself->IsNullCreature(myself.c_ai0) == 0 ) { myself->AddUseSkillDesire(myself.c_ai0,Skill01_ID,0,0,5000000); myself->AddTimerEx(2114009,3500); } } } EventHandler MY_DYING() { myself->Shout(gg->MakeFString(1800864,"","","","","")); } } 3. Ящик /*************************************************************************** * Change Log * ------------------ * 31.10.2011 * Script Decompiled by SauDecompiler build 102306.2 * ***************************************************************************/ class ai_legend_orc_treasure : default_npc { handler: EventHandler CREATED() { myself->AddTimerEx(2114002,( ( 5 * 60 ) * 1000 )); super; } EventHandler TIMER_FIRED_EX(timer_id) { if( timer_id == 2114002 ) { myself->SetVisible(0); myself->Suicide(); } } } 4. Алгоритм вычисления респавна мобов В классе ai_legend_orc_warrior вызывается событие gg->SendMakerScriptEvent(maker0,2114001,0,0); после появления Turka Commander's Ghost Это событие срабатывает при появлении мобов legend_orc_2warrior (Contaminated Batur Warrior), legend_orc_3warrior (Contaminated Batur Commander) Вот данные из npcdata.txt: territory_begin [schuttgart17_2114_26] {{47612;-124917;-3732;-3032};{47300;-124152;-3732;-3032};{46523;-123820;-3732;-3032};{45759;-124156;-3732;-3032};{45617;-124699;-3732;-3032};{45940;-125618;-3732;-3032};{46577;-126012;-3732;-3032};{47305;-125678;-3732;-3032}} territory_end npcmaker_ex_begin [schuttgart17_2114_26] name=[burial_2114_26m1] ai=[legend_orc_maker] ai_parameters={[vice_maker_name]=[schuttgart17_2114_26pm1]} maximum_npc=20 npc_ex_begin [legend_orc_2warrior] pos=anywhere total=8 respawn=20sec npc_ex_end npc_ex_begin [legend_orc_3warrior] pos=anywhere total=7 respawn=20sec npc_ex_end npcmaker_ex_end Тут как раз прописан алгоритм ai - legend_orc_maker. Его алгоритм: /*************************************************************************** * Change Log * ------------------ * 31.10.2011 * Script Decompiled by SauDecompiler build 102306.2 * ***************************************************************************/ class legend_orc_maker : default_maker { parameter: string vice_maker_name = "default_maker_default"; handler: EventHandler ON_SCRIPT_EVENT(script_event_arg1,script_event_arg2,script_event_arg3,def0,maker0,i0,i1) { if( script_event_arg1 == 2114001 ) { maker0 = gg->GetNpcMaker(vice_maker_name); if( gg->IsNull(maker0) == 0 ) { gg->SendMakerScriptEvent(maker0,1001,0,0); } } } } Т.е. получается что при появлении моба Изменено 31 октября, 2011 пользователем Steelgar 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Steelgar Опубликовано 31 октября, 2011 Автор Поделиться Опубликовано 31 октября, 2011 (изменено) Этот моб еще и двигаться не может - Guard of the Grave Добавил в описание. p.s. Дроп камней 150- с этого сундука один из самых лучших в игре, кроме святости. Вот почему так редко там появляются сундучки - 0,5% с каждого трупа. Изменено 31 октября, 2011 пользователем Steelgar 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ALEXYS Опубликовано 12 апреля, 2013 Поделиться Опубликовано 12 апреля, 2013 (изменено) Сундуков этих вообще нет, да и моба Turka Commander's Ghost нету . Изменено 12 апреля, 2013 пользователем ALEXYS 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.