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

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

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

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

Система Хелперов

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

Sanek_Matvienko

Компетентный
Всего уровней хелпера - 3.
1. Что бы задать вопрос хелперам, введите /vopros [текст] - если хелпер не на дежурстве, он не увидет что написал кто-то вопрос.

2. Что бы хелперу ответить нужно ввести /ans [id/nick] [текст] - если хелпер не на дежурстве то хелпер не сможет ответить игроку.

3. Что бы написать в чат хелперов, введите /hc [текст].

4. Что бы выйти на дежурство, введите /hduty, что бы покинуть дежурство, снова введите /hduty.

5. Что бы выдать хелперку игроку, введите /makehelper [id/nick] [уровень хелперки 1-3] - 0 - снять. Эта команда доступна только администратору 1338 уровня и хелперу 3 уровня.

Начинаем делать
1. Для начала найдем 'pInfo'. И вставим туда.. Желательно после, ниже pAdmin,
PHP:
pHelper,
2. А теперь найдем 'new'. И вставим туда.. - Просто рядом со всеми new -вами вставляйте этот.
PHP:
new HelperDuty[MAX_PLAYERS];
3. А теперь найдем 'public OnPlayerConnect(playerid)'. И вставим туда.. Желательно после, ниже PlayerInfo[playerid][pAdmin] = 0;
PHP:
PlayerInfo[playerid][pHelper] = 0;
4. Теперь снова найдем 'public OnPlayerConnect(playerid)'. И вставим туда.. - Найдите что-то похожее в этом паблике на HelperDuty[playerid] = 0; - и вставьте рядом с ними это.
PHP:
HelperDuty[playerid] = 0;
5. А теперь найдем 'public OnPlayerRegister(playerid, password[])'. И вставим туда.. Желательно после, ниже iniSetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]);
PHP:
iniSetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
6. А теперь найдем 'public OnPlayerUpdate_GF(playerid)'. И вставим туда.. Желательно после, ниже iniSetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]);
PHP:
iniSetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
7. А теперь найдем 'public OnPlayerLogin(playerid,password[])'. И вставим туда.. Желательно после, ниже iniGetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]);
PHP:
iniGetInt(File,"HelperLevel",PlayerInfo[playerid][pHelper]);
8. Теперь снова найдем 'public OnPlayerLogin(playerid,password[])'. Найдите там что-то вроде.. "Вы зашли администратором, таким-то уровня.", нашли? хорошо. Ниже "примерно" этого:
PHP:
if (PlayerInfo[playerid][pAdmin] > 0) 
    { 
        format(string2, sizeof(string2), "Вы вошли администратором, %d уровня.",PlayerInfo[playerid][pAdmin]); 
        SendClientMessage(playerid, COLOR_WHITE,string2); 
    }
Вставьте это:
PHP:
if (PlayerInfo[playerid][pHelper] >= 1) 
    { 
        format(string2, sizeof(string2), "Вы вошли хелпером, %d уровня.",PlayerInfo[playerid][pHelper]); 
        SendClientMessage(playerid, COLOR_WHITE,string2); 
    }
9. А теперь найдем 'forward'. И вставим туда.. - Просто рядом со всеми forward -дами вставляйте этот.
PHP:
forward SendHelperMessage(color, string[]);
10. И теперь самом конце мода вставим этот паблик.
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); 
            } 
        } 
    }
}
Ну что-же, структуру мы приготовили. А теперь о командах.

1. Команда для просмотра "Помощников онлайн" и "Помощников онлайн на дежурстве". - Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])
PHP:
  if (strcmp(cmd, "/helpers", true) == 0) 
    { 
        if(IsPlayerConnected(playerid)) 
        { 
            for(new i = 0; i < MAX_PLAYERS; i++) 
            { 
                if(IsPlayerConnected(i)) 
                { 
                    if(PlayerInfo[i][pHelper] >= 1) 
                    { 
                        GetPlayerName(i, sendername, sizeof(sendername)); 
                        format(string, 256, "* Помощники онлайн:"); 
                        SendClientMessage(playerid, COLOR_LIGHTRED, string); 
                        format(string, 256, "* %s[id: %d]. Hlvl: %d",sendername, i, PlayerInfo[i][pHelper]); 
                        SendClientMessage(playerid, COLOR_YELLOW, string); 
                    } 
                    if(PlayerInfo[i][pHelper] >= 1 && HelperDuty[playerid] == 1) 
                    { 
                        GetPlayerName(i, sendername, sizeof(sendername)); 
                        format(string, 256, "* Помощники онлайн на дежурстве:"); 
                        SendClientMessage(playerid, COLOR_LIGHTRED, string); 
                        format(string, 256, "* %s[id: %d]. Hlvl: %d",sendername, i, PlayerInfo[i][pHelper]); 
                        SendClientMessage(playerid, COLOR_YELLOW, string); 
                    } 
                     
                } 
            } 
        } 
        return 1; 
    }
2. Команда для выхода на дежурство и окончание дежурства. - Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])
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 ждет ваши вопросы! (/вопрос) ))", 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; 
              } 
          } 
         return 1; 
     }
3. Команда для подачи вопроса Хелперам. - Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])
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(0x10F441AA, string); 
            } 
            SendClientMessage(playerid, COLOR_YELLOW, "Ваш вопрос отправлен хелперам!"); 
            format(string, sizeof(string), "Вопрос от %s[%d]: %s", sendername, playerid, (result)); 
             SendClientMessage(playerid, COLOR_LIGHTRED, string); 
        } 
          return 1; 
    }
4. Команда для ответа на вопрос. - Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])
PHP:
      if(strcmp(cmd, "/ans", true) == 0) 
        { 
            if(IsPlayerConnected(playerid)) 
            { 
                if(PlayerInfo[playerid][pHelper] >= 1) 
                { 
                    tmp = strtok(cmdtext, idx); 
                    if(!strlen(tmp)) 
                    { 
                        SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /ans [PlayerID] [text]"); 
                        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}Введите: /ans [PlayerID] [text]"); 
                                    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, "Вы не авторизированы."); 
            } 
            return 1; 
        }
5. Команда для того, что бы писать в чат хелперов. - Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])
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) [helpers chat]"); 
                    return 1; 
                } 
                format(string, sizeof(string), "* %d Хелпер %s: %s", PlayerInfo[playerid][pHelper], sendername, result); 
                SendHelperMessage(COLOR_GREEN, string); 
                printf("Helper %s: %s", sendername, result); 
            } 
        } 
        return 1; 
    }
6. Команда для того, что бы дать/изменить уровень хелпера игрока. - Вставляем в паблик public OnPlayerCommandText(playerid, cmdtext[])
PHP:
  if(strcmp(cmd, "/makehelper", true) == 0) 
    { 
        if(IsPlayerConnected(playerid)) 
        { 
            tmp = strtok(cmdtext, idx); 
            if(!strlen(tmp)) 
            { 
                SendClientMessage(playerid, COLOR_GRAD2, "{ffffff}Введите: /makehelper [playerid] [level(1-3, 0-убрать хеллперку]"); 
                return 1; 
            } 
            new para1; 
            new level; 
            para1 = ReturnUser(tmp); 
            tmp = strtok(cmdtext, idx); 
            level = strval(tmp); 
            if(PlayerInfo[playerid][pHelper] == 3 || PlayerInfo[playerid][pAdmin] >= 1338) 
            { 
                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), "You have been promoted to a level %d helper by %s.", level, sendername); 
                        SendClientMessage(para1, COLOR_LIGHTBLUE, string); 
                        format(string, sizeof(string), "You are promoted %s to helper level %d.", giveplayer,level); 
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string); 
                    } 
                } 
            } 
            else 
            { 
                SendClientMessage(playerid, COLOR_GRAD1, "{ffffff}Вам не доступна эта функция"); 
            } 
        } 
        return 1; 
    }
На этом всё.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу