[Ajuda] Bug vida
#1


Estou criando um GM do zero, e percebi que as vezes quando o jogador morre ele ainda consegue andar mas com a vida zerada...



Alguйm tem uma soluзгo para isso ?


Ninguйm ?
Reply
#2

Alguйm?
Reply
#3

Poste o cуdigo, ninguйm aqui e mбgico.


Quote:
Originally Posted by RafaelMau
Посмотреть сообщение
Estou criando um GM do zero
Kkkkk duvido muito
Reply
#4

Bom do GM й isso...

PHP код:
    if(killerid != INVALID_PLAYER_IDSendDeathMessage(killeridplayeridreason);
    else  
SendDeathMessage(INVALID_PLAYER_IDplayeridreason);
    
    
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
    
ScoreNaSessao[killerid]++;
    
CallRemoteFunction("DarDinheiro""ii"killerid100);
    if(
killerid == INVALID_PLAYER_ID)
    {
        
TogglePlayerSpectating playerid ,  );
        
PlayerSpectatePlayer playerid ,  49 );
        
SetTimerEx "FinishPlayerSpectatePlayer" ,  5000 ,  ,  "i" ,  playerid );
    }
    
TogglePlayerSpectating playerid ,  );
    
PlayerSpectatePlayer playerid ,  killerid );
    
SetTimerEx "FinishPlayerSpectatePlayer" ,  5000 ,  ,  "i" ,  playerid ); 
Reply
#5

Quote:
Originally Posted by RafaelMau
Посмотреть сообщение
Bom do GM й isso...

PHP код:
    if(killerid != INVALID_PLAYER_IDSendDeathMessage(killeridplayeridreason);
    else  
SendDeathMessage(INVALID_PLAYER_IDplayeridreason);
    
    
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
    
ScoreNaSessao[killerid]++;
    
CallRemoteFunction("DarDinheiro""ii"killerid100);
    if(
killerid == INVALID_PLAYER_ID)
    {
        
TogglePlayerSpectating playerid ,  );
        
PlayerSpectatePlayer playerid ,  49 );
        
SetTimerEx "FinishPlayerSpectatePlayer" ,  5000 ,  ,  "i" ,  playerid );
    }
    
TogglePlayerSpectating playerid ,  );
    
PlayerSpectatePlayer playerid ,  killerid );
    
SetTimerEx "FinishPlayerSpectatePlayer" ,  5000 ,  ,  "i" ,  playerid ); 
1° Vocк cometeu Double-Post, se eu nгo me engano, sу pode fazer double-post depois de 24hrs se ninguйm comentar seu post.
Bom, pelo que vi , quando o jogador morre irб aparecer o jogador que o matou nй?
Isso estб funcionando? Porque vocк disse que quando o jogador morre ele ainda pode continuar andando mбs com a vida no 0...
Se a funзгo de espiar o jogador que matou te matou estiver funcionando, acho que depois que o player parar de espiar o matador, ele irб spawnar, estou certo ou errado? Me corrija por favor se eu estiver errado.
Na verdade nгo intendi muito oque vocк quis dizer no post, pois fez um post com uma explicaзгo boa..
Reply
#6

Quote:
Originally Posted by DjonathaTM
Посмотреть сообщение
1° Vocк cometeu Double-Post, se eu nгo me engano, sу pode fazer double-post depois de 24hrs se ninguйm comentar seu post.
Bom, pelo que vi , quando o jogador morre irб aparecer o jogador que o matou nй?
Isso estб funcionando? Porque vocк disse que quando o jogador morre ele ainda pode continuar andando mбs com a vida no 0...
Se a funзгo de espiar o jogador que matou te matou estiver funcionando, acho que depois que o player parar de espiar o matador, ele irб spawnar, estou certo ou errado? Me corrija por favor se eu estiver errado.
Na verdade nгo intendi muito oque vocк quis dizer no post, pois fez um post com uma explicaзгo boa..
Mais ou menos isso, a timer chamada spawna o jogado como vc falou, o bug ocorre com frequкncia depois de reiniciar o servidor eu tentei fazer um timer para verificar se o jogador estб com 0 de vida dar spawn mas n funcionou, veja...

PHP код:
forward VerificarMorto(playerid);
public 
VerificarMorto(playerid)
{
    new 
Float:health;
    
GetPlayerHealth(playerid,health);
    if(
health == 0.0)
    {
        
SpawnPlayer(playerid);
    }
    return 
1;

Timer chamada quando o jogador й morto
PHP код:
forward FinishPlayerSpectatePlayer (playerid);
public 
FinishPlayerSpectatePlayer(playerid)
{
    
TogglePlayerSpectating(playerid0);
    return 
1;

Reply
#7

Quote:
Originally Posted by RafaelMau
Посмотреть сообщение
Mais ou menos isso, a timer chamada spawna o jogado como vc falou, o bug ocorre com frequкncia depois de reiniciar o servidor eu tentei fazer um timer para verificar se o jogador estб com 0 de vida dar spawn mas n funcionou, veja...

PHP код:
forward VerificarMorto(playerid);
public 
VerificarMorto(playerid)
{
    new 
Float:health;
    
GetPlayerHealth(playerid,health);
    if(
health == 0.0)
    {
        
SpawnPlayer(playerid);
    }
    return 
1;

Timer chamada quando o jogador й morto
PHP код:
forward FinishPlayerSpectatePlayer (playerid);
public 
FinishPlayerSpectatePlayer(playerid)
{
    
TogglePlayerSpectating(playerid0);
    return 
1;

Hm... Bom, mas quando o jogador morre, ele vai espiar o jogador que o matou nй?
Ele ta espiando, ou nгo? Porque, se ele estivesse espiando ele nгo iria poder andar
Explica mais um pouco.. Nгo entendi ainda muito.
Reply
#8

Manow, essa й sua OnPlayerDeath completa ou nгo?
Se nгo for, manda ela completa.
Reply
#9

OnPlayerDeath Inteirinho
PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
    
SetTimerEx("AntiFakeFreeKill"2000,false,"i",playerid);
    
DarK_OnPlayerDeath(playeridkilleridreason);
    
KillTimer(TimerTeleportCP[playerid]);
    if(
TaX1[playerid] == true)
    {
        
        
BloquearComandosNoX1[playerid] = false;
        
ResetPlayerWeapons(playerid);
        
ResetPlayerWeapons(killerid);
        
TaX1[playerid] = false;
        
TaX1[killerid] = false;
        
SpawnPlayer(killerid);
        
Playersx1 0;
        new 
string[128];
        new 
pname[MAX_PLAYER_NAME];
        new 
matador[MAX_PLAYER_NAME];
        
GetPlayerName(killeridmatadorsizeof(matador));
        
GetPlayerName(playeridpnamesizeof(pname));
        
format(stringsizeof(string), "[X1] {09FF00}%s {00FFE1}venceu o /x1 contra {FF0000}%s{00FFE1} parabйns para o {09FF00}%s{00FFE1}!"matadorpnamematador);
        
SendClientMessageToAll(AMARELOstring);
    }else{
        
GetPlayerPos(playeridpos_info[playerid][pX], pos_info[playerid][pY], pos_info[playerid][pZ]);
        
GetPlayerFacingAngle(playeridpos_info[playerid][pA]);
        
CriouCaixao++;
        
ObjetoCaixao[CriouCaixao] = CreateObject(19339pos_info[playerid][pX], pos_info[playerid][pY], pos_info[playerid][pZ]-0.70.000000.00000pos_info[playerid][pA]);
        
ObjetoMorto[playerid] = CreateObject(18668pos_info[playerid][pX], pos_info[playerid][pY], pos_info[playerid][pZ]-0.60.000000.000000.00000);
        new 
string[128];
        new 
pname[MAX_PLAYER_NAME];
        new 
matador[MAX_PLAYER_NAME];
        
GetPlayerName(killeridmatadorsizeof(matador));
        
GetPlayerName(playeridpnamesizeof(pname));
        
format(stringsizeof(string), "{FF0000}%s{3845FF} foi morto por {00FF22}%s{3845FF} aqui!"pname,matador);
        
CriouTextoCaixao++;
        
TextoCaixao[CriouTextoCaixao] = Create3DTextLabel(string0xFF00FFFFpos_info[playerid][pX], pos_info[playerid][pY], pos_info[playerid][pZ], 40.000);
        
SetTimerEx "ApagarObjetoMorto" ,  5000 ,  ,  "i" ,  playerid );
        if(
GetPlayerWeapon(playerid) == 17
        
|| GetPlayerWeapon(playerid) == 18
        
|| GetPlayerWeapon(playerid) == 35
        
|| GetPlayerWeapon(playerid) == 36
        
|| GetPlayerWeapon(playerid) == 37
        
|| GetPlayerWeapon(playerid) == 38
        
|| GetPlayerWeapon(playerid) == 43
        
|| GetPlayerWeapon(playerid) == 44
        
|| GetPlayerWeapon(playerid) == 45)
        {
            
            return 
1;
        }
        for(new 
i_slot 0gunammoi_slot != 12i_slot++)
        {
            
            new 
Float:pPosXFloat:pPosYFloat:pPosZ;
            
GetPlayerPos(playeridpPosXpPosYpPosZ);
            
GetPlayerWeaponData(playeridi_slotgunammo);
            if(
gun != && ammo != 0CreateDroppedGun(gunammopPosX+random(2)-random(2), pPosY+random(2)-random(2), pPosZ);
        }
    }
    
TextDrawShowForPlayer(playeridTextdraw10000);
    if(
killerid != INVALID_PLAYER_IDSendDeathMessage(killeridplayeridreason);
    else  
SendDeathMessage(INVALID_PLAYER_IDplayeridreason);
    
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
    
ScoreNaSessao[killerid]++;
    
CallRemoteFunction("DarDinheiro""ii"killerid100);
    if(
killerid == INVALID_PLAYER_ID)
    {
        
        
TogglePlayerSpectating playerid ,  );
        
PlayerSpectatePlayer playerid ,  49 );
        
SetTimerEx "FinishPlayerSpectatePlayer" ,  5000 ,  ,  "i" ,  playerid );
    }
    
TogglePlayerSpectating playerid ,  );
    
PlayerSpectatePlayer playerid ,  killerid );
    
GameTextForPlayer(playerid,"~y~OLHA QUEM TE ~n~~r~MATOU",3000,3);
    
GameTextForPlayer(killerid,"~y~MENOS UM!",3000,3);
    
SetTimerEx "FinishPlayerSpectatePlayer" ,  5000 ,  ,  "i" ,  playerid );
    
TextDrawHideForPlayer(playerid,txtTimeDisp);
    
TextDrawHideForPlayer(playerid,txtDateDisp);
    if(
IsPlayerAttachedObjectSlotUsed(playerid1)) ATT_RemovePlayerAttachedObject(playerid1);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[0]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[1]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[2]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[3]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[4]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[5]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[6]);
    
TextDrawHideForPlayer(playerid,NomeTeleporte[7]);
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)