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

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

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

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

Мануал Система хелперов (новое оформление)

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

GoodRedCat

Умник
Добрый день, дорогие друзья. :bt:
Сегодня я бы хотел представить 4-ёх уровневую систему хелперов. Постарался сделать её удобной и красивой.

Приступим:

Ко всем new:
PHP:
new HelperDuty[MAX_PLAYERS];
В enum pInfo:
PHP:
pHelper
Ко всем forward'ам:
PHP:
forward SendHelperMessage(color, string[]);
В public OnPlayerConnect:
PHP:
	HelperDuty[playerid] = 0;
И

PHP:
	PlayerInfo[playerid][pHelper] = 0;
В public OnPlayerRegister:
PHP:
			ini_setInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
В public OnPlayerUpdateRL:
PHP:
				ini_setInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
В public OnPlayerLogin:
PHP:
		ini_getInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
И

PHP:
	if (PlayerInfo[playerid][pHelper] >= 1)
	{
		format(string2, sizeof(string2), "Вы вошли хелпером, %d уровня.",PlayerInfo[playerid][pHelper]);
		SendClientMessage(playerid, COLOR_WHITE,string2);
	}
В конце мода создаём public SendHelperMessage:
PHP:
public SendHelperMessage(color, string[])
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
			if(PlayerInfo[i][pHelper] >= 1)
			{
				SendClientMessage(i, color, string);
			}
		}
	}
}
В public OnPlayerCommandText:

Начало дежурства хелпера:
PHP:
	if(strcmp(cmdtext, "/hduty", true) == 0 || strcmp(cmdtext, "/helperduty", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if(gPlayerLogged[playerid] == 0)
			{
				SendClientMessage(playerid, COLOR_GREY, "Вы не авторизированы!");
				return 1;
			}
			if(PlayerInfo[playerid][pHelper] >= 1)
			{
				if(HelperDuty[playerid] == 0)
				{
					HelperDuty[playerid] = 1;
					GetPlayerName(playerid, sendername, sizeof(sendername));
					format(string, sizeof(string), "{FFFFFF}Вы заступили на дежурство [Уровень: {00b8ff}%d{FFFFFF}]", PlayerInfo[playerid][pHelper]);
					SendClientMessage(playerid, COLOR_WHITE, string);
					return 1;
				}
				else if(HelperDuty[playerid] == 1)
				{
					HelperDuty[playerid] = 0;
					GetPlayerName(playerid, sendername, sizeof(sendername));
					format(string, sizeof(string), "{FFFFFF}Вы ушли с дежурства [Уровень: {00b8ff}%d{FFFFFF}]", PlayerInfo[playerid][pHelper]);
					SendClientMessage(playerid, COLOR_WHITE, string);
					return 1;
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREY, "У вас нет прав на использование данной команды.");
				return 1;
			}
		}
		return 1;
	}
Вопрос/ответ:
PHP:
    if(strcmp(cmd, "/vopros", true) == 0 || strcmp(cmd, "/вопрос", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new length = strlen(cmdtext);
            while ((idx < length) && (cmdtext[idx] <= ' '))
            {
                idx++;
            }
            new offset = idx;
            new result[64];
            while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
            {
                result[idx - offset] = cmdtext[idx];
                idx++;
            }
            result[idx - offset] = EOS;
            if(!strlen(result))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /vopros [text]");
                return 1;
            }
            if(HelperDuty[playerid] == 1)
            {
                format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
                SendHelperMessage(COLOR_YELLOW, string);
            }
            format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
            SendClientMessage(playerid, COLOR_YELLOW, string);
            SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш вопрос отправлен хелперам!");
        }
        return 1;
    }
	if(strcmp(cmd, "/otvet", true) == 0 || strcmp(cmd, "/ответ", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if(PlayerInfo[playerid][pHelper] >= 1)
			{
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /otvet [id] [текст]");
					return 1;
				}
				if(HelperDuty[playerid] == 1)
				{
					giveplayerid = ReturnUser(tmp);
					if (IsPlayerConnected(giveplayerid))
					{
						if(giveplayerid != INVALID_PLAYER_ID)
						{
							GetPlayerName(playerid, sendername, sizeof(sendername));
							GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
							new length = strlen(cmdtext);
							while ((idx < length) && (cmdtext[idx] <= ' '))
							{
								idx++;
							}
							new offset = idx;
							new result[64];
							while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
							{
								result[idx - offset] = cmdtext[idx];
								idx++;
							}
							result[idx - offset] = EOS;
							if(!strlen(result))
							{
								SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /otvet [id] [текст]");
								return 1;
							}
							format(string, sizeof(string), "Ответ от %s: %s", sendername, (result));
							SendClientMessage(giveplayerid, COLOR_YELLOW, string);
							format(string, sizeof(string), "Хелпер %s ответил %s[%d]: %s", sendername, giveplayer, giveplayerid,(result));
							SendHelperMessage(COLOR_LIGHTRED, string);
							return 1;
						}
					}
					else
					{
						format(string, sizeof(string), "%d не в сети", giveplayerid);
						SendClientMessage(playerid, COLOR_GRAD1, string);
					}
				}
				else
				{
					SendClientMessage(playerid, COLOR_WHITE, "Вы не на дежурстве.");
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_WHITE, "Нет прав на использование данной команды.");
			}
		}
		else
		{
			SendClientMessage(playerid, COLOR_WHITE, "Вы не авторизированы.");
		}
		return 1;
	}
Хелпер-чат:
PHP:
	if(strcmp(cmd, "/helper", true) == 0 || strcmp(cmd, "/hc", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if (PlayerInfo[playerid][pHelper] >= 1)
			GetPlayerName(playerid, sendername, sizeof(sendername));
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' '))
			{
				idx++;
			}
			new offset = idx;
			new result[64];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result))
			{
				SendClientMessage(playerid, COLOR_GREEN, "Вводите: /hc [чат]");
				return 1;
			}
            new hrank[32];
            for(new i = 0; i < MAX_PLAYERS; i++)
                if(PlayerInfo[i][pHelper] == 1) { hrank = "{1e90ff}Хелпер новичек{E0FFFF}"; }
			    else if(PlayerInfo[i][pHelper] == 2) { hrank = "{1e90ff}Хелпер{E0FFFF}"; }
			    else if(PlayerInfo[i][pHelper] == 3) { hrank = "{1e90ff}Старший хелпер{E0FFFF}"; }
			    else if(PlayerInfo[i][pHelper] == 4) { hrank = "{1e90ff}Наставник{E0FFFF}"; }
			format(string, sizeof(string), "%s %s: %s", hrank, sendername, result);
			SendHelperMessage(COLOR_WHITE, string);
		}
		return 1;
	}
Список хелперов онлайн:
PHP:
	else if (strcmp(cmd, "/helpers", true) == 0)
	{
		SendClientMessage(playerid, COLOR_YELLOW, "Хелперы Online:");
		for(new i = 0; i < MAX_PLAYERS; i++)
		{
			if(IsPlayerConnected(i))
			{
				if(PlayerInfo[i][pHelper] >= 1)
				{
					new drank[32];
					if(PlayerInfo[i][pHelper] == 1) { drank = "lvl 1"; }
					else if(PlayerInfo[i][pHelper] == 2) { drank = "lvl 2"; }
					else if(PlayerInfo[i][pHelper] == 3) { drank = "lvl 3"; }
					else if(PlayerInfo[i][pHelper] == 4) { drank = "lvl 4"; }

					GetPlayerName(i, sendername, sizeof(sendername));
					format(string, 256, "%s | ID:%d | %s",sendername,i,drank);
					SendClientMessage(playerid, COLOR_WHITE, string);
				}
			}
		}
		return 1;
	}
Большое спасибо за внимание! :dh:

Моя первая тема, постарался всё объяснить и красиво оформить.
Если возникнут вопросы, пишите в комментариях, постараюсь всем ответить.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу