Explode cmd
#1

pawn Код:
CMD:explode(playerid,params[])
{
    if(PlayerInfo[playerid][Admin] >= 1 || IsPlayerAdmin(playerid))
    {
        if(isnull(params)) return SendClientMessage(playerid, RED, "/explode [target]");
        else
        {
            if(!IsPlayerConnected(strval(params)) || strval(params) == INVALID_PLAYER_ID) return SendClientMessage(playerid, RED, "Target ID is not valid.");
            new Float:X, Float:Y, Float:Z, Float:ohp, Float:oar, Float:nhp, Float:nar;
            GetPlayerPos(strval(params), X, Y, Z);
            GetPlayerHealth(strval(params), ohp);
            GetPlayerArmour(strval(params), oar);
            CreateExplosion(X, Y, Z, 7, 500);
            SendClientMessage(playerid, -1, "Target has been exploded. Checking results...");
            GetPlayerHealth(strval(params), nhp);
            GetPlayerArmour(strval(params), nar);
            if(oar == nar) SendClientMessage(playerid, -1, "Target's armour did not change.");
            else if(nar != oar) SendClientMessage(playerid, -1, "Target's armour changed.");
            if(ohp == nhp) SendClientMessage(playerid, -1, "Target's health did not change.");
            else if(nhp != ohp) SendClientMessage(playerid, -1, "Target's health changed.");
            new stra[110];
            format(stra,sizeof(stra), "(ADMIN) %s(%d) (level: %d) has exploded %s(%d). (/explode)", PlayerName(playerid), playerid, PlayerInfo[playerid][Admin], PlayerName(strval(params)), strval(params));
            SendAdminMessage(stra, 1);
            stra = "\0";
        }
    }
    else return SendClientMessage(playerid, RED, "Access Denied. Admin level 1 is required to use this command.");
    return 1;
}
The problem is, after I explode someone, the health/armour will change but the message will still show that it did NOT change, anybody have any tips?
Reply
#2

pawn Код:
CMD:explode(playerid,params[])
{
    if(PlayerInfo[playerid][Admin] >= 1 || IsPlayerAdmin(playerid))
    {
        if(isnull(params)) return SendClientMessage(playerid, RED, "/explode [target]");
        else
        {
            if(!IsPlayerConnected(strval(params)) || strval(params) == INVALID_PLAYER_ID) return SendClientMessage(playerid, RED, "Target ID is not valid.");
            new Float:X, Float:Y, Float:Z, Float:ohp, Float:oar, Float:nhp, Float:nar;
            GetPlayerPos(strval(params), X, Y, Z);
            GetPlayerHealth(strval(params), ohp);
            GetPlayerArmour(strval(params), oar);
            CreateExplosion(X, Y, Z, 7, 500);
            SendClientMessage(playerid, -1, "Target has been exploded. Checking results...");
            GetPlayerHealth(strval(params), nhp);
            GetPlayerArmour(strval(params), nar);
            if(oar == nar) SendClientMessage(playerid, -1, "Target's armour did not change.");
            if(nar != oar) SendClientMessage(playerid, -1, "Target's armour changed.");
            if(ohp == nhp) SendClientMessage(playerid, -1, "Target's health did not change.");
            if(nhp != ohp) SendClientMessage(playerid, -1, "Target's health changed.");
            new stra[110];
            format(stra,sizeof(stra), "(ADMIN) %s(%d) (level: %d) has exploded %s(%d). (/explode)", PlayerName(playerid), playerid, PlayerInfo[playerid][Admin], PlayerName(strval(params)), strval(params));
            SendAdminMessage(stra, 1);
            stra = "\0";
        }
    }
    else return SendClientMessage(playerid, RED, "Access Denied. Admin level 1 is required to use this command.");
    return 1;
}
I think it was defaulting else if.

Try that.

Also take a look at this: https://sampforum.blast.hk/showthread.php?tid=167419
Reply
#3

Nope, still same.
Reply
#4

pawn Код:
CMD:explode(playerid,params[])
{
    if(PlayerInfo[playerid][Admin] >= 1 || IsPlayerAdmin(playerid))
    {
        if(isnull(params)) return SendClientMessage(playerid, RED, "/explode [target]");
        else
        {
            if(!IsPlayerConnected(strval(params)) || strval(params) == INVALID_PLAYER_ID) return SendClientMessage(playerid, RED, "Target ID is not valid.");
            new Float:X, Float:Y, Float:Z, Float:ohp, Float:oar, Float:nhp, Float:nar;
            GetPlayerPos(strval(params), X, Y, Z);
            GetPlayerHealth(strval(params), ohp);
            GetPlayerArmour(strval(params), oar);
            CreateExplosion(X, Y, Z, 7, 500);
            SendClientMessage(playerid, -1, "Target has been exploded. Checking results...");
            GetPlayerHealth(strval(params), nhp);
            GetPlayerArmour(strval(params), nar);
            if(floatcmp(ohp, nhp) == 0) SendClientMessage(playerid, -1, "Target's armour did not change.");
            if(floatcmp(nar, oar) == -1) SendClientMessage(playerid, -1, "Target's armour changed.");
            if(floatcmp(ohp, nhp)== 0)  SendClientMessage(playerid, -1, "Target's health did not change.");
            if(floatcmp(nhp, ohp) == -1) SendClientMessage(playerid, -1, "Target's health changed.");
            new stra[110];
            format(stra,sizeof(stra), "(ADMIN) %s(%d) (level: %d) has exploded %s(%d). (/explode)", PlayerName(playerid), playerid, PlayerInfo[playerid][Admin], PlayerName(strval(params)), strval(params));
            SendAdminMessage(stra, 1);
            stra = "\0";
        }
    }
    else return SendClientMessage(playerid, RED, "Access Denied. Admin level 1 is required to use this command.");
    return 1;
}
I used:

https://sampwiki.blast.hk/wiki/Floatcmp

Think it might be that.
Reply
#5

Still same ._.

I explode myself, I loose health and I get message:
"Target's armour did not change."
'Target's health did not change."

while it should be:
"Target's armour did not change."
"Target's health changed."
Reply
#6

pawn Код:
CMD:explode(playerid,params[])
{
    if(PlayerInfo[playerid][Admin] >= 1 || IsPlayerAdmin(playerid))
    {
        if(isnull(params)) return SendClientMessage(playerid, RED, "/explode [target]");
        else
        {
            if(!IsPlayerConnected(strval(params)) || strval(params) == INVALID_PLAYER_ID) return SendClientMessage(playerid, RED, "Target ID is not valid.");
            new Float:X, Float:Y, Float:Z, Float:ohp, Float:oar, Float:nhp, Float:nar;
            GetPlayerPos(strval(params), X, Y, Z);
            GetPlayerHealth(strval(params), ohp);
            GetPlayerArmour(strval(params), oar);
            CreateExplosion(X, Y, Z, 7, 500);
            SendClientMessage(playerid, -1, "Target has been exploded. Checking results...");
            if(GetPlayerHealth(strval(params), nar) == oar)
            {
                SendClientMessage(playerid, -1, "Target's armour did not change.");
            }
            if(GetPlayerArmour(strval(params), nar) != oar)
            {
                SendClientMessage(playerid, -1, "Target's armour changed.");
            }
            if(GetPlayerHealth(strval(params), nhp) == ohp)
            {
                SendClientMessage(playerid, -1, "Target's health did not change.");
            }
            if(GetPlayerHealth(strval(params), nhp) != ohp)
            {
                SendClientMessage(playerid, -1, "Target's health changed.");
            }
           
            new stra[110];
            format(stra,sizeof(stra), "(ADMIN) %s(%d) (level: %d) has exploded %s(%d). (/explode)", PlayerName(playerid), playerid, PlayerInfo[playerid][Admin], PlayerName(strval(params)), strval(params));
            SendAdminMessage(stra, 1);
            stra = "\0";
        }
    }
    else return SendClientMessage(playerid, RED, "Access Denied. Admin level 1 is required to use this command.");
    return 1;
}
Give that a try, made it a little more clearer for myself.
Reply
#7

Well yeah, it works now but gotta test it on a hacker tho XD
Reply
#8

Have fun with that!


Grant.
Reply
#9

Apparently explosion type 8 is invisible so may be better for this? Unless I'm missing something. I've never used explosion 8 from what I remember, so it may well not work how I think it does.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)