Плохо! Плохо!:  0
Показано с 1 по 2 из 2

Тема: Постоянные данные

  1. #1

    По умолчанию Постоянные данные

    Постоянные данные
    Информация:
    Автор: Стрелок, он же Халфер, он же Стрелокхалфер
    Версия: 1.0
    Тип: Компонент для управления переменными

    Описание:
    Данный скрипт позволяет запоминать значения определенных переменных и переключателей в отдельный файл. Подходит, например, для возможности "Новая игра +"

    Код:
    Код:
    =begin
        Постоянные данные
        Автор: strelokhalfer
        При поддержке DeadElf
        Требования: Мозг и прямые руки :)
        Описание:
          Данный скрипт позволяет запоминать значения определенных переменных
          и переключателей в отдельный файл.
        Лицензия: 
        Скрипт защищён лицензией CC BY-NC-ND 4.0, что означает:
          Вы МОЖЕТЕ распространять скрипт, использовать в проектах, НО:
            Вы ОБЯЗАНЫ указать моё авторство.
            Вы НЕ МОЖЕТЕ использовать скрипт в коммерческих проектах,
              но вы МОЖЕТЕ узнать стоимость разрешения, написав мне на
                strelokhalfer@gmail.com
            Вы НЕ МОЖЕТЕ изменять данный скрипт или делать свой на основе этого.
        Использование:
          Можно использовать для создания "Новой игры+"
          Все настройки хранятся в модуле Settings
          Для добавления своей настройки, просто напишите новую строку:
          ["тип данных", "индекс", "id карты", "id события"]
          "тип данных" - может быть:
                         "switch"(переключатель)
                         "variable"(переменная)
                         "selfswitch"(Локальный переключатель)
          "индекс" - если это переключатель или переменная, то это номер в
                     базе данных. Если локальный переключатель, то это буква.
          "id карты" - для локальных переключателей.
          "id события" - для локальных переключателей.
    =end
    #РЕДАКТИРОВАТЬ ТОЛЬКО В ЭТОМ МОДУЛЕ
    module Settings
      PERSISTENT = [
      #Не забывайте ставить запятые!
      ["switch", 1],
      ["selfswitch", "A", 1, 1],
      ["variable", 1]
      ]
    end
    #НАСТРОЙКИ КОНЧИЛИСЬ
    #~ Модуль данных
    module DataManager
      def self.saveper  #Метод сохранения
        File.open("Persistent.rvdata2", "wb") do |file|
          $game_system.on_before_save
          Marshal.dump(make_persistent_contents, file)
        end
      end
      #--------------------------------------------------------------------------
      # * Execute Load (No Exception Processing)
      #--------------------------------------------------------------------------
      def self.loadper
        if (File.exist?("Persistent.rvdata2"))
          File.open("Persistent.rvdata2", "rb") do |file|
            extract_persistent_contents(Marshal.load(file))
          end
        else
          saveper
        end
        return true
      end
     
      def self.make_persistent_contents
        persistent=[] 
        Settings::PERSISTENT.each_index { |i|
          data = Settings::PERSISTENT[i]
          case data[0].to_s
            when 'switch'
              persistent.push( [ data[0], data[1], $game_switches[ data[1] ] ]) # вгоняем новый элемент с данными
            when 'variable'
              persistent<<[ data[0], data[1], $game_variables[ data[1] ]]# выглядит по другому, но работает точно также
            when 'selfswitch'
              persistent<<[ data[0], data[2], data[3], data[1], $game_self_switches[ [ data[2], data[3], data[1] ] ] ]
          end
        }
        persistent
      end
      
      def self.extract_persistent_contents(persistent)
        persistent.each{|data|
        case data[0].to_s
          when 'switch'
            $game_switches[ data[1] ] = data[2]
          when 'variable'
            $game_variables[ data[1] ] = data[2]
          when 'selfswitch'
            $game_self_switches[ [ data[1], data[2], data[3] ] ] = data[4]
          end
        }
      end
      class << self
        alias old_create_game_objects create_game_objects
        def create_game_objects
          old_create_game_objects
          loadper
        end
      end
    end
     
    #~ Переопределяю действие при сохранении
    class Scene_Save
      alias mody_savefile_ok on_savefile_ok #Делаю псевдоним метода
      def on_savefile_ok
        mody_savefile_ok  #Сохранить игру
        DataManager.saveper #Сохранить данные
      end
    end
     
    #~ Сохранить данные при выходе из игры
    class Scene_End
      alias title_psave command_to_title #Делаю псевдоним метода
      def command_to_title
        DataManager.saveper #Сохранить данные
        title_psave #Оригинальный метод
      end
      alias mody_shutdown command_shutdown #Делаю псевдоним метода
      def command_shutdown
        DataManager.saveper #Сохранить данные
        mody_shutdown #Оригинальный метод
      end  
    end
    Скачать:
    Демо (Архив 7z, 1.3 МБ).

    Благодарности:
    DeadElf79 за помощь с хэш-таблицами и загрузкой.

  2. #2
    Познающий Аватар для Deme
    Информация о пользователе
    Регистрация
    16.05.2014
    Сообщений
    317
    Записей в дневнике
    16
    Репутация: 4 Добавить или отнять репутацию

    По умолчанию

    NC (запрет на коммерческое использование) я ещё могу понять, всех нас прельщает презренный металл.

    Но ND (запрет на изменение) то зачем?
    «quī legis ista, tuam reprehendō, mea laudās // omnia, stultitiam; / nihil, invidiam» (Jōhannis Audoenī)
    'Ты, кто читает это: я порицаю, если ты хвалишь у меня // всё, твою глупость; / если ничего — твою злобу.' (Джон Оуэн)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Постоянные данные