Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Вопрос по AI моба и дроп с нпц (https://forum.zone-game.info/showthread.php?t=43286)

mercury320 29.08.2018 13:22

Вопрос по AI моба и дроп с нпц
 
Всем привет, использую лицензию сборки IL Vanganth

У меня есть два вопроса:

Как должен работать ai_parameters={[level_check]=[40] в npcpos он попросту не реагирует на изменение значений.


Родительское АИ (не знаю как правильно)

Код:

class 1 event_npc : default_npc
{
parameter:
  string  privates_event_default = "gremlin:1:5000sec";
  string  event_coffer_default = "coffer_of_the_dead:event_reward:1:5000sec";
  string  guard_event_default = "event_stalker:event_guard:1:5000sec";
  string  guard_coffer_default = "coffer_of_the_dead:event_reward:1:5000sec";
  int    event_reward_item= 57;
  int    event_reward_item_amount= 10000;
  int    event_reward_item_rare= 9999;
  int    level_check = 1;

}

Вот АИ eventreward,

Код:

class 1 event_reward : event_npc
{
handler:
  EventHandler CREATED( i0 )
  {
  myself::AddTimerEx( 23401, 1000 * 120 );
  super;
  }

  EventHandler TIMER_FIRED_EX( timer_id )
  {
  if( timer_id == 23401 )
  {
    myself::Despawn();
  }
  super;
  }

  EventHandler TALKED( talker, creature )
  {
  creature = talker;
  if( myself.i_ai0 == 0 )
  {
    myself.i_ai0 = 1;
    if( talker.level > level_check )
    {
      myself::Say( "Твой уровень слишком большой" );
    }
    else
    {
      if( gg::Rand( 10 ) < 10 )
      {
        myself::Say( "Вот твоя награда" );
        myself::GiveItem1( creature, event_reward_item,
                            event_reward_item_amount );
        myself::GiveItem1( creature, @adena, 50000 );
      }
      if( gg::Rand( 100 ) < 5 )
      {
        myself::GiveItem1( talker, event_reward_item_rare, 1 );
      }
    }
    myself::Despawn();
  }
  }
}

вот npcpos

Код:

npc_begin [event_npc] pos=anywhere ai=[event_loshad]    ai_parameters={[level_check]=[40];[privates_event_default]=[neer_crawler:event_stalker:1:5000sec]}      total=10    respawn=20hour    respawn_rand=5hour  npc_end
event_loshad - входит в группу event_npc, всё отлично работает кроме проверки на уровень.


2. Есть ли софт с помощью которого можно добавить мобам 40+ дроп определенного предмета или же придется делать руками?

Zubastic 29.08.2018 13:26

Re: Вопрос по AI моба и дроп с нпц
 
Цитата:

ai=[event_loshad]
event_loshad
Где этот класс?

mercury320 29.08.2018 13:34

Re: Вопрос по AI моба и дроп с нпц
 
С ним всё ок, после деспавна event_loshad спавнится event_reward вот в нем и не работает проверка на уровень, говорит что я слишком большой, а если убрать level_check=1 из event_npc он выдает награду но без проверки на уровень.

Вот если что event_loshad


Код:

Class 1 event_loshad : event_npc
{
handler:
  EventHandler CREATED()
  {
    myself.i_ai1 = 0;
    myself::Shout( "некоторый текст_0" );
  }

  EventHandler TALKED( talker )
  {
    if( myself.i_ai1 == 0 )
    {
      myself.i_ai1 = 1;
      myself::Say( "некоторый текст_1" );
    }
  }

  EventHandler NO_DESIRE()
  {
    myself::AddMoveAroundDesire( 5, 5 );
  }

  EventHandler SEE_CREATURE( creature )
  {
    if( creature.is_pc == 1 && myself.i_ai0 == 0 )
    {
      myself.i_ai0 = 1;
      myself::CreatePrivates( privates_event_default );
      myself::AddFollowDesire( creature, 5 );
      myself::AddTimerEx( 1, 30 * 1000 );
      myself::Say( "некоторый текст_2" );
    }
  }

  EventHandler PARTY_DIED( private )
  {
  }

  EventHandler TIMER_FIRED_EX( timer_id )
  {
    if( timer_id == 1 )
    {
      myself::Say( "некоторый текст_3" );
      myself::CreatePrivates( privates_event_default );
      myself::AddTimerEx( 2, 60 * 1000 );
    }
    if( timer_id == 2 )
    {
      myself::Say( "некоторый текст_3_3" );
      myself::CreatePrivates( privates_event_default );
      myself::AddTimerEx( 3, 90 * 1000 );
    }
    if( timer_id == 3 )
    {
      myself::Say( " некоторый текст_4" );
      myself::CreatePrivates( privates_event_default );
      myself::AddTimerEx( 4, 40 * 1000 );
    }
    if( timer_id == 4 )
    {
      myself.i_ai0 = 1;
      myself::Say( "некоторый текст_5" );
      myself::CreatePrivates( guard_event_default );
      myself::Say( "некоторый текст_6" );
      myself::AddTimerEx( 5, 15 * 1000 );
      myself::ChangeMoveType( 1 );
      myself::AddMoveAroundDesire( 5, 5 );
    }
    if( timer_id == 5 )
    {
      myself::Despawn();
    }
  }

  EventHandler MY_DYING()
  {
    myself::Say( "....." );
  }

  EventHandler ATTACKED( attacker, damage, skill_name_id )
  {
    if( attacker.is_pc == 1 )
    {
      myself::Say( "некоторый текст_6 );
    }
    else
    {
      myself::ChangeMoveType( 1 );
      myself::AddFleeDesire( attacker, 1 );
      myself::Say( "некоторый текст_7" );
    }
  }
}


Zubastic 29.08.2018 14:19

Re: Вопрос по AI моба и дроп с нпц
 
А ничего, что это новый моб, у которого нет параметров мейкера? Или передавай этот параметр в npcdata, или при создании в Created пропиши.

mercury320 29.08.2018 14:27

Re: Вопрос по AI моба и дроп с нпц
 
Цитата:

Сообщение от Zubastic (Сообщение 432256)
А ничего, что это новый моб, у которого нет параметров мейкера? Или передавай этот параметр в npcdata, или при создании в Created пропиши.

Спасибо, а что по втором вопросу? есть ли возможность добавить сразу всем мобам 40+ в дроп итем или делать руками по 1 мобу?

Добавлено через 22 минуты
Цитата:

Сообщение от Zubastic (Сообщение 432256)
А ничего, что это новый моб, у которого нет параметров мейкера? Или передавай этот параметр в npcdata, или при создании в Created пропиши.

Моба создает guard_event_default который и спавнит в свою очередь guard_coffer_default
(event_reward )
Код:

class 1 guard_event_default  : event_npc
{
handler:
  EventHandler CREATED( i0 )
  {
    myself::AddTimerEx( 23401, 1000 * 120 );
    super;
  }

  EventHandler TIMER_FIRED_EX( timer_id )
  {
    if( timer_id == 1 )
    {
      myself::CreatePrivates( guard_coffer_default );
      myself::Despawn();
    }
    if( timer_id == 23401 )
    {
      myself::Despawn();
    }
    super;
  }

  EventHandler TALKED( talker )
  {
    if( myself.i_ai0 == 0 )
    {
      myself.i_ai0 = 1;
      myself::Say( "некоторый текст" );
      myself::AddTimerEx( 1, 8 * 1000 );
    }
  }
}


Zubastic 29.08.2018 15:39

Re: Вопрос по AI моба и дроп с нпц
 
Цитата:

Спасибо, а что по втором вопросу? есть ли возможность добавить сразу всем мобам 40+ в дроп итем или делать руками по 1 мобу?
Это не база, тут нужно через софт или ручками добавлять, а так не вижу ничего трудного.
Цитата:

Моба создает guard_event_default который и спавнит в свою очередь guard_coffer_default
(event_reward )
Ад какой-то. Зачем такая сложность?

mercury320 29.08.2018 15:51

Re: Вопрос по AI моба и дроп с нпц
 
Цитата:

Сообщение от Zubastic (Сообщение 432259)
Это не база, тут нужно через софт или ручками добавлять, а так не вижу ничего трудного.

Ад какой-то. Зачем такая сложность?

Спасибо, но я в курсе что это не в базе вот и спрашивал про софт есть ли такой в свободном доступе?

Насчет АИ насколько я понимаю то тут все верно в чем может быть еще дело?

Zubastic 29.08.2018 16:14

Re: Вопрос по AI моба и дроп с нпц
 
Цитата:

Сообщение от mercury320 (Сообщение 432260)
Спасибо, но я в курсе что это не в базе вот и спрашивал про софт есть ли такой в свободном доступе?

Насчет АИ насколько я понимаю то тут все верно в чем может быть еще дело?

На счет софта в шаре - хз. Я всегда писал простенький парсер.
В АИ я тебе уже указал ошибку: у тебя параметр для определенного НПС в мейкере, ты не передаешь параметр далее никак из-за этого и не работает. Добавь его в раздел в АИ в npcdata.txt и все заработает.


Текущее время: 08:53. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot