Разбор скрипта «NPC боксёр в SAMP» (Часть 2)

31 августа 2015 | Рубрика: Статьи

Добавилось то, что теперь мы дописываем в строку к NPC интерьер, где он будет и его боевой стиль. Об этом мы писали в серии статей «Руководство по созданию NPC в SAMP«

public OnFilterScriptInit() – вызывается, когда скрипт начинает работу

{

        ringused=0; — скрипт загрузился – говорим, на ринге никого нет

        for (new i = 0; i < 499; i++) {

        DeletePVar(i, «box»);  для всех игроков удаляем pvar box

        }

        pickupkase = CreatePickup(1314,2, 757.4380,5.8088,1000.7014, -1);

создаем пикап с идентификатором pickupkase по таким-то координатам, 1314 – моделька пикапа, далее идут координаты по x,y,z, затем идет в каком виртуальном мире, ставьте -1 для всех виртуальных миров, ну а так-то по идее можно и 0, для 0вого мира.

       

}

public OnPlayerDisconnect(playerid, reason) – что будет, когда игрок отключится

{

Проверяем для NPC нашего, боксера то есть

                   for (new npcid = 0; npcid < 1; npcid++) {

                   if(GetPVarInt(playerid, «box»)== 1)

если игрок был с идентификатором box, что значит на ринге

                   {

Выполнить для всех игроков имеющих идентификатор box его удаление, убиваем таймер, уничтожаем NPC, ставим ринг в положение – не используется, задаем таймер на обновление пикапа для входа на ринг.

                   for (new i = 0; i < 499; i++) {

                   if(GetPVarInt(i, «box»)== 1){

                   DeletePVar(i,»box»);}}

                   KillTimer(boxertimer);

                   FCNPC_Destroy(npc[npcid][npc_ID]);

                   ringused=0;

                   SetTimer(«Renewbox»,15000,0);

                   }

                   }

}

public OnPlayerDeath(playerid, killerid, reason) вызывается когда игро умирает

{

 Всё то же самое

    for (new npcid = 0; npcid < 1; npcid++) {

         if(GetPVarInt(playerid, «box»)== 1)

         {

         for (new i = 0; i < 499; i++) {

         if(GetPVarInt(i, «box»)== 1){

         DeletePVar(i,»box»);}}

         KillTimer(boxertimer);

         FCNPC_Destroy(npc[npcid][npc_ID]);

         ringused=0;

         SetTimer(«Renewbox»,15000,0);

         }

         }

    return 1;

}

public OnFilterScriptExit() когда выключаем скрипт

{

Всё то же самое, кроме

        for (new npcid = 0; npcid < sizeof(npc); npcid++) {

                FCNPC_Destroy(npc[npcid][npc_ID]);

        }

        for (new i = 0; i < 499; i++) {

         if(GetPVarInt(i, «box»)== 1){

скрипт выключили, а игроку на ринге быть? Ну уж нет, все кто имеют подобные идентификатор должны быть немедленно телепортированы с него, а идентификатор удален с них

         SetPlayerPos(i, 766.2117,6.1029,1000.7167);

         SetPlayerFacingAngle(i, 170.4782);

                   DeletePVar(i,»box»);}}

        KillTimer(boxertimer);

        DestroyPickup(pickupkase);

        return 1;

}

Вернуться в первую частьРазбор скрипта «NPC боксёр в SAMP» (Часть 3)