Amigo
Умник
Здравствуйте. Очень серьёзная проблема! Сделал команду /capture в пей дей и с прверками что бы четыре банды не могли каптить одну. Но проблема в том что после одного капта, команда потом работает, но не начинает захват терры у той банды которой коптил в первый раз. Вот сама команда /capture и паблик GzCheck()
Сама команда:
Помогите срочно исправить эту большую проблему!
PHP:
public GzCheck()
{
for(new i =0;i<sizeof(GZInfo);i++)
{
if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0)
{
ZoneTimer[i] -= 5;
if(ZoneTimer[i] <= 0)
{
SendGangMessage(i,COLOR_RED, "Время на захват территории вышло");
ZoneOnBattle[i] = 0;
GangZoneStopFlashForAll(GZInfo[i][gID]);
SaveGZ();
}
for(new x = 0; x < MAX_PLAYERS; x++)
{
if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3])&&IsInAllowed(x))
{
new faction;
if(PlayerInfo[x][pLeader] !=0) {faction = PlayerInfo[x][pLeader];}
else { faction = PlayerInfo[x][pMember];}
OnZONE[i][faction] ++;
}
}
new asd;
for(new x = 0; x < 20; x++)
{
if(OnZONE[i][x] > 0 && IsInAllowedF(x)) asd++;
}
if(asd == 1)
{
for(new x = 0; x < 20; x++)
{
if(OnZONE[i][x] > 0)
{
new zx,zl;
zx = x;
zl = i;
if(GZInfo[i][gFrakVlad] == x)
{
SendFamilyMessage(GZInfo[i][gFrakVlad],0x00B953AA,"Вы отстояли свою территорию");
SendFamilyMessage(GZInfo[i][gNapad],0xC56565AA,"Вам не удалось захватить территорию");
}
else
{
SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA,"Вы взяли под свой контроль новую территорию");
SendFamilyMessage(GZInfo[i][gFrakVlad], 0xC56565AA,"Вы потеряли контроль одной из своих территорий");
}
ZoneOnBattle[zl] = 0;
GZInfo[zl][gNapad] = 0;
GZInfo[zl][gFrakVlad] = zx;
GangZoneStopFlashForAll(GZInfo[zl][gID]);
GangZoneHideForAll(GZInfo[zl][gID]);
GangZoneShowForAll(GZInfo[zl][gID],GetGangZoneColor(zl));
ItsWar[GZInfo[zl][gNapad]] = false;
ItsWar[GZInfo[zl][gFrakVlad]] = false;
SaveGZ();
break;
}
}
}
}
}
for(new i = 0; i < 130; i++)
{
for(new z = 0; z < 20; z++)
{
OnZONE[i][z] =0;
}
}
}
Сама команда:
PHP:
if(!strcmp(cmd,"/capture",true))
{
if(FrakCD[PlayerInfo[playerid][pMember]] == 0)
{
if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Вы не можете захватить территорию");
new tmphour, tmpminute, tmpsecond;
gettime(tmphour, tmpminute, tmpsecond);
tmphour = shifthour;
for(new i = 0;i<195;i++)
{
if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != PlayerInfo[playerid][pMember] && ZoneOnBattle[i]==0)
{
if(FrakCD[GZInfo[i][gFrakVlad]] != 0) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Банда на которую вы хотите напасть уже воевала в этом часу");
if(IsATerra(playerid)) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Нельзя захватить эту территорию");
if(StartBatleGZ == 1) return SendClientMessage(playerid, COLOR_WHITE,"Ошибка: Ваша банда уже воевала/воюет войну за территорию");
if(ItsWar[GZInfo[i][gFrakVlad]] == true) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Ваша банда уже воюет/воевала за территорию");
if(ItsWar[PlayerInfo[playerid][pMember]] == true) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Ваша банда уже воюет/воевала за территорию");
format(string,sizeof(string),"[Внимание]: Ваша банда напала на территорию %s",GetGangName(GZInfo[i][gFrakVlad]));
SendFamilyMessage(PlayerInfo[playerid][pMember],0x1DAD8EAA,string);
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать 10 минут. Победит банда, которая останется последней");
SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
format(string,sizeof(string),"[Внимание]: На вашу территорию напала банда %s",GetGangName(PlayerInfo[playerid][pMember]));
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_RED,string);
GangZoneFlashForAll(GZInfo[i][gID],COLOR_REDD);
GZSafeTime[i] = 600;
GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
ZoneTimer[i] = 720;
ZoneOnBattle[i] = 1;
ItsWar[GZInfo[i][gNapad]] = true;
ItsWar[GZInfo[i][gFrakVlad]] = true;
break;
}
}
}
}
