Есть возможность реализовать сериализацию / десериализацию произвольных данных во внешнее (абстрактное) хранилище. Основной смысл всего этого - возможность рестарта MP-сервера с последующим восстановлением прогресса (например, для rpg-style миссий), в том числе - с динамической сериализацией / десериализацией прямо в процессе игры.
В коде это выглядит примерно так:
Code
// сохранение данных
variable = [1,2, "text"];
["userState1", variable] call AOS_SERIALIZE;
// Загрузка данных
variable = ["userState1"] call AOS_DESERIALIZE;
Сохрание / восстановление данных из внешнего хранилища
Есть возможность реализовать сериализацию / десериализацию произвольных данных во внешнее (абстрактное) хранилище. Основной смысл всего этого - возможность рестарта MP-сервера с последующим восстановлением прогресса (например, для rpg-style миссий), в том числе - с динамической сериализацией / десериализацией прямо в процессе игры.
В коде это выглядит примерно так:
Код:
// сохранение данных
variable = [1,2, "text"];
["userState1", variable] call AOS_SERIALIZE;
// Загрузка данных
variable = ["userState1"] call AOS_DESERIALIZE;
При сохранении данных нужно указать ключ-строку, по которой потом можно будет идентифицировать данные для загрузки.
Данные при сохранении перезаписываются поверх существующих данных, связанных с этим ключом. Ключи привязываются к карте (для разных карт можно хранить разные сохраненные состояния).
При загрузке, если данных по такому ключу нет, то вернется пустой массив []. Если что-то пошло не так при загрузке - вернется nil.
При вызове функций сериализации/десериализации используется блокировка одновременного доступа, так что вызывать функции следует только из параллельных потоков.
Для подключения функционала достаточно просто скомпилировать файл или подключить его любым удобным способом.
Для мониторинга сообщений и сохранения используется внешняя мониторилка. Ее нужно держать запущенной все время работы армы.
Для работы монитора требуется MS .Net Framework 3.5 SP1.
Путь до хранилища настраивается в конфиге (файлик с расширением .config, должен лежать в каталоге с монитором).
З.Ы. Для альтернативно одаренных: "Что такое сериализация?"
Автор: Leopotam