[Ajuda] o meu sistema ta bugdo
#1

a public OnPlayerGiveDamage esta toda bugadona a vida nao sai podem me ajudar?

CODE

PHP код:
public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
{
    if(
Aj[playerid] == false && GetPlayerSpecialAction(playerid) == 2) return SetPlayerHealth(playerid,0);
    switch(
weaponid)
    {
        case 
24amount 32;
    }
    if(
Morto[damagedid] == true) return 1;
    if(
Lagduel[damagedid] == true) return 1;
    
PlayerPlaySound(damagedid,6401,0,0,0);
    new 
Float:LifeFloat:ColeeteFloat:Dano;
    
GetPlayerArmour(damagedid,Coleete);
    
GetPlayerHealth(damagedid,Life);
    if(
Coleete 0)
    {
        if(
amount Coleete)
        {
            
Dano amount Coleete;
            
Life Life Dano;
            
SetPlayerArmour(damagedid0.0);
            
SetPlayerHealth(damagedidLife);
            
SetPlayerScore(playerid,GetPlayerScore(playerid) + floatround(amount) / 2);
            return 
1;
        }
        
SetPlayerScore(playerid,GetPlayerScore(playerid) + floatround(amount) / 2);
        
Coleete Coleete amount;
        
SetPlayerArmour(damagedidColeete);
    }
    if(
Coleete 1)
    {
        
Life Life amount;
        
SetPlayerScore(playerid,GetPlayerScore(playerid) + floatround(amount) / 2);
        
SetPlayerHealth(damagedidLife);
        if(
Life <= 0)
        {
            
Morto[damagedid] = true;
            
SendDeathMessage(playerid,damagedid,weaponid);
            
DeadPlayer(damagedid,playerid,weaponid);
        }
    }
    return 
1;

OBS NAO QUERIA NADA DISSO COMPLICADO PODEM FAZER SIMPLES PQ SE EU RETIRAR A PUBLIC A VIDA NAO SAI DO PLAYER E MESMO ASSIM NAO SAI PODEM ME AJUDA PFF?
Reply
#2

Faзa depuraзгo do cуdigo (Debug), e veja atй que ponto callback й executada.
Tutorial depuraзгo
Reply
#3

O player sу receberб dano se a arma que for usada para atirar for a Desert Eagle (ID 24).
Para que isso funcione para outras armas, vocк deve colocar na parte do "case 24: ...", embaixo, na ocasiгo de outras armas serem utilizadas
Por exemplo, supondo para a Minigun:
case 38: amount = 40;
Assim por diante.
Reply
#4

Quote:

O player sу receberб dano se a arma que for usada para atirar for a Desert Eagle (ID 24).
Para que isso funcione para outras armas, vocк deve colocar na parte do "case 24: ...", embaixo, na ocasiгo de outras armas serem utilizadas
Por exemplo, supondo para a Minigun:
case 38: amount = 40;
Assim por diante.

Nгo, o prуprio jogo possui esses valores prй-definidos, no caso do cуdigo dele, ele apenas alterou o dano da eagle para
32.
Reply
#5

Quote:

public OnPlayerTakeDamage(playerid,issuerid,Float:amount, weaponid)
{
if(Lagduel[playerid] == false) return 1;
if(weaponid == 24) amount = 20;
SetPlayerScore(issuerid,GetPlayerScore(issuerid) + floatround(amount) / 10);
PlayerPlaySound(playerid,6401,0,0,0);
new Float:life;
GetPlayerHealth(playerid,life);
if((life - amount) <= 0)
{
Morto[playerid] = true;
SendDeathMessage(issuerid,playerid,weaponid);
DeadPlayer(playerid,issuerid,weaponid);
}
return 1;
}

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
if(Aj[playerid] == false && GetPlayerSpecialAction(playerid) == 2) return SetPlayerHealth(playerid,0);
switch(weaponid)
{
case 24: amount = 32;
}
if(Morto[damagedid] == true) return 1;
if(Lagduel[damagedid] == true) return 1;
PlayerPlaySound(damagedid,6401,0,0,0);
new Float:Life, Float:Coleete, Floatano;
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);
SetPlayerScore(playerid,GetPlayerScore(playerid) + floatround(amount) / 2);
return 1;
}
SetPlayerScore(playerid,GetPlayerScore(playerid) + floatround(amount) / 2);
Coleete = Coleete - amount;
SetPlayerArmour(damagedid, Coleete);
}
if(Coleete < 1)
{
Life = Life - amount;
SetPlayerScore(playerid,GetPlayerScore(playerid) + floatround(amount) / 2);
SetPlayerHealth(damagedid, Life);
if(Life <= 0)
{
Morto[damagedid] = true;
SendDeathMessage(playerid,damagedid,weaponid);
DeadPlayer(damagedid,playerid,weaponid);
}
}
return 1;
}

achei esses 2 callback sera que e a take?
Reply
#6

Quote:
Originally Posted by Injury
Посмотреть сообщение
Nгo, o prуprio jogo possui esses valores prй-definidos, no caso do cуdigo dele, ele apenas alterou o dano da eagle para
32.
Nгo sei se viu, mas o HelderPT deixou avisado no primeiro tуpico que retirando essa public por inteira, os players nгo levam dano. Isso deve ser algum script fora das linhas que ele mandou para nуs.
Sendo assim, vocк tem razгo dizendo que o prуprio jogo possui valores prй-definidos, mas nessa GM esses valores foram descartados.

@TOPIC

HelderPT, vocк tem a public OnPlayerWeaponShot nesta GM?
Reply
#7

Faзa o debug como eu disse, nгo adianta tudo isso, talvez algumas dessas variбveis estб bloqueando o cуdigo de ser processado, por exemplo, a verificaзгo de morte.
Reply
#8

Quote:

Nгo sei se viu, mas o HelderPT deixou avisado no primeiro tуpico que retirando essa public por inteira, os players nгo levam dano. Isso deve ser algum script fora das linhas que ele mandou para nуs.
Sendo assim, vocк tem razгo dizendo que o prуprio jogo possui valores prй-definidos, mas nessa GM esses valores foram descartados.

Assim, como John disse, olhe sua OnPlayerWeaponShot, veja se possui algum return 0;, caso nгo, verifique se os jogadores sгo de times destintos, pois players de times iguais nгo recebem dano por armas.
Reply
#9

Apague o OnPlayerTakeDamage todo e retire isso if(Aj[playerid] == false && GetPlayerSpecialAction(playerid) == 2) return SetPlayerHealth(playerid,0);

E tire o return 1; do if amount > colete
Reply
#10

Nao tenho a callback "OnPlayerWeaponShot" no gamemode
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)