В теме 3 сообщения

KlasterK
Освоившийся

Привет, форумчане. Не знаю, мб кто-то это уже придумал, но я вам представляю систему хукования диалогов.

Хукование может уменьшить производительность во время ответа на диалог, но зато предоставляет удобство для скриптера.

// Макрос-хук. Аргумент после двоеточия: dialogid.
// Аргументы в скобках: playerid, response, listitem, inputtext[]
#define DIA:%0(%1,%2,%3,%4) forward dia@%0(%1,%2,%3,%4); public dia@%0(%1,%2,%3,%4)

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]
{
    new callback[10]; // Строка для вызова хука. Размер: dia@ (4 символа) + ID диалога (максимум 32767, 5 символов) + \0
    format(callback, 10"dia@%d", dialogid); // Форматирование строки
    CallLocalFunction(callback, "ddds", playerid, response, listitem, inputtext); // Сам вызов хука
}

// Пример со списком
CMD:choice(playerid, params[]) // Команда на DC_CMD/ZCMD
    return ShowPlayerDialog(playerid, 100, DIALOG_STYLE_LIST, "Опрос""Партия За Правду\n\
    Партия Справедливый Сан Андреас""Выбрать""Отмена"); // Диалог 100 с двумя пунктами

DIA:100(playerid, resp, item, text[]) // Хук на диалог 100
{
    if(resp) // Если нажата первая кнопка
    {
        if(item == 0) SendClientMessage(playerid, 0x00FF00AA"Хороший выбор!"); // Ответ на 1 пункт
        else          SendClientMessage(playerid, 0xFF0000AA"Плохой выбор!" ); // Ответ на 2 пункт
    }
}

// Пример с вводом
CMD:input(playerid, params[])
{
    return ShowPlayerDialog(playerid, 200, DIALOG_STYLE_INPUT, "Ввод""Введите ваш отзыв о сервере!",
    "Отправить""Отмена"); // Диалог 100 с вводом строки
}

DIA:200(playerid, response, listitem, inputtext[]) // Хук на диалог 200
{
    if(response) // Если нажата первая кнопка
    {
        new query[100], name[24], ret; // Строка для запроса, имени игрока и 
        GetPlayerName(playerid, name, 24); // Получение имени
        format(query, 100"INSERT INTO comments ( name, review ) VALUES ( %s, %s )", name, inputtext); // Форматирование запроса
        ret = db_query(mainDB, query); // Отправка запроса a_sampdb
        db_free_result(ret); // Очистка запроса
    }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Badr
      От Badr
      дратуте , решил сделать лаунчер самп на node.js , все норм сделал дизайн/стиль , но когда захожу абсолютно на любой сервер (заходил на онух рп ,и на свой сервер ) и пишет вронг сервер пароль ( мне лень на англиском писать )  скрин прикрепил 

      исходник https://disk.yandex.ru/d/D_104GFgrFO16A ( сам делал , то-есть дипсик  )
      я знаю все будут писать что (Слово удалено системой) ии-шное 
       

    • Badr
      От Badr
      дратуте , после обновы с бп , перестал работать лаунчер , типо заходит но на весь экран тот экран загрузки , и он не выключается , не работают диалоги
       у меня виндвос  7 писал в поддержку сказали больше не поддерживают на виндвос 7
      есть ли какой-то мод , или фикс чтобы я мог заходить ?
      на виндовс 10 не могу перейти , системные требования не подходят