Версия | Изменения | Дата |
.026.4-beta | | 09.04.2018 |
.026.3-beta | | 30.03.2018 |
.026.2-beta | | 12.03.2018 |
.026.1-beta |
Исправлено зависание игры при запуске у некоторых пользователей
Исправлена обработка чёрного цветового тега "{000000}" в renderFontDrawText и других функциях
Исправлен баг со скриптовыми потоками, из-за которого потоки без задержек внутри выполнялись дважды
| 12.03.2018 |
.026-beta |
Новое
-
Значительно улучшена обработка ошибок
Опкоды CLEO для работы с аудиофайлами заменены встроенными функциями
Опкоды SAMPFUNCS для рисования 2D-элементов на экране заменены встроенными функциями
При загрузке и старте новой игры, если игра уже начата, все загруженные скрипты будут автоматически перезагружены, за исключением тех, у которых задано свойство forced-reloading-only
-
-
-
-
-
Изменения
Скрипт будет продолжать исполнение, пока в нём есть работающие потоки, даже если выполнение main завершилось и в скрипте нет зарегистрированных событий
Вызов script_moonloader будет приводить к завершению скрипта с ошибкой, если версия MoonLoader меньше требуемой
-
В функцию renderCreateFont добавлен необязательный аргумент charset , позволяющий указать желаемую кодировку
-
Функция getGameVersion возвращает более детальную информацию о версии игры
Исправления
| 11.03.2018 |
.025-beta |
Новое
Исправления
-
Исправлен сброс параметра work_in_pause при перезапуске активного потока
Изменения
| 18.11.2017 |
.024-beta |
Новое
Изменения
Обновлены внутренние зависимости. Много исправлений и из заметных изменений - добавилась трассировка стека при ошибке в скрипте
-
Отныне функции-опкоды регистрируются в скрипте сразу же после загрузки файла и проверки его на синтаксические ошибки. Функция isOpcodesAvailable больше не нужна
Уменьшен внутренний размер буфера эмулятора SCM-опкодов, благодаря чему снижена потребляемость памяти скриптами
Скрипты больше не будут выгружаться автоматически при наличии в них обработчиков событий
Исправления
Некоторые внутренние хуки сделаны потокобезопасными для совместимости с внешними модификациями - исправляет рандомные вылеты у некоторых пользователей
Устранена проблема загрузки asi-плагинов из подпапки scripts
-
Исправлен баг в RakNet-событиях, приводящий к вылету при возникновении ошибки внутри обработчика
Исправлен вылет при вызове функции print без аргументов
Исправлены функции загрузки шрифтов и текстур SAMPFUNCS - неудачная загрузка ресурса могла приводить к UB
Исправлена выгрузка хэндла поиска файлов - если была использована функция findClose, хэндл освобождался повторно сборщиком мусора
Исправлен баг, из-за которого события, зарегистрированные функцией addEventHandler, не засчитывались
-
| 02.11.2017 |
.023-beta |
Изменения и нововведения:
Обновлён LuaJIT до версии 2.0.5
Добавлена система взаимодействия между скриптами на основе экспорта и импорта
-
функция import для получения экспортов скрипта по названию файла; в т.ч. и загружает скрипт, если он не загружен
-
Система сохранений для одиночной игры:
-
событие onLoadGame - срабатывает при загрузке сохранённой игры
событие onSaveGame - срабатывает при сохранении игры
Добавлена система активной проверки целостности хуков и патчей MoonLoader-а, чтобы можно было отследить нарушения в работе из-за других модов
Добавлено автоматическое высвобождение загруженных шрифтов и текстур SAMPFUNCS при завершении работы скрипта
-
-
Добавлено свойство LuaScript.id, возвращающее уникальный идентификатор скрипта, а также функция script.get для получения скрипта по идентификатору
-
-
Добавлены функции для чтения беззнаковых целых чисел в модуль memory
Изменён порядок поиска скрипта по названию файла для функции script.load с абсолютный путь → рабочая директория\путь → … на рабочая директория\путь → абсолютный путь → …
Изменения в наборе стандартных библиотек:
добавлен полный список всех виртуальных клавиш и вспомогательные функции для получения названий и поиска по названиям клавиш
-
список виртуальных клавиш перенесён в отдельный модуль vkeys.lua , который возвращает таблицу, а не создаёт переменные в глобальной области, однако moonloader.lua автоматически экспортирует все коды клавиш в глобальную область при загрузке для обеспечения совместимости
-
добавлен модуль game/weapons.lua , содержащий список всех оружий и их названий, и функции для получения названия по иду
Исправления:
Устранена проблема обновления статусов нажатости клавиш, когда окно игры теряло фокус
-
Исправлен пропущенный символ ';' в package.path – это приводило к проблеме загрузки скомпилированных Lua-модулей
Исправлен баг регистрации событий, из-за которого можно было регистрировать значение любого типа как событие, что приводило бы к вылету
| 06.06.2017 |
.022-alpha |
Некоторые внутренние изменения для большей совместимости с другими модификациями, добавлены диагностические тесты для выявления конфликтов
При падении скрипта из-за ошибки выполнения опкода теперь выводится идентификатор этого опкода
Исправлена проблема из-за которой скрипты не работали в фоновом режиме с модом на антипаузу
Сам плагин больше не включает в себя ядро Lua, а подключает его через lua51.dll , тем самым позволяя использовать модули уже собранные под Lua 5.1 и LuaJIT 2.0, и собирать их самостоятельно без изменения конфигурации
Добавлены пути поиска скомпилированных Lua-скриптов с расширением .luac для функций require и script.load
Изменены пути загрузки dll-модулей - по умолчанию dll-модули будут загружаться только из директории moonloader\lib\
Событие onWindowMessage больше не имеет возвращаемого параметра processScriptKeyhook , вместо этого функция consumeWindowMessage принимает второй необязательный аргумент, который отвечает за эту возможность
При выходе из игры скрипты выгружаются немного раньше полного завершения процесса, это должно избавить от некоторых проблем, которые могли возникнуть при использовании событий onScriptTerminate и onExitScript
События onScriptTerminate и onExitScript теперь имеют дополнительный аргумент quitGame , который имеет значение true , если скрипт завершается в связи с выходом из игры
Добавлены встроенные константы PLAYER_HANDLE и PLAYER_PED , являющиеся аналогом playerHandle и playerPed
Функция localClock возвращает время в зависимости от свойства workInPause потока, из которого была вызвана. Это правило распространяется и на основной поток скрипта
Исправлен баг, из-за которого свойство потока workInPause не применялось при перезапуске этого потока функцией lua_thread:run
Функция lua_thread.create больше не принимает логическое значение, отвечающее за запуск потока приостановленным
-
-
-
| 12.03.2017 |
.021-alpha | | 23.12.2016 |
.020-alpha |
Устранена проблема несовместимости добавленных скриптами GXT-записей с одиночной игрой
Глобальные внутренние изменения: общая оптимизация системы событий, улучшена обработка ошибок
Исправлен вывод сообщения об ошибке при загрузке скрипта
Добавлена возможность создания дополнительных обработчиков событий с помощью новой функции addEventHandler
Улучшена работа событий onSystemMessage и onScriptMessage - все сообщения добавляются в очередь и затем обрабатываются, благодаря чему будут обработаны все сообщения и в правильном порядке
| 26.11.2016 |
.019-alpha |
Добавлена функция fill в модуль memory
Добавлено событие оконных сообщений onWindowMessage
Функция convertScreenCoordsToWorld3d переименована в convertScreenCoordsToWorld3D
Функция cleoSwitchCarEngine переименована в switchCarEngine
Исправлена проверка длины в функциях writeMemory и readMemory
Новые функции
Изменения в функциях
Память, выделенная с помощью allocateMemory, освобождается при выгрузке скрипта
Хендл поиска файлов функции findFirstFile освобождается автоматически сборщиком мусора
Функции findFirstFile и findNextFile не возвращают результат выполнения, вместо этого первым аргументом возвращается nil, если поиск был завершён или не может быть начат из-за ошибки
Функции findAllRandomCharsInSphere, findAllRandomObjectsInSphere и printHelpString теперь совместимы с SA:MP
Функция downloadUrlToFile третьим аргументом принимает калбэк, который будет вызываться, сигнализируя о статусе закачки, таким образом можно отслеживать весь процесс загрузки и в любой момент отменить её
Функции callFunction, callMethod принимают динамическое количество аргументов вместо таблицы и в правильном порядке, всегда возвращают значение возврата. Добавилась возможность передачи указателей на значения
Добавлен аргумент shootThrough и возврат типа сущности (entityType) в processLineOfSight
Изменен тип аргументов и возвращаемых значений convertScreenCoordsToWorld3D, convert3DCoordsToScreen, convertWindowScreenCoordsToGameScreenCoords и convertGameScreenCoordsToWindowScreenCoords на дробный
getClipboardText возвращает nil, если буфер обмена пуст или не может быть прочитан. Не нужно указывать размер читаемого текста
Удалены опкоды
getTextLabelString
addTextLabel
removeTextLabel
getDownloadState
releaseDownload
callFunctionReturn
callMethodReturn
Большинство опкодов CLEO заменено встроенными функциями
Часть опкодов SAMPFUNCS заменена встроенными функциями
| 13.11.2016 |
.018-alpha | | 04.10.2016 |
.017-alpha | | 20.09.2016 |
.016-alpha |
Удалена функция 'chdir'
Добавлена возможность сравнения объектов информации о скрипте (напр. thisScript() == script.find("name"))
Функция print теперь может выводить значения любого типа
Исправлен баг, вызывающий некорректное поведение обработчиков команд чата и консоли
Исправлен вызов события 'onExitScript'
Исправлена функция 'raknetBitStreamDecodeString'
Некоторые функции CLEO были заменены встроенными, внешних различий не имеют, так что полностью совместимы:
| 30.08.2016 |
.015-alpha | Первый релиз | 08.08.2016 |