Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Camelot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±

    При показе диалога. (Проверка)

    Пишу смену ника.
    Структура такова:
    Администратор включает возможность смены ника.
    Игрок создаёт заявку с новым ником. (Ник записывается в массив)
    Администратор меняет ник игроку с помощью команды: /setname ID

    А теперь к делу. Если администратор пропишет /setname без "ID", то ему покажется диалог со всеми игроками, кто подал заявку.
    Проблема в том, что я не понимаю как написать проверку на то, если заявок нет.

    PHP код:
    CMD:setname(playeridparams[])
    {
        if(
    PInfo[playerid][pAdmin] < 3) return true;
        else if(
    sscanf(params"i"params[0]))
        {
            static const 
    fmt[] = "%s%s(%d) сменить на: %s";
            new 
    info[sizeof(fmt) - + (sizeof(fmt)*MAX_PLAYERS) - MAX_PLAYER_NAME MAX_PLAYER_NAME];
            foreach(
    Playeri)
            {
                if(
    NewName[i] != 0format(infosizeof(info), fmtinfoNick(i), iNewName[i]);           
            }
            
    //Если заявок нет, то выводим диалог Dialog(playerid, 1938, 0, "Заявки на смену ника", "Заявок нет", "Закрыть", "");

            
    Dialog(playerid19380"Заявки на смену ника"info"Далее""Закрыть");
            return 
    Message(playeridCOLOR_GREEN,"(Используйте): {669966}/setname [ID Player].");
        }
    //Остальной код


  2. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Примерно как-то так это всё будет выглядеть ( не против если немного привёл код в небольшой порядок? )
    PHP код:
    CMD:setname(playeridparams[])
    {
        if(
    PInfo[playerid][pAdmin] < 3)
            return 
    1;

        
    extract params -> new playertargetid; else
        {
            static const
                
    fmt_str[] = "%s%s (%d) сменить на: %s";

            new
                
    str[sizeof(fmt_str) - + (-MAX_PLAYER_NAME) + (-3) + MAX_PLAYER_NAME)];

            foreach(
    Playeri)
            {
                if(
    NewName[i][0] != '\0')
                    
    format(strsizeof(str), fmt_strstrNick(i), iNewName[i]);
            }

            
    Dialog(playerid1938DIALOG_STYLE_MSGBOX"Заявки на смену ника", (str[0] == '\0') ? ("Заявок нет") : ("Далее"), "Закрыть""");
        }
        else
        {
            if(
    == IsPlayerConnected(targetid))
                return 
    SendClientMessage(playerid, -1"Такого игрока нет на сервере.");
            if(
    NewName[targetid][0] == '\0')
                return 
    SendClientMessage(playerid, -1"Игрок не подавал заявку на смени никнейма.");

            
    SetPlayerName(targetidNewName[targetid]);
            
    // сменили ник игроку, ID которого указал администратор
            
            
    NewName[targetid][0] = '\0';
            
    // даём понять, что игрок уже сменил никнейм, либо не подавал заявку на смену никнейма
        
    }

        return 
    1;

    Последний раз редактировалось L0ndl3m; 21.08.2014 в 22:10.

  3. #3
    Аватар для Camelot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    Спасибо за проверку, но я не понимаю, чем лучше этот код... :D

  4. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Camelot Посмотреть сообщение
    Спасибо за проверку, но я не понимаю, чем лучше этот код... :D
    Оптимизированнее... Ну и готовый код для того, что ты попросил.

  5. Пользователь сказал cпасибо:
    Camelot (21.08.2014)
  6. #5
    Аватар для Camelot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    Меня заинтересовала Ваша структура построения кода.
    Можете скинуть пару источников на подобные темы написания? (Если, конечно, таковы имеются)
    Буду признателен.

  7. #6
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Camelot Посмотреть сообщение
    Меня заинтересовала Ваша структура построения кода.
    Можете скинуть пару источников на подобные темы написания? (Если, конечно, таковы имеются)
    Буду признателен.
    Что именно заинтересовало? Не совсем понял суть вопроса.

  8. #7
    Аватар для Camelot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    К примеру: "extract params -> new player: targetid; else".

  9. #8
    Аватар для Camelot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    Всё, разобрался. Не трудно и приятно.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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