/tazer - (заморажевает игрока на несколько секунд)
Что бы команда работала: ко всем new:
в public OnPlayerConnect(playerid)
в public SetPlayerUnjail()
Добавляем новый паблик:
Создаём новый паблик:
- Код:
if(strcmp(cmd, "/tazer", true) ==0)
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1||PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2||
PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8||PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12||
PlayerInfo[playerid][pMember] == 7 && PlayerInfo[playerid][pRank] == 3)
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, COLOR_GREY, "Нельзя использовать это в Автомобиле!");
return 1;
}
new suspect = GetClosestPlayer(playerid);
if(IsPlayerConnected(suspect))
{
if(PlayerCuffed[suspect] > 0)
{
SendClientMessage(playerid, COLOR_GREY, "Игрок, уже шокирован!");
return 1;
}
if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
{
if(PlayerInfo[suspect][pMember] == 1 || PlayerInfo[suspect][pMember] == 2 || PlayerInfo[suspect][pMember] == 3 || PlayerInfo[suspect][pMember] == 8 ||PlayerInfo[suspect][pMember] == 12 ||PlayerInfo[suspect][pMember] == 19 ||
PlayerInfo[suspect][pLeader] == 1 || PlayerInfo[suspect][pLeader] == 2 || PlayerInfo[suspect][pLeader] == 3 || PlayerInfo[suspect][pLeader] == 8|| PlayerInfo[suspect][pLeader] == 12|| PlayerInfo[suspect][pLeader] == 19)
{
SendClientMessage(playerid, COLOR_GREY, "Нельзя заэлектрошокить закон!");
return 1;
}
if(IsPlayerInAnyVehicle(suspect))
{
SendClientMessage(playerid, COLOR_GREY, "Подозреваемый находится в автомобиле, выведити его сначала !");
return 1;
}
GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Вы ударили электрошоком по %s он паролизован на 8 секунд.", sendername);
SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Вы ударины электрошоком и паролизованы %s на 8 секунд.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* %s выстрелил электрошоком в %s и он был паролизован,.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
GameTextForPlayer(suspect, "~r~Tazed", 2500, 3);
TogglePlayerControllable(suspect, 0);
PlayerCuffed[suspect] = 1;
PlayerCuffedTime[suspect] = 8;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Около Вас нет никого!");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы не законник!");
}
return 1;
}
Что бы команда работала: ко всем new:
- Код:
new PlayerCuffed[MAX_PLAYERS]; //сам тазер
new PlayerCuffedTime[MAX_PLAYERS]; //таймер для тазера
forward GetClosestPlayer(p1);
forward Float:GetDistanceBetweenPlayers(p1,p2);
forward SetPlayerUnjail(); //новый паблик для работы заморозки
в public OnPlayerConnect(playerid)
- Код:
PlayerCuffed[playerid] = 0; PlayerCuffedTime[playerid] = 0;
в public SetPlayerUnjail()
- Код:
if(PlayerCuffed[i] == 1)
{
if(PlayerCuffedTime[i] <= 0)
{
TogglePlayerControllable(i, 1);
PlayerCuffed[i] = 0;
PlayerCuffedTime[i] = 0;
PlayerTazeTime[i] = 1;
}
else
{
PlayerCuffedTime[i] -= 1;
}
}
if(PlayerCuffed[i] == 2)
{
if(PlayerCuffedTime[i] <= 0)
{
GameTextForPlayer(i, "~r~HaPy4HuKu CJleTeJlu, ti CBO6ogEH!", 2500, 3);
TogglePlayerControllable(i, 1);
PlayerCuffed[i] = 0;
PlayerCuffedTime[i] = 0;
}
else
{
PlayerCuffedTime[i] -= 1;
}
}
Добавляем новый паблик:
- Код:
public Float:GetDistanceBetweenPlayers(p1,p2)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
{
return -1.00;
}
GetPlayerPos(p1,x1,y1,z1);
GetPlayerPos(p2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
Создаём новый паблик:
- Код:
public GetClosestPlayer(p1)
{
new x,Float:dis,Float:dis2,player;
player = -1;
dis = 99999.99;
for (x=0;x<MAX_PLAYERS;x++)
{
if(IsPlayerConnected(x))
{
if(x != p1)
{
dis2 = GetDistanceBetweenPlayers(x,p1);
if(dis2 < dis && dis2 != -1.00)
{
dis = dis2;
player = x;
}
}
}
}
return player;
}