Cerca nel Forum
Showing results for tags 'SwapXT'.
Trovato 1 risultato
-
SwapTX L'applicazione definitiva per cambiare tileset/passaggi più semplicemente!!! Nome Script: SwapXT Versione: 1.0 Autore/i: BulletXT Informazioni: Con questo script e programma,possiamo utilizzare quanti tileset vogliamo troncando nettamente la limitazione impostata sul VX. Dalla versione precedente,questa ha subito una forte miglioria,diventando l'applicazione definitiva =) Screenshots: Istruzioni: - Scaricare ed inserite lo script nel vostro progetto - Scaricare ed installate il programma - Una volta aperto il programma vi verrà chiesto di scegliere il progetto che volete modificare selezionando il file Game.ini - Ora inserite tutti i tileset che volete cambiare creando una cartella in Graphics/System /extra_tiles - Utilizzare le prime due schede del programma per cambiare tileset/passabilità per poi mappare - Utilizzare la terza scheda per applicare lo swap a un'ID mappa e modificare quelle esistenti - Utilizzare la terza scheda per swappare i tile in tempo reale Script: =begin SwapXT Version: 1.0 Author: Marco Di Antonio ([email protected]) Nickname: BulletXt Date: 14/07/2010 This is SwapXT script that must be put in your VX game script section. It's Plug&Play. Use SwapXT application to do swaps once you put this into your VX game. =end ############################# CONFIGURATION #################################### #Switch ID. #If ON, your events will not swap according to tiles and will use default tiles. DISABLE_EVENT_SWAPPING = 100 =begin IGNORE the following two switches IDs unless you are using old 0.4 swapping script found at: http://lodestone2d.svn.sourceforge.net/viewvc/lodestone2d/Scripts-Dev/Swap_TileSet/Swap_tile_new_passage_setting.rb . If you are, set the 2 ID switches to ensure compatibility with your current "old system" swaps. The meaning of these two switches are described on the old 0.4 script, and you should already have confidence with them if you need these. =end SWAP_TILE = 9999 LOAD_PASSAGE_SETTING = 9998 ########################## END CONFIGURATION ################################### #============================================================================== # ** Cache module Cache_Swap_Tiles #error message in case user is swapping tiles #on a map with both old and new system def self.error_message(map_id) $bulletxt_error_message_mixed_swapping_configuration = "BulletXt Message: on this map ID " + map_id.to_s() + " you have a dangerous configuration. You are swapping tilesets from events and from the swapping application. Mixed configuration is not allowed. Please decide which system to use to swap your tiles. I highly suggest to swap tilesets using the swapping application. If you decide to do this, please be sure you turn off the swapping switch ID " + SWAP_TILE.to_s() + " before entering this map. I will close the game for security reasons." #get rid of n array = $bulletxt_error_message_mixed_swapping_configuration.split("n") size = array.length() n = 0 f = "" while n < size do message = array[n] f = f + message n = n + 1 end $bulletxt_error_message_mixed_swapping_configuration = f end #error message in case user is swapping passage settings #on a map with both old and new system def self.error_message_passage(map_id) $bulletxt_error_message_mixed_swapping_configuration = "BulletXt Message: on this map ID " + map_id.to_s() + " you have a dangerous configuration. You are swapping a passage settings from events and from the swapping application. Mixed configuration is not allowed. Please decide which system to use to swap your passage settings. I highly suggest to swap passage settings using the swapping application. If you decide to do this, please be sure you turn off the swapping passage setting switch ID " + LOAD_PASSAGE_SETTING.to_s() + " before entering this map. I will close the game for security reasons." #get rid of n array = $bulletxt_error_message_mixed_swapping_configuration.split("n") size = array.length() n = 0 f = "" while n < size do message = array[n] f = f + message n = n + 1 end $bulletxt_error_message_mixed_swapping_configuration = f end #-------------------------------------------------------------------------- # * Get Character Graphic # filename : Filename #-------------------------------------------------------------------------- def self.swap(filename) load_bitmap("Graphics/System/extra_tiles/", filename) end #-------------------------------------------------------------------------- # * Clear Cache #-------------------------------------------------------------------------- def self.clear @cache = {} if @cache == nil @cache.clear GC.start end #-------------------------------------------------------------------------- # * Load Bitmap #-------------------------------------------------------------------------- def self.load_bitmap(folder_name, filename, hue = 0) @cache = {} if @cache == nil path = folder_name + filename if not @cache.include?(path) or @cache[path].disposed? if filename.empty? @cache[path] = Bitmap.new(32, 32) else @cache[path] = Bitmap.new(path) end end if hue == 0 return @cache[path] else key = [path, hue] if not @cache.include?(key) or @cache[key].disposed? @cache[key] = @cache[path].clone @cache[key].hue_change(hue) end return @cache[key] end end end ################################################################################ ############ CHECK IF THERE ARE SWAPPED TILES AT START PLAY TIME ############### =begin We must ensure user is starting game and there are physically swapped tiles or passage settings, tiles that have been for example swapped from the application =end class Scene_Title < Scene_Base alias swapxt_start start def start swapxt_start check_if_tileset_swapped_exist check_if_passage_swapped_exist end def check_if_tileset_swapped_exist tile = "Graphics/System/swapped_" tileset_swap_loaded_message_error if FileTest.exist?(tile + "A1.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "A2.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "A3.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "A4.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "A5.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "B.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "C.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "D.png") tileset_swap_loaded_message_error if FileTest.exist?(tile + "E.png") end def tileset_swap_loaded_message_error p sprintf("SwapXT Error: You are not allowed to start your game with swapped tilesets. You must unload your tilesets with SwapXT application first. Open SwapXT, click at top Tools->Restore all Tilesets") exit end def check_if_passage_swapped_exist passage = "swapxt/passage_warning.stx" passage_swap_loaded_message_error if FileTest.exist?(passage) end def passage_swap_loaded_message_error p sprintf("SwapXT Error: You are not allowed to start your game with swapped passage settings. You must unload your passage setting with SwapXT application first. Open SwapXT, go on PassageSetting tab and click on Restore to Default.") exit end end ################################################################################ =begin this class takes care of checking if there is a map id file. this class does not swap tilesets but only prepares the tiles variables(if map id file found). this class handles loading the passage setting file, for both old and new system =end class Game_Map include Cache_Swap_Tiles alias bulletxt_goodbye_vx_limit_tile_setup setup def setup(map_id) #must be false at load time $swapxt_realtime = false #this variable must always be false at runtime. #becomes true only if it finds a map id file $swap_tileset_profile_bulletxt = false #check if it must load a saved profile TILESET for this map id profile_path_tile = "swapxt/tiles/" + map_id.to_s() + ".stx" if FileTest.exist?(profile_path_tile) #we must now check if user isn't fooling around with his configuration. #he must not be swapping tiles on this map with old and new system #at the same time. if this is the case, warn him we don't want issues and #close the game if $game_switches[SWAP_TILE] == true Cache_Swap_Tiles.error_message(map_id) p sprintf($bulletxt_error_message_mixed_swapping_configuration) exit end #set this to true so we know we want to swap with new system $swap_tileset_profile_bulletxt = true #p sprintf(profile_path_tile + " found!") #read the map id file, it has 8 lines with the name of the tileset to swap. #set each tileset global variable with the corresponding found line, in order. $tileA1,$tileA2,$tileA3,$tileA4,$tileA5,$tileB,$tileC,$tileD,$tileE = File.read(profile_path_tile).split("n") end ##################### SWAP PASSSAGE SETTINGS ########################## @swap_passagesetting_bulletxt = false #for how this works, look at the code above profile_path_passages = "swapxt/passages/" + map_id.to_s() + ".stx" if FileTest.exist?(profile_path_passages) #p sprintf("passage exists on map " + map_id.to_s()) if $game_switches[LOAD_PASSAGE_SETTING] == true Cache_Swap_Tiles.error_message_passage(map_id) p sprintf($bulletxt_error_message_mixed_swapping_configuration) exit end @swap_passagesetting_bulletxt = true $swap_passages = (File.read(profile_path_passages).split("n"))[0] end #checks if it should load default passage setting, both for old and new system if $game_switches[LOAD_PASSAGE_SETTING] == false and @swap_passagesetting_bulletxt == false bulletxt_goodbye_vx_limit_tile_setup(map_id) $swap_passages = nil return end path = "Graphics/System/extra_tiles/" + $swap_passages.to_s() + ".rvdata" rescue nil #check if user set $swap_passages to nil cause he wants to load default setting. #if user is loading with new system checks if it's equal to empty::*:: if $swap_passages == nil or $swap_passages == "empty::*::" bulletxt_goodbye_vx_limit_tile_setup(map_id) return end #when here, we are sure user wants to swap passage setting, either #via old system or new system #the file to swap is not default one, he wants to swap to a real new one @map_id = map_id @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id)) @display_x = 0 @display_y = 0 # load system settings from that file new_system_rvdata = load_data(path) # Use passage settings from that file @passages = new_system_rvdata.passages #default vx code referesh_vehicles setup_events setup_scroll setup_parallax @need_refresh = false end ############################# REAL TIME SWAPS ################################## #if here, player has done a $game_map.tileset call. It must reload #map with new passage setting (if it exists) and upate map. #OLD SYSTEM def tileset #if false, we must update and load default passage if $game_switches[LOAD_PASSAGE_SETTING] == false @passages = $data_system.passages else #if nil, must reset passage setting to default if $swap_passages == nil @passages = $data_system.passages $scene = Scene_Map.new return end path = "Graphics/System/extra_tiles/" + $swap_passages + ".rvdata" rescue nil # load system settings from that file new_system_rvdata = load_data(path) # Use passage settings from that file @passages = new_system_rvdata.passages end #this updates the map tiles. it does not modify events or anything else. $scene = Scene_Map.new end #if here, player has done a $game_map.swapxt() call. It must reload #map with new passage setting (if it exists) and upate map. #NEW SWAPXT SYSTEM def swapxt(integer) rtx_path = "swapxt/realtime/" + integer.to_s() + ".rtx" if !FileTest.exist?(rtx_path ) p sprintf("SwapXT Error: You have called $game_map.swapxt(" + integer.to_s() + ") , but that Real-Time swap doesn't exist. Please better check it inside SwapXT app, under the Real-Time section.") exit end $tileA1,$tileA2,$tileA3,$tileA4,$tileA5,$tileB,$tileC,$tileD,$tileE,passage = File.read(rtx_path).split("n") path = "Graphics/System/extra_tiles/" + passage + ".rvdata" rescue nil if !FileTest.exist?(path) p sprintf("SwapXT Error: Unable to find " + path + ". Please go and check your existant passages from SwapXT in the PassageSetting section.") exit end $swapxt_realtime = true #warning,realtime update must occur # load system settings from that file new_system_rvdata = load_data(path) # Use passage settings from that file @passages = new_system_rvdata.passages #this updates the map tiles. it does not modify events or anything else. $scene = Scene_Map.new end end #this class handles loading tilesets class Spriteset_Map include Cache_Swap_Tiles alias bulletxt_lodestone_create_tilemap create_tilemap def create_tilemap #if true, it means the map doesn't have to load tilesets, #neither for old swapping system or new system. #if true, also means no realtime update occured #it must load DEFAULT tilesets if $game_switches[SWAP_TILE] == false and $swap_tileset_profile_bulletxt == false and $swapxt_realtime == false bulletxt_lodestone_create_tilemap $tileA1 = nil $tileA2 = nil $tileA3 = nil $tileA4 = nil $tileA5 = nil $tileB = nil $tileC = nil $tileD = nil $tileE = nil return end =begin calling the original function is a trick. if there are tiles to swap it will just replace them, otherwise if a tile is nil it won't swap anything, but still the tile will be loaded because it has already loaded the original tile when calling this function. in other words, if setting a tile$n = nil will simply make the script load default tile. =end bulletxt_lodestone_create_tilemap =begin when here, some/all tiles must be swapped, either old or with new system. the tile can be equal to "empty::*::" only if it found the file id of the map and line$n is equal to empty::*::. in that case it must load default tileset. there are no chances a user with old system is swapping a tileset named "empty::*::" because you can't name files with ":" characters under Microsoft Windows OS. =end path_to_graphic = "extra_tiles/" #tileA1 if $tileA1 == "empty::*::" @tilemap.bitmaps[0] = Cache.system("TileA1") else tile1 = Cache_Swap_Tiles.swap($tileA1 + ".png") rescue nil @tilemap.bitmaps[0] = tile1 if $tileA1 != nil end #tileA2 if $tileA2 == "empty::*::" @tilemap.bitmaps[1] = Cache.system("TileA2") else tile2 = Cache_Swap_Tiles.swap($tileA2 + ".png") rescue nil @tilemap.bitmaps[1] = tile2 if $tileA2 != nil end #tileA3 if $tileA3 == "empty::*::" @tilemap.bitmaps[2] = Cache.system("TileA3") else tile3 = Cache_Swap_Tiles.swap($tileA3 + ".png") rescue nil @tilemap.bitmaps[2] = tile3 if $tileA3 != nil end #tileA4 if $tileA4 == "empty::*::" @tilemap.bitmaps[3] = Cache.system("TileA4") else tile4 = Cache_Swap_Tiles.swap($tileA4 + ".png") rescue nil @tilemap.bitmaps[3] = tile4 if $tileA4 != nil end #tileA5 if $tileA5 == "empty::*::" @tilemap.bitmaps[4] = Cache.system("TileA5") else tile5 = Cache_Swap_Tiles.swap($tileA5 + ".png") rescue nil @tilemap.bitmaps[4] = tile5 if $tileA5 != nil end #tileB if $tileB == "empty::*::" @tilemap.bitmaps[5] = Cache.system("TileB") else tile6 = Cache_Swap_Tiles.swap($tileB + ".png") rescue nil @tilemap.bitmaps[5] = tile6 if $tileB != nil end #tileC if $tileC == "empty::*::" @tilemap.bitmaps[6] = Cache.system("TileC") else tile7 = Cache_Swap_Tiles.swap($tileC + ".png") rescue nil @tilemap.bitmaps[6] = tile7 if $tileC != nil end #tileD if $tileD == "empty::*::" @tilemap.bitmaps[7] = Cache.system("TileD") else tile8 = Cache_Swap_Tiles.swap($tileD + ".png") rescue nil @tilemap.bitmaps[7] = tile8 if $tileD != nil end #tileE if $tileE == "empty::*::" @tilemap.bitmaps[8] = Cache.system("TileE") else tile9 = Cache_Swap_Tiles.swap($tileE + ".png") rescue nil @tilemap.bitmaps[8] = tile9 if $tileE != nil end #closes def end #closes class end ########################## SWAP EVENT'S GRAPHICS ############################# #the following class handles swapping event's graphics according to the tiles class Sprite_Character < Sprite_Base include Cache_Swap_Tiles alias swap_tileset_bitmap tileset_bitmap def tileset_bitmap(tile_id) #do not swap events if true if $game_switches[DISABLE_EVENT_SWAPPING] set_number = tile_id / 256 return Cache.system("TileB") if set_number == 0 return Cache.system("TileC") if set_number == 1 return Cache.system("TileD") if set_number == 2 return Cache.system("TileE") if set_number == 3 return nil return end if $game_switches[SWAP_TILE] == false and $swap_tileset_profile_bulletxt == false and $swapxt_realtime == false set_number = tile_id / 256 return Cache.system("TileB") if set_number == 0 return Cache.system("TileC") if set_number == 1 return Cache.system("TileD") if set_number == 2 return Cache.system("TileE") if set_number == 3 return nil return end swap_tileset_bitmap(tile_id) set_number = tile_id / 256 if $tileB == "empty::*::" return Cache.system("TileB") if set_number == 0 else return Cache_Swap_Tiles.swap($tileB) if set_number == 0 rescue nil end if $tileC == "empty::*::" return Cache.system("TileC") if set_number == 1 else return Cache_Swap_Tiles.swap($tileC) if set_number == 1 rescue nil end if $tileD == "empty::*::" return Cache.system("TileD") if set_number == 2 else return Cache_Swap_Tiles.swap($tileD) if set_number == 2 rescue nil end if $tileE == "empty::*::" return Cache.system("TileE") if set_number == 3 else return Cache_Swap_Tiles.swap($tileE) if set_number == 3 rescue nil end return nil end end =begin saves tiles and passage setting variables, needed if you save on a map that has swapped stuff. this is only needed when using old system, because new system reads the value from the map id file =end class Scene_File < Scene_Base alias bulletxt_swap_tiles_write_save_data write_save_data def write_save_data(file) bulletxt_swap_tiles_write_save_data(file) Marshal.dump($tileA1, file) Marshal.dump($tileA2, file) Marshal.dump($tileA3, file) Marshal.dump($tileA4, file) Marshal.dump($tileA5, file) Marshal.dump($tileB, file) Marshal.dump($tileC, file) Marshal.dump($tileD, file) Marshal.dump($tileE, file) Marshal.dump($swap_passages.to_s(), file) Marshal.dump($swap_tileset_profile_bulletxt, file) Marshal.dump($swapxt_realtime, file) end alias bulletxt_swap_tiles_read_save_data read_save_data def read_save_data(file) bulletxt_swap_tiles_read_save_data(file) $tileA1 = Marshal.load(file) $tileA2 = Marshal.load(file) $tileA3 = Marshal.load(file) $tileA4 = Marshal.load(file) $tileA5 = Marshal.load(file) $tileB = Marshal.load(file) $tileC = Marshal.load(file) $tileD = Marshal.load(file) $tileE = Marshal.load(file) $swap_passages = Marshal.load(file) $swap_tileset_profile_bulletxt = Marshal.load(file) $swapxt_realtime = Marshal.load(file) end end Demo: http://www.mediafire.com/?g2mg7nkp6fy1nax Incompatibilità: Incompatibile con lo script Wall Tile Extension. Compatibile con la versione precedente di swap.