Question

Привет, как сделать диалог который нужно будет вести ид игрока, а потом появился другой диалог туда текст и срабатывала команда /sms [id] [text]
 

Share this post


Link to post

6 answers to this question

  • 0

В начало мода:

#define sms_dlg_1 3000
#define sms_dlg_2 3001

Активация диалогов:

ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите ID игрока""Ввод""Отмена");

В OnDialogResponce:
 

Спойлер



    if(dialogid == sms_dlg_1) {
        if !response *then return false;
        if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите ID игрока""Ввод""Отмена");
        for(new i = 0; i < strlen(inputtext); i++) {
            switch(inputtext[i]) {
                case '0'..'9'continue;
                defaultreturn ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{990F0F}Был введён неверный ID игрока\n{ffffff}Введите ID игрока""Ввод""Отмена");
            }
        }
        SetPVarInt(playerid, "dlg_sms_id", strval(inputtext));
        ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Отправить""Отмена");
    } else if(dialogid == sms_dlg_2) {
        if !response *then return false;
        if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Ввод""Отмена");
        if strlen(inputtext) > 70 *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{990f0f}Длина сообщения не может быть более 70-и символов\n{FFFFFF}Введите сообщение""Ввод""Отмена");
        new t_cmd[82];
        //Если у вас стоит Pawn.CMD:
        //format(t_cmd, 82, "%d %d", GetPVarInt(playerid, "dlg_sms_id"); callcmd::sms(playerid, t_cmd);

        
        //Если у вас OnPlayerCommandText:
        //format(t_cmd, 82, "/sms %d %d", GetPVarInt(playerid, "dlg_sms_id"); OnPlayerCommandText(playerid, t_cmd);
        DeletePVar(playerid, "dlg_sms_id");
    }


 

 

Share this post


Link to post
  • 0
8 минут назад, Sleash сказал:

В начало мода:


#define sms_dlg_1 3000
#define sms_dlg_2 3001

Активация диалогов:


ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите ID игрока""Ввод""Отмена");

В OnDialogResponce:
 

  открыть спойлер

 



if(dialogid == sms_dlg_1) {
        if !response *then return false;
        if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите ID игрока""Ввод""Отмена");
        for(new i = 0; i < strlen(inputtext); i++) {
            switch(inputtext[i]) {
                case '0'..'9'continue;
                defaultreturn ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{990F0F}Был введён неверный ID игрока\n{ffffff}Введите ID игрока""Ввод""Отмена");
            }
        }
        SetPVarInt(playerid, "dlg_sms_id", strval(inputtext));
        ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Отправить""Отмена");
    } else if(dialogid == sms_dlg_2) {
        if !response *then return false;
        if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Ввод""Отмена");
        if strlen(inputtext) > 70 *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{990f0f}Длина сообщения не может быть более 70-и символов\n{FFFFFF}Введите сообщение""Ввод""Отмена");
        new t_cmd[82];
        //Если у вас стоит Pawn.CMD:
        //format(t_cmd, 82, "%d %d", GetPVarInt(playerid, "dlg_sms_id"); callcmd::sms(playerid, t_cmd);

        
        //Если у вас OnPlayerCommandText:
        //format(t_cmd, 82, "/sms %d %d", GetPVarInt(playerid, "dlg_sms_id"); OnPlayerCommandText(playerid, t_cmd);
        DeletePVar(playerid, "dlg_sms_id");
    }

 

 

 

 

 

братан ошибки выдаёт, а через case как сделать?

Share this post


Link to post
  • 0

вместо
if(dialogid == sms_dlg_1)
case sms_dlg_1:
и анологично со sms_dlg_2

Share this post


Link to post
  • 0
22 минуты назад, Sleash сказал:

вместо
if(dialogid == sms_dlg_1)
case sms_dlg_1:
и анологично со sms_dlg_2

error 001: expected token: ",", but found ";"

на эту строку 

format(t_cmd, 82, "%d %d", GetPVarInt(playerid, "dlg_sms_id"); callcmd::sms(playerid, t_cmd);

разобрался добавив )одну скобку GetPVarInt(playerid, "dlg_sms_id")), Но теперь при вводе ид диалог закрывается

Edited by elishanky

Share this post


Link to post
  • 0

@elishanky Попробуйте такой код:
 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid) {
        case sms_dlg_1: {
            if !response *then return false;
            if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите ID игрока""Ввод""Отмена");
            for(new i = 0; i < strlen(inputtext); i++) {
                switch(inputtext[i]) {
                    case '0'..'9'continue;
                    defaultreturn ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{990F0F}Был введён неверный ID игрока\n{ffffff}Введите ID игрока""Ввод""Отмена");
                }
            }
            SetPVarInt(playerid, "dlg_sms_id", strval(inputtext));
            ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Отправить""Отмена");
        } case sms_dlg_2: {
            if !response *then return false;
            if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Ввод""Отмена");
            if strlen(inputtext) > 70 *then return ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{990f0f}Длина сообщения не может быть более 70-и символов\n{FFFFFF}Введите сообщение""Ввод""Отмена");
            new t_cmd[82];
            format(t_cmd, 82"%d %s", GetPVarInt(playerid, "dlg_sms_id"), inputtext);
            callcmd::sms(playerid, t_cmd);
            DeletePVar(playerid, "dlg_sms_id");
        }
    }
    return 1;
}

 

Edited by Sleash

Share this post


Link to post
  • 0
11 часов назад, Sleash сказал:

@elishanky Попробуйте такой код:
 


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid) {
        case sms_dlg_1: {
            if !response *then return false;
            if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите ID игрока""Ввод""Отмена");
            for(new i = 0; i < strlen(inputtext); i++) {
                switch(inputtext[i]) {
                    case '0'..'9'continue;
                    defaultreturn ShowPlayerDialog(playerid, sms_dlg_1, DIALOG_STYLE_INPUT, "СМС""{990F0F}Был введён неверный ID игрока\n{ffffff}Введите ID игрока""Ввод""Отмена");
                }
            }
            SetPVarInt(playerid, "dlg_sms_id", strval(inputtext));
            ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Отправить""Отмена");
        } case sms_dlg_2: {
            if !response *then return false;
            if !strlen(inputtext) *then return ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{FFFFFF}Введите сообщение""Ввод""Отмена");
            if strlen(inputtext) > 70 *then return ShowPlayerDialog(playerid, sms_dlg_2, DIALOG_STYLE_INPUT, "СМС""{990f0f}Длина сообщения не может быть более 70-и символов\n{FFFFFF}Введите сообщение""Ввод""Отмена");
            new t_cmd[82];
            format(t_cmd, 82"%d %s", GetPVarInt(playerid, "dlg_sms_id"), inputtext);
            callcmd::sms(playerid, t_cmd);
            DeletePVar(playerid, "dlg_sms_id");
        }
    }
    return 1;
}

 

(25944) : error 002: only a single statement (or expression) can follow each "case"
(25944) : error 028: invalid subscript (not an array or too many subscripts): "dialogid"
(25944 -- 25945) : error 001: expected token: "}", but found "case"
(25944 -- 25945) : fatal error 107: too many error messages on one line

Edited by elishanky

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Topowich
      By Topowich
      Недавно начал создавать свой комп сервер,начал потихоньку заменять модели тс и столкнулся с такой проблемой,что не могу понять как менять настройку авто. Подскажите пожалуйста,как это сделать?Мне не принципиально  чтобы настройки были в коде сервера,можно и на файлах если будет хорошо работать