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

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

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

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

[RLS] Оптимизируем /accept free

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

Garsio

Умник
И так, сейчас я оптимизирую свой мод и увидел вот такое:
PHP:
else if(strcmp(x_job, "free",true) == 0)
	{
		if(FreeOffer[playerid] < 999)
		{
			if(IsPlayerConnected( FreeOffer[playerid]))
			{
				if(SposobOffer[playerid] == 0)
				{
					if(PlayerInfo[playerid][pCash] > FreePrice[playerid])
					{
						GetPlayerName(FreeOffer[playerid], giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						format(string, sizeof(string), "Вы заплотили адвокату %s %d вирт.",giveplayer, FreePrice[playerid]);
						SCM(playerid, 0x6495EDFF, string);
						format(string, sizeof(string), "Вы выпустили %s из тюрьмы за %d вирт.",sendername,FreePrice[playerid]);
						SCM(FreeOffer[playerid], 0x6495EDFF, string);
						PlayerInfo[playerid][pCash] -= FreePrice[playerid];
						PlayerInfo[FreeOffer[playerid]][pCash]+= FreePrice[playerid];
						FreeOffer[playerid] = 999;
						FreePrice[playerid] = 0;
						SposobOffer[playerid] = 0;
						SetPlayerInterior(playerid, 0);
						SetPlayerPos(playerid,1553.4962,-1675.2714,16.1953);
						SetPlayerFacingAngle(playerid, 95.0636);
						PlayerInfo[playerid][pJailTime] = 0;
						PlayerInfo[playerid][pJailed] = 0;
						PlayerInfo[playerid][pWantedLevel] = 0;
						SCM(playerid, COLOR_YELLOW, "Вы свободны");
						SCM(playerid, COLOR_GREEN, "Вы заплатили свой долг обществу");
						WantedLevel[playerid] = 0;
						WantedTime[playerid] = 0;
						WantedPoints[playerid] = 0;
						SetPlayerWantedLevel(playerid, 0);
						SetPlayerVirtualWorld(playerid, 0);
						return true;
					}
					else
					{
						SCM(playerid, COLOR_GREY, "У вас недостаточно денег!");
						return true;
					}
				}
				if(SposobOffer[playerid] == 1)
				{
					if(PlayerInfo[playerid][pBank] > FreePrice[playerid])
					{
						GetPlayerName(FreeOffer[playerid], giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						format(string, sizeof(string), "Вы заплотили адвокату %s %d вирт.",giveplayer, FreePrice[playerid]);
						SCM(playerid, 0x6495EDFF, string);
						format(string, sizeof(string), "Вы выпустили %s из тюрьмы за %d вирт.",sendername,FreePrice[playerid]);
						SCM(FreeOffer[playerid], 0x6495EDFF, string);
						PlayerInfo[playerid][pBank] -= FreePrice[playerid];
						PlayerInfo[FreeOffer[playerid]][pCash]+= FreePrice[playerid];
						FreeOffer[playerid] = 999;
						FreePrice[playerid] = 0;
						SposobOffer[playerid] = 0;
						SetPlayerInterior(playerid, 0);
						SetPlayerPos(playerid,1553.4962,-1675.2714,16.1953);
						SetPlayerFacingAngle(playerid, 95.0636);
						PlayerInfo[playerid][pJailTime] = 0;
						PlayerInfo[playerid][pJailed] = 0;
						PlayerInfo[playerid][pWantedLevel] = 0;
						SCM(playerid, COLOR_YELLOW, "Вы свободны");
						SCM(playerid, COLOR_GREEN, "Вы заплатили свой долг обществу");
						WantedLevel[playerid] = 0;
						WantedTime[playerid] = 0;
						WantedPoints[playerid] = 0;
						SetPlayerWantedLevel(playerid, 0);
						SetPlayerVirtualWorld(playerid, 0);
						return true;
					}
					else
					{
						SCM(playerid, COLOR_GREY, "У вас недостаточно денег!");
						return true;
					}
				}
			}
			return true;
		}
		else
		{
			SCM(playerid, COLOR_GREY, "Вам ни кто не предлагал услуги адвоката!");
			return true;
		}
	}
Это ужасный код, поэтому я вам предлагаю более оптимизированный.
Для тру скриптеров, мой код тоже не идеален, не нужно критики, спасибо за понимание :)

И так, просто ищете код, который сверху и заменяете на:
PHP:
else if(strcmp(x_job, "free",true) == 0)
	{
		if(FreeOffer[playerid] == 999 || !IsPlayerConnected( FreeOffer[playerid])) return true;
		if(PlayerInfo[playerid][pCash] < FreePrice[playerid]) return SCM(playerid, COLOR_RED, "У вас недостаточно денег");
		format(string, 128, "Вы заплатили адвокату %s %d вирт.",PlayerInfo[FreeOffer[playerid]][pName], FreePrice[playerid]);
		SCM(playerid, 0x6495EDFF, string);
		format(string, 128, "Вы выпустили %s из тюрьмы за %d вирт.",Name(playerid),FreePrice[playerid]);
		SCM(FreeOffer[playerid], 0x6495EDFF, string);
		if(SposobOffer[playerid] == 0) PlayerInfo[playerid][pCash] -= FreePrice[playerid];
		if(SposobOffer[playerid] == 1) PlayerInfo[playerid][pBank] -= FreePrice[playerid];
		PlayerInfo[FreeOffer[playerid]][pCash]+= FreePrice[playerid];
		FreeOffer[playerid] = 999;
		FreePrice[playerid] = 0;
		SposobOffer[playerid] = 0;
		SetPlayerInterior(playerid, 0);
		SetPlayerPos(playerid,1553.4962,-1675.2714,16.1953);
		SetPlayerFacingAngle(playerid, 95.0636);
		PlayerInfo[playerid][pJailTime] = 0;
		PlayerInfo[playerid][pJailed] = 0;
		PlayerInfo[playerid][pWantedLevel] = 0;
		SCM(playerid, COLOR_YELLOW, "Вы свободны");
		SCM(playerid, COLOR_GREEN, "Вы заплатили свой долг обществу");
		WantedLevel[playerid] = 0;
		WantedTime[playerid] = 0;
		WantedPoints[playerid] = 0;
		SetPlayerWantedLevel(playerid, 0);
		SetPlayerVirtualWorld(playerid, 0);
		return true;
	}
Подведём итог: Старый код занимает 3487 сиволов и 87 строк, а мой 1520 символов и 29 строк. Получается мы уменьшили код в 3 раза :)

Буду благодарен за спасибку ^^
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу