Не читатет диалог

WinOS

Участник
Автор темы
7
0
Версия MoonLoader
.026-beta
Написал простенький код для чтения диалога под номером 27046(scr1)/27047(scr2).
photo_2024-09-21_23-26-38.jpg
Информация с данного диалога читается , и выводится в консоль.
Следующая проблема в том что не читается информация с диалога №27047.

14.20.09.734.jpg
dialogID=27047
14.20.11.734.jpg
dialogID=2704714.20.14.625.jpgdialogID=27047
Не читается информация с диалога "Дорожные знаки(Lav Venturas). Так же из-за того что не читается название диалога, и первые строчки диалога. Не могу сделать нормальную проверку диалога.
local sampev = require('lib.samp.events');
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local new = imgui.new
--[[
Cheacking BitStream
{'onShowDialog', {dialogId = 'uint16'}, {style = 'uint8'}, {title = 'string8'}, {button1 = 'string8'}, {button2 = 'string8'}, {text = 'encodedString4096'}}
]]
--[[Обнаружение ИД диалогов]]
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
sampAddChatMessage('Dialog found!', -1)
return { dialogId, style, ('[%d] %s'):format(dialogId, title), button1, button2, text};
end
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
print(text)
return
end
--[[Обнаружение основного диалога
'onShowDialog', {dialogId = 'uint16'}, {style = 'uint8'}, {title = 'string8'}, {button1 = 'string8'}, {button2 = 'string8'}, {text = 'encodedString4096'}}]]
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
if string.find(title, 'Выберите город', 1, true) then
sampAddChatMessage('Sign found!');
print(text);
end
--[[
Данный отрывок кода не работает адекватно

print(title);
print(text);
Служит для сбора информации, и для последующего переноса в таблицу на imgui, и расчета ближайшего знака.
]]
function sampev.onShowDialog(id, style, title, button1, button2, text)
if title:find('Дорожные знаки (San Fierro)') then
print(title);
print(text);
end
end
end
 
Решение
1. На какой кодировке пишешь
2.
local city = title:match('^Дорожные знаки %((.+)%)$')
// city = Los Santos
3. Для поиска с экранированным нужно экранировать, например с диалога - Player_Name[123] - необходимо экранировать вот таким: Player_Name%[123%]
Поищите в поисковике, справочники регулярное выражение на луа
1. CP1251
Спасибо, поищу

Нашёл решение через оператора eleseif. На этом построенна проверка открыт ли диалог для дальнейшего считывания.
function sampev.onShowDialog(id, style, title, button1, button2, text)
if string.find(title, 'Выберите город', 1, true) then
sampAddChatMessage('Sign found!')
print(text)
elseif string.find(title, 'Дорожные знаки (Los Santos)', 1, true) then...

kyrtion

Известный
871
304
1. На какой кодировке пишешь
2.
local city = title:match('^Дорожные знаки %((.+)%)$')
// city = Los Santos
3. Для поиска с экранированным нужно экранировать, например с диалога - Player_Name[123] - необходимо экранировать вот таким: Player_Name%[123%]
Поищите в поисковике, справочники регулярное выражение на луа
 

WinOS

Участник
Автор темы
7
0
1. На какой кодировке пишешь
2.
local city = title:match('^Дорожные знаки %((.+)%)$')
// city = Los Santos
3. Для поиска с экранированным нужно экранировать, например с диалога - Player_Name[123] - необходимо экранировать вот таким: Player_Name%[123%]
Поищите в поисковике, справочники регулярное выражение на луа
1. CP1251
Спасибо, поищу

Нашёл решение через оператора eleseif. На этом построенна проверка открыт ли диалог для дальнейшего считывания.
function sampev.onShowDialog(id, style, title, button1, button2, text)
if string.find(title, 'Выберите город', 1, true) then
sampAddChatMessage('Sign found!')
print(text)
elseif string.find(title, 'Дорожные знаки (Los Santos)', 1, true) then
sampAddChatMessage('Sign Los Santos detect')
print(title)
print(text)
elseif string.find(title, 'Дорожные знаки (San Fierro)', 1, true) then
sampAddChatMessage('Sign San Fierro detect')
print(title)
print(text)
elseif string.find(title, 'Дорожные знаки (Las Venturas)', 1, true) then
sampAddChatMessage('Sign Las Venturas detect')
print(title)
print(text)
end
end
Закрыто.
 
Последнее редактирование: