Jump to content
Rpg²S Forum
  • 0

Posizione Minimappa [RISOLTO]


UltimaEsper
 Share

Question

"Modifica completa"

 

Vorrei sistemare il riquadro della mappa esattamente al centro dell'altro. Come si fanno a spostare?

 

Oppure pensavo di sostituire direttamente il riquadro grigio con l'altro, tuttavia ho scoperto che non è un'immagine presente nella cartella Pictures. Aiutatemi :) grazie mille a chi risp

 

http://img68.imageshack.us/img68/7950/maplm6.png

 

Questo è lo script:

 

#==============================================================================
# ¦ Passability Mini Map
#------------------------------------------------------------------------------
# made by Selwyn // selwyn@rmxp.ch
# released the 30th of May 2006
#==============================================================================

#==============================================================================
# ¦ Scene_Map
#------------------------------------------------------------------------------
# draw the mini map
# @corner is the corner you want the mini map to be displayed in.
# 1 is upper left, 2 is upper right, 3 is bottom left and 4 is bottom right
#==============================================================================

class Scene_Map
 attr_accessor :corner
 alias main_passminimap main
 alias update_passminimap update
 alias transfer_passminimap transfer_player
# #alias mrmo_hud_hide hud_hide
# alias mrmo_hud_show hud_show
 #--------------------------------------------------------------------------
 # ? initialize
 #--------------------------------------------------------------------------
 def initialize
@corner = 2 # 1 or 2 or 3 or 4
 end
 #--------------------------------------------------------------------------
 # ? main
 #--------------------------------------------------------------------------
 def main
@mini_map = Map_Event.new(@corner)
main_passminimap
@mini_map.dispose
 end
 #--------------------------------------------------------------------------
 # * Turn HUD Show
 #--------------------------------------------------------------------------
 def hud_show
#	mrmo_hud_show
@mini_map.visible = true
$game_switches[@mini_map.ACTIVATED_ID] = true
 end
 #--------------------------------------------------------------------------
 # * Turn HUD Hide
 #--------------------------------------------------------------------------
 def hud_hide
#   mrmo_hud_hide
@mini_map.visible = false
$game_switches[@mini_map.ACTIVATED_ID] = false
 end
 #--------------------------------------------------------------------------
 # ? update
 #--------------------------------------------------------------------------
 def update
@mini_map.update
update_passminimap
 end
 #--------------------------------------------------------------------------
 # ? transfer_player
 #--------------------------------------------------------------------------
 def transfer_player
transfer_passminimap
@mini_map.dispose
@mini_map = Map_Event.new(@corner)
 end
end

#==============================================================================
# ¦ Map_Base
#------------------------------------------------------------------------------
#  Base class for mini maps
#==============================================================================

class Map_Base < Sprite
 #--------------------------------------------------------------------------
 # ? constants and instances
 #--------------------------------------------------------------------------
 PMP_VERSION  = 6
 ACTIVATED_ID = 4 # set the switch id for the minimap display (on/off)
 attr_reader :event
 #--------------------------------------------------------------------------
 # ? initialize
 #--------------------------------------------------------------------------
 def initialize(corner)
super(Viewport.new(16, 16, width, height))
viewport.z = 8000
@border = Sprite.new
@border.x = viewport.rect.x - 6
@border.y = viewport.rect.y - 6
@border.z = viewport.z - 1
@border.bitmap = RPG::Cache.picture("mapback")
self.visible = on?
self.opacity = 180
case corner
when 1
  self.x = 270
  self.y = 43
when 2
  self.x = 640 - width - 16
  self.y = 16
when 3
  self.x = 16
  self.y = 480 - height - 16
when 4
  self.x = 640 - width - 16
  self.y = 480 - height - 16
else
  self.x = 16
  self.y = 16
end
self.visible = on?
 end
 #--------------------------------------------------------------------------
 # ? dispose
 #--------------------------------------------------------------------------
 def dispose
@border.dispose
super
 end
 #--------------------------------------------------------------------------
 # ? x=
 #--------------------------------------------------------------------------
 def x=(x)
self.viewport.rect.x = x
@border.x = x - 6
 end
 #--------------------------------------------------------------------------
 # ? y=
 #--------------------------------------------------------------------------
 def y=(y)
self.viewport.rect.y = y
@border.y = y - 6
 end
 #--------------------------------------------------------------------------
 # ? visible=
 #--------------------------------------------------------------------------
 def visible=(bool)
super
self.viewport.visible = bool
@border.visible = bool
 end
 #--------------------------------------------------------------------------
 # ? minimap_on?
 #--------------------------------------------------------------------------
 def on?
return $game_switches[ACTIVATED_ID]
 end
 def ACTIVATED_ID
return ACTIVATED_ID
 end
 #--------------------------------------------------------------------------
 # ? update
 #--------------------------------------------------------------------------
 def update
super
self.visible = on?

if viewport.ox < display_x
  viewport.ox += 1
elsif viewport.ox > display_x
  viewport.ox -= 1
end
if viewport.oy < display_y
  viewport.oy += 1
elsif viewport.oy > display_y
  viewport.oy -= 1
end
 end
 #--------------------------------------------------------------------------
 # ? width
 #--------------------------------------------------------------------------
 def width
return 120
 end
 #--------------------------------------------------------------------------
 # ? height
 #--------------------------------------------------------------------------
 def height
return 90
 end
 #--------------------------------------------------------------------------
 # ? display_x
 #--------------------------------------------------------------------------
 def display_x
return $game_map.display_x * 3 / 64
 end
 #--------------------------------------------------------------------------
 # ? display_y
 #--------------------------------------------------------------------------
 def display_y
return $game_map.display_y * 3 / 64
 end
end

#==============================================================================
# ¦ Map_Passability
#------------------------------------------------------------------------------
#   draws the mini map
#
#  thanks to Fanha Giang (aka fanha99) for the autotile drawing method
#==============================================================================

class Map_Passability < Map_Base
 #--------------------------------------------------------------------------
 # ? constants
 #--------------------------------------------------------------------------
 INDEX  =
 [
 26, 27, 32, 33,	4, 27, 32, 33,   26,  5, 32, 33,	4,  5, 32, 33,	
 26, 27, 32, 11,	4, 27, 32, 11,   26,  5, 32, 11,	4,  5, 32, 11,	
 26, 27, 10, 33,	4, 27, 10, 33,   26,  5, 10, 33,	4,  5, 10, 33,
 26, 27, 10, 11,	4, 27, 10, 11,   26,  5, 10, 11,	4,  5, 10, 11,  
 24, 25, 30, 31,   24,  5, 30, 31,   24, 25, 30, 11,   24,  5, 30, 11,  
 14, 15, 20, 21,   14, 15, 20, 11,   14, 15, 10, 21,   14, 15, 10, 11,
 28, 29, 34, 35,   28, 29, 10, 35,	4, 29, 34, 35,	4, 29, 10, 35,
 38, 39, 44, 45,	4, 39, 44, 45,   38,  5, 44, 45,	4,  5, 44, 45,
 24, 29, 30, 35,   14, 15, 44, 45,   12, 13, 18, 19,   12, 13, 18, 11,
 16, 17, 22, 23,   16, 17, 10, 23,   40, 41, 46, 47,	4, 41, 46, 47,
 36, 37, 42, 43,   36,  5, 42, 43,   12, 17, 18, 23,   12, 13, 42, 43,
 36, 41, 42, 47,   16, 17, 46, 47,   12, 17, 42, 47,	0,  1,  6,  7
 ]
 X = [0, 1, 0, 1]
 Y = [0, 0, 1, 1]
 #--------------------------------------------------------------------------
 # ? initialize
 #--------------------------------------------------------------------------
 def initialize(corner)
super(corner)
@autotile = RPG::Cache.picture("minimap_tiles")
setup()
 end
 #--------------------------------------------------------------------------
 # ? setup
 #--------------------------------------------------------------------------
 def setup()
@map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
tileset = $data_tilesets[@map.tileset_id]
@passages = tileset.passages
@priorities = tileset.priorities
redefine_tiles
refresh
 end
 #--------------------------------------------------------------------------
 # ? pass
 #--------------------------------------------------------------------------
 def pass(tile_id)
return 15 if tile_id == nil
return @passages[tile_id] != nil ? @passages[tile_id] : 15
 end
 #--------------------------------------------------------------------------
 # ? passable
 #--------------------------------------------------------------------------
 def passable(tile_id)
return pass(tile_id) < 15
 end
 #--------------------------------------------------------------------------
 # ? redefine_tile
 #--------------------------------------------------------------------------
 def redefine_tiles
width = @map.width
height = @map.height
map = RPG::Map.new(width, height)
map.data = @map.data.dup
for x in 0...width
  for y in 0...height
	for level in [1, 2]
	  id = @map.data[x, y, level]
	  if id != 0 and @priorities[id] == 0
		@map.data[x, y, 0] = id
		@passages[@map.data[x, y, 0]] = @passages[id]
	  end
	end
  end
end
for x in 0...width
  for y in 0...height
	for level in [0]
	tile = @map.data[x, y, level]
	u = @map.data[x,   y-1, level]
	l = @map.data[x-1, y,   level]
	r = @map.data[x+1, y,   level]
	d = @map.data[x,   y+1, level]
	if !passable(tile)
	  map.data[x, y] = 0
	else
	  if tile == 0
		map.data[x, y, level] = 0
		next
	  end
	  if pass(tile) < 15
		if !passable(u) and !passable(l) and !passable(r) and !passable(d)
		  map.data[x, y, level] = 0
		elsif !passable(u) and !passable(l) and !passable(r) and passable(d)
		  map.data[x, y, level] = 90
		elsif !passable(u) and !passable(l) and !passable(d) and passable(r)
		  map.data[x, y, level] = 91
		elsif !passable(u) and !passable(r) and !passable(d) and passable(l)
		  map.data[x, y, level] = 93
		elsif !passable(l) and !passable(r) and !passable(d) and passable(u)
		  map.data[x, y, level] = 92
		elsif !passable(u) and !passable(d) and passable(r) and passable(l)
		  map.data[x, y, level] = 81
		elsif !passable(u) and !passable(r) and passable(d) and passable(l)
		  map.data[x, y, level] = 84
		elsif !passable(u) and !passable(l) and passable(d) and passable(r)
		  map.data[x, y, level] = 82
		elsif !passable(d) and !passable(r) and passable(l) and passable(u)
		  map.data[x, y, level] = 86
		elsif !passable(d) and !passable(l) and passable(r) and passable(u)
		  map.data[x, y, level] = 88
		elsif !passable(r) and !passable(l) and passable(d) and passable(u)
		  map.data[x, y, level] = 80
		elsif !passable(u) and passable(d) and passable(r) and passable(l)
		  map.data[x, y, level] = 68
		elsif !passable(d) and passable(u) and passable(r) and passable(l)
		  map.data[x, y, level] = 76
		elsif !passable(r) and passable(d) and passable(u) and passable(l)
		  map.data[x, y, level] = 72
		elsif !passable(l) and passable(d) and passable(u) and passable(r)
		  map.data[x, y, level] = 64
		else
		  map.data[x, y, level] = 48
		end
	  else
		map.data[x, y, level] = 0
	  end
	end
	end
  end
end
@map = map.dup
map = nil
 end
 #--------------------------------------------------------------------------
 # ? refresh
 #--------------------------------------------------------------------------
 def refresh
self.visible = false
self.bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
rect1 = Rect.new(6, 0, 6, 6)
for y in 0...@map.height
  for x in 0...@map.width
	for level in [0]
	  tile_id = @map.data[x, y, level]
	  next if tile_id == 0
	  id = tile_id / 48 - 1
	  tile_id %= 48
	  for g in 0..3
		h = 4 * tile_id + g
		y1 = INDEX[h] / 6
		x1 = INDEX[h] % 6
		rect2 = Rect.new(x1 * 3, y1 * 3, 3, 3)
		bitmap.blt(x * 6 + X[g] *  3, y * 6 + Y[g] * 3, @autotile, rect2)
	  end
	end
  end
end
d_rect = Rect.new(0, 0, @map.width * 6, @map.height * 6)
s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.bitmap.stretch_blt(d_rect, bitmap, s_rect)
self.viewport.ox = display_x
self.viewport.oy = display_y
bitmap.clear
bitmap.dispose
 end
end

#==============================================================================
# ¦ Map_Event
#------------------------------------------------------------------------------
# * draw the events and hero position
#==============================================================================
class Map_Event < Map_Passability
 #--------------------------------------------------------------------------
 # ? initialize
 #--------------------------------------------------------------------------
 def initialize(corner = 4)
super(corner)
@dots = []
@name_arr = []
@player = Sprite.new(self.viewport)
@player.bitmap = RPG::Cache.picture("mm cursors")
@player.src_rect = Rect.new(0, 0, 15, 15)
@player.z = self.z + 3
@events = {}  
@page = {}
 end
 #--------------------------------------------------------------------------
 # ? dispose
 #--------------------------------------------------------------------------
 def dispose
@player.dispose
for event in @events.values
  next if event == nil or event.disposed?
  event.dispose
end
super
 end
 #--------------------------------------------------------------------------
 # ? update
 #--------------------------------------------------------------------------
 def update
super
#Update Events
for key in $game_map.events.keys
  event = $game_map.events[key]
  if @events[key] != nil and (event.erased or event.page != @page[key])
	@events[key].dispose
	@events.delete(key)
	@page.delete(key)
	next
  elsif @events[key] != nil
	next
  end
  next if event.list == nil
  for i in 0...event.list.size
	next if event.list[i].code != 108
	if event.list[i].parameters[0].include?("evento")
	  @events[key] = Sprite.new(self.viewport)
	  @events[key].z = self.z + 2
	  @events[key].bitmap = RPG::Cache.picture("event")
	  @page[key] = event.page
	elsif event.list[i].parameters[0].include?("nemico") 
	  @events[key] = Sprite.new(self.viewport)
	  @events[key].z = self.z + 2
	  @events[key].bitmap = RPG::Cache.picture("enemy")
	  @page[key] = event.page
	elsif event.list[i].parameters[0].include?("trans")
	  @events[key] = Sprite.new(self.viewport)
	  @events[key].z = self.z + 2
	  @events[key].bitmap = RPG::Cache.picture("teleport")
	  @page[key] = event.page
	elsif event.list[i].parameters[0].include?("cassa")
	  @events[key] = Sprite.new(self.viewport)
	  @events[key].z = self.z + 2
	  @events[key].bitmap = RPG::Cache.picture("chest")
	  @page[key] = event.page
	elsif event.list[i].parameters[0].include?("tizio")
	  @events[key] = Sprite.new(self.viewport)
	  @events[key].z = self.z + 2
	  @events[key].bitmap = RPG::Cache.picture("npc")
	  @page[key] = event.page
	elsif event.list[i].parameters[0].include?("salvo")
	  @events[key] = Sprite.new(self.viewport)
	  @events[key].z = self.z + 2
	  @events[key].bitmap = RPG::Cache.picture("savepoint")
	  @page[key] = event.page
	end
  end
end
@player.x = $game_player.real_x * 3 / 64 - 5
@player.y = $game_player.real_y * 3 / 64 - 4
@player.src_rect.x = ($game_player.direction / 2 - 1) * 15
for key in @events.keys
  event = @events[key]
  next if event == nil or event.disposed?
  mapevent = $game_map.events[key]
  event.x = mapevent.real_x * 3 / 64
  event.y = mapevent.real_y * 3 / 64
end
 end
end
#============================================================================
# *  Game Event 
#============================================================================
class Game_Event < Game_Character
 attr_reader   :page
 attr_reader   :erased
end

Edited by UltimaEsper
Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

in queste righe:

 

def initialize(corner)
super(Viewport.new(16, 16, width, height))
viewport.z = 8000
@border = Sprite.new
@border.x = viewport.rect.x - 6
@border.y = viewport.rect.y - 6
@border.z = viewport.z - 1
@border.bitmap = RPG::Cache.picture("mapback")
self.visible = on?
self.opacity = 180
case corner
when 1
  self.x = 270
  self.y = 43
when 2
  self.x = 640 - width - 16
  self.y = 16
when 3
  self.x = 16
  self.y = 480 - height - 16
when 4
  self.x = 640 - width - 16
  self.y = 480 - height - 16
else
  self.x = 16
  self.y = 16
end

 

puoi settare dove andrà la minimappa in base all'angolo scelto.

 

tu ne modifichi uno, facciamo che modifichi l'opzione 1 che sistema la minimappa in alto a sinistra. dopo aver azzeccato le coordinate per il centro ogni volta che metterai 1 la minimappa sarà al centro.

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 0
Io ho provato a modificare quei parametri, ma si spostano tutte e due insieme :( alla fine rimagono sempre nella stessa posizione anche se magari sono più a destra o sinistra.. io vorrei solo che la mappina grigia stesse dentro quella azzurra.. ma davvero non so come fare :( ho provato in tutti i modi..
Link to comment
Share on other sites

  • 0

ah...non avevo capito.

 

spostando come ti ho detto si sposta la minimappa al centro?

 

e la mappina azzura non è visualizzata con un "mostra figura"? anche lì puoi impostare dove visualizzarla...

 

forse continuo a non capire o.O

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 0
La mappina azzurra è un'immagine che ho messoin Picture al posto di un'altra con lo stesso nome :) mapback. A me va benissimo in alto a destra, però vorrei che la mappa grigia stesse al centro di quella azzurra.. ma non riesco a farle combaciare.. In pratica la mappa azzurra sarebbe una cornice per quella grigia :)
Link to comment
Share on other sites

  • 0
ok, ma la mappa azzurra l'hai aggiunta te oppure è obbligatoria per lo script?

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 0

Aggiunta. O meglio c'erà già un'immagine chiamata mapback, solo che non appariva enllo schermo quando si gioca. Così ho pensato di sostituirla con quella azzurra e funziona.

 

E possibile togliere quella grigia e sostituirla con quella azzurra? Ho cercato su picture l'immagine della tabella grigia, ma non c'è.. e mi domando allora da dove la prende :(

 

mi aiutate? XD

Edited by UltimaEsper
Link to comment
Share on other sites

  • 0

Allora ricominciamo da capo. Ho un problema con la posizione della "mapback". Vale dire l'immagine che sta dietro la mappa. Ho sostituito l'immagine mapback con una creata da me e l'ho rinominata allo stesso modo. Tuttavia, nel gioco, non appaiono più centrate come prima, avrei bisogno che qualcuno mi dica che parte dello script devo modificare per rimetterle centrate. Siate il più possibile specifici XD non riportatemi metà script dicendomi: questa è la parte da modificare XD Grazie

 

Screen

 

http://img517.imageshack.us/img517/4238/immaginepp4.png

Edited by UltimaEsper
Link to comment
Share on other sites

  • 0

se ho capito bene, devi spostare il bordo dietro la minimappa, giusto?

le coordinate dell'immagine del bordo dovrebbero essere queste (non lo so con precisione perchè non ho mai provato lo script, ma dal nome delle variabili penso che siano queste):

 

@border.x = viewport.rect.x - 6
@border.y = viewport.rect.y - 6

 

devi modificare quel 6. siccome vedo che l'immagine è più avanti rispetto alla minimappa, dovresti aumentare quel 6 (saranno dai 5 ai 10 pixel in più).. con aumentare ovviamente intendo solamente quel numero, in modo che la sottrazione dia un numero più basso e che quindi l'immagine sia più a sinistra e più in alto ^^

"Dopo gli ultimi Final Fantasy, ho capito solamente una cosa: che il gioco è bello quando Nomura poco."

Making is not dead. You are dead.
RELEASE: La Bussola d'Oro | Download | Video di anteprima - La Partenza di Hanna

http://i.imgur.com/cFgc2lW.png

Prova Standrama!

Link to comment
Share on other sites

  • 0

Eureka! La parte da modificare è questa:

 

#--------------------------------------------------------------------------
 # ? dispose
 #--------------------------------------------------------------------------
 def dispose
@border.dispose
super
 end
 #--------------------------------------------------------------------------
 # ? x=
 #--------------------------------------------------------------------------
 def x=(x)
self.viewport.rect.x = x
[color="#FF00FF"]@border.x = x - 6[/color]
 end
 #--------------------------------------------------------------------------
 # ? y=
 #--------------------------------------------------------------------------
 def y=(y)
self.viewport.rect.y = y
[color="#FF00FF"]@border.y = y - 6[/color]
 end

 

Il risultato è questo ^^

 

http://img522.imageshack.us/img522/4856/immagineyu0.png

 

Grazie a tutti per i consigli. Alla fine ci siamo riusciti hehe

Link to comment
Share on other sites

  • 0

Bene, siamo contenti! ^^

 

ora edita il primo messaggio: "modifica completa" e nel titolo metti [RISOLTO] ^^

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 0

perfetto! ^^

 

così chi legge il topic sà già che è stato risolto il problema e se entra, entra per sapere come è stato sistemato così da esser utile a tutti ^^

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 0

Se volete ho ottimizzato la cornice della mappa ;) se volete ve la espongo così la potete salvare.

 

http://img53.imageshack.us/img53/8792/mapback1611bp5.png

 

Inoltre l'immagine che vedete è un'insieme di immagini medio trasparenti. Così nel caso il vostro pg dovesse passare sotto la sfera azzurra si vedrà cmq con un'effetto vetro.

Edited by UltimaEsper
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...