Dъvida, No-Lag -
JuniorRiddle - 29.09.2013
Entгo, estou tentando fazer um sistema de No-Lag, aquele que faz o tiro na skin, porйm atй agora nгo ficou 100%, o sistema sincroniza bem, deu prea editar os danos das armas, porйm, as vezes, ele mata a pessoa mais de uma vez, ou nгo atribui a kill a quem realmente matou a pessoa. Depois de um tempo eu desisti de tentar fazer um do zero e um usei uma base que o paulor disponibilizou pra um player pra ver se arrumava, usei e modifiquei e atй inseri pra executar a OnPlayerDeath quando a vida do cara chegar a zero, mas mesmo assim, frequentemente ainda acontecem esses bugs, eu creio que seja por que ainda й possнvel atirar no lag do cara mesmo com o script, alguйm sabe se pode ser isso? Ou como arrumar?
pawn Код:
if(34 == weaponid)
{
SetPlayerHealth(damagedid, 0);
GameTextForPlayer(damagedid, "~r~Tiro de Sniper", 2500, 3);
PlayerPlaySound(damagedid, 1058, 0.0, 0.0, 0.0);
OnPlayerDeath(damagedid,playerid,weaponid); return 1;
}
if(23 != weaponid && 34 != weaponid && 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) {OnPlayerDeath(damagedid,playerid,weaponid);}
if(Life < 0.0) {OnPlayerDeath(damagedid,playerid,weaponid);}
}
return 1;
}
Re: Dъvida, No-Lag -
Wellington1999 - 29.09.2013
No meu acontece isso tambйm mais й raro, sу quando eu tiro bastante life tipo so falta 1 tiro ai o cara consegue matar no meu lugar
Re: Dъvida, No-Lag -
JuniorRiddle - 29.09.2013
No meu caso nгo й bem o cara que consegue matar, as vezes vocк mesmo mata: Meu servidor tem a mensagem: Vocк matou tal. Mas, a OnPlayerDeath atribui a kill como se fosse um /darvida 0 e isso atrapalha alguns sistemas.
Re: Dъvida, No-Lag -
arakuta - 30.09.2013
A soluзгo pra mim foi fazer uma callback secundбria, e deixar a OnPlayerDeath apenas para suicнdios.
Re: Dъvida, No-Lag -
Caio_Freeze - 30.09.2013
eu tenho o mesmo problema achava que isso era por causa de atraso no servidor e eu uso esse:
pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
new Float:Life, Float:Colete, Float:Dano;
GetPlayerArmour(damagedid, Colete);
GetPlayerHealth(damagedid, Life);
if(Colete > 0)
{
if(amount > Colete)
{
Dano = amount - Colete;
Life = Life - Dano;
SetPlayerArmour(damagedid, 0.0);
SetPlayerHealth(damagedid, Life);
return 1;
}
Colete = Colete - amount;
SetPlayerArmour(damagedid, Colete);
}
if(Colete < 1)
{
Life = Life - amount;
SetPlayerHealth(damagedid, Life);
}
return 1;
}
Re: Dъvida, No-Lag -
JuniorRiddle - 30.09.2013
Quote:
Originally Posted by arakuta
A soluзгo pra mim foi fazer uma callback secundбria, e deixar a OnPlayerDeath apenas para suicнdios.
|
Vocк diz criar uma callback nova de morte? Com todos os sitemas que dependem de atribuiзгo da morte nela?
Re: Dъvida, No-Lag -
arakuta - 30.09.2013
Mas ou menos por ai... Se tu setar a vida 0 para um player na OnPlayerGiveDamage, execute a callback secundaria.
pawn Код:
forward OnPlayerKillPlayer(killerid,deadid,weaponid);