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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±

    Флуд диалога

    Добрый день, форумчане. Столкнулся с небольшой проблемой. Представим ситуацию: Идёт вызов диалога простого, при нажатии на клавишу "Пробел". Всё бы ничего, но если немного задержать эту клавишу зажатой, то при попытке закрыть этот диалог, то он будет открываться сразу же повторно без видимых на то причин бесконечное количество раз. У меня подозрения, что это баг SA:MP'a, но всё же возможно существует какой-то обход. Если есть какие-то мысли по-этому поводу, то высказывайте
    ______________________________________________
    Услуги Pawn

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

    Статус
    Оффлайн
    Регистрация
    26.02.2017
    Адрес
    0x
    Сообщений
    163
    Репутация:
    13 ±
    все верно же, OnPlayerKeyStateChange ловит нажатие и показывает диалог
    если хочешь чтобы было 1 раз - юзай макрос:
    PHP код:
    // PRESSED(keys)
    #define PRESSED(%0) \
        
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) 

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±
    Уже пробовал через этот макрос - результата не дало. Если зажать клавишу "пробел", то при отмене диалога, он флудит и не хочет уходить. Открывается и открывается, всё снова и снова
    ______________________________________________
    Услуги Pawn

  4. #4
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    добавить флажок для проверки показа диалога игроку, если диалог уже показан игроку, то пока он не произведет никаких действий - новый диалог показан не будет. Соответственно после того как игрок воспользовался диалогом, закрыл его или перешел на другой, мы возвращаем флажок в исходное состояние и делаем показ снова возможным.

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±
    добавить флажок для проверки показа диалога игроку, если диалог уже показан игроку, то пока он не произведет никаких действий - новый диалог показан не будет. Соответственно после того как игрок воспользовался диалогом, закрыл его или перешел на другой, мы возвращаем флажок в исходное состояние и делаем показ снова возможным.
    Собственно, ваша идея помогла, за что я вам говорю спасибо, но не до конца. Получается следующая ситуация, что если зажать "пробел" перед вызовом диалога, то она залипается. Проблема решилась, но не до конца. Я думаю так и оставить, если идей лучше не будет. Спасибо вам, но если всё же будут более лучшие варианты - выслушаю
    ______________________________________________
    Услуги Pawn

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

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

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

    Steve Pavlina

  8. #7
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ничего там залипать не должно. Покажи как реализовал всё и что именно у тебя там залипает
    а я не понимаю как можно сказать "спасибо, но не до конца"...

    В каком смысле залипается? Не появляется диалог? Обрабатывается несколько раз нажатие клавиши?

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

    Статус
    Оффлайн
    Регистрация
    06.07.2015
    Адрес
    Хабаровск
    Сообщений
    142
    Репутация:
    0 ±
    Ничего там залипать не должно. Покажи как реализовал всё и что именно у тебя там залипает
    Тем не менее клавиша залипает

    PHP код:
    if(newkeys == KEY_SPRINT)
        {
            if(
    select_skin_magazine[playerid] == true)
            {
                if(
    show_dialog[playerid] == false)
                {
                    
    show_dialog[playerid] = true;
                    static const 
    fmt_str[] =
                    
    "\
                        {FFFFFF}Вы уверены что хотите купить эту одежду?\
                        \nЦена: %d\
                    "
    ;
                    new 
    string[sizeof(fmt_str)+5];
                     
    format(stringsizeof(string), fmt_str
                     
    ,
                         
    magazine_money[playerid]
                     );
                     
    SPD(playerid299DSM"Покупка новой одежды"string"Да""Нет");
                }
            }
        } 
    а я не понимаю как можно сказать "спасибо, но не до конца"...

    В каком смысле залипается? Не появляется диалог? Обрабатывается несколько раз нажатие клавиши?
    Странно, что вы этого не понимаете. Вы мне помогли сделать лучше, за что вам спасибо. Это лучший вариант, из предложенных, пока что. Да, то есть если у вас вызов диалога идёт на клавишу, и эту клавишу зажать хотя бы на секунду, то при попытке просто закрыть этот диалог, он открывается снова, как будто я нажимаю клавишу снова, и интересное тому подтверждение. У меня стоит система Бани Хопа, которая идёт сочетанием клавиш Пробел + Шифт. Так вот, при залипании клавиши, если просто нажать клавишу Шифт, то система Бани Хопа срабатывает. Сразу говорю, сама клавиша не залипает и клавиатура у меня нормальная
    Последний раз редактировалось Vano_Glad; 01.09.2017 в 03:00.
    ______________________________________________
    Услуги Pawn

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

    Статус
    Оффлайн
    Регистрация
    18.08.2017
    Сообщений
    20
    Репутация:
    0 ±
    Быть может у тебя всё-таки проблемы с клавиатурой, а не с модом? По коду ничего залипать не должно, как и вызываться повторно диалог если зажат пробел, ведь он реагирует только на новое нажатие или отпуск клавиши и никак не проверяет, нажата клавиша или отжата. Если конечно это код из OnPlayerKeyStateChange а не из какого нибудь таймера с отдельными проверками.
    Последний раз редактировалось Betta; 01.09.2017 в 10:04.

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

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Логируйте действия

 

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

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

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

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

Ваши права

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