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

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    116
    Репутация:
    10 ±

    Как правильно форматировать строку

    1)

    Код:
    new string[415+MAX_PLAYER_NAME];
    format(string, sizeof(string), DEFINE_TEXT, pInfo[playerid][pName]);
    SPD(playerid, dRegister, DSI, "Название диалога", string, "Кнопка 1", "Кнопка 2");
    Есть такой код, но я подумал что записывать большой текст диалога в один стринг будет слишком, и хочу записывать туда только имя игрока а остальной текст выводить дефайном. Так вот как это сделать? Хочу вот так:

    Код:
    new name[MAX_PLAYER_NAME];
    format(name, sizeof(name), name, pInfo[playerid][pName]);
    SPD(playerid, 1, DSI, "Название диалога", DEFINE_TEXT, "Кнопка 1", "Кнопка 2");
    Куда надо вставлять стринг?
    2)

    В уроки от Деймоса есть такой код который присваивает диалогам действия. Не могу никак разобраться какая функция что выполняет. И еще проблемы с установкой стрингов (Имя игрока) в некоторые его места.
    Код:
    switch(dialogid) 
    { 
        case dRegister: 
        { 
            if(!response) 
            { 
                ShowPlayerDialog(playerid, dKickMessage, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Отказ от регистрации.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", ""); 
                return Kick(playerid); - (Тут когда меняю на своё, что бы выводилось просто окно с инфой то оно не выводится и диалог обновляется с ошибкой нельзя продолжить регистрация не вводя пароль)
            } 
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Вы не можете продолжить регистрацию не введя пароль!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).", "Регистрация", "Выход"); 
            else if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Пароль слишком короткий!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).", "Регистрация", "Выход"); - (Сюда не понимаю как вставить стринг что бы выводило имя игрока вместе с текстом из дейфайна)
            else if(strlen(inputtext) > 30) return ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Пароль слишком длинный!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).", "Регистрация", "Выход"); - (Сюда не понимаю как вставить стринг что бы выводило имя игрока вместе с текстом из дейфайна)
            for(new i = strlen(inputtext)-1; i != -1; i--) 
            { 
                switch(inputtext[i]) 
                { 
                    case '0'..'9', 'а'..'я', 'a'..'z', 'А'..'Я', 'A'..'Z': continue; 
                    default: return ShowPlayerDialog(playerid, dRegister, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "{FF0000}Ошибка: {FFFFFF}Пароль содержит запрещённые символы!\nВведите пароль для регистрации нового аккаунта:\n{C0C0C0}Примечание:\n{666666}- Пароль чувствителен к регистру.\n- Пароль должен содержать от 4 до 30 символов.\n- Пароль может содержать латинские/кириллические символы и цифры (aA-zZ, аА-яЯ, 0-9).", "Регистрация", "Выход"); (Сюда не понимаю как вставить стринг что бы выводило имя игрока вместе с текстом из дейфайна)
                } 
            } 
            pInfo[playerid][pPassword][0] = EOS; 
            strins(pInfo[playerid][pPassword], inputtext, 0); 
            CreateNewAccount(playerid, pInfo[playerid][pPassword]); 
            return 1; 
        } 
        case dLogin: 
        { 
            if(!response) 
            { 
                ShowPlayerDialog(playerid, dKickMessage, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Отказ от авторизации.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", ""); 
                return Kick(playerid); - (Тут когда меняю на своё, что бы выводилось просто окно с инфой то оно не выводится и диалог обновляется с ошибкой нельзя продолжить авторизацию не вводя пароль)
            } 
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы не можете продолжить авторизацию не введя пароль!\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход"); 
            for(new i = strlen(inputtext)-1; i != -1; i--) 
            { 
                switch(inputtext[i]) 
                { 
                    case '0'..'9', 'а'..'я', 'a'..'z', 'А'..'Я', 'A'..'Z': continue; 
                    default: return ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Введённый пароль содержит запрещённые символы!\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход"); 
                } 
            } 
            if(!strcmp(pInfo[playerid][pPassword], inputtext)) 
            { 
                new query_string[52+MAX_PLAYER_NAME]; 
                format(query_string, sizeof(query_string), "SELECT * FROM `accounts` WHERE `player_name` = '%s'", pInfo[playerid][pName]); 
                mysql_function_query(mysql_connect_id, query_string, true, "UploadPlayerAccount","i", playerid); 
            } 
            else 
            { 
                switch(GetPVarInt(playerid, "WrongPassword"))
    (И всё что ниже тоже не понимаю как надо правильно создавать стринг + вывод текста из дефайна)
                { 
                    case 0: ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталось 3 попытки.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход"); 
                    case 1: ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталось 2 попытки.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход"); 
                    case 2: ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталось 1 попытка.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход"); 
                    case 3: ShowPlayerDialog(playerid, dLogin, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталась последняя попытка, после чего Вас кикнет.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход"); 
                    default: 
                    { 
                        ShowPlayerDialog(playerid, dKickMessage, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Превышен лимит попыток на ввод пароля.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", ""); 
                        return Kick(playerid); 
                    } 
                } 
                SetPVarInt(playerid, "WrongPassword", GetPVarInt(playerid, "WrongPassword")+1); 
            } 
            return 1; 
        } 
    }

  2. #2

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

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    116
    Репутация:
    10 ±
    Иван, а если мне надо вывести диалог в случае с strcat?

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

    Статус
    Оффлайн
    Регистрация
    25.11.2015
    Сообщений
    8
    Репутация:
    1 ±
    Цитата Сообщение от newbie01 Посмотреть сообщение
    Иван, а если мне надо вывести диалог в случае с strcat?
    PHP код:
    new
        
    str[size];
    str "Текст";
    strcat(str"Текст");
    strcat(str"Текст"); 
    Как-то так.

  5. #5
    Аватар для newbie01
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    116
    Репутация:
    10 ±
    Цитата Сообщение от Excel_Smit. Посмотреть сообщение
    PHP код:
    new
        
    str[size];
    str "Текст";
    strcat(str"Текст");
    strcat(str"Текст"); 
    Как-то так.
    Всё ровно ничего не понял, можешь объяснить принцип действия? Смотри у меня есть дефайн с текстом, далее я хочу вывести эту информацию с текстом в диалог и плюс ко всему еще нужно создать стринг в котором я получаю имя игрока и его тоже вывести в диалог. Как это сделать?
    Последний раз редактировалось newbie01; 15.03.2016 в 15:06. Причина: Исправил вопрос.

 

 

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

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

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

Ваши права

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