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

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

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

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

Новый /capture

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

vitya86

Изучающий
Пользователь
Регистрация
27 Дек 2012
Сообщения
254
Лучшие ответы
0
Репутация
56
/capture (SVL) в данной команде используется инклуд foreach
И так начнем...

Добавим в начало мода инклуд
Код:
#include <foreach>
Удаляем...
Код:
new OnZONE[120][20];
new ZoneTimer[120];
Ко всем new;
Код:
new captures = 0;
new CaptureOn[MAX_PLAYERS];
new PlayerText:CaptureTime[MAX_PLAYERS];
new PlayerText:CaptureWar[MAX_PLAYERS];
new PlayerText:CaptureGang[MAX_PLAYERS];
new ItsWar[22];
new GzCheckTimer;
new GzCheckOn = 0;
В public OnPlayerConnect(playerid);
Код:
CaptureOn[playerid] = 0;
Ко всем stock;
Код:
stock CaptureTextDraws(playerid)
{
    CaptureTime[playerid] = CreatePlayerTextDraw(playerid,45.00000, 255.00000, "Time:~r~ 00:00");
    PlayerTextDrawBackgroundColor(playerid,CaptureTime[playerid], 255);
    PlayerTextDrawAlignment(playerid,CaptureTime[playerid], 1);
    PlayerTextDrawLetterSize(playerid,CaptureTime[playerid], 0.333000,1.666666);
    PlayerTextDrawFont(playerid,CaptureTime[playerid],1);
    PlayerTextDrawColor(playerid,CaptureTime[playerid], COLOR_WHITE);
    PlayerTextDrawSetOutline(playerid,CaptureTime[playerid],1);
    PlayerTextDrawSetProportional(playerid,CaptureTime[playerid],1);
    PlayerTextDrawSetShadow(playerid,CaptureTime[playerid],1);
    PlayerTextDrawHide(playerid, CaptureTime[playerid]);
    CaptureWar[playerid] = CreatePlayerTextDraw(playerid,45.00000, 275.00000, "Vagos: ~w~10");
    PlayerTextDrawBackgroundColor(playerid,CaptureWar[playerid], 255);
    PlayerTextDrawAlignment(playerid,CaptureWar[playerid], 1);
    PlayerTextDrawLetterSize(playerid,CaptureWar[playerid], 0.333000,1.666666);
    PlayerTextDrawFont(playerid,CaptureWar[playerid],1);
    PlayerTextDrawColor(playerid,CaptureWar[playerid], COLOR_WHITE);
    PlayerTextDrawSetOutline(playerid,CaptureWar[playerid],1);
    PlayerTextDrawSetProportional(playerid,CaptureWar[playerid],1);
    PlayerTextDrawSetShadow(playerid,CaptureWar[playerid],1);
    PlayerTextDrawHide(playerid, CaptureWar[playerid]);
    CaptureGang[playerid] = CreatePlayerTextDraw(playerid,45.00000, 295.00000, "Ballas: ~w~12");
    PlayerTextDrawBackgroundColor(playerid,CaptureGang[playerid], 255);
    PlayerTextDrawAlignment(playerid,CaptureGang[playerid], 1);
    PlayerTextDrawLetterSize(playerid,CaptureGang[playerid], 0.333000,1.666666);
    PlayerTextDrawFont(playerid,CaptureGang[playerid],1);
    PlayerTextDrawColor(playerid,CaptureGang[playerid], COLOR_WHITE);
    PlayerTextDrawSetOutline(playerid,CaptureGang[playerid],1);
    PlayerTextDrawSetProportional(playerid,CaptureGang[playerid],1);
    PlayerTextDrawSetShadow(playerid,CaptureGang[playerid],1);
    PlayerTextDrawHide(playerid, CaptureGang[playerid]);
}
Код:
stock CaptureTimes()
{
    new hour, minute, second;
	gettime(hour, minute, second);
	if(hour == 5 || hour == 7 || hour == 9 || hour == 11 || hour == 13 || hour == 15 || hour == 17 || hour == 19 || hour == 21 || hour == 23) return true;
	else { return false; }
}
Заменяем /capture свою на мою;
Код:
	if(!strcmp(cmd, "/capture",true))
	{
	    if(Flood[playerid] > 0) return SendClientMessage(playerid, 0xFFD5BBAA, "Не флуди!");
	    Flood[playerid] = 2;
 		if(FrakCD[PlayerInfo[playerid][pMember]] != 0) return SendClientMessage(playerid,COLOR_WHITE,Ошибка: Ваша банда уже воевала в этом часу.");
		if(!IsInAllowed(playerid)) return SendClientMessage(playerid,COLOR_WHITE, "Ошибка: Вы не можете захватить территорию!");
		new tmphour, tmpminute, tmpsecond;
		gettime(tmphour, tmpminute, tmpsecond);
		tmphour = shifthour;
		for(new i = 0; i < 130; i++)
		{
			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 players = 0;
			    foreach(new m : Player)
			    {
			        if(PlayerInfo[m][pMember] == GZInfo[i][gFrakVlad])
			        {
			            players++;
					}
				}
				if(players < 1) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Невозможно захватить данную территорию, недостаточно игроков (минимум 1)"); //Значение свое
   				if(FrakCD[GZInfo[i][gFrakVlad]] != 0) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Вы не можете захватить территорию");
				if(IsATerra(playerid)) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Нельзя захватить эту территорию");
				if(PlayerInfo[playerid][pRank] < 7) return SendClientMessage(playerid, COLOR_WHITE,"Ошибка: Доступно с 7-го ранга.");
				FrakCD[GZInfo[i][gFrakVlad]] = 1;
				FrakCD[PlayerInfo[playerid][pMember]] = 1;
				format(string,sizeof(string),"[Внимание]: Ваша банда напала на территорию %s",GetGangName(GZInfo[i][gFrakVlad]));
				SendFamilyMessage(PlayerInfo[playerid][pMember],0x00B953AA,string);
				format(string,sizeof(string), "[Внимание]: На вашу территорию напала %s",GetGangName(PlayerInfo[playerid][pMember]));
				SendFamilyMessage(GZInfo[i][gFrakVlad],0xFF8CEFAA,string);
				GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(PlayerInfo[playerid][pMember]));
				GZSafeTime[i] = 600;
				FrakCD[PlayerInfo[playerid][pMember]]  = 2200;
				GZInfo[i][gNapad] = PlayerInfo[playerid][pMember];
				ZoneOnBattle[i] = 1;
				captures++;
				if(GzCheckOn == 0)
				{
					GzCheckTimer = SetTimer("GzCheck", 1000,1);
					GzCheckOn = 1;
				}
				break;
			}
		}
	}
Заменяем public GzCheck();
Код:
public GzCheck()
{
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
	    new OnZONE[130][20];
	    if(ZoneOnBattle[i] == 1)
		{
	    	if(GZSafeTime[i] > 0)
			{
				GZSafeTime[i] --;
			}
  			foreach(new x : Player)
			{
  				new faction = PlayerInfo[x][pMember];
				if(faction == GZInfo[i][gNapad] || faction == 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][faction] ++;
						}
					}
				}
			}
			foreach(new x : Player)
			{
   				new string[128];
		    	new y = PlayerInfo[x][pMember];
				if(y == GZInfo[i][gNapad] || y == 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,180,"Time:  ~w~%s",Convert(GZSafeTime[i]));
					PlayerTextDrawSetString(x,CaptureTime[x],string);
					format(string,180,"~g~%s:  ~w~%d",GetGangName(GZInfo[i][gNapad]),OnZONE[i][GZInfo[i][gNapad]]);
					PlayerTextDrawSetString(x,CaptureGang[x],string);
					format(string,180,"~g~%s:  ~w~%d",GetGangName(GZInfo[i][gFrakVlad]),OnZONE[i][GZInfo[i][gFrakVlad]]);
					PlayerTextDrawSetString(x,CaptureWar[x],string);
					//OnZONE[i][y] = 0;
				}
			}
			new asd;
			for(new x = 0; x < sizeof(FrakCD); x++)
			{
				if(OnZONE[i][x] > 0 && IsInAllowedF(x) && GZSafeTime[i] <= 0) asd++;
			}
			if(asd == 1)
			{
				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 = 0; y < sizeof(GZInfo); 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++;
							}
						    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;
						ClearTotalGz();
						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();
						if(captures == 0)
						{
							KillTimer(GzCheckTimer);
							GzCheckOn = 0;
						}
						break;
					}
				}
			}
		}
	}
}
В public OnPlayerDisconnect(playerid, reason)
Код:
	if(CaptureOn[playerid] == 1)
	{
	    CaptureOn[playerid] = 0;
		PlayerTextDrawDestroy(playerid, CaptureTime[playerid]);
		PlayerTextDrawDestroy(playerid, CaptureGang[playerid]);
		PlayerTextDrawDestroy(playerid, CaptureWar[playerid]);
	}
Так же к командам /uval /univnite
Код:
if(CaptureOn[playerid] == 1)
CaptureOn[playerid] = 0;
PlayerTextDrawDestroy(playerid, CaptureTime[playerid]);
PlayerTextDrawDestroy(playerid, CaptureGang[playerid]);
PlayerTextDrawDestroy(playerid, CaptureWar[playerid]);
Ссылка на инклуд:
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу