PHP Code:
public OnPlayerDeath(playerid, killerid, reason)
{
InShamal[playerid] = 0;
SetPlayerVirtualWorld(playerid, 0);
if(gPlayerUsingLoopingAnim[playerid])
{
gPlayerUsingLoopingAnim[playerid] = 0;
TextDrawHideForPlayer(playerid,txtAnimHelper);
}
if (killerid == INVALID_PLAYER_ID) {SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);}
SendDeathMessage(killerid,playerid,reason);
if (gTeam[killerid] != gTeam[playerid])
{
// Valid kill
GivePlayerMoney(killerid, 5000);
exp[killerid] ++;
SetPlayerScore(killerid, exp[killerid]);
new Kzone = IsInZone(killerid);
new Vzone = IsInZone(playerid);
if (Kzone != -1 && Kzone == Vzone && gTeam[killerid] != ZoneOwner[Kzone] && UnderAttack[Kzone] == 0)
{
UnderAttack[Kzone]=gTeam[killerid];
for (new i=0;i<MAX_PLAYERS;i++)
{
if (gTeam[i]==gTeam[killerid])
{
GameTextForPlayer(i,"ATACK!",5000,5);
SendClientMessage(i,COLOR_BRIGHTRED,"FIRST GANG WHICH WILL KILL 10 ENEMIES IN AREA.WILL WIN!");
GangZoneFlashForPlayer(i,Kzone,COLOR_BRIGHTRED);
}
if (gTeam[i]==ZoneOwner[Kzone])
{
GameTextForPlayer(i,"YOU ARE ATACKED!",5000,5);
SendClientMessage(i,COLOR_BRIGHTRED,"FIRST GANG WHICH WILL KILL 10 ENEMIES IN AREA.WILL WIN!");
GangZoneFlashForPlayer(i,Kzone,COLOR_BRIGHTRED);
}
}
}
if (UnderAttack[Kzone]>0)
{
if (UnderAttack[Kzone]==gTeam[killerid] || gTeam[playerid]==ZoneOwner[Kzone])
{
KillCount[gTeam[killerid]][Kzone]++;
if (KillCount[gTeam[killerid]][Kzone] == 10)
{
UnderAttack[Kzone] = -1;
SetTimerEx("unsafe",300000,0,"d",Kzone);
KillCount[gTeam[killerid]][Kzone]=0;
KillCount[gTeam[playerid]][Kzone]=0;
new color=getColor(killerid);
GangZoneShowForAll(Kzone,color);
for (new i=0;i<MAX_PLAYERS;i++)
{
if (gTeam[i]==gTeam[killerid])
{
GameTextForPlayer(i,"WE WON!",5000,5);
SendClientMessage(i,COLOR_BRIGHTRED,"ZONE WILL BE SAFE FOR 5 MINUTES.");
GangZoneStopFlashForPlayer(i,Kzone);
}
if (gTeam[i]==ZoneOwner[Kzone])
{
GameTextForPlayer(i,"WE LOST!",5000,5);
SendClientMessage(i,COLOR_BRIGHTRED,"YOU HAVE TO WHAIT FOR 5 MINUTES BEFORE ATACKING.");
GangZoneStopFlashForPlayer(i,Kzone);
}
}
}
else
{
new kill =10 - KillCount[gTeam[killerid]][Kzone];
format(TEXT,sizeof(TEXT),"We still have to kill %d enemies",kill);
SendClientMessage(killerid,COLOR_BRIGHTRED,TEXT);
}
}
}
else
{
//Team Killer!
new warning[256];
format(warning, sizeof(warning), "Be Careful!You Were Punished for killing Team Member.");
SendClientMessage(killerid, 0xFFFF00AA, warning);
SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
GivePlayerMoney(killerid, -5000);
}
}
return 1;
}
Se o bug persistir, use o
printf em todas as condiзхes para ver se todas estгo sendo verificadas corretamente quando o player morre.