table newSaveData = onSaveGame(table saveData)
Срабатывает при сохранении игры, предназначено только для одиночной игры.
Таблица saveData
хранит данные сохранения, принадлежащие скрипту, они загружаются из JSON файла по пути <Documents>\GTA San Andreas User Files\MoonLoader\save<id>.json
,
где <Documents>
-- это папка документов пользователя, а <id>
-- номер сохранения от 1 до 8.
Принадлежность данных сохранения определяется названием скрипта, которое задаётся директивой script_name, либо именем файла, если название не задано.
Значение saveData
будет равно nil
, если данные сохранения отсутствуют.
Событие принимает возвращаемое значение -- таблицу, в которой хранятся новые данные сохранения, и если функция вернёт таблицу, то файл сохранения будет перезаписан (или создан) с новыми данными.
Файл сохранения не будет перезаписан, если из события onSaveGame
не было возвращено значение ни в одном из скриптов.
table saveData
данные сохранения
table newSaveData
новые данные сохранения
Счётчик сохранений:
function onSaveGame(save)
-- создаём новую таблицу, если значение save отсутствует
-- этот фрагмент является компактным аналогом кода
-- if save then save = save else save = {} end
save = save or {}
if save.save_counter then -- если в сохранении уже присутствует значение
-- то увеличиваем счётчик на единицу
save.save_counter = save.save_counter + 1
else -- если отсутствует
-- задаём единицу
save.save_counter = 1
end
-- 'return save' запишет новые данные сохранения в файл
return save
end
Другой пример использования в виде полноценного скрипта: CollectVehicles