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

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

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

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

/capture типо как у Advance

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

Ruslan_Smk

Умник
Кто просил выложить /capture, ловите.. ;3
Вообще система запутана..
к new;
Код:
new bool:StopWar = false;
new CommandKill[2];
new Text: onecommand;
new Text: twocommand;
new cvetzona = 0; 
new Text: kolone;
new Text: koltwo;
new Text: fon;
new Text: time;
new Text: vremya;
new WarTimeMin;
new WarTimeSec;
new WarStop;
new Command[2];
new WarZoneID;
enum pZone
{
 Float:px1,
 Float:py1,
 Float:px2,
 Float:py2,
 pfrak,
};
new GZInfo[90][pZone];
команды:
Код:
	  if(strcmp(cmd, "/capture", true) == 0)
	{
    	new fntext[60];
	    new string[128];
    	new fztext[60];
	    if(PlayerInfo[playerid][pMember] >= 19 && PlayerInfo[playerid][pMember] <= 23){
	        if(PlayerInfo[playerid][pRang] >= 7){
	            if(StopWar == false){
					if(Command[0] != 0) { SendClientMessage(playerid, COLOR_GRAD1, "На данный момент уже захватывается территория"); return 1; }
					new zid,mid;
					new Float:x, Float:y, Float:z;
					GetPlayerPos(playerid, x,y,z);
					for(new i = 0; i < sizeof(GZInfo); i++){
						if((x >= GZInfo[i][px1] && x <= GZInfo[i][px2]) &&
						(y >= GZInfo[i][py1] && y <= GZInfo[i][py2])){
						    zid = i;
						    i = 5555;}}
					if(PlayerInfo[playerid][pMember] != 0) mid = PlayerInfo[playerid][pMember];
					else if(PlayerInfo[playerid][pLeader] != 0) mid = PlayerInfo[playerid][pLeader];
					if(mid == GZInfo[zid][pfrak]) { SendClientMessage(playerid, COLOR_GRAD1, "Данная территория принадлежит Вам"); return 1; }
					if(GZInfo[zid][pfrak] == 0){
					    GZInfo[zid][pfrak] = mid;
					    SaveGZ();
						if(GZInfo[zid][pfrak] == 19) GangZoneShowForPlayer(playerid, zid, 0x009900AA);
						else if(GZInfo[zid][pfrak] == 20)  GangZoneShowForPlayer(playerid, zid, 0xCC00FFAA);
						else if(GZInfo[zid][pfrak] == 21)  GangZoneShowForPlayer(playerid, zid, 0x6666FFAA);
						else if(GZInfo[zid][pfrak] == 22)  GangZoneShowForPlayer(playerid, zid, 0x00CCFFAA);
						else if(GZInfo[zid][pfrak] == 23)  GangZoneShowForPlayer(playerid, zid, 0xffff00AA);
						return 1;}
					new kol;
					for(new i = 0; i < GetMaxPlayers(); i++){
					    if(PlayerInfo[i][pMember] == GZInfo[zid][pfrak] ||
					    PlayerInfo[i][pLeader] == GZInfo[zid][pfrak]){
					        kol++;}}
					if(kol < 1) { SendClientMessage(playerid, COLOR_GRAD1, "У данной банды нету онлайн игроков"); return 1; }
			        if(mid == 19) fntext = "Grove Street";
					else if(mid == 20) fntext = "The Ballas";
					else if(mid == 21) fntext = "The Rifa";
					else if(mid == 22) fntext = "Varios Los Aztecas";
					else if(mid == 23) fntext = "Los Santos Vagos";
					if(GZInfo[zid][pfrak] == 19) fztext = "Grove Street";
					else if(GZInfo[zid][pfrak] == 20) fztext = "The Ballas";
					else if(GZInfo[zid][pfrak] == 21) fztext = "The Rifa";
					else if(GZInfo[zid][pfrak] == 22) fztext = "Varios Los Aztecas";
					else if(GZInfo[zid][pfrak] == 23) fztext = "Los Santos Vagos";
				    format(string, sizeof(string), "Банда '%s' начала захват территории у '%s' в районе '%s'",fntext, fztext, GetPlayerZone(playerid));
				    SendFamilyMessage(19, 0xdd4400AA, string),SendFamilyMessage(20, 0xdd4400AA, string),SendFamilyMessage(21, 0xdd4400AA, string),SendFamilyMessage(22, 0xdd4400AA, string),SendFamilyMessage(23, 0xdd4400AA, string);
					GangZoneFlashForAll(zid, COLOR_RED);
					Command[0] = mid;
					Command[1] = GZInfo[zid][pfrak];
					WarZoneID = zid;
					new ftext[16];
					fon = TextDrawCreate(1, 285, "_");
                	TextDrawUseBox(fon, 1);
                	TextDrawBoxColor(fon, 0x00000075);
                	TextDrawTextSize(fon, 150.0, 400.0);
                	TextDrawLetterSize(fon, 0.0, 5.3);
					time = TextDrawCreate(10.0, 285.0, "Time:");
					TextDrawLetterSize(time, 0.4, 1.2);
					TextDrawColor(time, 0x37FA00FF);
					TextDrawFont(time, 2);
					TextDrawSetProportional(time, 1);
					TextDrawSetOutline(time, 2);
					vremya = TextDrawCreate(50.0, 285.0, "5:00");
					TextDrawLetterSize(vremya, 0.4, 1.2);
					TextDrawColor(vremya, 0x37FA00FF);
					TextDrawFont(vremya, 2);
					TextDrawSetOutline(vremya, 2);
					if(mid == 19) ftext = "Grove";
					else if(mid == 20) ftext = "Ballas";
					else if(mid == 21) ftext = "Rifa";
					else if(mid == 22) ftext = "Aztecas";
					else if(mid == 23) ftext = "Vagos";
					onecommand = TextDrawCreate(10.0, 300.0, ftext);
					TextDrawLetterSize(onecommand, 0.4, 1.2);
					TextDrawFont(onecommand, 2);
					TextDrawSetOutline(onecommand, 2);
					if(GZInfo[zid][pfrak] == 19) ftext = "Grove";
					else if(GZInfo[zid][pfrak] == 20) ftext = "Ballas";
					else if(GZInfo[zid][pfrak] == 21) ftext = "Rifa";
					else if(GZInfo[zid][pfrak] == 22) ftext = "Aztecas";
					else if(GZInfo[zid][pfrak] == 23) ftext = "Vagos";
					twocommand = TextDrawCreate(10.0, 315.0, ftext);
					TextDrawUseBox(twocommand, 0);
					TextDrawLetterSize(twocommand, 0.4, 1.2);
					TextDrawFont(twocommand, 2);
					TextDrawSetOutline(twocommand, 2);
					kolone = TextDrawCreate(133.0, 315.0, "0");
					TextDrawLetterSize(kolone, 0.4, 1.2);
					TextDrawFont(kolone, 2);
					TextDrawSetOutline(kolone, 2);
					koltwo = TextDrawCreate(133.0, 300.0, "0");
					TextDrawLetterSize(koltwo, 0.4, 1.2);
					TextDrawFont(koltwo, 2);
					TextDrawSetOutline(koltwo, 2);
					for(new i = 0; i < GetMaxPlayers();i++){
					    if((PlayerInfo[i][pMember] >= 19 && PlayerInfo[i][pMember] <= 23) ||
						(PlayerInfo[i][pLeader] >= 19 && PlayerInfo[i][pLeader] <= 23)){
					        TextDrawShowForPlayer(i,fon);
					        TextDrawShowForPlayer(i,time);
					        TextDrawShowForPlayer(i,vremya);
					        TextDrawShowForPlayer(i,onecommand);
					        TextDrawShowForPlayer(i,twocommand);
					        TextDrawShowForPlayer(i,kolone);
					        TextDrawShowForPlayer(i,koltwo);}}
					WarTimeMin = 2;
					WarTimeSec = 60;
					WarStop = 7200000;
					CommandKill[0] = 0;
					CommandKill[1] = 0;
					StopWar = true;}
				else{
				    SendClientMessage(playerid, COLOR_GRAD1, "Захват территории доступен 1 раз в час");
				    return 1;}}
	        else{
	            SendClientMessage(playerid, COLOR_GRAD1, "Данная функция доступна только с 7 ранга");
	            return 1;}}
	    else{
	        SendClientMessage(playerid, COLOR_GRAD1, "Данная функция Вам недоступна");
	        return 1;}}
/gzcolor ( пригодиться )

Код:
	else if(strcmp(cmd, "/gzcolor", true) == 0){
	        if(PlayerInfo[playerid][pAdmin] >= 5){
			tmp=strtok(cmdtext, idx);
			if(!strlen(tmp) || (!IsNumeric(tmp))){SendClientMessage(playerid, COLOR_GRAD1, "Используйте: /gzone [ 19 - 23 ]");return 1;}
			new banda = strval(tmp);
			if(banda > 18 && banda < 24){
				new zid;
				new Float:x, Float:y, Float:z;
				GetPlayerPos(playerid, x,y,z);
				for(new i = 0; i < sizeof(GZInfo); i++){
				if((x >= GZInfo[i][px1] && x <= GZInfo[i][px2]) &&
				(y >= GZInfo[i][py1] && y <= GZInfo[i][py2])){zid = i;i = 5555;}}
				GZInfo[zid][pfrak] = banda;
				SaveGZ();
				if(GZInfo[zid][pfrak] == 19) GangZoneShowForAll(zid, 0x009900AA);
				else if(GZInfo[zid][pfrak] == 20)  GangZoneShowForAll(zid, 0xCC00FFAA);
				else if(GZInfo[zid][pfrak] == 21)  GangZoneShowForAll(zid, 0x6666FFAA);
				else if(GZInfo[zid][pfrak] == 22)  GangZoneShowForAll(zid, 0x00CCFFAA);
				else if(GZInfo[zid][pfrak] == 23)  GangZoneShowForAll(zid, 0xffff00AA);
				SendClientMessage(playerid,COLOR_GRAD1, "Сделано");}else{SendClientMessage(playerid, COLOR_GRAD1, "Недопустимое значение.");return 1;}}}

в public OnPlayerConnect

Код:
    for(new i = 0; i < sizeof(GZInfo); i++)
    {
    if(GZInfo[i][pfrak] == 0) GangZoneShowForPlayer(playerid, i, 0xFEFEFEAA);
	else if(GZInfo[i][pfrak] == 19) GangZoneShowForPlayer(playerid, i, 0x009900AA);
	else if(GZInfo[i][pfrak] == 20)  GangZoneShowForPlayer(playerid, i, 0xCC00FFAA);
	else if(GZInfo[i][pfrak] == 21)  GangZoneShowForPlayer(playerid, i, 0x6666FFAA);
	else if(GZInfo[i][pfrak] == 22)  GangZoneShowForPlayer(playerid, i, 0x00CCFFAA);
	else if(GZInfo[i][pfrak] == 23)  GangZoneShowForPlayer(playerid, i, 0xffff00AA);
    }
к форвардам
Код:
forward CheckArmour();
в public OnGameModeInit
Код:
SetTimer("CheckArmour",1000,1);

Можно в конец мода:

Код:
public CheckArmour()
{
	WarTimeSec--;
	if(WarStop > 0) WarStop--;
	if(WarStop == 0) StopWar = false;
	if(WarTimeSec == 0 && WarTimeMin == 0)
	{
		TextDrawDestroy(fon);
		TextDrawDestroy(onecommand);
		TextDrawDestroy(twocommand);
		TextDrawDestroy(kolone);
		TextDrawDestroy(koltwo);
		TextDrawDestroy(time);
		TextDrawDestroy(vremya);
		GangZoneStopFlashForAll(WarZoneID);
		SaveGZ();
		if(CommandKill[0] > CommandKill[1])
		{
		    for(new i = 0; i < GetMaxPlayers(); i++)
		    {
				{
				    if(GZInfo[i][pfrak] == 0) GangZoneShowForPlayer(i, WarZoneID, 0xFEFEFEAA);
					else if(GZInfo[i][pfrak] == 19) GangZoneShowForPlayer(i, WarZoneID, 0x009900AA);
					else if(GZInfo[i][pfrak] == 20)  GangZoneShowForPlayer(i, WarZoneID, 0xCC00FFAA);
					else if(GZInfo[i][pfrak] == 21)  GangZoneShowForPlayer(i, WarZoneID, 0x6666FFAA);
					else if(GZInfo[i][pfrak] == 22)  GangZoneShowForPlayer(i, WarZoneID, 0x00CCFFAA);
					else if(GZInfo[i][pfrak] == 23)  GangZoneShowForPlayer(i, WarZoneID, 0xffff00AA);
				}
		        if(PlayerInfo[i][pMember] == Command[0] || PlayerInfo[i][pLeader] == Command[0])
		        {
					SendClientMessage(i, 0xdd4400AA, "Вы захватили территорию");
					cvetzona = 1;
				}
			}
			GZInfo[WarZoneID][pfrak] = Command[0];
		}
		else if(CommandKill[0] < CommandKill[1])
		{
		    for(new i = 0; i < GetMaxPlayers(); i++)
		    {
		        if(IsPlayerConnected(i))
		        {
					if(GZInfo[WarZoneID][pfrak] == 19) GangZoneShowForAll(WarZoneID, 0x009900AA);
					else if(GZInfo[WarZoneID][pfrak] == 20)  GangZoneShowForAll(WarZoneID, 0xCC00FFAA);
					else if(GZInfo[WarZoneID][pfrak] == 21)  GangZoneShowForAll(WarZoneID, 0x00CCFFAA);
					else if(GZInfo[WarZoneID][pfrak] == 22)  GangZoneShowForAll(WarZoneID, 0x00CCFFAA);
					else if(GZInfo[WarZoneID][pfrak] == 23)  GangZoneShowForAll(WarZoneID, 0xffff00AA);
				}
		        if(PlayerInfo[i][pMember] == Command[1] || PlayerInfo[i][pLeader] == Command[1])
		        {
		            SendClientMessage(i, 0xdd4400AA, "Вы захватили территорию");
		            cvetzona = 1;
		        }
		        else if(PlayerInfo[i][pMember] == Command[0] || PlayerInfo[i][pLeader] == Command[0])
		        {
					new string[64],ftext[16];
					if(GZInfo[WarZoneID][pfrak] == 19) ftext = "The Grove";
					else if(GZInfo[WarZoneID][pfrak] == 20) ftext = "Ballas";
					else if(GZInfo[WarZoneID][pfrak] == 21) ftext = "Rifa";
					else if(GZInfo[WarZoneID][pfrak] == 22) ftext = "Aztecas";
					else if(GZInfo[WarZoneID][pfrak] == 23) ftext = "Vagos";
					format(string, sizeof(string),"Вам не удалось захватить территорию банды %s",ftext);
					SendClientMessage(i, 0xdd4400AA, string);
				}
			}
		}
		else
		{
		    for(new i = 0; i < GetMaxPlayers(); i++)
		    {
		        if(PlayerInfo[i][pMember] == Command[1] || PlayerInfo[i][pLeader] == Command[1])
		        {
					SendClientMessage(i, 0xdd4400AA, "Территория остаётся у Вас");
					if(GZInfo[WarZoneID][pfrak] == 19) GangZoneShowForAll(WarZoneID, 0x009900AA);
					else if(GZInfo[WarZoneID][pfrak] == 20)  GangZoneShowForAll(WarZoneID, 0xCC00FFAA);
					else if(GZInfo[WarZoneID][pfrak] == 21)  GangZoneShowForAll(WarZoneID, 0x6666FFAA);
					else if(GZInfo[WarZoneID][pfrak] == 22)  GangZoneShowForAll(WarZoneID, 0x00CCFFAA);
					else if(GZInfo[WarZoneID][pfrak] == 23)  GangZoneShowForAll(WarZoneID, 0xffff00AA);
		        }
		    }
		}
		SaveGZ();
		Command[0] = 0;
		Command[1] = 0;
	}
	else if(WarTimeSec == 0) { WarTimeSec = 60; WarTimeMin--; }
	new string[32];
	if(WarTimeSec > 9) format(string, sizeof(string),"  %d:%d",WarTimeMin,WarTimeSec);
	else format(string, sizeof(string),"  %d:0%d",WarTimeMin,WarTimeSec);
	TextDrawSetString(vremya, string);
}

Кому лень настраивать гангзоны, ловите, но они кривые в хлам..

Код:
public LoadGZ()
{
	new string[256];
	new ololo[5][32];
	new File: file = fopen("zone.ini", io_read);
	if(file)
	{
		new idx;
		while (idx < sizeof(GZInfo))
		{
		    fread(file, string);
		    split(string, ololo, '|');
			GZInfo[idx][px1] = floatstr(ololo[0]);
			GZInfo[idx][py1] = floatstr(ololo[1]);
			GZInfo[idx][px2] = floatstr(ololo[2]);
			GZInfo[idx][py2] = floatstr(ololo[3]);
			GZInfo[idx][pfrak] = strval(ololo[4]);
			idx++;
		}
		fclose(file);
	}
}

public SaveGZ()
{
	new string[128], idx;
	new File: file2;
	while (idx < sizeof(GZInfo))
	{
	    format(string, sizeof(string),"%f|%f|%f|%f|%d\n",GZInfo[idx][px1],GZInfo[idx][py1],GZInfo[idx][px2],
	    GZInfo[idx][py2],GZInfo[idx][pfrak]);
	    if(idx == 0)
	    {
	        file2 = fopen("zone.ini", io_write);
	    }
	    else
	    {
	        file2 = fopen("zone.ini", io_append);
	    }
	    fwrite(file2,string);
	    idx++;
	    fclose(file2);
	}
	return 1;
}
zone.ini

Возможно что то упустил или подзабыл, если у вас error`s/warning`s? отписывайтесь в топике, помогу чем смогу..
Вырезка из Nevada RP.. ( просил кто то, решил помочь )
Подстраивайте капт, под свой мод! прежде чем писать сюда, плохие комментарии, типо "нэ работаит!1!", "у минэ 100500 ерарав" ;3

Перенес ради интереса к себе на мини копию, все работает ;3 ( основы то одинаковые )
Скрин: ( на s0b не обращ. внимания :D )
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу