Доступ к готовым решениям

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

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

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

Мануал Маленькая Система проверки окружных Ганг Зон

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

Alex_Lenez

Специалист
Урок нельзя считать как пособие. Было сделано на быструю руку и было выложено для осмотра критики и в большей степени для своих целей! :)

И так начну. У каждого была ситуация когда при захвате территории нужно было сделать проверку на то, прикасается ли вражеская территория к своей или нет . Если такую проверку не сделать то захватывать зоны можно будет по всей карте а это не прикольно выглядит!

Внимание пример с моего мода RLS, если нужно для другого мода, пишите в комментариях!

Сама функция:

PHP:
stock AroundPlace(playerid, i)
{
	new res = sizeof(GZInfo) / 8;
        if(GZInfo[i + 1][gFrakVlad] == PI[playerid][pMember]
	|| GZInfo[i + res][gFrakVlad] == PI[playerid][pMember]
	|| GZInfo[i - 1][gFrakVlad] == PI[playerid][pMember]
	|| GZInfo[i - res][gFrakVlad] == PI[playerid][pMember])
	return true;
	return false;
}

Команда с Данной функцией:

PHP:
CMD:capture(playerid, params[])
{
    if(FrakCD[PI[playerid][pMember]] != 0) return SendClientMessage(playerid,-1,"Ваша банда еще не окрепла с момента последнего захвата. Отдыхайте...");
    if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_GRAD1,"Вы не можете захватить территорию");
	new tmphour, tmpminute, tmpsecond;
	gettime(tmphour, tmpminute, tmpsecond);
	tmphour = shifthour;
	if(ghour >= 0 && ghour <=6) return SendClientMessage(playerid, COLOR_GRAD1, "В ночное время захват запрещён!");
	if(GangWar == 1) return SendClientMessage(playerid, COLOR_REDD, "В данный момент захват запрещён (( Идёт война ... ))!");
	for(new i = 0; i< 120; i++)
	{
		if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != PI[playerid][pMember] && ZoneOnBattle[i]==0)
 		{
 		    if(!AroundPlace(playerid, i)) return SendClientMessage(playerid, COLOR_REDD, "Можно воевать за территории только те что вокруг своей!"); // Тут применяется данная функция
			format(pstring[playerid],MAX_STRING,"%s спровоцировал войну за территорию против банды %s",Name(playerid),GetGangName(GZInfo[i][gFrakVlad]));
			SendFamilyMessage(PI[playerid][pMember],0x00D900C8,pstring[playerid]);
			format(pstring[playerid],MAX_STRING,"[Внимание]: На вашу территорию напала банда %s",GetGangName(PI[playerid][pMember]));
			SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_GREEN,pstring[playerid]);
			SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_WHITE,"До начала захвата территории осталось 5 минут(ы). Победит банда, которая останется последней");
			SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
			SendFamilyMessage(PI[playerid][pMember],COLOR_WHITE,"До начала захвата территории осталось 5 минут(ы). которая останется последней");
			SendFamilyMessage(PI[playerid][pMember],COLOR_WHITE,"Территория будет мигать до тех пор, пока на ней не останется 1 банда");
			GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PI[playerid][pMember]));
			GZSafeTime[i] = 300;
			FrakCD[PI[playerid][pMember]]  = 600;
			GZInfo[i][gNapad] = PI[playerid][pMember];
			ZoneTimer[i] = 720;
			ZoneOnBattle[i] = 1;
			GangWar = 1;
			GZTimer = SetTimer("GzCheck",1000,true);
			break;
		}
	}
	return true;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу