Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Проблема с каптом у банд

Статус
В этой теме нельзя размещать новые ответы.

Mich@elson

Умник
Приветствую. Вообщем вырезал систему капта. Всё работает отлично, но одну банду могут закаптить одновременно другие банды.
Вот сама команда /capture

PHP:
CMD:capture(playerid, params[])
{
	if(PlayerInfo[playerid][pLogin] == 0) return true;
	if(Flood[playerid] > 0) return SendClientMessage(playerid, 0xFFD5BBAA, "Не флуди!");
	Flood[playerid] = 1;
	if(FrakCD[PlayerInfo[playerid][pMember]] != 0) return SendClientMessage(playerid,COLOR_GREY,"Ваша банда уже воевала за территорию.");
	if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_GRAD1, "Вы не можете захватить территорию");
	if(!CaptureTimes()) return SCM(playerid,0xAFAFAFAA,"В данное время захват невозможен. Только после PayDay");
	new tmphour, tmpminute, tmpsecond;
	gettime(tmphour, tmpminute, tmpsecond);
	tmphour = shifthour;
	for(new i = 0; i < 133; i++)
	{
	    if(FrakCD[PlayerInfo[playerid][pMember]] != 1 && FrakCD[GZInfo[i][gFrakVlad]] != 1)
		{
			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)
			{
				new playerss = 0;
				for(new idx=0, m=0; idx<cvector_size(players); idx++)
				{
					m = cvector_get(players, idx);
					if(PlayerInfo[m][pMember] == GZInfo[i][gFrakVlad]) playerss++;
				}
				if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SCM(playerid,0xAFAFAFAA, "Банда на которую вы собираетесь напасть нет в сети!");
				if(FrakCD[GZInfo[i][gFrakVlad]] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"Банда на которую Вы хотите напасть уже воевала в этом часу");
				if(IsATerra(playerid)) return SCM(playerid,0xFFFFFFAA,"Нельзя захватить эту территорию");
				FrakCD[GZInfo[i][gFrakVlad]] = 1;
				FrakCD[PlayerInfo[playerid][pMember]] = 1;
				format(YCMDstr,sizeof(YCMDstr),"[Внимание]: Ваша банда напала на территорию %s",GetGangName(GZInfo[i][gFrakVlad]));
				SendFamilyMessage(PlayerInfo[playerid][pMember],0x00B953AA,YCMDstr);
				format(YCMDstr,sizeof(YCMDstr), "[Внимание]: На Вашу территорию напала банда %s",GetGangName(PlayerInfo[playerid][pMember]));
				SendFamilyMessage(GZInfo[i][gFrakVlad],0xFF8CEFAA,YCMDstr);
				GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PlayerInfo[playerid][pMember]));
				SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать 5 минут. Победит банда, которая останется последней");
				SendClientMessage(playerid,COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
				new string[128],str[64];
				switch(GZInfo[i][gFrakVlad])
				{
					case 12: str="Ballas";
					case 13: str="Vagos";
					case 15: str="Grove";
					case 17: str="Aztecas";
					case 18: str="Rifa";
				}
				switch(PlayerInfo[playerid][pMember])
				{
					case 12: str2="Ballas";
					case 13: str2="Vagos";
					case 15: str2="Grove";
					case 17: str2="Aztecas";
					case 18: str2="Rifa";
				}
				format(string,128,"Банда %s начала войну против банды %s.",str2,str);
				SendAdminMessage(0xff0000ff,string);
				GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PlayerInfo[playerid][pMember]));
				GZSafeTime[i] = 600;
				FrakCD[PlayerInfo[playerid][pMember]] = 3600;
				GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
				ZoneOnBattle[i] = 1;
				captures++;
				if(GzCheckOn == 0)
				{
					GzCheckTimer = SetTimer("GzCheck", 1000,1);
					GzCheckOn = 1;
				}
				break;
			}
		}
	}
	return true;
}

Вот сам GzCheck
PHP:
stock GzCheck()
{
	for(new i = 1; i <= TotalGz; i++)
	{
		new OnZONE[133][20];
		if(ZoneOnBattle[i] == 1)
		{
			if(GZSafeTime[i] > 0)
			{
				GZSafeTime[i] --;
			}
			foreach(new x : Player)
			{
				if(PlayerInfo[x][pMember] == GZInfo[i][gNapad] || PlayerInfo[x][pMember] == GZInfo[i][gFrakVlad])
				{
					if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]))
					{
						if(ZoneOnBattle[i] == 1)
						{
							OnZONE[i][PlayerInfo[x][pMember]] ++;
						}
					}
				}
			}
			foreach(new x : Player)
			{
				new string[128];
				if(PlayerInfo[x][pMember] == GZInfo[i][gNapad] || PlayerInfo[x][pMember] == GZInfo[i][gFrakVlad])
				{
					if(CaptureOn[x] == 0)
					{
						CaptureTextDraws(x);
						PlayerTextDrawShow(x, CaptureTime[x]);
						PlayerTextDrawShow(x, CaptureGang[x]);
						PlayerTextDrawShow(x, CaptureWar[x]);
						CaptureOn[x] = 1;
					}
					format(string,120,"~y~Time:~w~ %s",Convert(GZSafeTime[i]));
					PlayerTextDrawSetString(x,CaptureTime[x],string);
					format(string,120,"~y~%s:~w~ %d",GetGangName(GZInfo[i][gNapad]),OnZONE[i][GZInfo[i][gNapad]]);
					PlayerTextDrawSetString(x,CaptureGang[x],string);
					format(string,120,"~y~%s:~w~ %d",GetGangName(GZInfo[i][gFrakVlad]),OnZONE[i][GZInfo[i][gFrakVlad]]);
					PlayerTextDrawSetString(x,CaptureWar[x],string);
				}
			}
			new asd;
			for(new x; x < 20; x++)
			{
				if(OnZONE[i][x] > 0 && IsInAllowedF(x) && GZSafeTime[i] <= 0) asd++;
			}
			if(asd == 1)
			{
				new string[200];
				for(new z = 0; z < 20; z++)
				{
					if(OnZONE[i][z] > 0)
					{
						new zx, zl;
						zx = z;
						zl = i;
						if(GZInfo[i][gFrakVlad] == z)
						{
							SendFamilyMessage(GZInfo[i][gFrakVlad],0x00B953AA,"Вы отстояли свою территорию");
							SendFamilyMessage(GZInfo[i][gNapad],0xC56565AA,"Вам не удалось захватить территорию");
							foreach(new y : Player)
							{
								if(PlayerInfo[y][pMember] == GZInfo[i][gNapad] || PlayerInfo[y][pMember] == GZInfo[i][gFrakVlad])
								{
									CaptureOn[y] = 0;
									PlayerTextDrawDestroy(y, CaptureTime[y]);
									PlayerTextDrawDestroy(y, CaptureGang[y]);
									PlayerTextDrawDestroy(y, CaptureWar[y]);
								}
							}
						}
						else
						{
							SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA,"Вы взяли под свой контроль новую территорию");
							for(new y = 1; y <= TotalGz; y++)
							{
								if(GZInfo[y][gFrakVlad] == 12) TotalGzB++;
								if(GZInfo[y][gFrakVlad] == 13) TotalGzV++;
								if(GZInfo[y][gFrakVlad] == 15) TotalGzG++;
								if(GZInfo[y][gFrakVlad] == 17) TotalGzA++;
								if(GZInfo[y][gFrakVlad] == 18) TotalGzR++;
							}
							switch(GZInfo[i][gNapad])
							{
							case 12:
								{
									format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzB*300);
									SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
								}
							case 13:
								{
									format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzV*300);
									SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
								}
							case 15:
								{
									format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzG*300);
									SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
								}
							case 17:
								{
									format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzA*300);
									SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
								}
							case 18:
								{
									format(string, sizeof(string), "Теперь Ваша банда будет получать каждый час %d вирт",TotalGzR*300);
									SendFamilyMessage(GZInfo[i][gNapad], 0x00B953AA, string);
								}
							}
							SendFamilyMessage(GZInfo[i][gFrakVlad], 0xC56565AA,"Вы потеряли контроль одной из своих территорий");
							foreach(new y : Player)
							{
								if(PlayerInfo[y][pMember] == GZInfo[i][gNapad] || PlayerInfo[y][pMember] == GZInfo[i][gFrakVlad])
								{
									CaptureOn[y] = 0;
									PlayerTextDrawDestroy(y, CaptureTime[y]);
									PlayerTextDrawDestroy(y, CaptureGang[y]);
									PlayerTextDrawDestroy(y, CaptureWar[y]);
								}
							}
						}
						captures --;
						ItsWar[GZInfo[i][gNapad]] = -1;
						ItsWar[GZInfo[i][gFrakVlad]] = -1;
						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));
						SaveGZ(zl);
						if(captures == 0)
						{
							KillTimer(GzCheckTimer);
							GzCheckOn = 0;
						}
						break;
					}
				}
			}
		}
	}
}

Проверку на капт ставил, но ничего не помогает.
PHP:
if(FrakCD[GZInfo[i][gFrakVlad]] == 1 || FrakCD[PlayerInfo[playerid][pMember]] == 1) return SendClientMessage(playerid,COLOR_GREY,"Банда уже воюет за территорию");
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу