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

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

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

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

/capture

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

SkyFrost

Изучающий
Регистрация
13 Сен 2014
Сообщения
317
Лучшие ответы
0
Репутация
62
Здравствуйте, у меня не работает команда /capture, не захватывает территорию, таймер стоит на 00:00 и ничего не происходит, и территория продолжает мигать, + можно захватить другую терру... какой то, странный баг. Нигде такую проблему не нашел, помогите пожалуйста поставлю жирный плюс.

PHP:
//=-=-=--==-=-=-=-=-
new FrakCD;
new PlayerText:CaptureTD[MAX_PLAYERS][8];

new bool:IsCapture;

enum Ganginfa
{
	capture,
	score,
	captureid,
	gangnumber
}
new GangInfo[MAX_GANGS][Ganginfa];

new bool:drawcapt[MAX_PLAYERS];

new OnZONE[MAX_GANGZONES][20];
new ZoneOnBattle[MAX_GANGZONES];
new allowedfactions[] = {22, 23, 24, 25, 26};
new GZSafeTime[MAX_GANGZONES];
new GangTotalGz[5];//rifa,aztec,ballas,grove,vagos
enum GzoneInfo
{
	gID,
Float:gCoords[4],
	gFrak,
	gNapad
}
new GZInfo[MAX_GANGZONES][GzoneInfo];
new GangZone[MAX_GANGZONES];
PHP:
CMD:capture(playerid, params[])
{
	if(!IsAGang(playerid)) return SendClientMessage(playerid, COLOR_GREY, YouCanNot);
	if(pInfo[playerid][pRank] < 9) return SendClientMessage(playerid,COLOR_GREY,"Для захвата зоны необходимо иметь ранг не менее 9-го");
	new h; gettime(h);
	if(h < 1 || h > 23) return SendClientMessage(playerid, COLOR_GREY, "Проводить захват можно только с 12:00 до 22:00");
	new faction = pInfo[playerid][pMember];
	if(pInfo[playerid][pMember] == 22 && b_Capture{0}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ вашей банде к войне за территории закрыт");
	if(pInfo[playerid][pMember] == 23 && b_Capture{1}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ вашей банде к войне за территории закрыт");
	if(pInfo[playerid][pMember] == 24 && b_Capture{2}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ вашей банде к войне за территории закрыт");
	if(pInfo[playerid][pMember] == 25 && b_Capture{3}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ вашей банде к войне за территории закрыт");
	if(pInfo[playerid][pMember] == 26 && b_Capture{4}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ вашей банде к войне за территории закрыт");
	if(FrakCD != 0)
	{
		new fd[128];
		format(fd,sizeof(fd),"Следующий захват территории возможен через %d минут(ы)", FrakCD/60);
		SendClientMessage(playerid,COLOR_GREY,fd);
		return 1;
	}
	if(!IsInAllowed(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Ваша банда уже участвует в захвате зон!");
	new str[128];
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
		if(IsPlayerToSquare(playerid, GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && ZoneOnBattle[i] == 0)
		{
			if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Нельзя использовать в машине!");
			{
				if(GZInfo[i][gFrak] == faction) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Вы не можете захватывать зону вашей банды!");
				if(GZInfo[i][gFrak] == 0) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Нельзя захватить эту территорию");
				if(GZInfo[i][gFrak] == 22 && b_Capture{0}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ данной банды к войне за территории закрыт");
				if(GZInfo[i][gFrak] == 23 && b_Capture{1}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ данной банды к войне за территории закрыт");
				if(GZInfo[i][gFrak] == 24 && b_Capture{2}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ данной банды к войне за территории закрыт");
				if(GZInfo[i][gFrak] == 25 && b_Capture{3}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ данной банды к войне за территории закрыт");
				if(GZInfo[i][gFrak] == 26 && b_Capture{4}) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Доступ данной банды к войне за территории закрыт");
				if(IsCapture == true) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Уже происходит захват одной из зон. Дождитесь окончания!");
				if(IsPlayerInBandOnline(faction) < 0) return SendClientMessage(playerid, COLOR_GREY, "В вашей банде мало игроков онлайн, нужно минимум 5!");
				/*if(IsPlayerInBandOnline(GZInfo[i][gFrak]) < 0)
				{
					format(str, sizeof(str), "У банды \"%s\" мало игроков,нужно минимум 5!", GetGangName(GZInfo[i][gFrak]));
					SendClientMessage(playerid, COLOR_GREY, str);
					return 1;
				}*/
				format(str, sizeof(str), "На вашу территорию напала банда %s, у вас есть 5 минут чтобы отстоять её!", Fraction_Name[pInfo[playerid][pMember]]);
				SendFracMes(GZInfo[i][gFrak], COLOR_LIGHTRED, str);
				format(str, sizeof(str), "Если по истечению времени вас не будет на территории, она перейдет к %s",Fraction_Name[pInfo[playerid][pMember]]);
				SendFracMes(GZInfo[i][gFrak], COLOR_VITYA2, str);
				format(str, sizeof(str), "%s[%d] напал на территорию банды %s",pInfo[playerid][pName],playerid,GetGangName(GZInfo[i][gFrak]));
				SendFracMes(faction, COLOR_LIME, str);
				GangZoneFlashForAll(GangZone[i],GetGangZoneColor(faction));
				GZSafeTime[i] = 100;
				FrakCD = 120;
				GZInfo[i][gNapad] = faction;
				ZoneOnBattle[i] = 1;
				GangInfo[faction][capture] = 1;
				GangInfo[GZInfo[i][gFrak]][capture] = 1;
				GangInfo[GZInfo[i][gFrak]][captureid] = faction;
				GangInfo[faction][captureid] = faction;
				GangInfo[faction][gangnumber] = 1;
				GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
				CaptureStart(faction, GZInfo[i][gFrak]);
		        format(str, sizeof(str), "[A] Банда %s напала на территорию банды %s",GetGangName(faction),GetGangName(GZInfo[i][gFrak]));
		        SendAdminMessage(COLOR_GRAD1, str);
			}
		}
	}
	return 1;
}
PHP:
forward SecTimer();
public SecTimer()
{
	for(new i; i < 6; i++) if(gGunWorkTime[i]) gGunWorkTime[i]--;

	WHDataUpdate();

	BizWarCheck();

    GzCheck();
	new stringText[30];
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
		if(GZSafeTime[i] > 0)
		{
			GZSafeTime[i]--;
			foreach(new x: Player)
			{
				if(pInfo[x][pMember] == GZInfo[i][gNapad] || pInfo[x][pMember] == GZInfo[i][gFrak])
				{
					Convert(GZSafeTime[i], stringText);
					PlayerTextDrawSetString(x, CaptureTD[x][3], stringText);
				}
			}
		}
	}
        return 1;
}

PHP:
stock SaveGZ(idx)
{
    mysql_query_string[0] = EOS;

	format(mysql_query_string, 100, "UPDATE "T_GANGZONE" SET fraction = %i WHERE id = %i", GZInfo[idx][gFrak], idx);
	mysql_tquery(huseyn, mysql_query_string, "", "");
	return 1;
}

@LoadGZ();
@LoadGZ()
{
	new time = GetTickCount();
	new rows;
		
	cache_get_row_count(rows);
	if(rows)
	{
		for(new idx = 0; idx < rows; idx++)
		{
		    cache_get_value_index_int(idx, 0, GZInfo[idx][gID]); // id
			cache_get_value_index_float(idx, 1, GZInfo[idx][gCoords][0]); // ginfo1
            cache_get_value_index_float(idx, 2, GZInfo[idx][gCoords][1]); // ginfo2
            cache_get_value_index_float(idx, 3, GZInfo[idx][gCoords][2]); // ginfo3
            cache_get_value_index_float(idx, 4, GZInfo[idx][gCoords][3]); // ginfo4
            cache_get_value_index_int(idx, 5, GZInfo[idx][gFrak]); // fraction
        	TOTALGZ++;
	        GangZone[idx] = GangZoneCreate(GZInfo[idx][gCoords][0],GZInfo[idx][gCoords][1],GZInfo[idx][gCoords][2],GZInfo[idx][gCoords][3]);
   			ZoneOnBattle[idx] = 0;
			GZSafeTime[idx] = 0;
        }
    }
    printf("[Загружено гангзон]: <%i>. Потрачено: <%i ms>.", TOTALGZ, GetTickCount() - time);
	return 1;
}

PHP:
stock GzCheck()
{
	new string[256],
		SCORE[128];
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
		if(ZoneOnBattle[i] == 1 && IsCapture == true)
		{
   			foreach(new x: Player)
			{
				if(!gPlayerLogged[x] == false && drawcapt[x] == true) continue;
				if(pInfo[x][pMember] == GZInfo[i][gNapad] || pInfo[x][pMember] == GZInfo[i][gFrak])
				{
				    for(new s; s < 8; s++) PlayerTextDrawShow(x, CaptureTD[x][s]);
					format(SCORE, sizeof(SCORE), "%s", GetGangName(GZInfo[i][gNapad]));
					PlayerTextDrawSetString(x, CaptureTD[x][4], SCORE);
					format(SCORE, sizeof(SCORE), "%s", GetGangName(GZInfo[i][gFrak]));
					PlayerTextDrawSetString(x, CaptureTD[x][7], SCORE);
					format(SCORE, sizeof(SCORE), "%d", GangInfo[GZInfo[i][gNapad]][score]);
					PlayerTextDrawSetString(x, CaptureTD[x][5], SCORE);
					format(SCORE, sizeof(SCORE), "%d", GangInfo[GZInfo[i][gFrak]][score]);
					PlayerTextDrawSetString(x, CaptureTD[x][6], SCORE);
					GangZoneFlashForPlayer(x,GangZone[i],GetGangZoneColor(GZInfo[i][gNapad]));
					drawcapt[x] = true;
				}
			}
		}
		if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0)
		{
			if(GangInfo[GZInfo[i][gNapad]][score] == GangInfo[GZInfo[i][gFrak]][score])
			{
				new zh = GZInfo[i][gNapad];
				new zj = i;
				new zg = GZInfo[i][gFrak];
				format(string, 128, "Вы захватили новую территорию, которая находилась под контролем банды %s",GetGangName(zg));
				SendFracMes(GZInfo[i][gNapad],COLOR_GREEN, string);
				format(string, 128, "Вам не удалось отстоять свою территорию, теперь эта территория под контролем банды %s",GetGangName(zh));
				SendFracMes(GZInfo[i][gFrak],COLOR_RED, string);
				ZoneOnBattle[i] = 0;
				IsCapture = false;
				CaptureEnd(GZInfo[i][gNapad], GZInfo[i][gFrak]);
				GangInfo[GZInfo[i][gNapad]][captureid] =
				GangInfo[GZInfo[i][gNapad]][capture] =
				GangInfo[GZInfo[i][gNapad]][score] =
				GangInfo[GZInfo[i][gFrak]][captureid] =
				GangInfo[GZInfo[i][gFrak]][capture] =
				GangInfo[GZInfo[i][gFrak]][score] =
				GangInfo[GZInfo[i][gNapad]][gangnumber] =
				GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
				GZInfo[zj][gFrak] = zh;
				GZInfo[zj][gNapad] = 0;
				GangZoneStopFlashForAll(GangZone[zj]);
				GangZoneHideForAll(GangZone[zj]);
				GangZoneShowForAll(GangZone[zj],GetGangZoneColor(zj));
				SaveGZ(zj);
				UpdTerrsBand();
			}
			else if(GangInfo[GZInfo[i][gNapad]][score] > GangInfo[GZInfo[i][gFrak]][score])
			{
				new zx = GZInfo[i][gNapad];
				new zl = i;
				format(string, 128, "Вы захватили новую территорию, которая находилась под контролем банды %s", GetGangName(GZInfo[i][gFrak]));
				SendFracMes(GZInfo[i][gNapad],COLOR_GREEN, string);
				format(string, 128, "Вам не удалось отстоять свою территорию, теперь эта территория под контролем банды %s",GetGangName(zx));
				SendFracMes(GZInfo[i][gFrak],COLOR_RED, string);
				ZoneOnBattle[zl] = 0;
				CaptureEnd(GZInfo[zl][gNapad], GZInfo[zl][gFrak]);
				GangInfo[GZInfo[zl][gNapad]][captureid] =
				GangInfo[GZInfo[zl][gNapad]][capture] =
				GangInfo[GZInfo[zl][gNapad]][score] =
				GangInfo[GZInfo[zl][gFrak]][captureid] =
				GangInfo[GZInfo[zl][gFrak]][capture] =
				GangInfo[GZInfo[zl][gFrak]][score] =
				GangInfo[GZInfo[i][gNapad]][gangnumber] =
				GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
				GZInfo[zl][gFrak] = zx;
				GZInfo[zl][gNapad] = 0;
				IsCapture = false;
				GangZoneStopFlashForAll(GangZone[zl]);
				GangZoneHideForAll(GangZone[zl]);
				GangZoneShowForAll(GangZone[zl],GetGangZoneColor(zl));
				SaveGZ(zl);
				UpdTerrsBand();
			}
			else if(GangInfo[GZInfo[i][gNapad]][score] < GangInfo[GZInfo[i][gFrak]][score])
			{
				new zx = GZInfo[i][gFrak];
				new zl = i;
				SendFracMes(GZInfo[i][gNapad],COLOR_RED, "Вам не удалось захватить новую территорию");
				SendFracMes(GZInfo[i][gFrak],COLOR_GREEN,"Вы отстояли свою территорию");
				ZoneOnBattle[zl] = 0;
				CaptureEnd(GZInfo[zl][gNapad], GZInfo[zl][gFrak]);
				GangInfo[GZInfo[zl][gNapad]][captureid] =
				GangInfo[GZInfo[zl][gNapad]][capture] =
				GangInfo[GZInfo[zl][gNapad]][score] =
				GangInfo[GZInfo[zl][gFrak]][captureid] =
				GangInfo[GZInfo[zl][gFrak]][capture] =
				GangInfo[GZInfo[zl][gFrak]][score] =
				GangInfo[GZInfo[i][gNapad]][gangnumber] =
				GangInfo[GZInfo[i][gFrak]][gangnumber] = 0;
				IsCapture = false;
				GZInfo[zl][gFrak] = zx;
				GZInfo[zl][gNapad] = 0;
				GangZoneStopFlashForAll(GangZone[zl]);
				GangZoneHideForAll(GangZone[zl]);
				GangZoneShowForAll(GangZone[zl],GetGangZoneColor(zl));
				SaveGZ(zl);
				UpdTerrsBand();
			}
		}
	}
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
		for(new z = 0; z < 20; z++)
		{
			OnZONE[i][z] = 0;
		}
	}
	return 1;
}

stock CaptureUpd(bandkiller)
{
	new SCORE[64];
	foreach(new i: Player)
	{
		if(!gPlayerLogged[i] == false) continue;
		if(pInfo[i][pMember] > sizeof(GangInfo)) continue;
		if(GangInfo[pInfo[i][pMember]][capture] > 0)
		{
			if(GangInfo[bandkiller][gangnumber] == 1)
			{
				format(SCORE, sizeof(SCORE), "%d", GangInfo[bandkiller][score]);
				PlayerTextDrawSetString(i, CaptureTD[i][5], SCORE);
			}
			else
			{
				format(SCORE, sizeof(SCORE), "%d", GangInfo[bandkiller][score]);
				PlayerTextDrawSetString(i, CaptureTD[i][6], SCORE);
			}
		}
	}
}

stock CaptureStart(familyone, familytwo)
{
	new SCORE[64];
	foreach(new i: Player)
	{
		if(!gPlayerLogged[i] == false) continue;
		if(pInfo[i][pMember] == familyone || pInfo[i][pMember] == familytwo)
		{
		    for(new s; s < 8; s++) PlayerTextDrawShow(i, CaptureTD[i][s]);
			format(SCORE, sizeof(SCORE), "%s", GetGangName(familyone));
			PlayerTextDrawSetString(i, CaptureTD[i][5], SCORE);
			format(SCORE, sizeof(SCORE), "%s", GetGangName(familytwo));
			PlayerTextDrawSetString(i, CaptureTD[i][6], SCORE);
			PlayerTextDrawSetString(i, CaptureTD[i][1], "0");
			PlayerTextDrawSetString(i, CaptureTD[i][2], "0");
			drawcapt[i] = true;
			IsCapture = true;
		}
	}
}

stock CaptureEnd(familyone, familytwo)
{
	foreach(new i: Player)
	{
		if(pInfo[i][pMember] == familyone || pInfo[i][pMember] == familytwo)
		{
		    for(new s; s < 8; s++) PlayerTextDrawHide(i, CaptureTD[i][s]);
			drawcapt[i] = false;
		}
	}
}

stock GetGangZoneColor(fractionid)
	return
	    (GZInfo[fractionid][gFrak] == TEAM_GROVE) ? (0x009900AA) :
		(GZInfo[fractionid][gFrak] == TEAM_BALLAS) ? (0xCC00FFAA) :
		(GZInfo[fractionid][gFrak] == TEAM_VAGOS) ? (0xeee515AA) :
		(GZInfo[fractionid][gFrak] == TEAM_RIFA) ? (0x6666FFAA) :
		(GZInfo[fractionid][gFrak] == TEAM_CORONA) ? (0x00CCFFAA) : (0xFFFFFF65);
		
stock GetGangName(fractionid)
{
	new string[20];
	switch(fractionid)
	{
		case 22: format(string, sizeof(string), "Grove Street");
		case 23: format(string, sizeof(string), "The Ballas");
		case 24: format(string, sizeof(string), "Los Santos Vagos");
		case 25: format(string, sizeof(string), "The Rifa");
		case 26: format(string, sizeof(string), "Varios Los Aztecas");
	}
	return string;
}

stock IsInAllowed(playerid)
{
	for(new i = 0; i < sizeof(allowedfactions); i++)
	{
		if(pInfo[playerid][pMember] == allowedfactions[i]||pInfo[playerid][pLeader] == allowedfactions[i]) return 1;
	}
	return 0;
}

stock IsPlayerInBandOnline(fractionid)
{
	new np;
	foreach(new i : Player)
	{
		if(!gPlayerLogged[i]) continue;
		if(pInfo[i][pMember] == fractionid || pInfo[i][pLeader] == fractionid) np++;
	}
	return np;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу