Ashley100
Умник
Доброго времени суток всем. Этот мануал подойдет для RP модов, для DM думаю тоже).
Описание:
Эта система позволяет нацеплять взрывчатку на заложника(кого угодно), и установить таймер. Спустя некоторое время заложенная на игрока взрывчатка взрывается. Так же её можно и разминировать, находясь по близости от игрока(заложника)
Начнём с переменных
Команды
Команды на YCMD
stock StatusMessage(playerid, str[], textbuble[])
Паблик в котором происходят действия.
Описание:
Эта система позволяет нацеплять взрывчатку на заложника(кого угодно), и установить таймер. Спустя некоторое время заложенная на игрока взрывчатка взрывается. Так же её можно и разминировать, находясь по близости от игрока(заложника)
| /nab id | Надевает объекты взрывчатки на жертву |
| /aktiv | Активирует взрывчатку |
| /razmin | Разминирует взрывчатку(нужно быть в 2 метрах от заложника) |
Начнём с переменных
PHP:
new bomdtimer;// К этой переменной пресваеваится таймер
new bomdplayer;// это будет игрок на которого нацепили взрывчатку
PHP:
if(strcmp(cmd, "/nab", true) == 0)
{
new nabid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте /nab [id игрока]");
//if(nabid == PlayerInfo[playerid][pMember]) return SendClientMessage(playerid, COLOR_GRAD2,"C4 нельзя установить на своих!");
if(GetPVarInt(playerid,"c4") != 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже установлена, используйте /aktiv что бы активировать её");//Проверим может бомба уже стоит и её надо рвануть
nabid = ReturnUser(tmp);// id player
bomdplayer = nabid;
SetPlayerAttachedObject(nabid,2 , 19142, 1,0.08,0.04,0.00,0.0,0.0,-7.4);// bronea
SetPlayerAttachedObject(nabid, 3, 1654, 1, 0.60 -0.5, -0.20);// z ^ //Прикрепить черепаху к спине игрока на 3 слот
SetPVarInt(playerid,"c4", 1);
}
if(strcmp(cmd, "/aktiv", true) == 0)
{
if(GetPVarInt(playerid,"c4") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установлена");
if(GetPVarInt(playerid,"bomdofon") == 1)return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже активирована");
bomdtimer = SetTimer("OtchetBomb", 5000, true);// сейчас стоит 5 сек. Вы поставьте своё время.
SetPVarInt(playerid,"c4", 0);
format(string, sizeof(string), "{ff3300}Таймер запущен. До взрыва 4 минуты!");
StatusMessage(bomdplayer, string, string);
SetPVarInt(playerid,"bomdofon", 1);//bomdofon = 1;
}
if (strcmp(cmd, "/razmin", true)==0)
{
if(GetDistanceBetweenPlayers(playerid, bomdplayer) > 2 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(bomdplayer)) return SendClientMessage(playerid, COLOR_GRAD1, "[{FF0000}Error{B4B5B7}] Игрок слишком далеко от Вас.");
if(GetPVarInt(playerid,"bomdofon") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установлено");
SetPVarInt(playerid,"c4", 0);
SetPVarInt(playerid,"bomdofon", 0);//bomdofon = 0;
SetPVarInt(playerid,"bomdtime", 0);//bomdtime = 0;
KillTimer(bomdtimer);
RemovePlayerAttachedObject(bomdplayer,3);// снимаем бомбу
RemovePlayerAttachedObject(bomdplayer,2);// снимаем broniu
format(string, sizeof(string), "{ff3300}Бомба разминирована!");
StatusMessage(bomdplayer, string, string);
}
Команды на YCMD
PHP:
YCMD:nab(playerid,params[], help)
{
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте /nab [id игрока]");
if(GetPVarInt(playerid,"c4") != 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже установлена, используйте /aktiv что бы активировать её");//Проверим может бомба уже стоит и её надо рвануть
bomdplayer = params[0];// id player
SetPlayerAttachedObject(bomdplayer,2 , 19142, 1,0.08,0.04,0.00,0.0,0.0,-7.4);// bronea
SetPlayerAttachedObject(bomdplayer, 3, 1654, 1, 0.60 -0.5, -0.20);// z ^ //Прикрепить черепаху к спине игрока на 3 слот
SetPVarInt(playerid,"c4", 1);
return 1;
}
YCMD:aktiv(playerid,params[], help)
{
if(GetPVarInt(playerid,"c4") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установлена");
if(GetPVarInt(playerid,"bomdofon") == 1)return SendClientMessage(playerid, COLOR_GRAD2,"C4 уже активированна");//if(bomdofon == 1)
bomdtimer = SetTimer("OtchetBomb", 5000, true);
SetPVarInt(playerid,"c4", 0);
format(string, sizeof(string), "{ff3300}Таймер запущен. До взрыва 4 минуты!");
StatusMessage(bomdplayer, string, string);
SetPVarInt(playerid,"bomdofon", 1);//bomdofon = 1;
return 1;
}
YCMD:razmin(playerid,params[], help)
{
if(GetDistanceBetweenPlayers(playerid, bomdplayer) > 2 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(bomdplayer)) return SendClientMessage(playerid, COLOR_GRAD1, "[{FF0000}Error{B4B5B7}] Игрок слишком далеко от Вас.");
if(GetPVarInt(playerid,"bomdofon") == 0) return SendClientMessage(playerid, COLOR_GRAD2,"C4 еще не установленно");
SetPVarInt(playerid,"c4", 0);
SetPVarInt(playerid,"bomdofon", 0);//bomdofon = 0;
SetPVarInt(playerid,"bomdtime", 0);//bomdtime = 0;
KillTimer(bomdtimer);
RemovePlayerAttachedObject(bomdplayer,3);// снимаем бомбу
RemovePlayerAttachedObject(bomdplayer,2);// снимаем broniu
format(string, sizeof(string), "{ff3300}Бомба разменированна!");
StatusMessage(bomdplayer, string, string);
return 1;
}
stock StatusMessage(playerid, str[], textbuble[])
PHP:
stock StatusMessage(playerid, str[], textbuble[])
{
new Float:Posw[3];
GetPlayerPos(playerid,Posw[0],Posw[1],Posw[2]);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerInRangeOfPoint(i,15.0,Posw[0],Posw[1],Posw[2]) || !IsPlayerConnected(i))continue;
if(GetPlayerInterior(playerid) != GetPlayerInterior(i) || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(i))continue;
SendClientMessage(i,0xdd90ffAA,str);
SetPlayerChatBubble(playerid, textbuble, 0xdd90ffFF, 15.0, 3000);
}
return true;
}
Паблик в котором происходят действия.
PHP:
forward OtchetBomb(playerid);
public OtchetBomb(playerid)
{
new string[90];
new bomdtime;
bomdtime = GetPVarInt(playerid,"bomdtime");
SetPVarInt(playerid,"bomdtime", bomdtime += 1);
if(GetPVarInt(playerid,"c4") == 0)
{
if(GetPVarInt(playerid,"bomdtime") >= 4)// если bomdtime больше 4 то происходит взрыв.
{
KillTimer(bomdtimer);
new Float:x,Float:y,Float:z;
GetPlayerPos(bomdplayer,x,y,z); //узнаём все 3 переменные координат
CreateExplosion(x, y, z,5,50.0);
CreateExplosion(x, y, z,5,50.0);
CreateExplosion(x, y, z,10,50.0);
CreateExplosion(x, y, z,10,50.0);
CreateExplosion(x, y, z,10,50.0);
CreateExplosion(x, y, z,5,50.0);
RemovePlayerAttachedObject(bomdplayer,3);// снимаем бомбу
RemovePlayerAttachedObject(bomdplayer,2);// снимаем broniu
DestroyObject(GetPVarInt(playerid, "c4"));//удаляем обьект бомбы
format(string, sizeof(string), "C4 взорвалась в радиусе 20 метров!");
StatusMessage(bomdplayer, string, string);
SetPVarInt(playerid,"c4", 0);
SetPVarInt(playerid,"bomdofon", 0 );//bomdofon = 0;
SetPVarInt(playerid,"bomdtime", 0 );//bomdtime = 0;
}
else
{
format(string, sizeof(string), "Прошло %d/4 минут с момента активации бомбы.", GetPVarInt(playerid,"bomdtime"));//bomdtime);
StatusMessage(bomdplayer, string, string);
}
}
return 1;
}
Последнее редактирование:
