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

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

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

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

Ганг зоны на сервере.

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

Kala4ik

Компетентный
Добрый вечер, создал систему /capture на сервере. Но столкнулся с такой проблемой, при капте ганг зона мигает не той фракции которая забила вар, а после завершения нормально становится. И после рестарта сервера ганг зоны попросту не сохраняются и приходится заного бить капт .


PHP:
CMD:capture(playerid,params[])
{
    new string[144];
    new faction = Player[playerid][pMember];
    if(Player[playerid][pMember] > 14 || Player[playerid][pMember] < 10)
        return send(playerid, COLOR_RED,"[ОШИБКА] {FFFFFF}Захват зон доступен только бандам.");
    if(Player[playerid][pRank] < 4)
        return send(playerid,COLOR_GREY,"[ОШИБКА] {FFFFFF}Захват зон доступен с 4 ранга и выше.");
    if(FrakCD != 0)
    {
        f(string,"Новый захват можно организовать через %d минут.",FrakCD/60);
        return send(playerid,0xFFFFFFAA,string);
    }
    if(IsCapture == true)
        return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}На территории штата уже идет война, дождитесь ее окончания.");
    if(Player[playerid][pRank] < 3)
        return NoRights;
    if(IsPlayerInBandOnline(faction) < 1)
        return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Не достаточно союзников для захвата зоны.");
    if(IsPlayerInAnyVehicle(playerid))
        return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Команду нельзя использовать в транспорте.");
    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]) && GZInfo[i][gFrak] != 0 && ZoneOnBattle[i] == 0)
        {
            if(GZInfo[i][gFrak] == Player[playerid][pMember])return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Вы не можете напасть на свою территорию");
            switch(GZInfo[i][gID])
            {
                case 6,24,31,41,46:
                return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Данную территорию нельзя атаковать.");
            }
            if(IsPlayerInBandOnline(GZInfo[i][gFrak]) < 1)
            {
                f(string,"[ОШИБКА] {FFFFFF}У банды \"%s\" мало игроков, нужно минимум 3.",GetGangName(GZInfo[i][gFrak]));
                return send(playerid,0xFF0000AA,string);
            }
            f(string,"[Война] {FFFFFF}%s %s борьбу за зону против \"%s\".",sendername(playerid),GetPVarInt(playerid, "Sex") == 1 ? ("начал") : ("начала"),GetGangName(GZInfo[i][gFrak]));
            SendTeamM(faction,0xFFFF00AA,string);
            f(string,"[Война] {FFFFFF}Ваша зона под атакой банды \"%s\".",FInfo[Player[playerid][pMember]][fName]);
            SendTeamM(GZInfo[i][gFrak],0xFFFF00AA,string);
            GangZoneFlashForAll(GangZone[i], GetGangZoneColor(GZInfo[i][gFrak]));
            GZSafeTime[i] = 600;
            FrakCD = 2000;
            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]);
            break;
        }
    }
    return 1;
}
PHP:
stock CaptureStart(familyone,familytwo)
{
	new SCORE[64];
	foreach(new i: Player)
	{
		if(Logged[i] == false) continue;
		if(Player[i][pMember] == familyone || Player[i][pMember] == familytwo)
		{
		    for(new s; s < 7; s++) PlayerTextDrawShow(i, CaptureTD[i][s]);
			f(SCORE,"%s", GetGangName(familyone));
			PlayerTextDrawSetString(i,CaptureTD[i][3],SCORE);
			f(SCORE,"%s", GetGangName(familytwo));
			PlayerTextDrawSetString(i,CaptureTD[i][4],SCORE);
			PlayerTextDrawSetString(i,CaptureTD[i][5],"0");
			PlayerTextDrawSetString(i,CaptureTD[i][6],"0");
			drawcapt[i] = true;
			IsCapture = true;
		}
	}
}
stock CaptureEnd(familyone,familytwo)
{
	foreach(new i: Player)
	{
		if(Player[i][pMember] == familyone || Player[i][pMember] == familytwo)
		{
		    for(new s; s < 7; s++) PlayerTextDrawHide(i, CaptureTD[i][s]);
			drawcapt[i] = false;
		}
	}
}
PHP:
stock GzCheck()
{
	new string[256];
	if(GoMafiaWar == 1 && MZSafeTime == 0)
	{
		if(AtackMafiaPoint == DefenceMafiaPoint)
		{
			f(string,"[Фракция]{FFFFFF}Вы отстояли свой бизнес!");
			SendTeamM(DefenceMafiaFraction,TAXI_COLOR,string);
			f(string,"[Фракция]{FFFFFF}Вы не смогли захватить бизнес!");
			SendTeamM(AtackMafiaFraction,TAXI_COLOR,string);
			GangZoneStopFlashForAll(zons);
			GangZoneHideForAll(zons);
			OverWar();
			WarTimer();
			return true;
		}
		if(DefenceMafiaPoint > AtackMafiaPoint)
		{
			f(string,"[Фракция]{FFFFFF}Вы отстояли свой бизнес!");
			SendTeamM(DefenceMafiaFraction,TAXI_COLOR,string);
			f(string,"[Фракция]{FFFFFF}Вы не смогли захватить новый бизнес!");
			SendTeamM(AtackMafiaFraction,TAXI_COLOR,string);
			if(DefenceMafiaFraction == 5) lcnscore += 1;
			if(DefenceMafiaFraction == 6) yakudzascore += 1;
			if(DefenceMafiaFraction == 15) rmscore += 1;
			GangZoneStopFlashForAll(zons);
			GangZoneHideForAll(zons);
			SaveInstrument();
			OverWar();
			WarTimer();
			return true;
		}
		if(DefenceMafiaPoint < AtackMafiaPoint)
		{
			f(string,"[Фракция]{FFFFFF}Вы потеряли бизнес %s!",BiznesInfo[BiznesOnBattle-1][bMessage]);
			SendTeamM(DefenceMafiaFraction,TAXI_COLOR,string);
			f(string,"[Фракция]{FFFFFF}Вы завоевали бизнес %s!",BiznesInfo[BiznesOnBattle-1][bMessage]);
			SendTeamM(AtackMafiaFraction,TAXI_COLOR,string);
			if(AtackMafiaFraction == 5) lcnscore += 1;
			if(AtackMafiaFraction == 6) yakudzascore += 1;
			if(AtackMafiaFraction == 15) rmscore += 1;
			BiznesInfo[BiznesOnBattle-1][bMafia] = AtackMafiaFraction;
			GangZoneStopFlashForAll(zons);
			GangZoneHideForAll(zons);
			UpdateBiz(BiznesOnBattle-1);
			SaveBiznes();
			OverWar();
			WarTimer();
			SaveInstrument();
			return true;
		}
		foreach(new i: Player)
		{
			if(Player[i][pLeader] == DefenceMafiaFraction || Player[i][pMember] == DefenceMafiaFraction || Player[i][pLeader] == AtackMafiaFraction || Player[i][pMember] == AtackMafiaFraction)
			{
				TextDrawHideForPlayer(i,MzScore[i]);
			}
		}
	}
	new SCORE[128];
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
		if(ZoneOnBattle[i] == 1 && IsCapture == true)
		{
   			foreach(new x: Player)
			{
				if(Logged[x] == false && drawcapt[x] == true) continue;
				if(Player[x][pMember] == GZInfo[i][gNapad] || Player[x][pMember] == GZInfo[i][gFrak])
				{
				    for(new s; s < 7; s++) PlayerTextDrawShow(x, CaptureTD[x][s]);
					format(SCORE, sizeof(SCORE), "%s", GetGangName(GZInfo[i][gNapad]));
					PlayerTextDrawSetString(x, CaptureTD[x][3], SCORE);
					format(SCORE, sizeof(SCORE), "%s", GetGangName(GZInfo[i][gFrak]));
					PlayerTextDrawSetString(x, CaptureTD[x][4], 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];
			    f(string,"[Война] {FFFFFF}Вы захватили новую территорию, которая находилась под контролем банды %s",GetGangName(zg));
				SendTeamM(GZInfo[i][gNapad],TAXI_COLOR,string);
				f(string,"[Война] {FFFFFF}Вам не удалось отстоять свою территорию, теперь эта территория под контролем банды %s",GetGangName(zh));
				SendTeamM(GZInfo[i][gFrak],TAXI_COLOR,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);
			}
			else if(GangInfo[GZInfo[i][gNapad]][score] > GangInfo[GZInfo[i][gFrak]][score])
			{
				new zx = GZInfo[i][gNapad];
				new zl = i;
				f(string,"Вы захватили новую территорию, которая находилась под контролем банды %s", GetGangName(GZInfo[i][gFrak]));
				SendTeamM(GZInfo[i][gNapad],COLOR_GREEN,string);
				f(string,"Вам не удалось отстоять свою территорию, теперь эта территория под контролем банды %s",GetGangName(zx));
				SendTeamM(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);
			}
			else if(GangInfo[GZInfo[i][gNapad]][score] < GangInfo[GZInfo[i][gFrak]][score])
			{
				new zx = GZInfo[i][gFrak];
				new zl = i;
				SendTeamM(GZInfo[i][gNapad],COLOR_RED,"Вам не удалось захватить новую территорию");
				SendTeamM(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);
			}
		}
	}
	for(new i = 0; i < sizeof(GZInfo); i++)
	{
		for(new z = 0; z < 20; z++)
		{
			OnZONE[i][z] = 0;
		}
	}
	return 1;
}


PHP:
stock SaveGZ(idx)
{
	new string[124];
	f(string,"UPDATE gangzone SET fraction = %i WHERE id = %i", GZInfo[idx][gFrak], idx);
	mysql_tquery(mySQLDB,string,"","");
	return 1;
}
publics LoadGZ()
{
	new rows,fields;
	cache_get_data(rows,fields);
	if(rows)
	{
		for(new idx = 0; idx < rows; idx++)
		{
		    GZInfo[idx][gID] = cache_get_row_int(idx,0,mySQLDB); // id
			GZInfo[idx][gCoords][0] = cache_get_row_float(idx,1,mySQLDB); // ginfo1
            GZInfo[idx][gCoords][1] = cache_get_row_float(idx,2,mySQLDB); // ginfo2
            GZInfo[idx][gCoords][2] = cache_get_row_float(idx,3,mySQLDB); // ginfo3
            GZInfo[idx][gCoords][3] = cache_get_row_float(idx,4,mySQLDB); // ginfo4
            GZInfo[idx][gFrak] = cache_get_row_int(idx,5,mySQLDB); // fraction
			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("Ãàíã çîíû çàãðóæåíû.");
	return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу