Описание: библиотека, позволяющая создавать интерфейсы с использованием HTML, CSS, JS и взаимодействовать с ними используя Lua.
Список основных функций:
Список функций WebFrame:
Примеры использования callback-функций:
Пример скрипта с использованием библиотеки:
Установка: распаковать архив в корень игры с заменой
Скачать: full pack (cef + webcore.asi + webcore.lua)
Список основных функций:
Lua:
webcore.version() -- возвращает версию плагина
webcore.inited() -- возвращает true, если инициализирован
webcore.input_active() -- возвращает true, если активен ввод в любом фрейме (даже в чужом)
WebFrame webcore:create(url, x, y, w, h[, cb]) -- создаёт фрейм с указанными параметрами и вызывает callback после создания браузера
WebFrame webcore:create_fullscreen(url[, cb]) -- создаёт полноэкранный фрейм
webcore:close(WebFrame) -- закрывает фрейм и удаляет связанные с ним данные
Список функций WebFrame:
Lua:
WebFrame:close() -- закрывает фрейм. используется только с установленным колбеком
WebFrame:get_texture() -- возвращает указатель на текстуру фрейма
WebFrame:set_input(enable) -- устанавливает состояние ввода для фрейма
WebFrame:set_active(enable) -- отключает рендеринг фрейма и скрывает его с экрана
WebFrame:set_offscreen(enable) -- позволяет отключить отображение фрейма для самостоятельного рендера
WebFrame:set_rect(x, y, w, h) -- устанавливает размер и позицию фрейма
WebFrame:execute_js(code) -- запускает указанный код
WebFrame:add_function(name, cb) -- создаёт функцию с указанным именем в объекте cef и регистрирует callback (lua), который будет вызван при вызове функции (js)
WebFrame:set_create_cb(cb) -- устанавливает callback на создание фрейма
WebFrame:set_close_cb(cb) -- устанавливает callback на закрытие фрейма
WebFrame:set_loading_cb(cb) -- устанавливает callback на завершение загрузки страницы
WebFrame:load_url(url)
WebFrame:reload_page(ignore_cache)
WebFrame:can_go_back()
WebFrame:can_go_forward()
WebFrame:go_back()
WebFrame:go_forward()
WebFrame:input_active()
WebFrame:get_title()
WebFrame:get_url()
WebFrame:loading()
Примеры использования callback-функций:
Вызывается, когда был фрейм был полностью инициализирован.
На этом моменте, пока страница не загружена, можно создать JavaScript-функции либо использовать другие функции, которые не взаимодействуют со страницей.
Функция имеет всего один аргумент - ссылку на объект браузера, который возвращается при использовании функции
Примеры регистрации:
На этом моменте, пока страница не загружена, можно создать JavaScript-функции либо использовать другие функции, которые не взаимодействуют со страницей.
Функция имеет всего один аргумент - ссылку на объект браузера, который возвращается при использовании функции
webcore:create()
.Примеры регистрации:
Lua:
local browser = webcore:create("file:///cef/webcore_test.html", 40, 300, 640, 480,
function (browser_) -- browser_ == browser
-- browser:add_function(...)
-- browser:set_input(...)
-- и пр.
end
)
Lua:
local browser = webcore:create("file:///cef/webcore_test.html", 40, 300, 640, 480)
browser:set_create_cb(
function(browser_)
-- code
end
)
Вызывается, когда страница была полностью загружена.
С этого момента можно использовать
Аргументы функции - ссылка на фрейм и http код ответа веб-сервера.
Пример использования:
С этого момента можно использовать
WebFrame:execute_js()
для взаимодействия с функциями страницы.Аргументы функции - ссылка на фрейм и http код ответа веб-сервера.
Пример использования:
Lua:
browser:set_loading_cb(
function (browser_, httpStatusCode)
sampAddChatMessage("loading done. httpStatusCode = " .. httpStatusCode, -1)
end
)
Вызывается, когда вызвана функция с указанным именем на стороне браузера.
В качестве аргументов передаётся ссылка на фрейм, имя вызванной функции и аргументы, упакованные в таблицу.
Пример регистрации:
Пример вызова из JavaScript:
Результат:
В качестве аргументов передаётся ссылка на фрейм, имя вызванной функции и аргументы, упакованные в таблицу.
Пример регистрации:
Lua:
browser:add_function("dump_lua",
function (browser_, name, args) -- фрейм, имя вызванной функции и аргументы в виде таблицы
print("browser:", browser_)
print("name:", name)
print("args")
for i, v in pairs(args) do print(i, v, type(v)) end
end
)
Пример вызова из JavaScript:
JavaScript:
cef.dump_lua(123, '123', null, undefined, true, false, 0.1 + 0.2)
Результат:
Пример скрипта с использованием библиотеки:
Клавиша B - активирует управление
Клавиша X - закрывает фрейм
Клавиша X - закрывает фрейм
Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local hasWebcore, webcore = pcall(require, 'webcore')
local browser = nil
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
if not hasWebcore then
sampAddChatMessage("webcore.asi not loaded. check console for details", -1)
print(webcore)
return
end
sampAddChatMessage("webcore.asi version: " .. webcore.version(), -1)
while not webcore.inited() do wait(100) end
browser = webcore:create("file:///cef/webcore_test.html", 40, 300, 640, 480) -- create browser without create callback
browser:set_create_cb( -- set create callback manually
function (_)
sampAddChatMessage("browser created", -1)
browser:add_function("add_chat",
function (_, name, args)
sampAddChatMessage(u8:decode(args[1]), args[2])
end
)
end
)
browser:set_close_cb(
function (_)
sampAddChatMessage("browser closed", -1)
browser = nil -- mark browser closed
end
)
browser:set_loading_cb(
function (_, httpStatusCode)
sampAddChatMessage("loading done. httpStatusCode = " .. httpStatusCode, -1)
end
)
while true do
if browser ~= nil and not browser:input_active() then
if isKeyJustPressed(0x42) then -- B
browser:set_input(true)
end
if isKeyJustPressed(0x58) then -- X
browser:close() -- close browser with callback
end
end
wait(0)
end
end
function onScriptTerminate(s, q)
if s == thisScript() then
webcore:close(browser) -- close without callback
browser = nil
end
end
Установка: распаковать архив в корень игры с заменой
Скачать: full pack (cef + webcore.asi + webcore.lua)
Последнее редактирование: