Автор: Sehrget
Описание:
Данная функция позволяет любому игроку у которого есть битка оглушить на 50 секунд ударив ею по голове своего оппонента. После такого удара "жертва" не будет видеть ников, будет лежать все 50 секунд в так называемой "корячке". По желанию можно добавить функцию помощи оглушенному которую может оказать член бригады скорой помощи использовав команду /нашатырь
Для те кто понимает:
В данном случае функция оглушения вызывается с помощью OnPlayerGiveDamage. При написании данного скрипта я учел все возможные баги и внес все необходимые проверки.
Ко всем forward:
Code: Select all
forward Stunned(playerid);
Ко всем new :
Code: Select all
new StunnedT[MAX_PLAYERS];
В конец мода(если есть данный паблик - киньте туда):
Code: Select all
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
if(playerid != INVALID_PLAYER_ID && damagedid != INVALID_PLAYER_ID)
{
if(IsPlayerConnected(playerid) && IsPlayerConnected(damagedid))
{
if(weaponid == 5 && StunnedIF[damagedid] != 1)
{
StunnedT[damagedid] = SetTimerEx("Stunned", 50000, false, "i", damagedid); // 50 секунд, по желанию замените на свое время(в мс.)
SendClientMessage(damagedid, COLOR_RED, "Неизвестный оглушил вас бейсбольной битой");
StunnedIF[damagedid] = 1;
AnimationKill(damagedid, "CRACK", "crckdeth2", 4.1, 1, 0, 0, 0, 0);
for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(damagedid, i, false);
}
}
}
}
Code: Select all
public Stunned(playerid)
{
ClearAnimations(playerid);
SendClientMessage(playerid, COLOR_RED, "Вы пришли в сознание");
KillTimer(StunnedT[playerid]);
StunnedIF[playerid] = 0;
for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(damagedid, i, true);
}
Для тех кому нужна команда помощи:
Ко всем new :
Code: Select all
new StunnedIF[MAX_PLAYERS];
Ко всем командам :
Code: Select all
if(strcmp(cmd, "/нашатырь", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, "PontGame: /нашатырь[playerid/PartOfName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)
{
if(StunnedIF[giveplayerid] == 1)
{
StunnedIF[giveplayerid] = 0;
ClearAnimations(playerid);
SendClientMessage(playerid, COLOR_RED, "Доктор помог вам прийти в сознание!");
KillTimer(StunnedT[playerid]);
for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(damagedid, i, true);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Данный пациент находится в сознании!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Вы не доктор!");
return 1;
}