Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
02.11.2014, 23:22 | |
Читайте предыдущую часть статьи по ссылке: Разбор скрипта "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)
| |
Добавил: AXE |
| Теги: | |
Просмотров: 3333 | Рейтинг: 0.0/0 |