Читайте предыдущую часть статьи по ссылке: Разбор скрипта «NPC боксёр в SAMP» (Часть 4)
SetTimer(«spawnNPC», 500, 0); — феил, не стер со старого скрипта, он ничего не делает, раньше NPC вызывался через паблик, паблик удалил, а вот то, что его вызывать один раз не удалил, вообщем он ни на что не влияет можете смело удалить эту строчку.
} – закрываем пикап.
Return 1; — ну обычно его ставят, пусть постоит, он нужен не везде, например, вы вызывали выдачу какого-то сообщения через таймер, таймер крайне мал по времени, в том плане, что вызывается каждые 200 секунд, скажем, чтобы Вам 2 раза не выдало одно и то же, ставим в конце return 0, типа не повторять и удаляем его, это как пример, подробнее на samp wiki)
}Закрываем паблик скобочкой.
forward destroyNPC(npcid);
public destroyNPC(npcid)
{
FCNPC_Destroy(npcid);
}
Удаляем NPC, используется при смерти NPC.
forward Renewbox(npcid);
public Renewbox(npcid)
{
pickupkase = CreatePickup(1314,2, 757.4380,5.8088,1000.7014, -1);
SendClientMessageToAll(-1,»Боксерский ринг обновлен!»);
}
Обновляем боксерский ринг и пишем об этом всем
public FCNPC_OnDeath(npcid, killerid, weaponid) вызывается когда NPC умер
{
Проверяем если скин NPC 81 и его состояния равно 0, либо 1, либо 2, то
if(FCNPC_GetSkin(npcid)==81 && GetPVarInt(npcid, «Condition»)== 0 || GetPVarInt(npcid, «Condition»)== 1 || GetPVarInt(npcid, «Condition»)== 2)
{
if(ringused==1) если стоит, что ринг используется, перевести в не используется
{
ringused=0;
SetTimer(«Renewbox»,15000,0); обновляем ринг
}
DeletePVar(npcid,»Condition»); удаляем Pvar для NPC
SetTimerEx(«destroyNPC»,5000,0,»dd»,npcid); удаляем конкретного NPC
KillTimer(boxertimer); убиваем таймер
if(GetPVarInt(killerid, «box»)== 1){ если игрок убивший NPC имел идентификатор box, выдадим ему стиль и напишем об этом
SetPlayerFightingStyle(killerid,FIGHT_STYLE_BOXING);
SendClientMessage(killerid,COLOR_GREEN,»Вы овладели боксом! «);}
for (new i = 0; i < 499; i++) {
для всех игроков, если у них идентификатор 1, то зададим виртуальный мир, позицию и угол, а так же удалим идентификатор.
if(GetPVarInt(i, «box»)== 1){
SetPlayerInterior(i, 5);
SetPlayerPos(i, 766.2117,6.1029,1000.7167);
SetPlayerFacingAngle(i, 170.4782);
DeletePVar(i,»box»);}}
}
return 1;
}
static stock GetClosestPlayer(playerid,&Float:cdist)
{
new cid = INVALID_PLAYER_ID;
new Float:dist;
new Float:x,Float:y,Float:z;
new Float:mx,Float:my,Float:mz;
cdist = 65000.0;
GetPlayerPos(playerid,mx,my,mz);
for(new i = GetMaxPlayers();i >= 0;i—)
{
if(playerid == i) continue;
if(!IsPlayerConnected(i)) continue;
if (IsPlayerNPC(i)) continue;
GetPlayerPos(i,x,y,z);
x -= mx;
y -= my;
z -= mz;
dist = floatsqroot(x*x + y*y + z*z);
if(dist < cdist)
{
cdist = dist;
cid = i;
}
}
return cid;
}
Читай далее: Разбор скрипта «NPC боксёр в SAMP» (Часть 6)