Перейти к содержанию
Asterios

ИН_Мобы в Склепах позора (Crypts of Disgrace)


Steelgar

Рекомендуемые сообщения

Ревизия 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);

   }

  }

}

}

Т.е. получается что при появлении моба
Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

Этот моб еще и двигаться не может - Guard of the Grave

Добавил в описание.

p.s. Дроп камней 150- с этого сундука один из самых лучших в игре, кроме святости. Вот почему так редко там появляются сундучки - 0,5% с каждого трупа.

Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Сундуков этих вообще нет, да и моба Turka Commander's Ghost нету .

Изменено пользователем ALEXYS
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...