Баг с улетанием диалога или imgui окна

Double Tap Inside

Известный
Автор темы
Проверенный
1,916
1,255
Версия SA-MP
  1. 0.3.7 (R1)
Баг с улетанием диалога или imgui окна. Когда игра свернута со включенным антиафк и появляется диалог, то он появляется совсем не там где надо.
Как это победить?

sa-mp-196.png
 
Последнее редактирование:
  • Ха-ха
  • Нравится
Реакции: Flonker и HatakeKakashi
Решение
Представляю вашему вниманию более менее костыльный метод для imgui. Может как-то и для обычных диалогов скостылить можно, пока надобности нет. Мне для imgui пока актуальная такая тема.
Поэкспериментировал с windows событиями. разгрёб среди говна, которое флудит при всяких движениях на компе, событие под номерами 6, 28, 134. Хз в чём разница между ними, не углублялся , главное работает. Выбрал 6 - WM_ACTIVATE.
При сворачивании игры в параметрах возвращает 0, при разворачивании сначала даёт хер знает какой-то число, а потом 1.
Объявил булевую переменную gta, которая зависит от статуса окна игры.
Ну и собственно, когда окно сворачивается, gta на false ставится и imgui окно больше не рендерится, разворачиваешь - рендерится.
Я думал также...

Hatiko

Известный
Проверенный
1,502
620
Код проверен, он работает. Возможно ли что то сделать лучше? Скорее всего да, но пока мне светлая мысль в голову не придет - я не мучаю жопу.
Пздц у тебя тут нахуярено, надо бы как-то более совершенный способ найти. Попробую поэкспериментировать. .
Неужели данный артефакт так и останется не решенным???(?(
В imgui нет, но он уже не поддерживается фипом, сейчас новая либа есть mimgui, там хз как на счёт этого.
 

Double Tap Inside

Известный
Автор темы
Проверенный
1,916
1,255
Пздц у тебя тут нахуярено, надо бы как-то более совершенный способ найти. Попробую поэкспериментировать. .

В imgui нет, но он уже не поддерживается фипом, сейчас новая либа есть mimgui, там хз как на счёт этого.

Неужели данный артефакт так и останется не решенным???(?(
Так и быть, я попробую просто перерисовывать диалог при развороте игры. Надеюсь получится без конфликтов с другими скриптами.
 

Hatiko

Известный
Проверенный
1,502
620
Представляю вашему вниманию более менее костыльный метод для imgui. Может как-то и для обычных диалогов скостылить можно, пока надобности нет. Мне для imgui пока актуальная такая тема.
Поэкспериментировал с windows событиями. разгрёб среди говна, которое флудит при всяких движениях на компе, событие под номерами 6, 28, 134. Хз в чём разница между ними, не углублялся , главное работает. Выбрал 6 - WM_ACTIVATE.
При сворачивании игры в параметрах возвращает 0, при разворачивании сначала даёт хер знает какой-то число, а потом 1.
Объявил булевую переменную gta, которая зависит от статуса окна игры.
Ну и собственно, когда окно сворачивается, gta на false ставится и imgui окно больше не рендерится, разворачиваешь - рендерится.
Я думал также сделать через функции c++ через либу ffi, типа на проверку развёрнутости окна, но думаю будет лишняя нагрузка. Поэтому с события поэкспериментировал сначала.
Пока хз как будет вести себя, если игра немного подвисает при разворачивании, мб ещё какие-то доп условия поставить для wparam == 1. А так пока заебись.

Lua:
local win = imgui.ImBool(false) -- переменная окна
local gta = false -- переменная для imgui.Process
addEventHandler("onWindowMessage", function (msg, wparam, lparam)
    if msg == 6 then
        if wparam == 0 then
            gta = false
        elseif wparam == 1 then
            gta = true
        end
    end
end)

-- В цикле main
imgui.Process = gta and win.v
--
P.S. 10.08.20
Можно заюзать хук именно на функцию показа диалога через jmp hook и пока игра свёрнута, мы не снимаем хук (как написано в теме). Как только развернём игру, снимем хук и диалог появится.
Гениально )
Мне кажется, если это сработает, то можно в качестве отдельного скрипта сделать в виде фикса, чтобы в каждый скрипт свой не вставлять. С imgui скорей придётся саму либу imgui.lua на свою заменить, где будет вставлено то, что выше писал вчера.
Вот такой костыль получается....
 
Последнее редактирование:

Double Tap Inside

Известный
Автор темы
Проверенный
1,916
1,255