формы на паузе

Lance_Sterling

Известный
Автор темы
956
336
Версия MoonLoader
.026-beta
формы выдаются даже если скрипт игра на паузе(паузовое меню игры активное)
в начале скрипта
script_properties("work-in-pause")

надо для других функций скрипта

вот код самых форм:
Lua:
local aName, aSurName, aID, form = text:match('^%[A%] %(.+%) (%w+)_?(%w+)%[(%d+)%]: /(.+)')
    if aName and aSurName and aID and form and color == 1724645546 and not isPauseMenuActive() and not isGamePaused() then--Выдача форм
        if tonumber(aID) ~= myId() then
            local cmd = form..' '
            for k, _ in ipairs(autopunish or {}) do--Перебираем список команд которые указаны пользователем
                if cmd:find('^'..u8:decode(autopunish[k].COMMAND)) and render_forms('/'..string.rlower(form), aName:match('%a')..'.'..aSurName, aName) then--Если команда найдена
                    if mainIni.settings.auto_punish then--Если автовыдача включена то сразу её отправлять
                        lua_thread.create(function()
                            wait(0)
                            sampSendChat(render_forms('/'..form, aName:match('%a')..'.'..aSurName, aName))
                        end)
                    else--Если автоавыдача выключена то запускать рендер форм
                        if not active_forma then
                            active_forma = true
                            AddChatMessage('Поступила форма от администратора '..aName..' '..aSurName..': /'..form, 3)
                            AddChatMessage('Чтобы принять нажмите >>'..table.concat(rkeys.getKeysName(BINDS.ACCEPT_FORM.v), ' + ')..'<<, чтобы отклонить >>'..table.concat(rkeys.getKeysName(BINDS.REJECT_FORM.v), ' + ')..'<<', 3)
                            forma(aName..' '..aSurName, render_forms('/'..form, aName:match('%a')..'.'..aSurName, aName))
                        end
                    end
                    break
                end
            end
        end
        if mainIni.settings.change_admin_chat then
            local lvl, nick, id, info = text:match('^%[A%] %((.+)%) (%w+_?%w+)%[(%d+)%]: (.+)')
            sampAddChatMessage(string.format('[A] {87CEFA}%s {f24246}%s[%d]{f0f1f0}: %s', lvl, nick, id, info), 0xf24246)
            return false
        end
    end

рендер форм:
Lua:
function render_forms(form, prefix, name)
    for _, v in ipairs(MAIN_TABLE.CORRECT_CMDS) do-- \\ Таблица с правильными аргументами команд
        if form:match(v) then
            return form..' // '..prefix
        end
    end
    for _, v in ipairs(MAIN_TABLE.CMDS) do--таблица с всеми командами
        if form:match(v:gsub(' .+', '')) then
            return '/a '..name..', вводи '..v:match('(/.+) %-')
        end
    end
    AddChatMessage('Произошла ошибка при обработке формы', 2)
    return false
end

и так же сама форма без автовыдачи(хотя она тут нахуй не сдалась, ведь ошибка только с автовыдачей):
Lua:
function forma(nick, cmd)
    if active_forma and not isPauseMenuActive() and not isGamePaused() then
        local time = os.time() + 5
        local accept = vkeys.name_to_id(table.concat(rkeys.getKeysName(BINDS.ACCEPT_FORM.v)))
        local reject = vkeys.name_to_id(table.concat(rkeys.getKeysName(BINDS.REJECT_FORM.v)))
        lua_thread.create(function()
            while time > os.time() do
                wait(0)
                printStyledString("ADMIN FORM " .. time - os.time() .. " WAIT ~n~AUTHOR: ~r~"..nick, 1000, 5)
                if time == os.time() then
                    active_forma = false
                    printStyledString("Forma skipped", 1000, 5)
                    break
                end
                if isKeyJustPressed(accept) and not sampIsChatInputActive() and not sampIsDialogActive() then
                    aform_accept = true
                    printStyledString("Admin form accepted", 1000, 5)
                    sampSendChat(cmd)
                    active_forma = false
                    break
                elseif isKeyJustPressed(reject) and not sampIsChatInputActive() and not sampIsDialogActive() then
                    printStyledString('You missed the form', 2000, 5)
                    aform_accept = false
                    active_forma = false
                    break
                end
            end
        end)
    end
end
 
  • Эм
Реакции: de_clain

Lance_Sterling

Известный
Автор темы
956
336

waparabka

Известный
97
150
не работает теперь вообще ничего, в tostring постоянно 0
значит ты что-то не так делаешь дружище

C++:
bool isPlayerInMenu = *reinterpret_cast<bool*>(0xBA67A4);

std::cout << std::to_string(isPlayerInMenu) << std::endl;


paused.png

not paused.png
 

Lance_Sterling

Известный
Автор темы
956
336
значит ты что-то не так делаешь дружище

C++:
bool isPlayerInMenu = *reinterpret_cast<bool*>(0xBA67A4);

std::cout << std::to_string(isPlayerInMenu) << std::endl;



Lua:
function samp.onServerMessage(color, text)
    local aName, aSurName, aID, form = text:match('^%[A%] %(.+%) (%w+)_?(%w+)%[(%d+)%]: /(.+)')
    if aName and aSurName and aID and form and color == 1724645546 and not mem.getint8(0xBA67A4) and not isGamePaused() then--Выдача форм
        if tonumber(aID) ~= myId() then
            local cmd = string.rlower(form)..' '
            for k, _ in ipairs(autopunish or {}) do--Перебираем список команд которые указаны пользователем
                if cmd:find('^'..u8:decode(autopunish[k].COMMAND)) and render_forms('/'..string.rlower(form), aName:match('%a')..'.'..aSurName, aName) then--Если команда найдена
                    local render_form = render_forms('/'..form, aName:match('%a')..'.'..aSurName, aName)
                    if mainIni.settings.auto_punish then--Если автовыдача включена то сразу её отправлять
                        lua_thread.create(function()
                            wait(0)
                            sampSendChat(aName..'_'..aSurName, render_form)
                            if not render_form:find(aName..'%, вводи .+') then
                                sampSendChat('/a [Forma] +')
                            end
                        end)
                    else--Если автоавыдача выключена то запускать рендер форм
                        if not active_forma then
                            active_forma = true
                            forma(aName..'_'..aSurName, render_form)
                        end
                    end
                    break
                end
            end
        end
        if mainIni.settings.change_admin_chat then
            local lvl, nick, id, info = text:match('^%[A%] %((.+)%) (%w+_?%w+)%[(%d+)%]: (.+)')
            sampAddChatMessage(string.format('[A] {87CEFA}%s {f24246}%s[%d]{f0f1f0}: %s', lvl, nick, id, info), 0xf24246)
            return false
        end
    end
end
так он не nil поэтому не работает, позже затещу с нулями
 

waparabka

Известный
97
150
Lua:
function samp.onServerMessage(color, text)
    local aName, aSurName, aID, form = text:match('^%[A%] %(.+%) (%w+)_?(%w+)%[(%d+)%]: /(.+)')
    if aName and aSurName and aID and form and color == 1724645546 and not mem.getint8(0xBA67A4) and not isGamePaused() then--Выдача форм
        if tonumber(aID) ~= myId() then
            local cmd = string.rlower(form)..' '
            for k, _ in ipairs(autopunish or {}) do--Перебираем список команд которые указаны пользователем
                if cmd:find('^'..u8:decode(autopunish[k].COMMAND)) and render_forms('/'..string.rlower(form), aName:match('%a')..'.'..aSurName, aName) then--Если команда найдена
                    local render_form = render_forms('/'..form, aName:match('%a')..'.'..aSurName, aName)
                    if mainIni.settings.auto_punish then--Если автовыдача включена то сразу её отправлять
                        lua_thread.create(function()
                            wait(0)
                            sampSendChat(aName..'_'..aSurName, render_form)
                            if not render_form:find(aName..'%, вводи .+') then
                                sampSendChat('/a [Forma] +')
                            end
                        end)
                    else--Если автоавыдача выключена то запускать рендер форм
                        if not active_forma then
                            active_forma = true
                            forma(aName..'_'..aSurName, render_form)
                        end
                    end
                    break
                end
            end
        end
        if mainIni.settings.change_admin_chat then
            local lvl, nick, id, info = text:match('^%[A%] %((.+)%) (%w+_?%w+)%[(%d+)%]: (.+)')
            sampAddChatMessage(string.format('[A] {87CEFA}%s {f24246}%s[%d]{f0f1f0}: %s', lvl, nick, id, info), 0xf24246)
            return false
        end
    end
end
так он не nil поэтому не работает, позже затещу с нулями
убери проверку на isGamePaused и оставь mem.getint8(0xBA67A4) == 0
 

Lance_Sterling

Известный
Автор темы
956
336
убери проверку на isGamePaused и оставь mem.getint8(0xBA67A4) == 0
неа, возможно, это потому что сообщения в чате прогружаются после того как я вышел с афк, это можно увидеть по timestamp, чо мне делать блэ