Explode cmd -
LocMax - 05.04.2014
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?
Re: Explode cmd -
Dokins - 05.04.2014
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
Re: Explode cmd -
LocMax - 05.04.2014
Nope, still same.
Re: Explode cmd -
Dokins - 05.04.2014
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.
Re: Explode cmd -
LocMax - 05.04.2014
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."
Re: Explode cmd -
Dokins - 05.04.2014
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.
Re: Explode cmd -
LocMax - 05.04.2014
Well yeah, it works now but gotta test it on a hacker tho XD
Re: Explode cmd -
Dokins - 05.04.2014
Have fun with that!
Grant.
Re: Explode cmd -
PrivatioBoni - 05.04.2014
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.