Закрыть Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Тема: Пример админ авторизации с помощью foreach (y_iterate)

Показано с 1 по 3 из 3

  1. #1
    Зарегистрированый

    Аватар для PawnoLabs

    Статус: Оффлайн
    Регистрация:04.05.2018
    Сообщений:29
    Репутация:2 [+/-] 

    Пример админ авторизации с помощью foreach (y_iterate)

    Привет, дорогой пользователь форума Pawno Info.
    Хотим познакомить тебя с полезной библиотекой под названием foreach.
    foreach - это библиотека предоставляющая набор функций для создания итераторов.

    1.1.Установка
    Библиотека foreach идет в наборе библиотек YSI под названием y_iterate. В качестве примера установки, мы будем рассматривать утилиту sampctl, которую мы успешно используем в нашей команде. Для установки комплекса библиотек YSI достаточно выполнить команду:
    PHP код:
    sampctl package install pawn-lang/YSI-Includes 
    Запрошенные библиотеки будут успешно загружены и добавлены в ваш проект за считанные минуты, для подключения y_iterate (прим. ред foreach) в ваш игровой режим необходимо использовать обычную инструкцию include.
    PHP код:
    #include <YSI\y_iterate> 
    Таким образом необходимая библиотека под названием foreach успешно добавлена в ваш игровой режим для дальнейшего её использования в вашем проекте.

    2.1.Создание итератора
    В качестве примера использования итераторов, мы напишем с вами не большую систему выхода администраторов на дежурство. И так, для инициализации итератора, нам необходимо создать переменную с тегом Iterator, в нашем случае это будет переменная под названием AdminDuty:
    PHP код:
    new Iterator:AdminDuty<MAX_PLAYERS>; 
    Таким образом, мы создали переменную под итератор AdminDuty с количеством элементов равному MAX_PLAYERS.

    2.2.Добавление/удаление значений
    И так, переходим к следующему шагу, это управление списком нашего итератора, будем добавлять и убирать из списка итератора наших администраторов. Для этого мы создадим команду выхода на дежурство под названием /aduty, сначала нам необходимо будет проверить, находится ли уже наш администратор на дежурстве, для этого нам поможет функция Iter_Contains(Iterator, value) - данная функция проверяет наличие значения в списке нашего итератора, например:
    PHP код:
    if (Iter_Contains(AdminDutyplayerid)) {
        
    SendClientMessage(playerid, -1"Вы находитесь на админ-дежурстве."); // В случае, если значение playerid удасться найти в списке
    } else {
        
    SendClientMessage(playerid, -1"Вы не находитесь на админ-дежурстве."); // В случае, если значение playerid не удасться найти в списке

    И так после того, как мы узнали как проверить есть ли в нашем списке указанный администратор, нам необходимо добавить или убрать из нашего списка администратора, который вводит команду /aduty, для этого нам понадобятся такие функции, как Iter_Add(Iterator, value) - добавляет значение в список итератора и Iter_Remove(Iterator, value) - убирает значение из списка итератора, рассмотрим пример с нашей командой:
    PHP код:
    CMD:aduty(playeridparams[])
    {
        if (
    Iter_Contains(AdminDutyplayerid))
        {
            
    Iter_Remove(AdminDutyplayerid);
            
    SendClientMessage(playerid, -1"Вы успешно покинули свое админ-дежурство.");
        }
        else
        {
            
    Iter_Add(AdminDutyplayerid);
            
    SendClientMessage(playerid, -1"Вы успешно зашли на свое админ-дежурство.");
        }
        return 
    1;

    2.3.Перебор элементов из списка
    Вот мы и подошли к заключительно части нашего мануала, мы уже узнали как добавить и убрать игрока администратора в наш список, узнали как проверить находится ли администратор в нашем списке, в этой части мы узнаем как осуществить перебор нашего списка и отправить всем администраторам из нашего списка сообщение. Для этого нам поможет конструкция foreach(variable : iterator), которую мы разберем на примере чата администраторов:
    PHP код:
    CMD:achat(playeridparams[])
    {
        if (
    isnull(params))
            return 
    SendClientMessage(playerid, -1"Используйте: /achat [сообщение]");

        new 
    str[144];
        
    format(strsizeof(str), "%s (%d): %s"ReturnPlayerName(playerid), playeridparams);

        foreach (new 
    AdminDuty) {
            
    SendClientMessage(i, -1str);
        }
        return 
    1;

    * Полный код мануала можно найти в специальном репозитории на GitHub.
    ** Данный мануал является пробной темой, если она будет интереса, мы продолжим выпускать уроки на тему YSI, foreach, sampctl и др.


    Так же, мы не написали о плюсах и минусах использования foreach, о ситуациях в которых его стоит использовать и т.д. поэтому скорее всего мы напишем более подробный урок, с рассмотрением всем функционалом, когда придумаем, как это лучше сделать, а пока вы можете почитать более подробную информацию о foreach и технических особенностях в теме на официальном форуме мультиплеера.
    Последний раз редактировалось PawnoLabs; 12.07.2018 в 11:20.
  2. 1 пользователь сказал cпасибо PawnoLabs за это полезное сообщение:

    kondrik228 (12.07.2018)

  3. #2
    Заблокирован

    Аватар для Velaso

    Статус: Оффлайн
    Регистрация:29.04.2018
    Адрес:ZONE 51
    Сообщений:114
    Репутация:12 [+/-] 
    Молодец,обьяснил хорошо
  4. #3
    Пользователь

    Аватар для kondrik228

    Статус: Оффлайн
    Регистрация:06.08.2017
    Сообщений:184
    Репутация:8 [+/-] 
    + заслужил, молодец.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения