Добавилось то, что теперь мы дописываем в строку к 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)