public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
new Float:Life, Float:Coleete, Float:Dano;
GetPlayerArmour(damagedid, Coleete);
GetPlayerHealth(damagedid, Life);
if(Coleete > 0)
{
if(amount > Coleete)
{
Dano = amount - Coleete;
Life = Life - Dano;
SetPlayerArmour(damagedid, 0.0);
SetPlayerHealth(damagedid, Life);
return 1;
}
Coleete = Coleete - amount;
SetPlayerArmour(damagedid, Coleete);
}
if(Coleete < 1)
{
Life = Life - amount;
SetPlayerHealth(damagedid, Life);
}
return 1;
}
if(health <= 0)
return OnPlayerKillPlayer(playerid,damagedid,weaponid); // Cria essa callback
Tem que usar uma callback secundбria, pois quando o jogador tem a vida setada para 0, ele vai executar a OnPlayerDeath sem nenhum assassino.
Entгo a soluзгo seria pawn Код:
|
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
new Float:Life, Float:Coleete, Float:Dano;
GetPlayerArmour(damagedid, Coleete);
GetPlayerHealth(damagedid, Life);
if(health <= 0) return OnPlayerKillPlayer(playerid,damagedid,weaponid);
if(Coleete > 0)
{
if(amount > Coleete)
{
Dano = amount - Coleete;
Life = Life - Dano;
SetPlayerArmour(damagedid, 0.0);
SetPlayerHealth(damagedid, Life);
return 1;
}
Coleete = Coleete - amount;
SetPlayerArmour(damagedid, Coleete);
}
if(Coleete < 1)
{
Life = Life - amount;
SetPlayerHealth(damagedid, Life);
}
return 1;
}
if(Life <= 0) return OnPlayerDeath(playerid,damagedid,weaponid);
Eu nгo poderia usar assim ?:
pawn Код:
|
new killedBY[MAX_PLAYERS] = {-1, ...};
public OnPlayerConnect(playerid)
{
killedBY[playerid] = -1;
// resto do cуdigo da sua OnPlayerConnect
}
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
new Float:Life, Float:Coleete, Float:Dano;
GetPlayerArmour(damagedid, Coleete);
GetPlayerHealth(damagedid, Life);
if(Coleete > 0)
{
if(amount > Coleete)
{
Dano = amount - Coleete;
Life = Life - Dano;
SetPlayerArmour(damagedid, 0.0);
SetPlayerHealth(damagedid, Life);
return 1;
}
Coleete = Coleete - amount;
SetPlayerArmour(damagedid, Coleete);
}
if(Coleete < 1)
{
Life = Life - amount;
SetPlayerHealth(damagedid, Life);
if(Life < 0.0) {
killedBY[damageid] = playerid;
}
}
return 1;
}
public OnPlayerDeath(playerid,killerid, reason) {
if(!IsPlayerConnected(killerid) && IsPlayerConnected(killedBY[playerid]))
killerid = killedBY[playerid], killedBY[playerid] = -1;
// resto do cуdigo da sua onplayerdeath
}
Isso na verdade nгo vai matar o player, sу irб executar oque tem dentro de OnPlayerDeath. E caso vocк mate-o em seguida ou antes de usar isso, o cуdigo serб executado 02 vezes seguidas.
|
Tem que fazer uma correзгo. Nisto
pawn Код:
|
Nossa eu tentei isso, comeзou a dar falkekill rss
error 017: undefined symbol "damageid" ![]() |
Fiquei puto agora mano, olha os parвmetros da callback, й damagedid.
Vai pedir ajuda tambйm se vocк escrever seu nome faltando uma letra? |