Trilogy custom cef

LdKrs

Участник
Автор темы
27
33
Версия MoonLoader
Другое
Пытаюсь добавить свой cef интерфейс по коду chapo, но в игре он не отображается.

Lua:
require("ArizonaAPI")

-- [ COMMON ] --
local function debugMsg(...)
    print(('[LuaCEF] [DEBUG] %s'):format(table.concat({ ... }), '\t'));
end

-- [ CEF ] --
local LuaCEF = {}
setmetatable(LuaCEF, {__call = function(t, ...)
    return t:new(...)
end})
function LuaCEF:eval(code, fallback)
    local fn = executeUIBrowserJSCode or function() end;
    return fn(([[
        try {
            eval(`%s`);
        } catch(e) {
            %s;
        }
    ]]):format(code, fallback or ''));
end
function LuaCEF:new(id)
    local instance = {
        id = id,
        visible = false
    };
    return setmetatable(instance, {__index = self})
end
function LuaCEF:destroy()
    LuaCEF:eval(([[
        const uiElement = document.querySelector('#%s');
        if (uiElement)
            uiElement.remove();
    ]]):format(self.id));
end
function LuaCEF:setVisible(isVisible, displayMode)
    debugMsg('Switching iframe visible to', tostring(isVisible));
    self.visible = isVisible;
    LuaCEF:eval(([[
        document.querySelector('#%s').style.display = '%s';
    ]]):format(self.id, isVisible and (displayMode or 'block') or 'none', self.id));
end
function LuaCEF:createFromFile(path)
    self.path = path;
    LuaCEF:eval(([[
        const b = document.querySelector('body');
        const f = document.createElement('iframe');
        f.id = '%s';
        f.src = '%s';
        f.style.width = '100vw';
        f.style.height = '100vh';
        f.style.display = 'none';
        f.style.backgroundColor = 'transparent';
        b.appendChild(f);
    ]]):format(self.id, 'clientfile://./../Game/Gameface/Binaries/Win64/TrilogyLoader/cef/' .. path));
    debugMsg('iframe created, id:', tostring(self.id), 'display changed to "none"');
end

-- [ MAIN ] --
local ui = LuaCEF:new('shitcefmenu');
function onScriptLoad()
    sampRegisterChatCommand('togglemenu', function()
        ui:setVisible(not ui.visible);
        sampAddChatMessage('Меню ' .. (ui.visible and 'включено' or 'выключено'), 0xFFffffff);
    end);
end
function onExitScript()
    ui:destroy();
end
function onSendUIBrowserMessage(msg)
    if (msg == 'onSvelteAppInit') then
        ui:createFromFile('testcef.html');
    end
end
HTML:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test button</title>
    <style>
        @import url('https://fonts.cdnfonts.com/css/gilroy-bold');
        button {
            font-family: 'Gilroy-Bold', sans-serif;
            padding: 10px 20px;
            font-size: 16px;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div id="main">
        <button onclick="">Click Me</button>
    </div>
</body>

</html>