Постоянные данные

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
11 года 3 мес. назад - 10 года 8 мес. назад #77644 от strelokhalfer
Постоянные данные
Информация:
Автор: Стрелок, он же Халфер, он же Стрелокхалфер
Версия: 1.0
Тип: Компонент для управления переменными

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

Код:
Code:
=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 за помощь с хэш-таблицами и загрузкой.

"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 10 года 8 мес. назад пользователем strelokhalfer. Причина: Обновлено демо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
11 года 3 мес. назад #77645 от Lekste
Lekste ответил в теме Постоянные данные
Круто. Хотя лучше было бы сделать какой-нибудь префикс к имени сохраняемого свитча и определять, какие из них сохранять, автоматически.
Было б проще использовать и более понятно для пользователей.
Спасибо сказали: DeadElf79

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 3 мес. назад #77646 от DeadElf79
DeadElf79 ответил в теме Постоянные данные
На будущее , Стрелок ^_^

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
11 года 3 мес. назад - 11 года 3 мес. назад #77648 от strelokhalfer
Я не понял, как имя получить.
Но на будущее возьму.
Йелф, ну ты(
У меня же все в шапке скрипта описано. или мне в пост вынести?

"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 11 года 3 мес. назад пользователем strelokhalfer.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 3 мес. назад #77649 от DeadElf79
DeadElf79 ответил в теме Постоянные данные
Стрелок, у нас все скрипты так оформляются со времени вступления шаблона в действие и утверждения его администрацией) Выноси в пост, никто не читает инструкций в скриптах ^_^

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
11 года 3 мес. назад #77656 от strelokhalfer
Чуток пофиксил скрипт и добавил шапку.

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Программист JavaScript Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место Учитель Оратор Ветеран Даритель Стимкея 2 место Программист Ruby Паладин
Больше
11 года 3 мес. назад #77657 от DK
DK ответил в теме Постоянные данные
если про имя переключателей/переменных, то можно так: $data_system.switches[data_id]
Спасибо сказали: strelokhalfer

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
10 года 8 мес. назад #84401 от strelokhalfer
Обновлено демо и скрипт.

"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Спасибо сказали: AnnTenna

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.102 секунд
Работает на Kunena форум