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

    Статус
    Оффлайн
    Регистрация
    17.03.2017
    Сообщений
    5
    Репутация:
    0 ±

    Команда /hw (happiness windows)

    Happiness windows - что значит "Окно счастья"
    [DC_CMD]

    Часто ли было такое, что во время мероприятия, какой нибудь игрок срывал мероприятие или просто был очень непослушным игроком. В этом случае, такие игроки наказывались, киком или администрация отправляла его в тюрьму. Ну, у каждого было по разному. Но зачем его кикать, если можно наказать немного по другому, более интересным способом.

    пойдём в public OnDialogResponse и добавим:
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    GetPVarType(playerid"DialogBoxOfHappiness") != PLAYER_VARTYPE_NONE)
            return 
    ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX"Окно счастья""{00ff00}Привет. Я окно счастья:)\n{ffffff}Попробуй закрой меня!;)""Закрыть""Закрыть");

        
    //Остальной код
        
        
    return 1;


    Ну и в конце отправляемся в конец мода, где обычно вписываются команды и там вставляем следующее:
    PHP код:
    CMD:hw(playeridparams[]) 

        new 
    giveplayerid;
        if(
    sscanf(params"u"giveplayerid)) 
            return 
    SendClientMessage(playerid, -1"Используй: /hw ID"); 

        if(
    giveplayerid == INVALID_PLAYER_ID)
            return 
    SendClientMessage(playerid, -1"Указанный игрок не найден на сервере");

        if(
    GetPVarType(giveplayerid"DialogBoxOfHappiness") == PLAYER_VARTYPE_NONE)
        { 
            
    ShowPlayerDialog(giveplayerid0DIALOG_STYLE_MSGBOX"Окно счастья""{00ff00}Привет. Я окно счастья:)\n{ffffff}Попробуй закрой меня!;)""Закрыть""Закрыть"); 
            
    SendClientMessage (giveplayerid0X00FF00FF,  "Администратор подарил вам Окно счастья;)"); 
            
    SetPVarInt(giveplayerid"DialogBoxOfHappiness"1);
        } 
        else
        {
            
    ShowPlayerDialog(giveplayerid, -1DIALOG_STYLE_MSGBOX".""."".""."); 
            
    DeletePVar(giveplayerid"DialogBoxOfHappiness");
        } 
        return 
    1

    Ну, собственно как то так...


    Спасибо за исправление: DeimoS
    Последний раз редактировалось DoMoBoy; 19.03.2017 в 21:44.
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ты перепутал OnPlayerRequestClass и OnDialogResponse.
    + такой диалог легко закрыть с помощью собейта или любого другого чита/клео, позволяющего с диалогами работать.
    Да и без читов можно нажать на "F6" и в чат писать спокойно
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    17.03.2017
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ты перепутал OnPlayerRequestClass и OnDialogResponse.
    + такой диалог легко закрыть с помощью собейта или любого другого чита/клео, позволяющего с диалогами работать.
    Да и без читов можно нажать на "F6" и в чат писать спокойно
    Насчёт чит-программ не предусмотрел. Спасибо за исправление.
    Писать то можно, но из-за данного окна, двигаться то будет не возможно. И да, заморозить игрока, слишком просто.)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Да и код команды у тебя кривой: начиная от построения условий и заканчивая ошибками, а-ля "params" вместо "params[0]"

    PHP код:
    CMD:hw(playeridparams[]) 

        new 
    giveplayerid;
        if(
    sscanf(params"u"giveplayerid)) 
            return 
    SendClientMessage(playerid, -1"Используй: /hw ID"); 

        if(
    giveplayerid == INVALID_PLAYER_ID)
            return 
    SendClientMessage(playerid, -1"Указанный игрок не найден на сервере");

        if(
    GetPVarType(giveplayerid"DialogBoxOfHappiness") == PLAYER_VARTYPE_NONE)
        { 
            
    ShowPlayerDialog(giveplayerid0DIALOG_STYLE_MSGBOX"Окно счастья""{00ff00}Привет. Я окно счастья:)\n{ffffff}Попробуй закрой меня!;)""Закрыть""Закрыть"); 
            
    SendClientMessage (giveplayerid0X00FF00FF,  "Администратор подарил вам Окно счастья;)"); 
            
    SetPVarInt(giveplayerid"DialogBoxOfHappiness"1);
        } 
        else
        {
            
    ShowPlayerDialog(giveplayerid, -1DIALOG_STYLE_MSGBOX".""."".""."); 
            
    DeletePVar(giveplayerid"DialogBoxOfHappiness");
        } 
        return 
    1

    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    GetPVarType(playerid"DialogBoxOfHappiness") != PLAYER_VARTYPE_NONE)
            return 
    ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX"Окно счастья""{00ff00}Привет. Я окно счастья:)\n{ffffff}Попробуй закрой меня!;)""Закрыть""Закрыть");

        
    //Остальной код
        
        
    return 1;

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    17.03.2017
    Сообщений
    5
    Репутация:
    0 ±
    Я тебя понял.
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    1.
    Цитата Сообщение от DoMoBoy Посмотреть сообщение
    PHP код:
    ShowPlayerDialog(params[0], 0DIALOG_STYLE_MSGBOX"Окно счастья","{ffffff}Ладно, теперь можешь меня закрыть;) Пока","Закрыть",""); 
    Иды диалогов желательно объявлять дефайном или через enum, голые цифры путаются при их множестве

    2.
    Цитата Сообщение от DoMoBoy Посмотреть сообщение
    PHP код:
    CMD:hw(playeridparams[])
    {
        
    //...
        
    if (windows[params[0]] == 0)
        {
            
    //...
            
    return 0// <-
        
    }
        
    //...
        
    return 0// <-

    Вместо "return 0;" в командах нужно ставить "return 1", ибо команда найдена.
    А у тебя даже при её вводе будет показывать "SERVER: Unknown command."

    Ну и ещё вот здесь:
    PHP код:
    if (windows[playerid] != 0) {ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX"Окнопку счастья","{00ff00}Привет. Я окно счастья:)\n{ffffff}Попробуй закрой меня!;)","Закрыть","Закрыть");} 
    "Окно счастья", ошибка небольшая)
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Иды диалогов желательно объявлять дефайном или через enum, голые цифры путаются при их множестве
    В данном случае ID диалога не важен, ибо при выдаче такого "окна счастья" любой диалог не будет работать из-за проверки в OnDialogResponse
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  9. Пользователь сказал cпасибо:
    Nexius_Tailer (19.03.2017)
  10. #8
    Аватар для DoMoBoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2017
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Вместо "return 0;" в командах нужно ставить "return 1", ибо команда найдена.
    А у тебя даже при её вводе будет показывать "SERVER: Unknown command."
    А разве функционал не будетолько повторяться постоянно? И ведь если поставить в первом return единицу, то по идее же функция продолжится, а так как там стоит ещё одна проверка после выдачи окна, окно сразу же можно будет закрыть, или я не прав?


    Насчёт ошибки, я писал с планшета, а у него немного проблема с набором текста.
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от DoMoBoy Посмотреть сообщение
    А разве функционал не будетолько повторяться постоянно? И ведь если поставить в первом return единицу, то по идее же функция продолжится, а так как там стоит ещё одна проверка после выдачи окна, окно сразу же можно будет закрыть, или я не прав?
    Нет, return обрывает действие независимо от возвращаемого им значения
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  12. 2 пользователя(ей) сказали cпасибо:
    DoMoBoy (19.03.2017) Guldan (20.03.2017)
 

 

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

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

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

Ваши права

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