Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Object
- #------------------------------------------------------------------
- class Object
- def string?
- return false
- end
- end
- #-----------------------------------------------------------------
- # String
- #------------------------------------------------------------------
- class String
- def string?
- true
- end
- end
- #------------------------------------------------------------------
- module Export_Messages
- #------------------------------------------------------------------
- # Enabled - When true, data will export. Otherwise no.
- #------------------------------------------------------------------
- ENABLED = true
- #------------------------------------------------------------------
- # Maps File - File in which contains the map information
- #------------------------------------------------------------------
- MapsFile = "./Data/MapInfos.rvdata2"
- #------------------------------------------------------------------
- # Event Messages Folder
- #------------------------------------------------------------------
- EVENT_MESSAGES_FOLDER = "./Messages/"
- #------------------------------------------------------------------
- # Make Folder Name (from map ID and MAP)
- #------------------------------------------------------------------
- def self.make_folder_name(id, map)
- return sprintf("%03d_%s", id, map.name);
- end
- #------------------------------------------------------------------
- # Export Messages
- #------------------------------------------------------------------
- # This exports all the events messaging in the game on every map
- #------------------------------------------------------------------
- def self.export_messages
- maps = load_data(MapsFile)
- if !Dir.exist?(EVENT_MESSAGES_FOLDER)
- Dir.mkdir(EVENT_MESSAGES_FOLDER)
- end
- for id in 1...maps.size+1
- mapFile = sprintf("Data/Map%03d.rvdata2", id)
- mapInfo = maps[id]
- map = load_data(mapFile) rescue next
- foldername = EVENT_MESSAGES_FOLDER + make_folder_name(id, mapInfo)
- if !Dir.exist?(foldername)
- Dir.mkdir(foldername)
- end
- for event_id in map.events.keys
- event = map.events[event_id]
- for i in 0...event.pages.size
- filename = sprintf("%s/%03d_%s_%02d.txt", foldername, event_id, event.name, i+1)
- if File.exist?(filename)
- File.delete(filename)
- end
- file = File.new(filename, 'a') #open file in append mode
- file.write(sprintf("%03d %s Page_%02d", event_id, event.name, i+1))
- write_linebreak(file)
- page = event.pages[i]
- event_string_data = build_event_string_data(page)
- file.write(event_string_data)
- file.close
- if event_string_data == ""
- File.delete(filename)
- end
- end
- end
- end
- print "Finished Exporting messages to file\n"
- end
- #------------------------------------------------------------------
- # Construct message string data
- #------------------------------------------------------------------
- def self.build_event_string_data(page)
- save_string = []
- @index = 0
- #------------------------------------------------------------------
- # Walk list and check each item.
- # Since choices already sort items for us, no additional sort is needed.
- #------------------------------------------------------------------
- while page.list[@index] != nil
- event_data = page.list[@index]
- indent = "\t " * event_data.indent
- if ([101, 401].include?(event_data.code))
- s = event_data.parameters[0]
- save_string << indent + "[MESSAGE]" + s unless s == ""
- elsif [402].include?(event_data.code)
- for s in event_data.parameters
- save_string << indent + "[CHOICE]" + s if s.string?
- end
- elsif [404].include?(event_data.code)
- save_string << indent + "[END_CHOICE]"
- end
- @index += 1
- end
- return save_string.join("\n")
- end
- #------------------------------------------------------------------
- # Write Linebreak
- #------------------------------------------------------------------
- def self.write_linebreak(file)
- file.write("\r\n")
- end
- if ENABLED
- export_messages
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement