[Ajuda] GiveDamage
#1

Estou com uma dъvida,quero limitar uns comandos para quando o player estiver em batalha(Player que de dano estiver dentro de um raio de 10 metros prуximo de quem levou o dano),estou usando public OnPlayerGiveDamage,ficou assim:
pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) {

        new Float: X, Float: Y, Float: Z;
        GetPlayerPos(playerid, X, Y, Z);
        if (IsPlayerInRangeOfPoint(damagedid, 10.0, X, Y, Z))
        {
            emcombate[damagedid] = 1;
            SetTimerEx("Nocombate", 5000, false, "i", playerid);
        }


return 1;
}
pawn Код:
forward Nocombate(playerid);
public Nocombate(playerid)
{
    emcombate[playerid] = 0;
    return 1;
}
Minha dъvida й o seguinte,quando o timer й chamado ele seta o playerid no caso quem deu o dano,como posso setar o player que levou o dano no caso usar a damagedid fora da public? Ou existe outra maneira mais simples que essa?
Reply
#2

Nгo entendi muito bem mas acho que й isso que vocк quer:
pawn Код:
SetTimerEx("Nocombate", 5000, false, "ii", playerid,damageid);
forward Nocombate(id1, id2);
public Nocombate(id1, id2)
{
    emcombate[id1] = 0;
    emcombate[id2] = 0;
    return 1;
}
Reply
#3

Use Array/GetPVarInt para armazenar o damageid.
Reply
#4

MultiKill nгo deu certo,tentei Array/GetPVarInt mas nгo entendo muito como funciona,porйm agora estб acontecendo o seguinte,o player que toma o tiro nгo pode mais usar o comando,porйm mesmo depois de 5 metros de distancia ele nгo pode usar(no caso desativac nгo volta a 0).

Codigo:
pawn Код:
new emcombate[500];
new desativac[MAX_PLAYERS];

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) {

        new Float: X, Float: Y, Float: Z;// Vamos criar as variaveis para armazenar a posiзгo do atirador.
        GetPlayerPos(playerid, X, Y, Z);//Vamos Armazenar a posiзгo do atirador.
        if (IsPlayerInRangeOfPoint(damagedid, 5.0, X, Y, Z))// Verificamos se o player que levou o dano estб em um raio de 5 metros do atirador.
        {
            SetPVarInt(damagedid,"levoudano",10);
            emcombate[damagedid] = SetTimerEx("Nocombate",1000,0,"i",damagedid);
        }


return 1;
}

forward Nocombate(playerid, damagedid);
public Nocombate(playerid, damagedid)
{
   if(GetPVarInt(damagedid,"levoudano") == 10){
   desativac[damagedid] = desativac[playerid];
   desativac[playerid] = 1;
   KillTimer(emcombate[damagedid]);
   }
}

   
      //comando
        if(desativac[playerid] == 1)
            {
            SendClientMessage(playerid, COLOR_GREY, "   Vocк nгo pode equipar em batalha!");
            return true;
            }
Reply
#5

Tente isto,
pawn Код:
#include a_samp

new
    bool: desativac[MAX_PLAYERS char]
;

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) {

    static
        Float: X,
        Float: Y,
        Float: Z
    ;
    GetPlayerPos(playerid, X, Y, Z);
   
    if (IsPlayerInRangeOfPoint(damagedid, 5.0, X, Y, Z))
    {
        SetPVarInt(damagedid,"levoudano",10);
        CallLocalFunction("Nocombate", "ii", playerid, damagedid);
    }
    return 1;
}


forward Nocombate(playerid, damagedid);
public Nocombate(playerid, damagedid)
{
    desativac[playerid] = (GetPVarInt(damagedid,"levoudano") == 10) ? (true) : (false);
    return true;
}


      //comando
        if(desativac[playerid])
            return SendClientMessage(playerid, COLOR_GREY, "   Vocк nгo pode equipar em batalha!");
Reply
#6

Deu um erro aqui.
Код:
 
error: 001: expected token: "]", but found "-integer value-"
Linha:
pawn Код:
new bool: desativac[MAX_PLAYERS char];
Reply
#7

Aqui compilou corretamente.

pawn Код:
new
    bool: desativac[MAX_PLAYERS]
;
Reply
#8

Agora foi sem o "char". Entгo testei aqui e continua o erro,quando o player da um tiro em alguйm ele nгo pode equipar,mesmo muito longe
Reply
#9

Nгo entendi oque vocк quer, apenas arrumei o cуdigo..

Vocк quer que, ao o player levar tiro, nгo poderб digitar comando? e quando o cara que atirar estiver longe, aн pode digitar comando ?
Reply
#10

Desculpe acho que me expressei mal,mas й isso mesmo,quando o player que levou o tiro estiver longe de quem atirou(5 metros) libera o comando.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)