Иконка ресурса

Скрипт Фикс Закена

monami

Выдающийся
Местный
Сообщения
234
Розыгрыши
0
Репутация
118
Реакции
49
Баллы
1 348
Не знаю на сколько рабочий фикс, (должен фиксить проход к закену) в свое время лежал на mmocom. Под С4
 

Вложения

  • zak-zak.7z
    23,8 КБ · Просмотры: 93
Последнее редактирование:

хм, ну это аи для нпц телепортеров)) но это не правит багу с воротами, их будут на сквозь проходить. Эт не фикс. А просто гк для телепорта и закрытые ворота, которые не открываются.

Моё старое аи для телепортеров к закену за ворота:
Код:
class 1 zakens_gatekeeper_exit : default_npc
{
parameter:
   int InGameHour = 0;
   int CheckTimerID = 5121;
   int CheckTimer = 1000;
   int WaitTimerID = 3711;
   int WaitTimer = 1000;
   int TelSpawnPointID = 7811;
   int IsNight = 1;

handler:
   EventHandler TALKED( talker, i0, i1 )
   {
     if( myself.i_ai0 == 1 )
     {
       myself::InstantTeleport( talker, 52587, 219102, -3224 );
       return;
     }
     if( myself.i_ai0 == 0 )
     {
       myself::Say( talker.name + " how you come here?" );
       return;
     }
     else
     {
       myself::Say( talker.name + " go away from me!" );
     }
     super;
   }

   EventHandler CREATED()
   {
     myself::AddTimerEx( WaitTimerID, WaitTimer );
     myself.i_ai0 = 0;
     super;
   }

   EventHandler NO_DESIRE()
   {
   }

   EventHandler TIMER_FIRED_EX( timer_id, i0, i1, i2 )
   {
     i0 = gg::GetL2Time( 0 );
     i1 = gg::GetL2Time( 1 );
     i2 = gg::GetL2Time( 2 );
     if( timer_id == WaitTimerID )
     {
       if( i2 )
       {
         if( IsNight == 1 )
         {
           myself::AddTimerEx( CheckTimerID, CheckTimer );
         }
         if( IsNight == 0 )
         {
           myself::AddTimerEx( WaitTimerID, WaitTimer );
         }
       }
       else
       {
         myself::AddTimerEx( WaitTimerID, WaitTimer );
       }
     }
     else if( timer_id == CheckTimerID )
     {
       if( i0 == InGameHour && gg::GetL2Time( 1 ) == 5 )
       {
         myself::InstantTeleport( myself.sm, 52342, 219181, -3232 );
         myself::AddTimerEx( TelSpawnPointID, 2 * 60 * 1000 );
         myself.i_ai0 = 1;
       }
       else
       {
         myself::AddTimerEx( WaitTimerID, WaitTimer );
       }
     }
     else if( timer_id == TelSpawnPointID )
     {
       myself::InstantTeleport( myself.sm, 191895, 87799, 1720 );
       myself::AddTimerEx( WaitTimerID, WaitTimer );
       myself.i_ai0 = 0;
     }
     super;
   }
}

class 1 zakens_gatekeeper_enter : default_npc
{
parameter:
   int InGameHour = 0;
   int CheckTimerID = 1231;
   int CheckTimer = 1000;
   int WaitTimerID = 2311;
   int WaitTimer = 1000;
   int TelSpawnPointID = 3211;
   int IsNight = 1;
   int PrivateEx = 1023042;

handler:
   EventHandler TALKED( talker, i0, i1 )
   {
     if( myself.i_ai0 == 1 )
     {
       myself::InstantTeleport( talker, 52306, 219155, -3224 );
       return;
     }
     if( myself.i_ai0 == 0 )
     {
       myself::Say( talker.name + " how you come here?" );
       return;
     }
     else
     {
       myself::Say( talker.name + " go away from me!" );
     }
     super;
   }

   EventHandler CREATED()
   {
     myself::AddTimerEx( WaitTimerID, WaitTimer );
     myself::CreateOnePrivateEx( PrivateEx, "zakens_gatekeeper_exit", 0, 0, myself::FloatToInt( myself.sm.x + 10 ), myself::FloatToInt( myself.sm.y + 10 ), myself::FloatToInt( myself.sm.z ), 0, 0, 0, 0 );
     myself.i_ai0 = 0;
     super;
   }

   EventHandler NO_DESIRE()
   {
   }

   EventHandler TIMER_FIRED_EX( timer_id, i0, i1, i2 )
   {
     i0 = gg::GetL2Time( 0 );
     i1 = gg::GetL2Time( 1 );
     i2 = gg::GetL2Time( 2 );
     if( timer_id == WaitTimerID )
     {
       if( i2 )
       {
         if( IsNight == 1 )
         {
           myself::AddTimerEx( CheckTimerID, CheckTimer );
         }
         if( IsNight == 0 )
         {
           myself::AddTimerEx( WaitTimerID, WaitTimer );
         }
       }
       else
       {
         myself::AddTimerEx( WaitTimerID, WaitTimer );
       }
     }
     else if( timer_id == CheckTimerID )
     {
       if( i0 == InGameHour && gg::GetL2Time( 1 ) == 5 )
       {
         myself::InstantTeleport( myself.sm, 52486, 219103, -3232 );
         myself::AddTimerEx( TelSpawnPointID, 2 * 60 * 1000 );
         myself.i_ai0 = 1;
       }
       else
       {
         myself::AddTimerEx( WaitTimerID, WaitTimer );
       }
     }
     else if( timer_id == TelSpawnPointID )
     {
       myself::InstantTeleport( myself.sm, 191892, 87732, 1720 );
       myself::AddTimerEx( WaitTimerID, WaitTimer );
       myself.i_ai0 = 0;
     }
     super;
   }
}
+ гк телепортируется в отдаленную точку днем, где нет доступа игрокам.
+ гк должны быть в спавне всегда (npcpos.txt)
+ если в игре день - нпц игрока не будет телепортировать никуда (если за суммонить его, он улетит на свою "сейф точку" =) и будет ждать ночи)
+ гк стоят 2 минуты потом возвращаются обратно (на столько времени открывается сама дверь).
 
Последнее редактирование:
Назад
Сверху Снизу