[Ajuda] Dъvida, No-Lag
#1

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;
}
Reply
#2

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
Reply
#3

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.
Reply
#4

A soluзгo pra mim foi fazer uma callback secundбria, e deixar a OnPlayerDeath apenas para suicнdios.
Reply
#5

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;
}
Reply
#6

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?
Reply
#7

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);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)