feat: 50 игр на Lua + импорт Roblox для всех + поддержка Lua в плеере #39

Merged
min merged 215 commits from feat/lua-50-games-bundle into main 2026-06-09 21:59:25 +00:00
Showing only changes of commit c6ba06eea6 - Show all commits

View File

@ -1748,19 +1748,21 @@ export function registerRobloxShim(lua, opts) {
debug.sethook(function() debug.sethook(function()
coroutine.yield(0.016) coroutine.yield(0.016)
end, "", 20000) end, "", 20000)
-- ВНУТРЕННИЙ pcall: игнорирует runtime errors handler'а __log("warn", "[lua-handler] " .. handlerId .. " starting")
-- ВНЕШНИЙ pcall: ловит yield-across-C-boundary local ok, err = pcall(fn, a1, a2, a3, a4)
-- Все возвращаемые значения отбрасываем (не возвращаем из coroutine if ok then
-- что-либо, чтобы wasmoon Promise-detection не сработал на null). __log("warn", "[lua-handler] " .. handlerId .. " finished OK")
pcall(function() pcall(fn, a1, a2, a3, a4) end) else
return 1 -- возвращаем НЕ-nil чтобы wasmoon не падал на null.then __log("error", "[lua-handler] " .. handlerId .. " ERROR: " .. tostring(err))
end
return 1
end) end)
__rbxl_register_coroutine(handlerId, co) __rbxl_register_coroutine(handlerId, co)
pcall(coroutine.resume, co) pcall(coroutine.resume, co)
if coroutine.status(co) == 'dead' then if coroutine.status(co) == 'dead' then
__rbxl_unregister_coroutine(handlerId) __rbxl_unregister_coroutine(handlerId)
end end
return 1 -- возвращаем НЕ-nil return 1
end end
`); `);
// Кешируем ссылку на Lua-функцию запуска handler'а // Кешируем ссылку на Lua-функцию запуска handler'а