Информация MoonLoader - разработка

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
вспомнил сейчас про видео, которое записывал во время разработки для демонстрации работы автоперезагрузки скриптов.
классное.
В какой программе пишешь?
 

uryukhai

Активный
196
104
после перезапуска скрипта с помощью autoreboot бывает не загружаются библиотеки
Код:
[ML] (script) ML-AutoReboot: Loading "D:\Games\GTASAMP\moonloader\sms.lua"...
[ML] (system) sms.lua: Script terminated. (01A7C8FC)
[ML] (system) Loading script 'D:\Games\GTASAMP\moonloader\sms.lua'...
[ML] (error) sms.lua: D:\Games\GTASAMP\moonloader\sms.lua:1: module 'vkeys' not found:
    no field package.preload['vkeys']
    no file 'D:\Games\GTASAMP\moonloader\lib\vkeys.lua'
    no file 'D:\Games\GTASAMP\moonloader\lib\vkeys\init.lua'
    no file 'D:\Games\GTASAMP\moonloader\vkeys.lua'
    no file 'D:\Games\GTASAMP\moonloader\vkeys\init.lua'
    no file '.\vkeys.lua'
    no file 'D:\Games\GTASAMP\moonloader\lib\vkeys.luac'
    no file 'D:\Games\GTASAMP\moonloader\lib\vkeys\init.luac'
    no file 'D:\Games\GTASAMP\moonloader\vkeys.luac'
    no file 'D:\Games\GTASAMP\moonloader\vkeys\init.luac'
    no file '.\vkeys.luac'
    no file 'D:\Games\GTASAMP\moonloader\lib\vkeys.dll'
stack traceback:
    [C]: in function 'require'
    D:\Games\GTASAMP\moonloader\sms.lua:1: in main chunk
[ML] (error) sms.lua: Script died due to an error. (096C6F74)
UPD: ещё краш
Код:
[ML] (script) ML-AutoReboot: Loading "D:\Games\GTASAMP\moonloader\imgui_notf.lua"...
[ML] (system) Loading script 'D:\Games\GTASAMP\moonloader\imgui_notf.lua'...
[ML] (error) imgui_notf.lua: D:\Games\GTASAMP\moonloader\imgui_notf.lua:1: module 'imgui' not found:
    no field package.preload['imgui']
    no file 'D:\Games\GTASAMP\moonloader\lib\imgui.lua'
    no file 'D:\Games\GTASAMP\moonloader\lib\imgui\init.lua'
    no file 'D:\Games\GTASAMP\moonloader\imgui.lua'
    no file 'D:\Games\GTASAMP\moonloader\imgui\init.lua'
    no file '.\imgui.lua'
    no file 'D:\Games\GTASAMP\moonloader\lib\imgui.luac'
    no file 'D:\Games\GTASAMP\moonloader\lib\imgui\init.luac'
    no file 'D:\Games\GTASAMP\moonloader\imgui.luac'
    no file 'D:\Games\GTASAMP\moonloader\imgui\init.luac'
    no file '.\imgui.luac'
    no file 'D:\Games\GTASAMP\moonloader\lib\imgui.dll'
stack traceback:
    [C]: in function 'require'
    D:\Games\GTASAMP\moonloader\imgui_notf.lua:1: in main chunk
[ML] (error) imgui_notf.lua: Script died due to an error. (096C7594)
+, иногда нужно по 2 раза сохранять скрипт, чтобы он загрузился (может из-за постоянно разных ошибок, может из-за длительной работы, не знаю)
 

Quasper

Известный
834
354
VS Code Snippets
Добавляет подсказки при написании функций Moonloader'a в VS Code

На данный момент содержит 1935 автокомплитов, взятых из вики мунлоадера

Как установить:
Нажимаем win+r, в появившемся окне пишем %APPDATA%\Code\User\snippets и жмем enter
В эту папку перемещаем скачанный ниже файл
Готово!!!

Между параметрами команды можно перемещаться, нажимая tab

Также для того, чтобы показывалось описание команды (на скрине - блок справа от функции), необходимо один раз нажать ctrl+space

Cкрины
yThfZjE.png


1U5GJhH.png

Ссылка на скачивание: MEGA(https://mega.nz/#!OdN2RaoD!gpXho6fVdh7vjBYhmiEBgmM2_gN30xu-wl1161SHUMM)

установочка немножко поменялась, исправь)
 

FYP

Известный
Автор темы
Администратор
1,758
5,728
Сделайте что-нибудь с lua - sampgetplayernickname | BlastHack — DEV_WIKI(https://blast.hk/wiki/lua:sampgetplayernickname). Если дать функции id игрока оффлайн, игра вылетит, забив память до 1.3 гб. Пусть возвращает nil, если не sampIsPlayerConnected(int id). Полтора часа убил на поиск проблемы :monkey:
это опкод sampfuncs, поэтому фиксить нужно в самом сф, а на него всем похуй. кроме того, отсутствие проверок идентификаторов касается и многих других опкодов, так что в случаях когда нет уверенности, что идентификатор валидный, нужно всегда проверять его.
 
  • Нравится
Реакции: qrlk

imring

Ride the Lightning
Всефорумный модератор
2,354
2,516
это опкод sampfuncs, поэтому фиксить нужно в самом сф, а на него всем похуй. кроме того, отсутствие проверок идентификаторов касается и многих других опкодов, так что в случаях когда нет уверенности, что идентификатор валидный, нужно всегда проверять его.
делал сф на луа (и продолжаю делать), и вот исправил это.
Lua:
-- вырезка с либы
function sf.sampGetPlayerNickname(id)
    assert(sf.isSampAvailable(), 'SA-MP is not available.')
    assert(tonumber(id), 'ID "'..tostring(id)..'" is not int.')
    local id = tonumber(id)
    local char
    if sf.sampGetLocalPlayerId() == id then char = ffi.cast('const char*', st_player.strLocalPlayerName)
    elseif sf.sampIsPlayerConnected(id) then char = ffi.cast('const char*', st_player.pRemotePlayer[id].strPlayerName) end
    return char and ffi.string(char)
end
щас попытаюсь сделать это без ffi.
 
1,417
1,029
действительно, лучше же переписать всю функцию, чем поставить одну проверку.