Как увидеть тот текст который не влез в диалог на сервере?

Cypher

Активный
Автор темы
224
55
Версия MoonLoader
.026-beta
В одном диалоге на аризоне не весь текст влезает в диалог, можно ли как то получить его и вывести например в имгуи меню?
 

YarikVL

Известный
Проверенный
4,798
1,814
В одном диалоге на аризоне не весь текст влезает в диалог, можно ли как то получить его и вывести например в имгуи меню?
Через событие onShowDialog
Выводи переменную text куда тебе нужно, например в этом событии: print(text)
 

Cypher

Активный
Автор темы
224
55
Через событие onShowDialog
Выводи переменную text куда тебе нужно, например в этом событии: print(text)
1673519301962.png

В итоге так и не понял как взять текст с диалога и в имгуи засунуть, с вариантом на экране скрипт крашит после появления диалога
 
  • Bug
Реакции: qdIbp

why ega

РП игрок
Модератор
2,554
2,247
Посмотреть вложение 185650
В итоге так и не понял как взять текст с диалога и в имгуи засунуть, с вариантом на экране скрипт крашит после появления диалога
Объяви переменную в начале кода, в которую будешь записывать текст, потом в хуке диалога присваивай этой переменной значение текста диалога (в 25 строке переменную текст замени на ту, которую ты объявил в начале кода)
 
  • Нравится
  • Влюблен
Реакции: YarikVL и Cypher

Lance Sterling

Потрачен
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Вау
Реакции: Lance_Sterling

Cypher

Активный
Автор темы
224
55
Через событие onShowDialog
Выводи переменную text куда тебе нужно, например в этом событии: print(text)
1673523479812.png

Далее 80 не идет, хоть там терр от 1 до 156
Код:
Lua:
require 'lib.moonloader'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
array = {}

local window = imgui.ImBool(false)

function main()
   while not isSampAvailable() do wait(200) end
   while true do
      wait(0)
      imgui.Process = window.v
   end
end

function imgui.OnDrawFrame()
   if window.v then
      imgui.SetNextWindowPos(imgui.ImVec2(350.0, 250.0), imgui.Cond.FirstUseEver)
      imgui.SetNextWindowSize(imgui.ImVec2(280.0, 70.0), imgui.Cond.FirstUseEver)
      imgui.Begin('Window Title', window)
      for k,v in ipairs(array) do
         if k == 1 and v == '' or v == nil then
            imgui.Text(u8'ПУСТО!')
         end
         imgui.Text(u8(v))
      end
      imgui.End()
   end
end

require 'lib.samp.events'.onShowDialog = function(id, style, title, button1, button2, text)
   if title:find('Куда установить') then
      array = {}
      for line in text:gmatch('[^\n]+') do
         count, kolvo, symma = line:match('Территория №(%d+) .+ (%d+)шт .+$(%d+)')
         table.insert(array, line)
      end
      window.v = true
   end
end
 

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Далее 80 не идет, хоть там терр от 1 до 156
Код:
Скорее всего из-за того, что в imgui.Text можно ограниченное количество символов ввести. А у тебя там половина текста из цвета состоит. Можешь после title:find до разбиения текста на строки, убрать с текста цвет через:
text = text:gsub("%{......%}", "")
Тексту в диалоге это помешать не должно, вроде как.

Если и с этим вариантов не будет влезать, то можешь imgui.Text заменить на imgui.TextUnformatted. Я где-то слышал, что там символы можно вводить либо больше, либо неограниченное количество. Не знаю точно.
 

Cypher

Активный
Автор темы
224
55
Скорее всего из-за того, что в imgui.Text можно ограниченное количество символов ввести. А у тебя там половина текста из цвета состоит. Можешь после title:find до разбиения текста на строки, убрать с текста цвет через:
text = text:gsub("%{......%}", "")
Тексту в диалоге это помешать не должно, вроде как.

Если и с этим вариантов не будет влезать, то можешь imgui.Text заменить на imgui.TextUnformatted. Я где-то слышал, что там символы можно вводить либо больше, либо неограниченное количество. Не знаю точно.
Трабл в том что как я понял onshowdialog не может захватывать тот текст, который не влез в сам диалог

Изначальная цель получить то что должно было быть в диалоге но не влезло и засунуть всё это вместе в имгуи окно
 

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Трабл в том что как я понял onshowdialog не может захватывать тот текст, который не влез в сам диалог

Изначальная цель получить то что должно было быть в диалоге но не влезло и засунуть всё это вместе в имгуи окно
Ну, что не влезло в диалоговое окно, то не влезло. У них вроде тоже ограниченное количество символов. Наверное, разработчики не предусмотрели этот момент, чтобы разбить на страницы.
 

Cypher

Активный
Автор темы
224
55
Ну, что не влезло в диалоговое окно, то не влезло. У них вроде тоже ограниченное количество символов. Наверное, разработчики не предусмотрели этот момент, чтобы разбить на страницы.
Тоесть по сути то что не влезло - увидеть невозможно физически?
 
  • Нравится
Реакции: qdIbp и why ega

why ega

РП игрок
Модератор
2,554
2,247
Трабл в том что как я понял onshowdialog не может захватывать тот текст, который не влез в сам диалог

Изначальная цель получить то что должно было быть в диалоге но не влезло и засунуть всё это вместе в имгуи окно
если это не выводится в onshowdialog, то скорее всего этого нет (т.к. хук onshowdialog берет весь текст из диалога, который тебе отправил сервер)
 
  • Нравится
Реакции: Dimiano и YarikVL