Created
December 6, 2013 11:40
-
-
Save aoitaku/7822424 to your computer and use it in GitHub Desktop.
RPGツクールVXAceの.rvdata2ファイルをYAMLと相互変換するスクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# rgss.rb | |
# author: aoitaku <Twitter:@aoitaku> | |
# | |
# 本プログラムは、RPGツクールVXAceでの利用を目的とした場合においてのみ | |
# 利用できます。 | |
# その際の利用条件は、RPGツクールVXAceの利用規約に従ってください。 | |
class Color | |
attr_accessor :red, :green, :blue, :alpha | |
def initialize(data) | |
@red, @green, @blue, @alpha = *data | |
end | |
def _dump(limit) | |
[@red, @green, @blue, @alpha].pack("EEEE") | |
end | |
def self._load(obj) | |
Color.new(obj.unpack("EEEE")) | |
end | |
end | |
class Table | |
def initialize(data) | |
@num_of_dimensions, | |
@xsize, @ysize, @zsize, | |
@num_of_elements, | |
*@elements = *data | |
if @num_of_dimensions > 1 | |
if @xsize > 1 | |
@elements = @elements.each_slice(@xsize).to_a | |
else | |
@elements = @elements.map{|element|[element]} | |
end | |
end | |
if @num_of_dimensions > 2 | |
if @ysize > 1 | |
@elements = @elements.each_slice(@ysize).to_a | |
else | |
@elements = @elements.map{|element|[element]} | |
end | |
end | |
end | |
def _dump(limit) | |
[@num_of_dimensions, | |
@xsize, @ysize, @zsize, | |
@num_of_elements, | |
*@elements.flatten].pack("VVVVVv*") | |
end | |
def self._load(obj) | |
Table.new(obj.unpack("VVVVVv*")) | |
end | |
end | |
class Tone | |
attr_accessor :red, :green, :blue, :gray | |
def initialize(data) | |
@red, @green, @blue, @gray = *data | |
end | |
def _dump(limit) | |
[@red, @green, @blue, @gray].pack("EEEE") | |
end | |
def self._load(obj) | |
Tone.new(obj.unpack("EEEE")) | |
end | |
end | |
module RPG | |
end | |
class RPG::Map | |
def initialize(width, height) | |
@display_name = '' | |
@tileset_id = 1 | |
@width = width | |
@height = height | |
@scroll_type = 0 | |
@specify_battleback = false | |
@battleback_floor_name = '' | |
@battleback_wall_name = '' | |
@autoplay_bgm = false | |
@bgm = RPG::BGM.new | |
@autoplay_bgs = false | |
@bgs = RPG::BGS.new('', 80) | |
@disable_dashing = false | |
@encounter_list = [] | |
@encounter_step = 30 | |
@parallax_name = '' | |
@parallax_loop_x = false | |
@parallax_loop_y = false | |
@parallax_sx = 0 | |
@parallax_sy = 0 | |
@parallax_show = false | |
@note = '' | |
@data = Table.new(width, height, 4) | |
@events = {} | |
end | |
attr_accessor :display_name | |
attr_accessor :tileset_id | |
attr_accessor :width | |
attr_accessor :height | |
attr_accessor :scroll_type | |
attr_accessor :specify_battleback | |
attr_accessor :battleback1_name | |
attr_accessor :battleback2_name | |
attr_accessor :autoplay_bgm | |
attr_accessor :bgm | |
attr_accessor :autoplay_bgs | |
attr_accessor :bgs | |
attr_accessor :disable_dashing | |
attr_accessor :encounter_list | |
attr_accessor :encounter_step | |
attr_accessor :parallax_name | |
attr_accessor :parallax_loop_x | |
attr_accessor :parallax_loop_y | |
attr_accessor :parallax_sx | |
attr_accessor :parallax_sy | |
attr_accessor :parallax_show | |
attr_accessor :note | |
attr_accessor :data | |
attr_accessor :events | |
end | |
class RPG::Map::Encounter | |
def initialize | |
@troop_id = 1 | |
@weight = 10 | |
@region_set = [] | |
end | |
attr_accessor :troop_id | |
attr_accessor :weight | |
attr_accessor :region_set | |
end | |
class RPG::MapInfo | |
def initialize | |
@name = '' | |
@parent_id = 0 | |
@order = 0 | |
@expanded = false | |
@scroll_x = 0 | |
@scroll_y = 0 | |
end | |
attr_accessor :name | |
attr_accessor :parent_id | |
attr_accessor :order | |
attr_accessor :expanded | |
attr_accessor :scroll_x | |
attr_accessor :scroll_y | |
end | |
class RPG::Event | |
def initialize(x, y) | |
@id = 0 | |
@name = '' | |
@x = x | |
@y = y | |
@pages = [RPG::Event::Page.new] | |
end | |
attr_accessor :id | |
attr_accessor :name | |
attr_accessor :x | |
attr_accessor :y | |
attr_accessor :pages | |
end | |
class RPG::Event::Page | |
def initialize | |
@condition = RPG::Event::Page::Condition.new | |
@graphic = RPG::Event::Page::Graphic.new | |
@move_type = 0 | |
@move_speed = 3 | |
@move_frequency = 3 | |
@move_route = RPG::MoveRoute.new | |
@walk_anime = true | |
@step_anime = false | |
@direction_fix = false | |
@through = false | |
@priority_type = 0 | |
@trigger = 0 | |
@list = [RPG::EventCommand.new] | |
end | |
attr_accessor :condition | |
attr_accessor :graphic | |
attr_accessor :move_type | |
attr_accessor :move_speed | |
attr_accessor :move_frequency | |
attr_accessor :move_route | |
attr_accessor :walk_anime | |
attr_accessor :step_anime | |
attr_accessor :direction_fix | |
attr_accessor :through | |
attr_accessor :priority_type | |
attr_accessor :trigger | |
attr_accessor :list | |
end | |
class RPG::Event::Page::Condition | |
def initialize | |
@switch1_valid = false | |
@switch2_valid = false | |
@variable_valid = false | |
@self_switch_valid = false | |
@item_valid = false | |
@actor_valid = false | |
@switch1_id = 1 | |
@switch2_id = 1 | |
@variable_id = 1 | |
@variable_value = 0 | |
@self_switch_ch = 'A' | |
@item_id = 1 | |
@actor_id = 1 | |
end | |
attr_accessor :switch1_valid | |
attr_accessor :switch2_valid | |
attr_accessor :variable_valid | |
attr_accessor :self_switch_valid | |
attr_accessor :item_valid | |
attr_accessor :actor_valid | |
attr_accessor :switch1_id | |
attr_accessor :switch2_id | |
attr_accessor :variable_id | |
attr_accessor :variable_value | |
attr_accessor :self_switch_ch | |
attr_accessor :item_id | |
attr_accessor :actor_id | |
end | |
class RPG::Event::Page::Graphic | |
def initialize | |
@tile_id = 0 | |
@character_name = '' | |
@character_index = 0 | |
@direction = 2 | |
@pattern = 0 | |
end | |
attr_accessor :tile_id | |
attr_accessor :character_name | |
attr_accessor :character_index | |
attr_accessor :direction | |
attr_accessor :pattern | |
end | |
class RPG::EventCommand | |
def initialize(code = 0, indent = 0, parameters = []) | |
@code = code | |
@indent = indent | |
@parameters = parameters | |
end | |
attr_accessor :code | |
attr_accessor :indent | |
attr_accessor :parameters | |
end | |
class RPG::MoveRoute | |
def initialize | |
@repeat = true | |
@skippable = false | |
@wait = false | |
@list = [RPG::MoveCommand.new] | |
end | |
attr_accessor :repeat | |
attr_accessor :skippable | |
attr_accessor :wait | |
attr_accessor :list | |
end | |
class RPG::MoveCommand | |
def initialize(code = 0, parameters = []) | |
@code = code | |
@parameters = parameters | |
end | |
attr_accessor :code | |
attr_accessor :parameters | |
end | |
class RPG::BaseItem | |
def initialize | |
@id = 0 | |
@name = '' | |
@icon_index = 0 | |
@description = '' | |
@features = [] | |
@note = '' | |
end | |
attr_accessor :id | |
attr_accessor :name | |
attr_accessor :icon_index | |
attr_accessor :description | |
attr_accessor :features | |
attr_accessor :note | |
end | |
class RPG::Actor < RPG::BaseItem | |
def initialize | |
super | |
@nickname = '' | |
@class_id = 1 | |
@initial_level = 1 | |
@max_level = 99 | |
@character_name = '' | |
@character_index = 0 | |
@face_name = '' | |
@face_index = 0 | |
@equips = [0,0,0,0,0] | |
end | |
attr_accessor :nickname | |
attr_accessor :class_id | |
attr_accessor :initial_level | |
attr_accessor :max_level | |
attr_accessor :character_name | |
attr_accessor :character_index | |
attr_accessor :face_name | |
attr_accessor :face_index | |
attr_accessor :equips | |
end | |
class RPG::Class < RPG::BaseItem | |
def initialize | |
super | |
@exp_params = [30,20,30,30] | |
@params = Table.new(8,100) | |
(1..99).each do |i| | |
@params[0,i] = 400+i*50 | |
@params[1,i] = 80+i*10 | |
(2..5).each {|j| @params[j,i] = 15+i*5/4 } | |
(6..7).each {|j| @params[j,i] = 30+i*5/2 } | |
end | |
@learnings = [] | |
@features.push(RPG::BaseItem::Feature.new(23, 0, 1)) | |
@features.push(RPG::BaseItem::Feature.new(22, 0, 0.95)) | |
@features.push(RPG::BaseItem::Feature.new(22, 1, 0.05)) | |
@features.push(RPG::BaseItem::Feature.new(22, 2, 0.04)) | |
@features.push(RPG::BaseItem::Feature.new(41, 1)) | |
@features.push(RPG::BaseItem::Feature.new(51, 1)) | |
@features.push(RPG::BaseItem::Feature.new(52, 1)) | |
end | |
attr_accessor :exp_params | |
attr_accessor :params | |
attr_accessor :learnings | |
end | |
class RPG::Class::Learning | |
def initialize | |
@level = 1 | |
@skill_id = 1 | |
@note = '' | |
end | |
attr_accessor :level | |
attr_accessor :skill_id | |
attr_accessor :note | |
end | |
class RPG::UsableItem < RPG::BaseItem | |
def initialize | |
super | |
@scope = 0 | |
@occasion = 0 | |
@speed = 0 | |
@success_rate = 100 | |
@repeats = 1 | |
@tp_gain = 0 | |
@hit_type = 0 | |
@animation_id = 0 | |
@damage = RPG::UsableItem::Damage.new | |
@effects = [] | |
end | |
attr_accessor :scope | |
attr_accessor :occasion | |
attr_accessor :speed | |
attr_accessor :animation_id | |
attr_accessor :success_rate | |
attr_accessor :repeats | |
attr_accessor :tp_gain | |
attr_accessor :hit_type | |
attr_accessor :damage | |
attr_accessor :effects | |
end | |
class RPG::Skill < RPG::UsableItem | |
def initialize | |
super | |
@scope = 1 | |
@stype_id = 1 | |
@mp_cost = 0 | |
@tp_cost = 0 | |
@message1 = '' | |
@message2 = '' | |
@required_wtype_id1 = 0 | |
@required_wtype_id2 = 0 | |
end | |
attr_accessor :stype_id | |
attr_accessor :mp_cost | |
attr_accessor :tp_cost | |
attr_accessor :message1 | |
attr_accessor :message2 | |
attr_accessor :required_wtype_id1 | |
attr_accessor :required_wtype_id2 | |
end | |
class RPG::Item < RPG::UsableItem | |
def initialize | |
super | |
@scope = 7 | |
@itype_id = 1 | |
@price = 0 | |
@consumable = true | |
end | |
attr_accessor :itype_id | |
attr_accessor :price | |
attr_accessor :consumable | |
end | |
class RPG::EquipItem < RPG::BaseItem | |
def initialize | |
super | |
@price = 0 | |
@etype_id = 0 | |
@params = [0] * 8 | |
end | |
attr_accessor :price | |
attr_accessor :etype_id | |
attr_accessor :params | |
end | |
class RPG::Weapon < RPG::EquipItem | |
def initialize | |
super | |
@wtype_id = 0 | |
@animation_id = 0 | |
@features.push(RPG::BaseItem::Feature.new(31, 1, 0)) | |
@features.push(RPG::BaseItem::Feature.new(22, 0, 0)) | |
end | |
attr_accessor :wtype_id | |
attr_accessor :animation_id | |
end | |
class RPG::Armor < RPG::EquipItem | |
def initialize | |
super | |
@atype_id = 0 | |
@etype_id = 1 | |
@features.push(RPG::BaseItem::Feature.new(22, 1, 0)) | |
end | |
attr_accessor :atype_id | |
end | |
class RPG::Enemy < RPG::BaseItem | |
def initialize | |
super | |
@battler_name = '' | |
@battler_hue = 0 | |
@params = [100,0,10,10,10,10,10,10] | |
@exp = 0 | |
@gold = 0 | |
@drop_items = Array.new(3) { RPG::Enemy::DropItem.new } | |
@actions = [RPG::Enemy::Action.new] | |
@features.push(RPG::BaseItem::Feature.new(22, 0, 0.95)) | |
@features.push(RPG::BaseItem::Feature.new(22, 1, 0.05)) | |
@features.push(RPG::BaseItem::Feature.new(31, 1, 0)) | |
end | |
attr_accessor :battler_name | |
attr_accessor :battler_hue | |
attr_accessor :params | |
attr_accessor :exp | |
attr_accessor :gold | |
attr_accessor :drop_items | |
attr_accessor :actions | |
end | |
class RPG::State < RPG::BaseItem | |
def initialize | |
super | |
@restriction = 0 | |
@priority = 50 | |
@remove_at_battle_end = false | |
@remove_by_restriction = false | |
@auto_removal_timing = 0 | |
@min_turns = 1 | |
@max_turns = 1 | |
@remove_by_damage = false | |
@chance_by_damage = 100 | |
@remove_by_walking = false | |
@steps_to_remove = 100 | |
@message1 = '' | |
@message2 = '' | |
@message3 = '' | |
@message4 = '' | |
end | |
attr_accessor :restriction | |
attr_accessor :priority | |
attr_accessor :remove_at_battle_end | |
attr_accessor :remove_by_restriction | |
attr_accessor :auto_removal_timing | |
attr_accessor :min_turns | |
attr_accessor :max_turns | |
attr_accessor :remove_by_damage | |
attr_accessor :chance_by_damage | |
attr_accessor :remove_by_walking | |
attr_accessor :steps_to_remove | |
attr_accessor :message1 | |
attr_accessor :message2 | |
attr_accessor :message3 | |
attr_accessor :message4 | |
end | |
class RPG::BaseItem::Feature | |
def initialize(code = 0, data_id = 0, value = 0) | |
@code = code | |
@data_id = data_id | |
@value = value | |
end | |
attr_accessor :code | |
attr_accessor :data_id | |
attr_accessor :value | |
end | |
class RPG::UsableItem::Damage | |
def initialize | |
@type = 0 | |
@element_id = 0 | |
@formula = '0' | |
@variance = 20 | |
@critical = false | |
end | |
attr_accessor :type | |
attr_accessor :element_id | |
attr_accessor :formula | |
attr_accessor :variance | |
attr_accessor :critical | |
end | |
class RPG::UsableItem::Effect | |
def initialize(code = 0, data_id = 0, value1 = 0, value2 = 0) | |
@code = code | |
@data_id = data_id | |
@value1 = value1 | |
@value2 = value2 | |
end | |
attr_accessor :code | |
attr_accessor :data_id | |
attr_accessor :value1 | |
attr_accessor :value2 | |
end | |
class RPG::Enemy::DropItem | |
def initialize | |
@kind = 0 | |
@data_id = 1 | |
@denominator = 1 | |
end | |
attr_accessor :kind | |
attr_accessor :data_id | |
attr_accessor :denominator | |
end | |
class RPG::Enemy::Action | |
def initialize | |
@skill_id = 1 | |
@condition_type = 0 | |
@condition_param1 = 0 | |
@condition_param2 = 0 | |
@rating = 5 | |
end | |
attr_accessor :skill_id | |
attr_accessor :condition_type | |
attr_accessor :condition_param1 | |
attr_accessor :condition_param2 | |
attr_accessor :rating | |
end | |
class RPG::Troop | |
def initialize | |
@id = 0 | |
@name = '' | |
@members = [] | |
@pages = [RPG::Troop::Page.new] | |
end | |
attr_accessor :id | |
attr_accessor :name | |
attr_accessor :members | |
attr_accessor :pages | |
end | |
class RPG::Troop::Member | |
def initialize | |
@enemy_id = 1 | |
@x = 0 | |
@y = 0 | |
@hidden = false | |
end | |
attr_accessor :enemy_id | |
attr_accessor :x | |
attr_accessor :y | |
attr_accessor :hidden | |
end | |
class RPG::Troop::Page | |
def initialize | |
@condition = RPG::Troop::Page::Condition.new | |
@span = 0 | |
@list = [RPG::EventCommand.new] | |
end | |
attr_accessor :condition | |
attr_accessor :span | |
attr_accessor :list | |
end | |
class RPG::Troop::Page::Condition | |
def initialize | |
@turn_ending = false | |
@turn_valid = false | |
@enemy_valid = false | |
@actor_valid = false | |
@switch_valid = false | |
@turn_a = 0 | |
@turn_b = 0 | |
@enemy_index = 0 | |
@enemy_hp = 50 | |
@actor_id = 1 | |
@actor_hp = 50 | |
@switch_id = 1 | |
end | |
attr_accessor :turn_ending | |
attr_accessor :turn_valid | |
attr_accessor :enemy_valid | |
attr_accessor :actor_valid | |
attr_accessor :switch_valid | |
attr_accessor :turn_a | |
attr_accessor :turn_b | |
attr_accessor :enemy_index | |
attr_accessor :enemy_hp | |
attr_accessor :actor_id | |
attr_accessor :actor_hp | |
attr_accessor :switch_id | |
end | |
class RPG::Animation | |
def initialize | |
@id = 0 | |
@name = '' | |
@animation1_name = '' | |
@animation1_hue = 0 | |
@animation2_name = '' | |
@animation2_hue = 0 | |
@position = 1 | |
@frame_max = 1 | |
@frames = [RPG::Animation::Frame.new] | |
@timings = [] | |
end | |
attr_accessor :id | |
attr_accessor :name | |
attr_accessor :animation1_name | |
attr_accessor :animation1_hue | |
attr_accessor :animation2_name | |
attr_accessor :animation2_hue | |
attr_accessor :position | |
attr_accessor :frame_max | |
attr_accessor :frames | |
attr_accessor :timings | |
end | |
class RPG::Animation::Frame | |
def initialize | |
@cell_max = 0 | |
@cell_data = Table.new(0, 0) | |
end | |
attr_accessor :cell_max | |
attr_accessor :cell_data | |
end | |
class RPG::Animation::Timing | |
def initialize | |
@frame = 0 | |
@se = RPG::SE.new('', 80) | |
@flash_scope = 0 | |
@flash_color = Color.new(255,255,255,255) | |
@flash_duration = 5 | |
end | |
attr_accessor :frame | |
attr_accessor :se | |
attr_accessor :flash_scope | |
attr_accessor :flash_color | |
attr_accessor :flash_duration | |
end | |
class RPG::Tileset | |
def initialize | |
@id = 0 | |
@mode = 1 | |
@name = '' | |
@tileset_names = Array.new(9).collect{''} | |
@flags = Table.new(8192) | |
@flags[0] = 0x0010 | |
(2048..2815).each {|i| @flags[i] = 0x000F} | |
(4352..8191).each {|i| @flags[i] = 0x000F} | |
@note = '' | |
end | |
attr_accessor :id | |
attr_accessor :mode | |
attr_accessor :name | |
attr_accessor :tileset_names | |
attr_accessor :flags | |
attr_accessor :note | |
end | |
class RPG::CommonEvent | |
def initialize | |
@id = 0 | |
@name = '' | |
@trigger = 0 | |
@switch_id = 1 | |
@list = [RPG::EventCommand.new] | |
end | |
def autorun? | |
@trigger == 1 | |
end | |
def parallel? | |
@trigger == 2 | |
end | |
attr_accessor :id | |
attr_accessor :name | |
attr_accessor :trigger | |
attr_accessor :switch_id | |
attr_accessor :list | |
end | |
class RPG::System | |
def initialize | |
@game_title = '' | |
@version_id = 0 | |
@japanese = true | |
@party_members = [1] | |
@currency_unit = '' | |
@elements = [nil, ''] | |
@skill_types = [nil, ''] | |
@weapon_types = [nil, ''] | |
@armor_types = [nil, ''] | |
@switches = [nil, ''] | |
@variables = [nil, ''] | |
@boat = RPG::System::Vehicle.new | |
@ship = RPG::System::Vehicle.new | |
@airship = RPG::System::Vehicle.new | |
@title1_name = '' | |
@title2_name = '' | |
@opt_draw_title = true | |
@opt_use_midi = false | |
@opt_transparent = false | |
@opt_followers = true | |
@opt_slip_death = false | |
@opt_floor_death = false | |
@opt_display_tp = true | |
@opt_extra_exp = false | |
@window_tone = Tone.new(0,0,0) | |
@title_bgm = RPG::BGM.new | |
@battle_bgm = RPG::BGM.new | |
@battle_end_me = RPG::ME.new | |
@gameover_me = RPG::ME.new | |
@sounds = Array.new(24) { RPG::SE.new } | |
@test_battlers = [] | |
@test_troop_id = 1 | |
@start_map_id = 1 | |
@start_x = 0 | |
@start_y = 0 | |
@terms = RPG::System::Terms.new | |
@battleback1_name = '' | |
@battleback2_name = '' | |
@battler_name = '' | |
@battler_hue = 0 | |
@edit_map_id = 1 | |
end | |
attr_accessor :game_title | |
attr_accessor :version_id | |
attr_accessor :japanese | |
attr_accessor :party_members | |
attr_accessor :currency_unit | |
attr_accessor :skill_types | |
attr_accessor :weapon_types | |
attr_accessor :armor_types | |
attr_accessor :elements | |
attr_accessor :switches | |
attr_accessor :variables | |
attr_accessor :boat | |
attr_accessor :ship | |
attr_accessor :airship | |
attr_accessor :title1_name | |
attr_accessor :title2_name | |
attr_accessor :opt_draw_title | |
attr_accessor :opt_use_midi | |
attr_accessor :opt_transparent | |
attr_accessor :opt_followers | |
attr_accessor :opt_slip_death | |
attr_accessor :opt_floor_death | |
attr_accessor :opt_display_tp | |
attr_accessor :opt_extra_exp | |
attr_accessor :window_tone | |
attr_accessor :title_bgm | |
attr_accessor :battle_bgm | |
attr_accessor :battle_end_me | |
attr_accessor :gameover_me | |
attr_accessor :sounds | |
attr_accessor :test_battlers | |
attr_accessor :test_troop_id | |
attr_accessor :start_map_id | |
attr_accessor :start_x | |
attr_accessor :start_y | |
attr_accessor :terms | |
attr_accessor :battleback1_name | |
attr_accessor :battleback2_name | |
attr_accessor :battler_name | |
attr_accessor :battler_hue | |
attr_accessor :edit_map_id | |
end | |
class RPG::System::Vehicle | |
def initialize | |
@character_name = '' | |
@character_index = 0 | |
@bgm = RPG::BGM.new | |
@start_map_id = 0 | |
@start_x = 0 | |
@start_y = 0 | |
end | |
attr_accessor :character_name | |
attr_accessor :character_index | |
attr_accessor :bgm | |
attr_accessor :start_map_id | |
attr_accessor :start_x | |
attr_accessor :start_y | |
end | |
class RPG::System::Terms | |
def initialize | |
@basic = Array.new(8) {''} | |
@params = Array.new(8) {''} | |
@etypes = Array.new(5) {''} | |
@commands = Array.new(23) {''} | |
end | |
attr_accessor :basic | |
attr_accessor :params | |
attr_accessor :etypes | |
attr_accessor :commands | |
end | |
class RPG::System::TestBattler | |
def initialize | |
@actor_id = 1 | |
@level = 1 | |
@equips = [0,0,0,0,0] | |
end | |
attr_accessor :actor_id | |
attr_accessor :level | |
attr_accessor :equips | |
end | |
class RPG::AudioFile | |
def initialize(name = '', volume = 100, pitch = 100) | |
@name = name | |
@volume = volume | |
@pitch = pitch | |
end | |
attr_accessor :name | |
attr_accessor :volume | |
attr_accessor :pitch | |
end | |
class RPG::BGM < RPG::AudioFile | |
@@last = RPG::BGM.new | |
def play(pos = 0) | |
if @name.empty? | |
Audio.bgm_stop | |
@@last = RPG::BGM.new | |
else | |
Audio.bgm_play('Audio/BGM/' + @name, @volume, @pitch, pos) | |
@@last = self.clone | |
end | |
end | |
def replay | |
play(@pos) | |
end | |
def self.stop | |
Audio.bgm_stop | |
@@last = RPG::BGM.new | |
end | |
def self.fade(time) | |
Audio.bgm_fade(time) | |
@@last = RPG::BGM.new | |
end | |
def self.last | |
@@last.pos = Audio.bgm_pos | |
@@last | |
end | |
attr_accessor :pos | |
end | |
class RPG::BGS < RPG::AudioFile | |
@@last = RPG::BGS.new | |
def play(pos = 0) | |
if @name.empty? | |
Audio.bgs_stop | |
@@last = RPG::BGS.new | |
else | |
Audio.bgs_play('Audio/BGS/' + @name, @volume, @pitch, pos) | |
@@last = self.clone | |
end | |
end | |
def replay | |
play(@pos) | |
end | |
def self.stop | |
Audio.bgs_stop | |
@@last = RPG::BGS.new | |
end | |
def self.fade(time) | |
Audio.bgs_fade(time) | |
@@last = RPG::BGS.new | |
end | |
def self.last | |
@@last.pos = Audio.bgs_pos | |
@@last | |
end | |
attr_accessor :pos | |
end | |
class RPG::ME < RPG::AudioFile | |
def play | |
if @name.empty? | |
Audio.me_stop | |
else | |
Audio.me_play('Audio/ME/' + @name, @volume, @pitch) | |
end | |
end | |
def self.stop | |
Audio.me_stop | |
end | |
def self.fade(time) | |
Audio.me_fade(time) | |
end | |
end | |
class RPG::SE < RPG::AudioFile | |
def play | |
unless @name.empty? | |
Audio.se_play('Audio/SE/' + @name, @volume, @pitch) | |
end | |
end | |
def self.stop | |
Audio.se_stop | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
require 'yaml' | |
require 'zlib' | |
require_relative 'rgss' | |
[ | |
'Data/Actors.yml', | |
'Data/Animations.yml', | |
'Data/Armors.yml', | |
'Data/Classes.yml', | |
'Data/CommonEvents.yml', | |
'Data/Enemies.yml', | |
'Data/Items.yml', | |
*Dir.glob('Data/Map[0-9][0-9][0-9].yml'), | |
'Data/MapInfos.yml', | |
'Data/Skills.yml', | |
'Data/States.yml', | |
'Data/System.yml', | |
'Data/Tilesets.yml', | |
'Data/Troops.yml', | |
'Data/Weapons.yml' | |
].each do |yml| | |
data = '' | |
data = YAML.load_file(yml) | |
File.open('Data/'+File.basename(yml,'.yml')+'.rvdata2', 'wb') do |file| | |
file.write(Marshal.dump(data)) | |
end | |
end | |
data = YAML.load_file('Data/Scripts.yml') | |
Dir.glob('Data/Scripts/*.rb') do |rb| | |
File.open(rb, 'rb') do |file| | |
file.read.gsub(/(\r\n|\r|\n)/, "\n").split("# -*- END_OF_SCRIPT -*-\n\n").map do |src| | |
head, lf, script = src.partition("\n") | |
id = /id: (\d+)/.match(head).to_a.at(1).to_i | |
name = File.basename(rb, '.rb') | |
name = '' if name == "( NONAME )" | |
data[data.index(id)] = [id, name, Zlib::Deflate.deflate(script.chop)] | |
end | |
end | |
end | |
File.open('Data/Scripts.rvdata2', 'wb') do |file| | |
file.write(Marshal.dump(data)) | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
require 'yaml' | |
require 'zlib' | |
require_relative 'rgss' | |
[ | |
'Data/Actors.rvdata2', | |
'Data/Animations.rvdata2', | |
'Data/Armors.rvdata2', | |
'Data/Classes.rvdata2', | |
'Data/CommonEvents.rvdata2', | |
'Data/Enemies.rvdata2', | |
'Data/Items.rvdata2', | |
*Dir.glob('Data/Map[0-9][0-9][0-9].rvdata2'), | |
'Data/MapInfos.rvdata2', | |
'Data/Skills.rvdata2', | |
'Data/States.rvdata2', | |
'Data/System.rvdata2', | |
'Data/Tilesets.rvdata2', | |
'Data/Troops.rvdata2', | |
'Data/Weapons.rvdata2' | |
].each do |rvdata2| | |
data = '' | |
File.open(rvdata2, 'rb') do |file| | |
data = Marshal.load(file.read) | |
end | |
File.open('Data/'+File.basename(rvdata2,'.rvdata2')+'.yml', 'w') do |file| | |
file.write(YAML.dump(data)) | |
end | |
end | |
data = '' | |
index = [] | |
File.open('Data/Scripts.rvdata2', 'rb') do |file| | |
data = Marshal.load(file.read).map do |id, name, script| | |
name = '( NONAME )' if name.empty? | |
index << id | |
[name, '# -*- id: ' + | |
"#{id} -*-\n" + | |
Zlib::Inflate.inflate(script) + | |
"\n# -*- END_OF_SCRIPT -*-\n\n" | |
] | |
end | |
end | |
if File.exists?('Data/Scripts') | |
Dir.glob('Data/Scripts/*.rb') do |file| | |
File::delete(file) | |
end | |
else | |
Dir.mkdir('Data/Scripts') | |
end | |
data.each do |name, script| | |
File.open('Data/Scripts/'+name+'.rb', 'ab') do |file| | |
file.write(script) | |
end | |
end | |
File.open('Data/Scripts.yml', 'wb') do |file| | |
file.write(YAML.dump(index)) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
looks good to me :-)