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

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

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

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

Система "Helpers" [RLS]

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

VladZemnickiy

Компетентный
Здраствуйте ув. Пользователи Pawno-Info!
В этой теме, я выкладываю Мануал "Система Helpers в Mode "RLS"​
И так, мы начнём.​

Ко всем forward'am добавляем:
PHP:
forward SendHelperMessage(color, string[]);
Ко всем New добавляем:
PHP:
new HelperDuty[MAX_PLAYERS];
В enum pInfo добавляем:
PHP:
pHelper,
В public OnPlayerConnect(playerid) или в stock ClearConnectAccount(playerid) добавляем:
PHP:
PlayerInfo[playerid][pHelper] = 0;
В public OnPlayerStateChange(playerid, newstate, oldstate) добавляем:
PHP:
HelperDuty[playerid] = 0;
Находим public OnPlayerRegister(playerid, password[]) и после:
PHP:
ini_setInteger(File,"AdminLevel",PlayerInfo[playerid][pAdmin]);
Добавляем:
PHP:
ini_setInteger(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
Находим public OnPlayerUpdate_GF(playerid) и после:
PHP:
iniSetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]);
Добавляем:
PHP:
iniSetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
Находим public OnPlayerUpdate_GF(playerid) и после:
PHP:
iniGetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]);
Добавляем:
PHP:
iniGetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
В конец Moda добавляем Public:
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 добавляем Команды:

1. Команда для того, что бы начать работу Helperu! /hduty
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), "(( [H] Хелпер %s ждёт ваши вопросы (/vopros) ))", sendername);
                      BroadCast(COLOR_OOC,string);
                      return 1;
                  }
                  else if(HelperDuty[playerid] == 1)
                  {
                      HelperDuty[playerid] = 0;
                      GetPlayerName(playerid, sendername, sizeof(sendername));
                      format(string, sizeof(string), "(( [H] Хелпер %s не активен. ))", sendername);
                      BroadCast(COLOR_OOC,string);
                      return 1;
                  }
              }
              else
              {
                  SendClientMessage(playerid, COLOR_GREY, "У вас нет прав на использование данной команды.");
                  return 1;
              }
          }
    }
2. Команда для того, что бы гражданину задовать вопрос! /vopros
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))
            if(HelperDuty[playerid] == 1)
            {
                format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
                SendHelperMessage(0x10F441AA, string);
            }
            SendClientMessage(playerid, COLOR_YELLOW, "Ваш вопрос отправлен Хелперам!");
            format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result));
            SendClientMessage(playerid, COLOR_LIGHTRED, string);
        }
    }
3. Команда для того, что бы Хелперам отвечать на вопросы! /otvet
PHP:
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), "[HELPER] %s: %s", sendername, (result));
                                SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
                                format(string, sizeof(string), "*[H] %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, "Вы не авторизированы.");
            }
     }
4. Команда для того, что бы общаться Хелперам! /helper > /hc
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_GRAD2, "{ffffff}Введите: (/hc) [Текст в чат]");
                    return 1;
                }
                format(string, sizeof(string), "* %d Хелпер %s: %s", PlayerInfo[playerid][pHelper], sendername, result);
                SendHelperMessage(COLOR_GREEN, string);
                printf("Helper %s: %s", sendername, result);
            }
        }
    }
5. Команда для того, что бы Администрация могла выдавать Хелперки! /makehelper
PHP:
  if(strcmp(cmd, "/makehelper", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /makehelper [id] [level 1-3]");
                return 1;
            }
            new para1;
            new level;
            para1 = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            level = strval(tmp);
            if(PlayerInfo[playerid][pHelper] == 3 || PlayerInfo[playerid][pAdmin] >= 5)
            {
                if(IsPlayerConnected(para1))
                {
                    if(para1 != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(para1, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        PlayerInfo[para1][pHelper] = level;
                        if(level < 0 || level > 3) return SendClientMessage(playerid, COLOR_GREY, "Не меньше 0 и не больше 3.");
                        format(string, sizeof(string), "Вы были назначены Хелпером %d уровня. Администратором %s.", level, sendername);
                        SendClientMessage(para1, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "Вы назначили %s Хелпером %d уровня.", giveplayer,level);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, "{ffffff}Вы неуполнамочины использовать эту команду");
            }
        }
    }
6. Команда для того, что бы посмотреть сколько Online Хелперов! /helpers
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[20];
					if(PlayerInfo[i][pHelper] == 1) { drank = "Мл.Хелпер"; }
					else if(PlayerInfo[i][pHelper] == 2) { drank = "Хелпер"; }
					else if(PlayerInfo[i][pHelper] == 3) { drank = "Гл.Хелпер"; }

					GetPlayerName(i, sendername, sizeof(sendername));
					format(string, 256, "%s | ID:%d | %s",sendername,i,drank);
					SendClientMessage(playerid, COLOR_WHITE, string);
				}
			}
		}
	}
На этом наш урок закончен​
Всем спасибо за внимание! Кому понравилась ставим "+".
С вами был VladZemnickiy. Skyper: vlad-pawno-info​

Сдесь были ошибки. Мне помоги найти их.
Теперь я всё исправил и всё работает отлично!​

 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу