Доброго времени суток уважаемые пользователи PRO-PAWN.RU
У меня тут в моде возникла проблема по поводу системы "каптинга", объясню суть. При вводе команды /capture на той территории которую хочешь завоевать - все хорошо, в небе создается надпись типа, до конца войны осталось столько то времени, но при завершении этого времени, таймер зависает на одной секунде и дальше ничего не происходит, территория так дальше и моргает, а должно территорию отдать той банде, которая осталось последней в квадрате. Заранее спасибо, ниже приведу саму команду и некоторые паблики.
PHP код:
if(!strcmp(cmd,"/capture",true))
{
if(!IsAGang(playerid)) return SendMe(playerid,CGRADD,"Вы не можете захватить территорию");
if(PINFO[playerid][pRank] < 7) return SendMe(playerid,CGRADD, BadRank);
if(IsPlayerInAnyVehicle(playerid)) return SendMe(playerid, CGRADD, "Нельзя использовать в машине.");
if(CaptureZone[PINFO[playerid][pMember]] == true) return SendMe(playerid,CGRADD,"В данный момент вы уже воюете.");
if(SWarcapture !=false) return SendMe(playerid,CGRADD,"В данный момент уже идёт война.");
SetPVarInt(playerid,"AntiFloodKommand",gettime() + 2);
for(new i =1;i<sizeof(GZInfo);i++)
{
if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != PINFO[playerid][pMember] && ZoneOnBattle[i]==0)
{
if(CaptInChas[PINFO[playerid][pMember]] == true) return SendMe(playerid,CGRADD,"Нельзя начать войну в этом часу");
if(CaptInChas[GZInfo[i][gFrakVlad]] == true) return SendMe(playerid,CGRADD,"Данная банда уже воевала в этом часу.");
if(CaptureZone[GZInfo[i][gFrakVlad]] == true) return SendMe(playerid,CGRADD,"В данный момент банда уже воюет.");
format(string,sizeof(string),"%s спровоцировал войну за территорию против банды %s",GN(playerid),GetGangName(GZInfo[i][gFrakVlad]));
SendFamilyMessage(PINFO[playerid][pMember],GetGangZoneColor(i),string);
VladBand = 0;
SprovBand = 0;
foreach(new s:Player)
{
if(PINFO[s][pMember] == GZInfo[i][gFrakVlad]) VladBand++;
if(PINFO[s][pMember] == PINFO[playerid][pMember]) SprovBand++;
}
format(string,sizeof(string),"Внимание! На вашу территорию напала банда %s из %i человек(a)",GetGangName(PINFO[playerid][pMember]),VladBand);
SendFamilyMessage(GZInfo[i][gFrakVlad],GetGangZoneColor(PINFO[playerid][pMember]),string);
SendFamilyMessage(GZInfo[i][gFrakVlad],-1,"Территория будет мигать 10 минут. Победит банда, которая останется последней");
SendFamilyMessage(GZInfo[i][gFrakVlad],-1,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
GangZoneFlashForAll(GZInfo[i][gID],CREDD);
flash[PINFO[playerid][pMember]] = GZInfo[i][gID];
new Float:P[3];
GetPlayerPos(playerid,P[0],P[1],P[2]);
format(string,sizeof(string),"{FF2424}Война за территорию:\n{FFFFFF}%s (%i) против %s (%i)\n{18F21C}До конца войны:\n{FFFFFF}%s",GetGangName(GZInfo[i][gFrakVlad]),SprovBand,GetGangName(PINFO[playerid][pMember]),VladBand,Convert(GZSafeTime[i]));
DiffText[85] = Create3DTextLabel(string,CYELLOW, P[0],P[1], P[2]+15,200.0,0,0);
GZSafeTime[i] = 600;
GZInfo[i][gNapad] = PINFO[playerid][pMember];
ZoneTimer = 600;
ZoneOnBattle[i] = 1;
CaptureZone[PINFO[playerid][pMember]] = true;
CaptInChas[PINFO[playerid][pMember]] = true;
CaptInChas[GZInfo[i][gFrakVlad]] = true;
CaptureZone[GZInfo[i][gFrakVlad]] = true;
KillTimer(CaptureTimer);
CaptureTimer = SetTimer("Capture_Timer",1000,true);
SWarcapture = true;
gzchecks = SetTimer("GzCheck",5000,1);
break;
}
}
}
PHP код:
forward Capture_Timer();
public Capture_Timer()
{
new string[300];
new text[50],text2[50];
for(new b =0;b<100;b++)
{
if(GZSafeTime[b]>0)
{
GangZoneFlashForAll(flash[GZInfo[b][gNapad]],CREDD);
GZSafeTime[b] --;
switch(GZInfo[b][gNapad])
{
case 12: text = "Ballas";
case 13: text = "Vagos";
case 15: text = "Grove";
case 17: text = "Aztecas";
case 18: text = "Rifa";
}
switch(GZInfo[b][gFrakVlad])
{
case 12: text2 = "Ballas";
case 13: text2 = "Vagos";
case 15: text2 = "Grove";
case 17: text2 = "Aztecas";
case 18: text2 = "Rifa";
}
if(GZSafeTime[b] >=1)
{
format(string,sizeof(string),"{FF2424}Война за территорию:\n{FFFFFF}%s (%i) против %s (%i)\n{18F21C}До конца войны:\n{FFFFFF}%s",text,SprovBand,text2,VladBand,Convert(GZSafeTime[b]));
Update3DTextLabelText(DiffText[85], 0x008080FF, string);
}
if(GZSafeTime[b] == 300)
{
SendFamilyMessage(GZInfo[b][gFrakVlad],TEAM_GROVE_COLOR,"Внимание! Территория будет мигать 5 минут. Победит банда, которая останется последней");
SendFamilyMessage(GZInfo[b][gFrakVlad],-1,"Территория будет мигать до тех пор, пока на ней не останется одна банда");
SendFamilyMessage(GZInfo[b][gNapad],TEAM_GROVE_COLOR,"Внимание! Территория будет мигать 5 минут. Победит банда, которая останется последней");
SendFamilyMessage(GZInfo[b][gNapad],-1,"Территория будет мигать до тех пор, пока на ней не останется одна банда");
}
if(GZSafeTime[b] == 120)
{
SendFamilyMessage(GZInfo[b][gFrakVlad],TEAM_GROVE_COLOR,"Внимание! Территория будет мигать 2 минуты. Победит банда, которая останется последней");
SendFamilyMessage(GZInfo[b][gFrakVlad],-1,"Территория будет мигать до тех пор, пока на ней не останется одна банда");
SendFamilyMessage(GZInfo[b][gNapad],TEAM_GROVE_COLOR,"Внимание! Территория будет мигать 2 минуты. Победит банда, которая останется последней");
SendFamilyMessage(GZInfo[b][gNapad],-1,"Территория будет мигать до тех пор, пока на ней не останется одна банда");
}
}
}
return true;
}
PHP код:
forward GzCheck();
public GzCheck()
{
new string[144];
for(new i =1;i<sizeof(GZInfo);i++)
{
if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0)
{
if((ZoneTimer -= 5) <=0)
{
SendGangMessage(0xB30000AA,"Внимание! Время на захват территории вышло.");
Delete3DTextLabel(DiffText[85]);
ZoneOnBattle[i] =0;
SWarcapture = false;
GangZoneStopFlashForAll(GZInfo[i][gID]);
SaveGZ();
CaptureZone[15] = false;
CaptureZone[12] = false;
CaptureZone[13] = false;
CaptureZone[17] = false;
CaptureZone[18] = false;
}
for(new x = 0; x < GetMaxPlayers(); x++)
if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3])&&IsAGang(x) && GetPlayerVirtualWorld(x) == 0)
if(OnZONE[i][PINFO[x][pLeader]])
PINFO[x][pLeader]++;
else
PINFO[x][pMember]++;
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)
{
format(string,sizeof(string),"Внимание! Банда %s отстояла свою территорию",GetGangName(zx));
Delete3DTextLabel(DiffText[85]);
SendGangMessage(GetGangZoneColor(x),string);
GangZoneStopFlashForAll(GZInfo[zl][gID]);
CaptureZone[15] = false;
CaptureZone[12] = false;
CaptureZone[13] = false;
CaptureZone[17] = false;
CaptureZone[18] = false;
ZoneOnBattle[zl] =0;
SWarcapture = false;
KillTimer(CaptureTimer);
KillTimer(gzchecks);
}
else
{
ZoneOnBattle[zl] =0;
Delete3DTextLabel(DiffText[85]);
GZInfo[zl][gNapad] = 0;
GZInfo[zl][gFrakVlad] = zx;
GangZoneStopFlashForAll(GZInfo[zl][gID]);
GangZoneHideForAll(GZInfo[zl][gID]);
GangZoneShowForAll(GZInfo[zl][gID],GetGangZoneColor(zl));
format(string,sizeof(string),"Внимание! Банда %s выигрывает войну за территорию",GetGangName(zx));
SendGangMessage(GetGangZoneColor(zx),string);
}
SaveGZ();
SWarcapture = false;
KillTimer(CaptureTimer);
KillTimer(gzchecks);
CaptureZone[15] = false;
CaptureZone[12] = false;
CaptureZone[13] = false;
CaptureZone[17] = false;
CaptureZone[18] = false;
break;
}
}
}
}
}
for(new i =1;i<sizeof(GZInfo);i++)
{
for(new z = 0;z<20;z++)
{
OnZONE[i][z] =0;
}
}
}