Jump to content
Rpg²S Forum

*Cambio Tileset


Delta
 Share

Recommended Posts

Cambio Tileset

 

Descrizione

 

(traduzione della descrizione originale)

Questo script ti permette di utilizzare una funzione mancante in RPG Maker XP rispetto a RPG Maker 2000 e 2003. Questo script ti permette di cambiare Tileset usando la mappa corrente. E' esplicitamente utilizzabile su mappe che usano multiple elevazioni, puoi cambiare le priorità del tileset quando il giocatore cambia elevazione (esempio: passaggio sopra e sotto ad un ponte nella stessa mappa).

 

 

Autore

 

Ryethe (credo ... avevo scaricato, non so da dove, lo script e ora l'ho ritrovato ma sembra sia una vecchia versione quindi posto quella che ho io XD)

 

Istruzioni per l'uso

 

Innanzitutto bisogna inserire il seguente codice prima della classe main nello script editor:

 

class Game_System
 attr_accessor :tileset_settings
 
 alias tileset_initialize initialize
 def initialize
tileset_initialize
@tileset_settings = Hash.new
 end
end

class Game_Map
 attr_accessor :tileset_flag
 
 def setup(map_id)
# Put map ID in @map_id memory
@map_id = map_id
# Load map from file and set @map
@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
# set tile set information in opening instance variables
if $game_system.tileset_settings[@map_id] != nil
  tileset_id = $game_system.tileset_settings[@map_id]
else
  tileset_id = @map.tileset_id
end

tileset = $data_tilesets[tileset_id]
@tileset_name = tileset.tileset_name
@autotile_names = tileset.autotile_names
@panorama_name = tileset.panorama_name
@panorama_hue = tileset.panorama_hue
@fog_name = tileset.fog_name
@fog_hue = tileset.fog_hue
@fog_opacity = tileset.fog_opacity
@fog_blend_type = tileset.fog_blend_type
@fog_zoom = tileset.fog_zoom
@fog_sx = tileset.fog_sx
@fog_sy = tileset.fog_sy
@battleback_name = tileset.battleback_name
@passages = tileset.passages
@priorities = tileset.priorities
@terrain_tags = tileset.terrain_tags
# Initialize displayed coordinates
@display_x = 0
@display_y = 0
# Clear refresh request flag
@need_refresh = false
# Set map event data
@events = {}
for i in @map.events.keys
  @events[i] = Game_Event.new(@map_id, @map.events[i])
end
# Set common event data
@common_events = {}
for i in 1...$data_common_events.size
  @common_events[i] = Game_CommonEvent.new(i)
end
# Initialize all fog information
@fog_ox = 0
@fog_oy = 0
@fog_tone = Tone.new(0, 0, 0, 0)
@fog_tone_target = Tone.new(0, 0, 0, 0)
@fog_tone_duration = 0
@fog_opacity_duration = 0
@fog_opacity_target = 0
# Initialize scroll information
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
 end
 
 def change_tileset(tileset_id)
$game_system.tileset_settings[@map_id] = tileset_id

tileset = $data_tilesets[tileset_id]
@tileset_name = tileset.tileset_name
@autotile_names = tileset.autotile_names
@panorama_name = tileset.panorama_name
@panorama_hue = tileset.panorama_hue
@fog_name = tileset.fog_name
@fog_hue = tileset.fog_hue
@fog_opacity = tileset.fog_opacity
@fog_blend_type = tileset.fog_blend_type
@fog_zoom = tileset.fog_zoom
@fog_sx = tileset.fog_sx
@fog_sy = tileset.fog_sy
@battleback_name = tileset.battleback_name
@passages = tileset.passages
@priorities = tileset.priorities
@terrain_tags = tileset.terrain_tags

@tileset_flag = true
 end
end

class Spriteset_Map
 alias tileset_update update
 def update
if $game_map.tileset_flag
  @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  for i in 0..6
	autotile_name = $game_map.autotile_names[i]
	@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  end
  @tilemap.map_data = $game_map.data
  @tilemap.priorities = $game_map.priorities
  $game_map.tileset_flag = false
end
tileset_update
 end
end

 

Ora per cambiare il Tileset basta richiamare il seguente codice tramite evento:

 

$game_map.replace_tileset(x)

 

Dove x rappresenta l'ID del tileset che si va ad applicare al posto di quello precedente

Edited by Delta
Link to comment
Share on other sites

In che senso cambia il tileset? :sisi:

"Quarantadue!" urlò Loonquawl. "Questo è tutto ciò che sai dire dopo un lavoro di sette milioni e mezzo di anni?"

"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

 

 

 

Gioco disponibile: Prophecy of Last Era - OPEN SOURCE

 

http://www.mediafire.com/?u6aut42ks12ixgf

 

Puoi utilizzare qualsiasi evento, mappa, chara, grafica, e programmazione contenuta nel gioco-demo.

Nessun diritto di copia.

Hope you enjoy.

http://www.rpg2s.net/awards/bestmusician3.jpg

Link to comment
Share on other sites

Mentre giochi, nella stessa mappa, puoi cambiare tileset, cioè: all'inizio, per esempio, nella mappa c'è impostato il tileset Grassland, una volta attivato l'evento che cambia tileset, al posto di Grassland viene messo il tileset Woods (ovviamente i tileset da sostituire con altri li sceglie il programmatore del gioco) :biggrin:
Link to comment
Share on other sites

bellissimo o.o l'avevo trovato tempo fa ma poi l'avevo perso : | è comodissimo sto prog :) io mi ricordo che in una mappa un ponte l'avevo fatto tutto ad eventi per passarci sopra e sotto -.-'' una rottura... questo è fenomenale ^.^ soprattutto se devi fare mappe molto grandi e articolate, con molti sottopassaggi :) grazie caro :D

 

 

Membro # 8-8-8 [Hachi] della:

http://img3.imageshack.us/img3/9636/bannergm.png

Link to comment
Share on other sites

  • 1 year later...

Si riesumo un post vecchio, volevo solo avvisare che è

 

$game_map.change_tileset(x)

 

visto che il metodo replace_tileset(x) non esiste da nessuna parte nello script :P

If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor and when was the last time you needed one? (Tom Cargill)

 

Se dovete fare una cosa semplice, tipo

 

 

if (a==b) c='pippo';else c='pluto';
Usate le funzionalita' del linguaggio piu' complicato che esiste:

 

c=select decode(sign(a-b),0,"pippo","pluto");
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...