Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 19
  1. #1
    Аватар для Mike_World
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±

    Как использовать диалог в коммандах

    Приветствую всех! Сел писать команду, что то типо "РП ресурсов". Вообщем смысл такой: вводим команду /test id, появилось окно. Выбрали там "Выдать деньги", нажали далее. Появилось окошко где надо указать кол-во, жмем далее, и там сумма должна выдаться игроку. Но встретился с проблемой, я не умею с диалогами работать, именно как их вызывать именно для команды. Если можно подробно про это, буду благодарен.

    Вот сама команда
    PHP код:
    CMD:test(playeridparams[])
    {
        
    SPD(playerid40DSL"РП ресурсы""[1]Выдать деньги""Далее""Отмена");
        return 
    1;

    Вот case
    PHP код:
    case 30:
            {
                if(
    response
                { 
                    if(
    sscanf(params"d"params[1]) return SPD(playerid41DSI"РП ресурсы""Введите кол-во""Выдать""Отмена");
                    
    GivePlayerMoney(params[0],params[1]);
                }
                else 
    SPD(playerid40DSL"РП ресурсы""[1]Выдать деньги""Далее""Отмена");
            }*/ 
    Принцип работы такой, после ввода /test id, мы уже как бы указываем на кого хотим применить то или иное действие, потом выбираем что хотим сделать, т.е выдать деньги. Может что то не понятно сформулировал), по ходу разберемся =)

    Пробовал эту кашу компилировать, вышло вот что
    PHP код:
    (fatal error 107too many error messages on one line), (error 029invalid expressionassumed zeroerror 001expected token";"but found "]"), (warning предупреждениеwarning 215expression has no effect), error 017undefined symbol "params" 
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

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

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Для начала один очень дельный совет.
    Пиши стандартным текстом на форуме, своими украшательствами только все портишь..
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    PHP код:
    CMD:test(playeridparams[])
    {
        new 
    giveplayerid;
        if(
    sscanf(params"d"giveplayerid)) return SendClientMessage(playerid, -1"Введите: /test [id игрока].");
        if(!
    IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, -1"Игрок не в сети.");
        
    ShowPlayerDialog(playerid40DIALOG_STYLE_LIST"RP ресурсы""1. Выдать деньги""Выбрать""Закрыть");
        
    SetPVarInt(playerid"id_when_cmd_test"giveplayerid);
        
    // записываем в pVar ID игрока, которому хотим что-либо выдать.
        
    return 1;

    OnDialogResponse:
    PHP код:
        case 40:
        {
          if(
    response)
          {
            switch(
    listitem)
            {
              case 
    0ShowPlayerDialog(playerid41DIALOG_STYLE_INPUT"RP ресурсы""Введите кол-во:""Выдать""Закрыть");
              
    // скорее всего у тебя ещё будут какие-либо ресурсы, раз ты начал перечисление в диалоге, если нет, то switch убираем.
            
    }
          }
          else return 
    DeletePVar(playerid"id_when_cmd_test");;
        }
        case 
    41:
        {
          if(
    response)
          {
            new 
    id GetPVarInt(playerid"id_when_cmd_test");
            if(!
    strval(inputtext))
            {
               
    ShowPlayerDialog(playerid41DIALOG_STYLE_INPUT"RP ресурсы""Введите кол-во:""Выдать""Закрыть");
               return 
    SendClientMessage(playerid, -1"Вы ничего не ввели или ввели '0'.");
            }
            
    GivePlayerMoney(idstrval(inputtext));
            
    DeletePVar(playerid"id_when_cmd_test");
          }
          else return 
    DeletePVar(playerid"id_when_cmd_test");
        } 
    UPD: Обновил пост.
    Последний раз редактировалось Wise; 25.12.2016 в 13:38.
    Pawn - странный предмет. Вроде понимаешь, а вроде бы нет.

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

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    PHP код:
    CMD:test(playeridparams[])
    {
        new 
    giveplayerid;
        if(
    sscanf(params"d"giveplayerid)) return SendClientMessage(playerid, -1"Введите: /test [id игрока].");
        if(!
    IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, -1"Игрок не в сети.");
        
    ShowPlayerDialog(playerid40DIALOG_STYLE_LIST"RP ресурсы""1. Выдать деньги""Выбрать""Закрыть");
        
    SetPVarInt(playerid"id_when_cmd_test"giveplayerid);
        
    // записываем в pVar ID игрока, которому хотим что-либо выдать.
        
    return 1;

    OnDialogResponse:
    PHP код:
        case 40:
        {
          if(
    response)
          {
            switch(
    listitem)
            {
              case 
    0ShowPlayerDialog(playerid41DIALOG_STYLE_INPUT"RP ресурсы""Введите кол-во:""Выдать""Закрыть");
              
    // скорее всего у тебя ещё будут какие-либо ресурсы, раз ты начал перечисление в диалоге, если нет, то switch убираем.
            
    }
          }
          else return 
    DeletePVar(playerid"id_when_cmd_test");;
        }
        case 
    41:
        {
          if(
    response)
          {
            new 
    id GetPVarInt(playerid"id_when_cmd_test");
            if(!
    strval(inputtext))
            {
               
    ShowPlayerDialog(playerid41DIALOG_STYLE_INPUT"RP ресурсы""Введите кол-во:""Выдать""Закрыть");
               return 
    SendClientMessage(playerid, -1"Вы ничего не ввели или ввели '0'.");
            }
            
    GivePlayerMoney(idstrval(inputtext));
            
    DeletePVar(playerid"id_when_cmd_test");
          }
          else return 
    DeletePVar(playerid"id_when_cmd_test");
        } 
    UPD: Обновил пост.
    Можно подробнее про эту строку? Про SetPVarInt не знаю ничего
    PHP код:
    SetPVarInt(playerid"id_when_cmd_test"giveplayerid); 
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    Цитата Сообщение от Mike_World Посмотреть сообщение
    Можно подробнее про эту строку? Про SetPVarInt не знаю ничего
    PHP код:
    SetPVarInt(playerid"id_when_cmd_test"giveplayerid); 
    Временная переменная для хранения данных.
    Тыкни меня.
    Pawn - странный предмет. Вроде понимаешь, а вроде бы нет.

  7. Пользователь сказал cпасибо:
    Mike_World (25.12.2016)
  8. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    Временная переменная для хранения данных.
    Тыкни меня.
    Тогда уж лучше так
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Тогда уж лучше так
    Почему именно pVAR нужно использовать? В этой теме говорят что, pVar работает медленней чем массив.
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    Цитата Сообщение от Mike_World Посмотреть сообщение
    Почему именно pVAR нужно использовать? В этой теме говорят что, pVar работает медленней чем массив.
    Незначительно медленней. Нам не надо долго хранить ID игрока, поэтому лучше использовать в данном случае pVar.
    Pawn - странный предмет. Вроде понимаешь, а вроде бы нет.

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

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±
    Цитата Сообщение от Wise Посмотреть сообщение
    Незначительно медленней. Нам не надо долго хранить ID игрока, поэтому лучше использовать в данном случае pVar.
    Wise, можешь подробно объяснить про SetPvarInt? Не оч понятно если честно, а на английском тоже не тема =)
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

  12. #10
    Аватар для Wise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    37 ±
    Цитата Сообщение от Mike_World Посмотреть сообщение
    Wise, можешь подробно объяснить про SetPvarInt? Не оч понятно если честно, а на английском тоже не тема =)
    PHP код:
    SetPVarInt(playeridvarname[], int_value); 
    playerid - ID игрока, который "запоминает" значение int_value.
    varname[] - название "временной переменной".
    int_value - значение.

    PHP код:
    SetPVarInt(playerid"id_when_cmd_test"giveplayerid); 
    В данном случае мы записали для игрока, который ввёл команду - ID игрока, которому мы собираемся что-либо выдать.
    Название переменной может быть любое.
    Я не знаю, как ещё можно доступнее объяснить.
    Последний раз редактировалось Wise; 25.12.2016 в 14:01.
    Pawn - странный предмет. Вроде понимаешь, а вроде бы нет.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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