if(PRESSED(KEY_WALK)) { new infectedcount; if(teams[playerid] == TEAM_ZOMBIE) { if(pInfo[playerid][pZombieClass] == ADVANCEDBOOMER) { new victimid = GetClosestPlayer(playerid); if(IsPlayerInRangeOfPoint(playerid,4.0,Map[ZombieSpawnX],Map[ZombieSpawnY],Map[ZombieSpawnZ]) || IsPlayerInRangeOfPoint(playerid,4.0,Map[ZombieSpawn2X],Map[ZombieSpawn2Y],Map[ZombieSpawn2Z])) { GameTextForPlayer(playerid,"~r~You can't!",4000,5); } else { switch(GetPlayerSkin(victimid)) { case NON_IMMUNE,249: { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,Float:x,Float:y,Float:z); SetPlayerHealth(playerid,0.0); CreateExplosion(Float:x,Float:y,Float:z,0,6.0); for(new i=0; i<MAX_PLAYERS; i++) { if(i == playerid) continue; if(IsPlayerInRangeOfPoint(i,7.0,Float:x,Float:y,Float:z)) { if(pInfo[i][IsPlayerInfected] == 0) { infectedcount++; InfectPlayerStandard(i); } } } if(infectedcount > 0) { new zmstring2[256],pNames[MAX_PLAYER_NAME]; GetPlayerName(playerid,pNames,sizeof(pNames)); format(zmstring2,sizeof(zmstring2),""COL_GREEN">> %s has been explode "COL_WHITE"%i players.",pNames,infectedcount); SendClientMessageToAll(-1,zmstring2); } } } } } } }
switch(GetPlayerSkin(victimid)) { case NON_IMMUNE,249:
Indent your code and explain yourself quite better, do you get the message 'You can't!' when you try to explode near someone?
Is this needed? It does not look like you need it as later you loop for every player near the bomber anyway Код:
switch(GetPlayerSkin(victimid)) { case NON_IMMUNE,249: |
switch(GetPlayerSkin(victimid))
{
case NON_IMMUNE,249: return 1;
default:
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,Float:x,Float:y,Float:z);
SetPlayerHealth(playerid,0.0);
//... rest of code
No, it does the contrary, it only infects the skin 249. Either remove it or change it for this:
PHP код:
|
SetPlayerHealth(playerid,0.0); CreateExplosion(Float:x,Float:y,Float:z,0,6.0);
CreateExplosion(x,y,z,0,6.0); SetPlayerHealth(playerid,0.0);
GetPlayerPos(playerid,Float:x,Float:y,Float:z);
GetPlayerPos(playerid,x,y,z);
I can't tell from your post if it worked or not, but
Try to change the following code order: Код:
SetPlayerHealth(playerid,0.0); CreateExplosion(Float:x,Float:y,Float:z,0,6.0); Код:
CreateExplosion(x,y,z,0,6.0); SetPlayerHealth(playerid,0.0); Код:
GetPlayerPos(playerid,Float:x,Float:y,Float:z); Код:
GetPlayerPos(playerid,x,y,z); |
if(PRESSED(KEY_WALK)) { new infectedcount; if(teams[playerid] == TEAM_ZOMBIE) { if(pInfo[playerid][pZombieClass] == ADVANCEDBOOMER) { new victimid = GetClosestPlayer(playerid); if(IsPlayerInRangeOfPoint(playerid,4.0,Map[ZombieSpawnX],Map[ZombieSpawnY],Map[ZombieSpawnZ]) || IsPlayerInRangeOfPoint(playerid,4.0,Map[ZombieSpawn2X],Map[ZombieSpawn2Y],Map[ZombieSpawn2Z])) { GameTextForPlayer(playerid,"~r~You cant explode yourself near zombie spawn!",4000,5); } else { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,Float:x,Float:y,Float:z); SetPlayerHealth(playerid,0.0); CreateExplosion(Float:x,Float:y,Float:z,0,6.0); switch(GetPlayerSkin(victimid)) { case NON_IMMUNE,249: return 1; default: { for(new i=0; i<MAX_PLAYERS; i++) { if(i == playerid) continue; if(IsPlayerInRangeOfPoint(i,7.0,Float:x,Float:y,Float:z)) { if(pInfo[i][IsPlayerInfected] == 0) { infectedcount++; InfectPlayerStandard(i); } } } if(infectedcount > 0) { new zmstring2[256],pNames[MAX_PLAYER_NAME]; GetPlayerName(playerid,pNames,sizeof(pNames)); format(zmstring2,sizeof(zmstring2),""COL_GREEN">> %s has been infected "COL_WHITE"%i players.",pNames,infectedcount); SendClientMessageToAll(-1,zmstring2); } } } } } } }
switch(GetPlayerSkin(victimid)) { case NON_IMMUNE,249: {
new Float:x,Float:y,Float:z; GetPlayerPos(playerid,Float:x,Float:y,Float:z); SetPlayerHealth(playerid,0.0); CreateExplosion(Float:x,Float:y,Float:z,0,6.0);