Сохранение игры

Начиная с версии 5.1.5 можно использовать плагин SaveGame. Он реализует систему сохранения, как это было сделано в оригинальном main.scm. Существует 2 режима работы: простой и продвинутый.

Простой режим

В этом режиме нам не нужно делать какие-либо дополнительные действия. Режим предполагает использование стандартных точек сохранения. Пример использования:

using GTA;
using GTA.Plugins;

public partial class MAIN : Thread {

    static SaveGame SAVE_GAME; // сохраняем ссылку на плагин, если нужно

    public override void START( LabelJump label ) {
        create_thread<SAVEGM>(); // создать поток, который контролирует сохранение
        end_thread();
    }

    //----------------------------------------------------------------------------------------------------

    public class SAVEGM : Thread {

        public override void START( LabelJump label ) {
            SAVE_GAME = new SaveGame(); // инициализация плагина
        }

    }

}

Плагин создаст пикапы сохранения в 18-ти стандартных местах.

Продвинутый режим

Этот режим позволяет настроить позиции пикапов вручную. Для этого в конструктор передайте анонимный метод:

using GTA;
using GTA.Plugins;

public partial class MAIN : Thread {

    static SaveGame SAVE_GAME; // сохраняем ссылку на плагин, если нужно

    public override void START( LabelJump label ) {
        create_thread<SAVEGM>(); // создать поток, который контролирует сохранение
        end_thread();
    }

    //----------------------------------------------------------------------------------------------------

    public class SAVEGM : Thread {

        public override void START( LabelJump label ) {

            SAVE_GAME = new SaveGame( setup => { // инициализация плагина
			
                setup.add_point( 2495.53, -1711.88, 1014.24, 2495.9, -1707.45, 1013.26, 0.0 ) // 0

                     .add_point( 1263.05, -773.67, 1091.39, 1263.76, -776.59, 1090.89, 183.23 ) // 1

                     .add_point( 416.9548, 2538.813, 9.5077, 418.0759, 2536.771, 9.0077, 269.2893 ) // 2

                               //   1        2          3          4         5           6         7       8
                     .add_point( 2367.192, -1121.518, 1050.382, 2367.072, -1123.715, 1049.875, 183.259, delegate { 
                         // действие...
                     } ); // 3

            } );

        }

    }

}

Объект setup даёт доступ к методу add_point, который добавляет новую точку для пикапа сохранения (дискеты). Первые три параметра отвечают за позицию самого пикапа. Следующие 3 указывают позицию, в которую будет передвинут игрок при сохранении. 7-й параметр позволяет развернуть игрока на нужный угол при сохранении. Последний параметр является опциональным. Мы можем указать дополнительное действие при добавлении точки. Это можно использовать, например, чтобы создать маркер на радаре.

Координаты пикапа и координаты перемещения игрока должны отличаться, чтобы избежать зацикливания вызова меню сохранения.

Этот плагин не создаёт маркеров!

Плагин может существовать только в одном экземпляре и требует отдельного потока (не MAIN).

Last updated