WR Heart rpg
Vuoi reagire a questo messaggio? Crea un account in pochi clic o accedi per continuare.

Minimappa

Andare in basso

Iconxp Minimappa

Messaggio Da JillChelsea il Ven Mag 18, 2012 2:00 pm

- Nome: Minimappa
- Autore: Selwyn
- Versione: N/D (Unica)

Descrizione
Semplice script che permette l'aggiunta di una minimappa su schermo.

Istruzioni
Prima di tutto, copiare il codice sopra Main e sotto gli altri script di default.
Poi, salvate le seguenti picture nella cartella 'Graphics/Pictures', senza rinominarle!
Spoiler:

Per far apparire un evento sulla minimappa, inserire uno di questi codici dentro un commento all'interno dell'evento.

Minimappa Npc npc
Minimappa Teleport teleport
Minimappa Chest chest
Minimappa Enemy enemy
Minimappa Event event
Minimappa Savepoint savepoint

La minimappa può essere attivata con l'utilizzo di una switch, di default la Switch #1, che può essere cambiata all'interno dello script, modificando questa linea di codice:
Codice:
ACTIVATED_ID = 1
1= Switch per l'attivazione della minimappa (ON/OFF)

Per spostare la minimappa, andate invece qui:
Codice:
@corner = 4
1= Angolo in alto a sinistra
2= Angolo in alto a destra
3= Angolo in basso a sinistra
4= (Default) Angolo in basso a destra

Script
Spoiler:
Codice:
#==============================================================================
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��“  Passability Mini Map
#------------------------------------------------------------------------------
# made by Selwyn/Squall // 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
alias main_passminimap main
alias update_passminimap update
alias transfer_passminimap transfer_player
#--------------------------------------------------------------------------
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��ƒ¯�‚¿�‚½ initialize
#--------------------------------------------------------------------------
def initialize
@corner = 4 # 1 or 2 or 3 or 4
end
#--------------------------------------------------------------------------
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��ƒ¯�‚¿�‚½ main
#--------------------------------------------------------------------------
def main
@mini_map = Map_Event.new(@corner)
main_passminimap
@mini_map.dispose
end
#--------------------------------------------------------------------------
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��ƒ¯�‚¿�‚½ update
#--------------------------------------------------------------------------
def update
@mini_map.update
if $game_system.map_interpreter.running?
@mini_map.visible = false
elsif not $game_system.map_interpreter.running? and @mini_map.on?
@mini_map.visible = true
end
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 = 1 # 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 = 16
self.y = 16
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
#--------------------------------------------------------------------------
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��ƒ¯�‚¿�‚½ 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 = []
@player = Sprite.new(self.viewport)
@player.bitmap = RPG::Cache.picture("mmcursors")
@player.src_rect = Rect.new(0, 0, 15, 15)
@player.z = self.z + 3
@events = {}

for key in $game_map.events.keys
event = $game_map.events[key]
next if event.list == nil
for i in 0...event.list.size
next if event.list[i].code != 108
@events[key] = Sprite.new(self.viewport)
@events[key].z = self.z + 2
if event.list[i].parameters[0].include?("event")
@events[key].bitmap = RPG::Cache.picture("event")
elsif event.list[i].parameters[0].include?("enemy")
@events[key].bitmap = RPG::Cache.picture("enemy")
elsif event.list[i].parameters[0].include?("teleport")
@events[key].bitmap = RPG::Cache.picture("teleport")
elsif event.list[i].parameters[0].include?("chest")
@events[key].bitmap = RPG::Cache.picture("chest")
elsif event.list[i].parameters[0].include?("npc")
@events[key].bitmap = RPG::Cache.picture("npc")
elsif event.list[i].parameters[0].include?("savepoint")
@events[key].bitmap = RPG::Cache.picture("savepoint")
end
end
end
end
#--------------------------------------------------------------------------
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��ƒ¯�‚¿�‚½ dispose
#--------------------------------------------------------------------------
def dispose
@player.dispose
for event in @events.values
event.dispose
end
super
end
#--------------------------------------------------------------------------
# �ƒ �‚¹â�‚�š�ƒ¢â�€š¬â�‚��ƒ¯�‚¿�‚½ update
#--------------------------------------------------------------------------
def update
super
@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]
mapevent = $game_map.events[key]
event.x = mapevent.real_x * 3 / 64
event.y = mapevent.real_y * 3 / 64
end
end
end

Demo
Minimappa Downloadbannercutie


Ultima modifica di JillChelsea il Lun Giu 04, 2012 3:24 pm, modificato 1 volta
JillChelsea
JillChelsea

Data d'iscrizione : 15.07.11
Età : 22
Località : Sessa Aurunca (CE)

Torna in alto Andare in basso

Iconxp Re: Minimappa

Messaggio Da Zmaster il Sab Giu 02, 2012 9:44 am

K bella.E le immagini si pox cambiare?I pallini colorati intendo.
Zmaster
Zmaster

Data d'iscrizione : 13.07.11
Età : 26

Torna in alto Andare in basso

Iconxp Re: Minimappa

Messaggio Da Saul™ il Sab Giu 02, 2012 10:27 am

Certamente. Basta aprire un programma di grafica (photoshop, gimp, ecc.) e le modifichi.
Saul™
Saul™

Data d'iscrizione : 01.10.11
Età : 25

Torna in alto Andare in basso

Iconxp Re: Minimappa

Messaggio Da Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto


 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.