GiveDamage -
Gabriel10101 - 20.07.2014
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?
Re: GiveDamage -
MultiKill - 20.07.2014
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;
}
Re: GiveDamage -
zSuYaNw - 20.07.2014
Use Array/GetPVarInt para armazenar o damageid.
Re: GiveDamage -
Gabriel10101 - 20.07.2014
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;
}
Re: GiveDamage -
zSuYaNw - 20.07.2014
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!");
Re: GiveDamage -
Gabriel10101 - 20.07.2014
Deu um erro aqui.
Код:
error: 001: expected token: "]", but found "-integer value-"
Linha:
pawn Код:
new bool: desativac[MAX_PLAYERS char];
Re: GiveDamage -
zSuYaNw - 20.07.2014
Aqui compilou corretamente.
pawn Код:
new
bool: desativac[MAX_PLAYERS]
;
Re: GiveDamage -
Gabriel10101 - 20.07.2014
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
Re: GiveDamage -
zSuYaNw - 20.07.2014
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 ?
Re: GiveDamage -
Gabriel10101 - 20.07.2014
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.