[Ajuda] bug morte
#1

as vezes quando morre o jogador nгo executa a funзгo onplayerdeath, mas so acontece quando morre pra algum jogador, o problema acho que estб nesse codigo.


public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
Код:
	// /DM
	DMSystem[playerid][damagedid]=true;

    format(string, sizeof(string), "ID=%d", playerid);
    SetPVarInt(damagedid, string, gettime()+600);
	SetPVarInt(damagedid, "VarDano", gettime()+180);

//------------- Retirar Vida/Colete ------------------

	PlayerPlaySound(damagedid, 17804,  0.0, 0.0, 0.0);
	PlayerPlaySound(playerid, 17802,  0.0, 0.0, 0.0);

	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;

			if(Life <= 0)
			{
		static Float:X, Float:Y, Float:Z, Float:R, str[180];
		GetPlayerPos(damagedid, X, Y, Z);
		GetPlayerFacingAngle(damagedid, R);

		switch(bodypart)
		{
		    case 3:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro no Peito", PlayerName(damagedid), PlayerName(playerid));
		    case 4:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Virilha", PlayerName(damagedid), PlayerName(playerid));
		    case 5:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro no Braзo esquerdo", PlayerName(damagedid), PlayerName(playerid));
		    case 6:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro no Braзo direito", PlayerName(damagedid), PlayerName(playerid));
		    case 7:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Perna esquerda", PlayerName(damagedid), PlayerName(playerid));
		    case 8:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Perna direita", PlayerName(damagedid), PlayerName(playerid));
		    case 9:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Cabeзa", PlayerName(damagedid), PlayerName(playerid));
		}

	 	CriarCadaver(X, Y, Z, R, str, GetPlayerSkin(damagedid), GetPlayerVirtualWorld(damagedid), GetPlayerInterior(damagedid));
       OnPlayerDeath(damagedid, playerid, weaponid);
   	   pmorto[damagedid] = true;
			}
            SetPlayerArmour(damagedid, 0.0);
            SetPlayerHealth(damagedid, Life);
        }
        else
        {
        	Coleete = Coleete - amount;
        	SetPlayerArmour(damagedid, Coleete);
		}
    }
    else if(Coleete < 1)
    {
        Life = Life - amount;

		if(Life <= 0)
		{
		static Float:X, Float:Y, Float:Z, Float:R, str[180];
		GetPlayerPos(damagedid, X, Y, Z);
		GetPlayerFacingAngle(damagedid, R);

		switch(bodypart)
		{
		    case 3:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro no Peito", PlayerName(damagedid), PlayerName(playerid));
		    case 4:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Virilha", PlayerName(damagedid), PlayerName(playerid));
		    case 5:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro no Braзo esquerdo", PlayerName(damagedid), PlayerName(playerid));
		    case 6:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro no Braзo direito", PlayerName(damagedid), PlayerName(playerid));
		    case 7:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Perna esquerda", PlayerName(damagedid), PlayerName(playerid));
		    case 8:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Perna direita", PlayerName(damagedid), PlayerName(playerid));
		    case 9:
		    	format(str, sizeof(str), "Corpo de %s\nAssasino: %s\nCausa da morte foi: Tiro na Cabeзa", PlayerName(damagedid), PlayerName(playerid));
		}
        OnPlayerDeath(damagedid, playerid, weaponid);
   	    pmorto[damagedid] = true;
		CriarCadaver(X, Y, Z, R, str, GetPlayerSkin(damagedid), GetPlayerVirtualWorld(damagedid), GetPlayerInterior(damagedid));
		}
        SetPlayerHealth(damagedid, Life);
    }
alguem pode me ajudar?
Reply
#2

Vocк poderia remover o OnPlayerGiveDamage e OnPlayerTakeDamage para OnPlayerDamage,
e usar weapon-confing
https://github.com/oscar-broman/samp-weapon-config
https://sampforum.blast.hk/showthread.php?tid=563387
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)