вывод сообщения в чат при неудачной подгрузке либы

g305noobo

Известный
Автор темы
Модератор
307
477
Версия MoonLoader
.026-beta
Привет! Я хочу вывести сообщение в чат, аля - у вас нет такой то либы, для работы скрипта перезайдите в игру и дальше скрипт крашит..
В целом в коде ниже все работает, но когда заходишь в игру я так понимаю это сообщение высвечивается даже раньше первого сообщения сампа. Как сделать, чтобы оно появлялось с задержкой или может как нибудь проверять на иниацилизацию сампа?

Lua:
local success, imgui = pcall(require, "mimgui")
if not success then
    sampAddChatMessage("Failed to load mimgui library", -1)
end
 
Решение
Lua:
require 'moonloader'
local libs = {
    ['sampev'] = 'samp.events',
    ['imgui'] =  'imgui',
    ['requests'] =  'requests',
    ['encoding'] = "encoding",
}
for k,v in pairs(libs) do
    local res = pcall(require,v)
    if not res then
        lua_thread.create(function()
            while not isSampAvailable() do wait(0) end
            sampShowDialog(100,
                '{294a7a}[telegram control samp] {8E0700}not found library!',
                ([[
{cccccc}not found {ffffff}%s {cccccc}library in path {ffffff}/lib/%s.lua{cccccc}
write the command {294a7a}/tcs_libs{cccccc} to open the link <SA:MP setup>(library installer)(blast.hk)]]):format(k,v:gsub('%.','/')),
                '=(','',0
            )...

bulba$h

Активный
327
92
 

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659
Привет! Я хочу вывести сообщение в чат, аля - у вас нет такой то либы, для работы скрипта перезайдите в игру и дальше скрипт крашит..
В целом в коде ниже все работает, но когда заходишь в игру я так понимаю это сообщение высвечивается даже раньше первого сообщения сампа. Как сделать, чтобы оно появлялось с задержкой или может как нибудь проверять на иниацилизацию сампа?

Lua:
local success, imgui = pcall(require, "mimgui")
if not success then
    sampAddChatMessage("Failed to load mimgui library", -1)
end
Либо подгружать либы в мейне, после загрузки сампа, либо проверять переменную success в том же мейне
 
  • Нравится
Реакции: Vespan

g305noobo

Известный
Автор темы
Модератор
307
477
Либо подгружать либы в мейне, после загрузки сампа, либо проверять переменную success в том же мейне
Если подгружать либы в мейне - как их вызывать вне мейна?
 

Vespan

Чешский луашер
Проверенный
2,123
1,729
Lua:
require 'moonloader'
local libs = {
    ['sampev'] = 'samp.events',
    ['imgui'] =  'imgui',
    ['requests'] =  'requests',
    ['encoding'] = "encoding",
}
for k,v in pairs(libs) do
    local res = pcall(require,v)
    if not res then
        lua_thread.create(function()
            while not isSampAvailable() do wait(0) end
            sampShowDialog(100,
                '{294a7a}[telegram control samp] {8E0700}not found library!',
                ([[
{cccccc}not found {ffffff}%s {cccccc}library in path {ffffff}/lib/%s.lua{cccccc}
write the command {294a7a}/tcs_libs{cccccc} to open the link <SA:MP setup>(library installer)(blast.hk)]]):format(k,v:gsub('%.','/')),
                '=(','',0
            )
            sampRegisterChatCommand('tcs_libs',function() os.execute('explorer "https://www.blast.hk/threads/157157/"') end)
        end)
    else
        _G[k] = require(v)
    end
end
в начале кода
 
  • Нравится
Реакции: chromiusj и g305noobo

whyega52

Гений, миллионер, плейбой, долбаеб
Модератор
2,798
2,659
Lua:
require 'moonloader'
local libs = {
    ['sampev'] = 'samp.events',
    ['imgui'] =  'imgui',
    ['requests'] =  'requests',
    ['encoding'] = "encoding",
}
for k,v in pairs(libs) do
    local res = pcall(require,v)
    if not res then
        lua_thread.create(function()
            while not isSampAvailable() do wait(0) end
            sampShowDialog(100,
                '{294a7a}[telegram control samp] {8E0700}not found library!',
                ([[
{cccccc}not found {ffffff}%s {cccccc}library in path {ffffff}/lib/%s.lua{cccccc}
write the command {294a7a}/tcs_libs{cccccc} to open the link <SA:MP setup>(library installer)(blast.hk)]]):format(k,v:gsub('%.','/')),
                '=(','',0
            )
            sampRegisterChatCommand('tcs_libs',function() os.execute('explorer "https://www.blast.hk/threads/157157/"') end)
        end)
    else
        _G[k] = require(v)
    end
end
в начале кода
или так, чтобы не создавать лишний поток
Lua:
local originalRequire = require
local notFoundLibs = {}
function require(lib)
    if not pcall(originalRequire, lib) then table.insert(notFoundLibs, lib) end
end


function main()
    while not isSampAvaibale() do wait(0) end
    for _, libName in ipairs(notFoundLibs) do sampAddChatMessage(("Потерялась библиотека %s"):format(libName), -1) end
end