Оглушение биткой

Описание: Уроки по скриптингу
Модератор: SJplayer

Miranda F
Автор темы, Старшина
Старшина
Аватара
Miranda F
Автор темы, Старшина
Старшина
Сообщения: 143
Зарегистрирован: 5 июля 2013
С нами: 10 лет 8 месяцев

#1 Miranda » 2 сентября 2013, 16:53

Оглушение биткой
Автор: Sehrget

Описание:

Данная функция позволяет любому игроку у которого есть битка оглушить на 50 секунд ударив ею по голове своего оппонента. После такого удара "жертва" не будет видеть ников, будет лежать все 50 секунд в так называемой "корячке". По желанию можно добавить функцию помощи оглушенному которую может оказать член бригады скорой помощи использовав команду /нашатырь

Для те кто понимает:

В данном случае функция оглушения вызывается с помощью OnPlayerGiveDamage. При написании данного скрипта я учел все возможные баги и внес все необходимые проверки.

Ко всем forward:

Код: Выделить всё

forward Stunned(playerid); 


Ко всем new :

Код: Выделить всё

new StunnedT[MAX_PLAYERS]; 


В конец мода(если есть данный паблик - киньте туда):

Код: Выделить всё

public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
{
    if(
playerid != INVALID_PLAYER_ID && damagedid != INVALID_PLAYER_ID)
    {
            if(
IsPlayerConnected(playerid) && IsPlayerConnected(damagedid))
            {
                   if(
weaponid == && StunnedIF[damagedid] != 1)
                   {
                            
StunnedT[damagedid] = SetTimerEx("Stunned"50000false"i"damagedid);  // 50 секунд, по желанию замените на свое время(в мс.)
                            
SendClientMessage(damagedidCOLOR_RED"Неизвестный оглушил вас бейсбольной битой");
                            
StunnedIF[damagedid] = 1;
                            
AnimationKill(damagedid"CRACK""crckdeth2"4.110000);
                            for(new 
0MAX_PLAYERSi++) ShowPlayerNameTagForPlayer(damagedidifalse);
                   }
            }
    }


Код: Выделить всё

public Stunned(playerid)
{
        
ClearAnimations(playerid);
        
SendClientMessage(playeridCOLOR_RED"Вы пришли в сознание");
        
KillTimer(StunnedT[playerid]);
        
StunnedIF[playerid] = 0;
        for(new 
0MAX_PLAYERSi++) ShowPlayerNameTagForPlayer(damagediditrue);


Для тех кому нужна команда помощи:

Ко всем new :

Код: Выделить всё

new StunnedIF[MAX_PLAYERS]; 


Ко всем командам :

Код: Выделить всё

if(strcmp(cmd"/нашатырь"true) == 0)
{
     
tmp strtok(cmdtextidx);
     if(!
strlen(tmp))
     {
            
SendClientMessage(playeridCOLOR_GREY"PontGame: /нашатырь[playerid/PartOfName]");
            return 
1;
     }
     
giveplayerid ReturnUser(tmp);
     if(
PlayerInfo[playerid][pMember] == || PlayerInfo[playerid][pLeader] == 4
     {
             if(
StunnedIF[giveplayerid] == 1)
             {
                       
StunnedIF[giveplayerid] = 0;
                       
ClearAnimations(playerid);
                       
SendClientMessage(playeridCOLOR_RED"Доктор помог вам прийти в сознание!");
                       
KillTimer(StunnedT[playerid]);
                       for(new 
0MAX_PLAYERSi++) ShowPlayerNameTagForPlayer(damagediditrue);
            }
            else
            {
                     
SendClientMessage(playeridCOLOR_RED"Данный пациент находится в сознании!");
                     return 
1;
            }
      }
      else
      {
                
SendClientMessage(playeridCOLOR_RED"Вы не доктор!");
                return 
1;
      } 
Изображение


Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 5 гостей