почему не прокликиваются диалоги?

solution

Участник
Автор темы
58
7
Версия MoonLoader
Другое
Имеется два диалога на евыче под фаминвайт, раньше работало просто по Y, сейчас же еще два диалога поверх, сначала первый показывается с тайтлом Принять, и после него второй с тайтлом Подтверждение. В коде реализовано нажатие по проверке на тайтл, но почему-то нихуя не работает, пробовал по id тоже нихуя не жмется

Lua:
function sampev.onShowDialog(id, style, title, button1, button2, text)
    if title:find('Принять') then
        sendDialogResponse(id, 1, 0, '')
    end

    if title:find('Подтверждение') then
        sendDialogResponse(id, 1, 0, '')
    end
end


1735864816884.png
1735864877604.png
 

solution

Участник
Автор темы
58
7
Зайди с этим скриптом в самп и там просто прими в фаму и скинь скрин что выведет
[20:55:34] Dialog ID 20302 -- это первый диалог который "принять"
[20:55:41] dialogId: 20302 button: 1 listboxId: 0 input: Приглашение в семью
[20:55:41] Dialog ID 20301 -- второй диалог где "Подтверждение"
[20:55:45] Screenshot Taken - sa-mp-065.png
[20:55:46] dialogId: 20301 button: 1 listboxId: 65535 input:
[20:55:46] Ploho_tut передал реликвию семьи Begemot_toddi
 

Nichoo

Участник
74
24
  • Нравится
Реакции: IlyaFontonov

Nichoo

Участник
74
24

kyrtion

Известный
1,077
384
[20:55:46] dialogId: 20301 button: 1 listboxId: 65535 input:
Lua:
local sampev = require('samp.events')
require('addon')

function onLoad()
    print('Loaded script for dialog')
end

function sampev.onSendDialogResponse(dialogId, button, listboxId, input)
    local fmt = string.format(
        'Sended response: dialogId[%d] button[%d] listboxId[%d] input[%s]',
        dialogId, button, listboxId, input
    )
    print(fmt)
end

function sampev.onShowDialog(dialogId, style, title, b1, b2, text)
    title = title:gsub('{%x%x%x%x%x%x}', '')
    b1 = b1:gsub('{%x%x%x%x%x%x}', '')
    b2 = b2:gsub('{%x%x%x%x%x%x}', '')
    text = text:gsub('{%x%x%x%x%x%x}', '')
 
    local fmt1 = string.format('DEBUG-DIALOG: DialogId[%d] Style[%d]', dialogId, style)
    local fmt2 = string.format('DEBUG-DIALOG: Title[%s] B1[%s] B2[%s]', title, b1, b2)
    local fmt3 = string.format('DEBUG-DIALOG: Text[\n%s\n]', text)
 
    print(fmt1)
    print(fmt2)
    print(fmt3)
 
    if title == 'Принять' then
        print('Found dialog with title[Принять], sending response and hide')
        sendDialogResponse(dialogId, 1, 0, text:match('^.-\n(.-)\t'))
        -- выбирает первая линия. если стиль 4 или 5, добавляет +1, если выбрать 0 линия
        -- то выбираешь на 'Приглашение на семью' перед \t на первую линию, но не 'Предложение'
        return false
    elseif title == 'Подтверждение' and text:find('Вступить в семью') then
        print('Found dialog with title[Подтверждение] and text:find[Вступить в семью], sending response and hide')
        sendDialogResponse(dialogId, 1, 65535, '')
        return false
    end
end
Когда-нибудь играл на Evolve, и понял что обработчик диалог очень строгий.
Например, прописал /mm, открылся диалог. А у тебя желание хочется поговорить в чате с командой имея незакрытого диалога - сервер не примет RPC на отправку кмд, пока ты не еще закрыл диалог.
Такая же раздражается такой момент, если ты встал на СМИ, идешь на зону для доступа командой /n (Меню невс). Иногда сервер задерживается из-за тяжёлый прогресс обработчиков, через секунду 2-3 отправит игроку пустой диалог если попал в зоне.
А вот самп такой добренький, позволяет писать в чате не смотря на диалог
 
Последнее редактирование:
  • Вау
  • Влюблен
Реакции: solution и qdIbp

Похожие темы

  1. Ответы
    4
    Просмотры
    1K