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

FYP

Известный
Автор темы
Администратор
1,757
5,684
Не знаю, говорил кто или нет, но вопрос с inicfg.save не закрыт после фикса.
Код:
moonloader\libstd\inicfg.lua:85: assertion failed!
stack traceback:
    [C]: in function 'assert'
    D:\Games\new\GTA San Andreas\moonloader\libstd\inicfg.lua:85: in function 'save'

Lua:
local config = inicfg.load({
    access_token = ""
})

function onScriptTerminate(script, quitGame)
    inicfg.save(config)
end

Заполнил файл в ручную и вот:
Код:
\libstd\inicfg.lua:52: parameter out of section
stack traceback:
    [C]: in function 'error'
    D:\Games\new\GTA San Andreas\moonloader\libstd\inicfg.lua:52: in function 'load'
INI:
access_token=test_token
у тебя ошибка в формате что в первом фрагменте, что во втором. наличие секции в ini обязательно.
Lua:
local config = inicfg.load({
    section = {
        access_token = "",
    },
})
INI:
[section]
access_token=""


@DolgorukovGTA скинь скрипт который вызывает проблему с рендером.
 
Последнее редактирование:

FYP

Известный
Автор темы
Администратор
1,757
5,684
Как такое фиксить? С интернетом всё вроде нормально. Даже AS удалил - всё по-прежнему.
Ошибка возникает не только при mimgui, но вообще при всех зависимостях...
похоже что менеджер зависимостей был установлен криво, возможно из-за установленной тестовой версии. удали его полностью (папки libstd, luarocks, luajit) и поставь заново.

Кодировка json-функций переведена на UTF-8 и крашит скрипт если передается кириллица в CP1251. Это будет фикситься в виде неявного преобразования или нет и нужно будет как сейчас, явно переводить кодировку = encodeJson({u8("Кириллица")}) ? Основная проблема этого - старые скрипты будут крашиться и их нужно переводить под эту особенность
видишь ли, дело в том, что и прошлая реализация, основанная на библиотеке lua-cjson, поддерживала только UTF-8 с той лишь разницей, что не выдавала ошибок при столкновении с некорректной utf-8 последовательностью, вместо чего любые данные записывались и читались как строка без проверки на корректность.
это указано в официальной документации функции decode (она же decodeJson в мунлоадере):
cjson.decode will deserialise any UTF-8 JSON string into a Lua value or table.
...
All escape codes will be decoded and other bytes will be passed transparently. UTF-8 characters are not validated during decoding and should be checked elsewhere if required.
и в документации к функции encode (encodeJson) в сноске Caution:
Lua CJSON will successfully encode/decode binary strings, but this is technically not supported by JSON and may not be compatible with other JSON libraries. To ensure the output is valid JSON, applications should ensure all Lua strings passed to cjson.encode are UTF-8.
...
к сожалению, в документации мунлоадера это не было отражено и разработчики использовали эти функции некорректно, передавая функциям не utf-8 строки, потому что это работало. а теперь в мунлоадере используется свой (де)сериализатор json в lua и другая библиотека для преобразования json, которая так же поддерживает только utf-8, но производит все проверки корректности и не позволяет их отключить.
на данный момент я вижу несколько вариантов решений:
  • сделать lua-cjson частью дистрибутива и функции encodeJson, decodeJson алиасами json.encode, json.decode (совсем нежелательно)
  • вернуть старое решение с lua-cjson обратно в мунлоадер (а вместе с ним и проблему, из-за которой оно было заменено)
  • с помощью костылей заставить используемую библиотеку проглатывать невалидный utf-8 без сопротивления
  • заменить используемую библиотеку другой, толерантной к некорректному utf-8 или поддерживающей однобайтовые кодировки
  • оставить всё как есть и наплевать на скрипты, которые ранее работали нормально лишь из-за отсутствия дополнительных проверок
надо подумать.
 

Gravitos

Активный
398
77
после перехода на 0.27 половина скриптов просто не работает, как пример тот же myvehiclemenu (не скомпиленный кстати)
 

CaMeS

Известный
136
11

Вложения

  • lib.rar
    2.9 MB · Просмотры: 25
Последнее редактирование:

Greeting5

Новичок
1
0
35914


Господа, помогите решить проблему, пожалуйста.
 

DolgorukovGTA

Известный
Проверенный
652
344

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,130
а теперь в мунлоадере используется свой (де)сериализатор json в lua и другая библиотека для преобразования json, которая так же поддерживает только utf-8
То есть, если писать скрипты с кодировкой UTF-8, то всё будет работать нормально или я чего-то не понимаю?