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

Тема: Simple Dialog

  1. #1
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±

    Simple Dialog

    Мотивация
    Все текущие реализации довольно медленные. Во-первых, все они используют функцию SA-MP `CallLocalFunction`, которая сама по себе медленная O(log N) и имеет множество багов, вызывающих краш сервера. Во-вторых, нет возможности проверки имени во время компиляции. В-третьих, все из них хранят названия функций обратного вызова для каждого игрока, что составляет 1000 (MAX_PLAYERS) на 32 байта (максимальный размер имени функции).

    Решение
    В Pawn есть автоматы, которые решают все проблемы прошлых реализаций, связанных с поиском, проверкой имени функции и их хранением. Нам лишь нужно хранить состояние для каждого игрока. С помощью автоматов нам не нужно искать обработчик по названию O(1), а нужно лишь хранить индекс (4 байта) на 1000 (MAX_PLAYERS).

    Скачать
    Посмотреть на Pastebin

    Зависимости
    Для работы реализации нужны: модифицированный компилятор, стандартная библиотека SA-MP и сервер SA-MP.

    Пример
    1. DIALOG:PlayerSignUp(playerid, response, listitem, const inputtext[]) {
    2. if (!response)
    3. return;
    4. // ...
    5. }
    6.  
    7.  
    8. public OnGameModeInit() {
    9. Dialog_Init();
    10. }
    11.  
    12.  
    13. public OnPlayerConnect(playerid) {
    14. Dialog_Show(playerid, PlayerSignUp, DIALOG_STYLE_MSGBOX, !"Sign Up", !"You are new", !"Start", !"Cancel");
    15. }
    Последний раз редактировалось VVWVV; 10.08.2022 в 15:49.

  2. 3 пользователя(ей) сказали cпасибо:
    DeimoS (11.08.2022) Leogin (10.08.2022) Web (05.09.2022)
  3. #2
    Аватар для Leogin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.06.2022
    Сообщений
    13
    Репутация:
    1 ±
    Сделай еще чтобы через макрос можно было вкл/выкл уникального ида в диалог, это для клиента нужно, есть некоторые клиенты, которые запоминают выбранну строку в диалоге, что игрок ввел..

  4. #3
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Leogin Посмотреть сообщение
    Сделай еще чтобы через макрос можно было вкл/выкл уникального ида в диалог, это для клиента нужно, есть некоторые клиенты, которые запоминают выбранну строку в диалоге, что игрок ввел..
    Не совсем понимаю, что вы имеете в виду. Можете более развернуто рассказать?

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

    Статус
    Оффлайн
    Регистрация
    07.06.2022
    Сообщений
    13
    Репутация:
    1 ±
    Есть аризона, у них в клиенте есть фича для диалогов, там например в меню диалога кликнув на listitem - выбранный пунк сохранятся, например по умолчанию всегда первая строка выделена, а если что-то выбирает игрок, и повторно откроет этот диалог, будет по умолчанию выделенный пункт тот, который игрок выбрал в последний раз.

    Пример 1: на 2й пункт (listitem) кликнуть, этот выбор сохранится. Пример 2: на 2м диалоге кликаешь допустим на 3й пункт (listitem). Когда нажимаешь назад, тебе откроется первый диалог (пример 1), там уже будет выбран пункт 2, то есть действия что игрок выбирал в диалоге - они запоминаются. По этому иногда приходится использовать уникальный ид диалога

    В этом примере:
    1 диалог - сохранил 2й пункт
    2 диалог - сохранил 3й пункт

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

    Статус
    Оффлайн
    Регистрация
    18.02.2014
    Сообщений
    93
    Репутация:
    1 ±
    Я так понимаю он имеет ввиду использовать свой уникальный ид диалогов, вместо макроса - DIALOG_ID, действительно, у меня так же, при показе диалога, выбранный лист сбрасывается, ввиду одинакового ида диалога.

    - - - Добавлено - - -
    Последний раз редактировалось Salik_Davince; 10.08.2022 в 21:14.

 

 

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

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

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

Ваши права

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