Информация MoonLoader - обсуждение

FYP

Известный
Автор темы
Администратор
1,758
5,725
@James Hawk какая-то проблема в скрипте, использующем эту функцию. скорее всего она вызывается до инициализации сампа.
 
  • Нравится
Реакции: AnWu

SKIC

Известный
64
0
Я заметил что в moonloader 0.27 скрипт не видит если есть ошибка и приходится вручную искать где ошибка.
 

tlwsn

Известный
537
85
[12:22:00.603903] (error) Admin Tools: D:\admtools027\moonloader\libstd\memory.lua:209: cannot convert 'nil' to 'float'
stack traceback:
D:\admtools027\moonloader\libstd\memory.lua: in function 'setfloat'
D:\admtools027\moonloader\admintools.lua:4669: in function 'nameTagOff'
D:\admtools027\moonloader\admintools.lua:4515: in function <D:\admtools027\moonloader\admintools.lua:4513>
stack traceback:
[C]: in function 'create'
D:\admtools027\moonloader\admintools.lua:1706: in function <D:\admtools027\moonloader\admintools.lua:1460>
[12:22:00.603903] (error) Admin Tools: Script died due to an error. (id:2)
Lua:
function nameTagOff()
    nameTag = false
    local pStSet = sampGetServerSettingsPtr();
    mem.setfloat(pStSet + 39, NTdist)
    mem.setint8(pStSet + 47, NTwalls)
    mem.setint8(pStSet + 56, NTshow)
end
Из-за чего ошибка?
 

savvin

Известный
407
140
@FYP В mimgui после некоторого времени кодировка внутри ListBox и Combo превращается в ад
Тестил много раз на разных скриптах, время через которое все полетит зависит, походу, от размера кода окна
1566687610872.png

Вот так создаю все:
Lua:
local imguiSelectGender = imgui.new.int(scriptConfig.mainSettings.playerGender)

local gendersNameArray = imgui.new
(
    'const char* const [2]',
    {
        u8'Мужской',
        u8'Женский'
    }
)

imgui.onFrame(
    function
        --
    end,
    function()
        -- begin
            -- begin child
                if imgui.Combo(u8'##gender', imguiSelectGender, gendersNameArray, 2) then
                    scriptConfig.mainSettings.playerGender = imguiSelectGender[0]
                    inicfg.save(scriptConfig)
                end
            -- end child
        -- end
    end
)
 

FYP

Известный
Автор темы
Администратор
1,758
5,725
@savvin потому что у тебя извлекаются указатели на временные строки, которые уничтожаются сборщиком мусора, в связи с чем указатель с этого момента указывает на освобождённую память и вместо строк выводится мусор.
правильно хранить сами строки, а не указатели на них:
Lua:
local gendersNameArray = imgui.new
(
    'const char[2][32]',
    {
        u8'Мужской',
        u8'Женский'
    }
)
 

savvin

Известный
407
140
@savvin потому что у тебя извлекаются указатели на временные строки, которые уничтожаются сборщиком мусора, в связи с чем указатель с этого момента указывает на освобождённую память и вместо строк выводится мусор.
правильно хранить сами строки, а не указатели на них:
Lua:
local gendersNameArray = imgui.new
(
    'const char[2][32]',
    {
        u8'Мужской',
        u8'Женский'
    }
)
Спасибо. Будет ли в скором времени тема для mimgui?

UPD: Появилась новая ошибка
bad argument #3 to 'Combo' (cannot convert 'const char [2][32]' to 'const char *const *')
Lua:
if imgui.Combo(u8'##gender', imguiSelectGender, gendersNameArray, 2) then
 
Последнее редактирование:

FYP

Известный
Автор темы
Администратор
1,758
5,725
Будет ли в скором времени тема для mimgui?
когда-нибудь будет.
UPD: Появилась новая ошибка
точно, функция ведь принимает массив указателей...
ну тогда в данном случае проще будет использовать ComboStr:
Lua:
imgui.ComboStr('##gender', imguiSelectGender, u8'Мужской\0Женский\0')