City-Maker
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Retour en stock du coffret Pokémon Zénith Suprême – ...
Voir le deal

 

 Mini map / radar

Aller en bas 
2 participants
AuteurMessage
Dark Zorro

Dark Zorro


Nombre de messages : 282
Age : 33
Localisation : Rouen Seine Maritime
Date d'inscription : 01/04/2006

Mini map / radar Empty
MessageSujet: Mini map / radar   Mini map / radar EmptyMar 9 Mai - 17:50

Ce script permet d'ajouter une mini map (carte) dans le jeu, avec points de positions des différents objets, personnes.
Mini map / radar Minimapsm5ag

Si vous voulez une démo, cliquer ici

Ajoutez un script au dessus de "main", appelez le "Mini Map", pour faute de place, j'ai du le couper en 2 :
Citation :
#==============================================================================
# ■ Game_Event
#==============================================================================

class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● name
#--------------------------------------------------------------------------
def name
return @event.name
end
end

#==============================================================================
# ■ Map_Base
#------------------------------------------------------------------------------
#  Base class for mini maps
#
# made by squall // squall@loeher.zzn.com
#==============================================================================

class Map_Base
MP_VERSION = 5
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize(corner, use_windowskin)
@tileset_name = $game_map.tileset_name
@bg = Window_Base.new(0, 0, 144, 112)
@bg.z = 9000
if no_display?
@bg.windowskin = nil
else
unless use_windowskin
@bg.dispose
@bg = Window_Base.new(0, 0, 160, 128)
@bg.contents = Bitmap.new(128, 96)
@bg.windowskin = nil
bmp = RPG::Cache.picture("mapback")
@bg.contents.blt(0, 0, bmp, Rect.new(0, 0, 128, 96))
@bg.z = 9015
end
end
@map = Sprite.new
@map.bitmap = Bitmap.new(map_width, map_height)
@map.z = 9005
@event = Sprite.new
@event.bitmap = Bitmap.new(map_width, map_height)
@event.z = 9010
self.back_opacity = 180
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
end
#--------------------------------------------------------------------------
# ● display_map?
#--------------------------------------------------------------------------
def no_map_display?
for event in $game_map.events.values
if event.name.include?("[no map]")
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● display_map?
#--------------------------------------------------------------------------
def no_event_display?
for event in $game_map.events.values
if event.name.include?("[no event]")
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● display_map?
#--------------------------------------------------------------------------
def no_display?
for event in $game_map.events.values
if event.name.include?("[no map]") and event.name.include?("[no event]")
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● dispose
#--------------------------------------------------------------------------
def dispose
@bg.dispose
@map.bitmap.dispose
@map.dispose
@event.bitmap.dispose
@event.dispose
end
#--------------------------------------------------------------------------
# ● map
#--------------------------------------------------------------------------
def map
return @map
end
#--------------------------------------------------------------------------
# ● event
#--------------------------------------------------------------------------
def event
return @event
end
#--------------------------------------------------------------------------
# ● width
#--------------------------------------------------------------------------
def width
return 128
end
#--------------------------------------------------------------------------
# ● opacity=
#--------------------------------------------------------------------------
def height
return 96
end
#--------------------------------------------------------------------------
# ● opacity=
#--------------------------------------------------------------------------
def visible=(bool)
@bg.visible = bool
@event.visible = bool
@map.visible = bool
end
#--------------------------------------------------------------------------
# ● opacity
#--------------------------------------------------------------------------
def visible
return @bg.visible
end
#--------------------------------------------------------------------------
# ● opacity=
#--------------------------------------------------------------------------
def opacity=(opacity)
@event.opacity = opacity
@map.opacity = opacity
end
#--------------------------------------------------------------------------
# ● opacity
#--------------------------------------------------------------------------
def opacity
return @event.opacity
end
#--------------------------------------------------------------------------
# ● back_opacity=
#--------------------------------------------------------------------------
def back_opacity=(opacity)
@bg.opacity = opacity
@bg.contents_opacity = opacity if @bg.contents != nil
end
#--------------------------------------------------------------------------
# ● back_opacity
#--------------------------------------------------------------------------
def back_opacity
return @bg.opacity
end
#--------------------------------------------------------------------------
# ● x=
#--------------------------------------------------------------------------
def x=(x)
@bg.x = x - (@bg.width - 128) / 2
@event.x = x + 8
@map.x = x + 8
end
#--------------------------------------------------------------------------
# ● x
#--------------------------------------------------------------------------
def x
return @bg.x
end
#--------------------------------------------------------------------------
# ● y=
#--------------------------------------------------------------------------
def y=(y)
@bg.y = y - (@bg.height - 96) / 2
@event.y = y + 8
@map.y = y + 8
end
#--------------------------------------------------------------------------
# ● y
#--------------------------------------------------------------------------
def y
return @bg.y
end
#--------------------------------------------------------------------------
# ● map_width
#--------------------------------------------------------------------------
def map_width
return $game_map.width * 112/20
end
#--------------------------------------------------------------------------
# ● map_height
#--------------------------------------------------------------------------
def map_height
return $game_map.height * 80/15
end
#--------------------------------------------------------------------------
# ● display_x
#--------------------------------------------------------------------------
def display_x
return $game_map.display_x / 128 * 112/20
end
#--------------------------------------------------------------------------
# ● map_height
#--------------------------------------------------------------------------
def display_y
return $game_map.display_y / 128 * 80/15
end
end


Dernière édition par le Mar 9 Mai - 17:52, édité 1 fois
Revenir en haut Aller en bas
http://manga-rpg-jv.forumpro.fr
Dark Zorro

Dark Zorro


Nombre de messages : 282
Age : 33
Localisation : Rouen Seine Maritime
Date d'inscription : 01/04/2006

Mini map / radar Empty
MessageSujet: Re: Mini map / radar   Mini map / radar EmptyMar 9 Mai - 17:50

Suite :


Citation :
#==============================================================================
# ■ Map_Mini
#------------------------------------------------------------------------------
#  Base class for mini maps
#
# made by squall // squall@loeher.zzn.com
#==============================================================================

class Map_Mini < Map_Base
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize(corner, use_windowskin)
super(corner, use_windowskin)
unless no_map_display?
draw_map
end
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
map.src_rect.set(display_x, display_y, width - 16, height - 16)
if @tileset_name != $game_map.tileset_name
@tileset_name = $game_map.tileset_name
unless no_map_display?
map.bitmap.clear
draw_map
end
end
end
#--------------------------------------------------------------------------
# ● draw_map
#--------------------------------------------------------------------------
def draw_map
bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32)
for i in 0...($game_map.width * $game_map.height)
x = i % $game_map.width
y = i / $game_map.width
for level in 0...3
tile_id = $game_map.data[x, y, level]
if tile_id >= 384
tileset_bitmap = RPG::Cache.tile($game_map.tileset_name, tile_id, 0)
src_rect = Rect.new(0, 0, 32, 32)
bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
end
if tile_id >= 48 and tile_id < 384
id = tile_id / 48 - 1
tileset_bitmap = RPG::Cache.autotile($game_map.autotile_names[id])
src_rect = Rect.new(32, 64, 32, 32)
bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
end
end
end
d_rect = Rect.new(0, 0, map_width, map_height)
s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
map.bitmap.stretch_blt(d_rect, bitmap, s_rect)
bitmap.clear
bitmap.dispose
end
end
#==============================================================================
# ■ Map_Event
#------------------------------------------------------------------------------
#  draw the events and hero position
#==============================================================================

class Map_Event < Map_Mini
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize(corner = 4, windowskin = true)
super(corner, windowskin)
@dots = []
end
#--------------------------------------------------------------------------
# ● refresh_dots
#--------------------------------------------------------------------------
def refresh_event_dots
for event in $game_map.events.values
bitmap = nil
x = event.x * map_width / $game_map.width
y = event.y * map_height / $game_map.height
next if event.list == nil
for i in 0...event.list.size
if event.list[i].parameters[0].is_a?(String)
if event.list[i].parameters[0] == "event"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0] == "enemy"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0].include?("teleport")
bitmap = RPG::Cache.picture("teleport")
break
elsif event.list[i].parameters[0] == "chest"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0] == "npc"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0] == "savepoint"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
else
bitmap = nil
end
end
end
@dots.push([x, y, bitmap])
end
end
#--------------------------------------------------------------------------
# ● refresh_dots
#--------------------------------------------------------------------------
def refresh_player_dot
x = $game_player.x * map_width / $game_map.width
y = $game_player.y * map_height / $game_map.height
bitmap = RPG::Cache.picture("hero")
@dots.push([x, y, bitmap])
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
super
@dots.clear
event.bitmap.clear
refresh_event_dots unless no_event_display?
refresh_player_dot unless no_display?
for dot in @dots
unless dot[2] == nil
event.bitmap.blt(dot[0], dot[1], dot[2], Rect.new(0, 0, 4, 4))
end
end
event.src_rect.set(display_x, display_y, width - 16, height - 16)
end
end
#==============================================================================
# ■ Map_Full
#------------------------------------------------------------------------------
# made by squall // squall@loeher.zzn.com
#==============================================================================

class Map_Full
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
@dots = []
@teleport_sprites = []
if $game_map.width > $game_map.height
@map_width = 640
@map_height = $game_map.height * @map_width / $game_map.width
if @map_height > 480
@map_height = 480
end
else
@map_height = 480
@map_width = $game_map.width * @map_height / $game_map.height
if @map_width > 640
@map_width = 640
end
end
@map = Sprite.new
@event = Sprite.new
@map.bitmap = Bitmap.new(width, height)
@event.bitmap = Bitmap.new(width, height)
@map.x = @event.x = 320 - width / 2
@map.y = @event.y = 240 - height / 2
draw_map unless no_map_display?
draw_event_dots unless no_event_display?
draw_player_dot unless no_display?
if no_display?
@message = Window_Base.new(0, 208, 640, 64)
message = "the map is not available"
@message.contents = Bitmap.new(608, 32)
@message.contents.font.name = "Arial"
@message.contents.font.size = 32
@message.contents.font.color.set(255, 255, 255, 100)
@message.contents.draw_text(-1, -1, 608, 32, message, 1)
@message.contents.draw_text(-1, 1, 608, 32, message, 1)
@message.contents.draw_text(1, -1, 608, 32, message, 1)
@message.contents.draw_text(1, 1, 608, 32, message, 1)
@message.contents.font.color.set(255, 255, 255, 50)
@message.contents.draw_text(-2, -2, 608, 32, message, 1)
@message.contents.draw_text(-2, 2, 608, 32, message, 1)
@message.contents.draw_text(2, -2, 608, 32, message, 1)
@message.contents.draw_text(2, 2, 608, 32, message, 1)
@message.contents.font.color.set(255, 255, 255)
@message.contents.draw_text(0, 0, 608, 32, message, 1)
@message.windowskin = nil
end
end
#--------------------------------------------------------------------------
# ● display_map?
#--------------------------------------------------------------------------
def no_map_display?
for event in $game_map.events.values
if event.name.include?("[full]")
return false
end
if event.name.include?("[no map]")
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● display_map?
#--------------------------------------------------------------------------
def no_event_display?
for event in $game_map.events.values
if event.name.include?("[full]")
return false
end
if event.name.include?("[no event]")
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● display_map?
#--------------------------------------------------------------------------
def no_display?
for event in $game_map.events.values
if event.name.include?("[full]")
return false
end
if event.name.include?("[no map]") and event.name.include?("[no event]")
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● dispose
#--------------------------------------------------------------------------
def dispose
for sprite in @teleport_sprites
sprite.dispose
end
@message.dispose if no_display?
@map.bitmap.dispose
@map.dispose
@event.bitmap.dispose
@event.dispose
end
#--------------------------------------------------------------------------
# ● width
#--------------------------------------------------------------------------
def width
return @map_width
end
#--------------------------------------------------------------------------
# ● opacity=
#--------------------------------------------------------------------------
def height
return @map_height
end
#--------------------------------------------------------------------------
# ● draw_map
#--------------------------------------------------------------------------
def draw_map
bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32)
for i in 0...($game_map.width * $game_map.height)
x = i % $game_map.width
y = i / $game_map.width
for level in 0...3
tile_id = $game_map.data[x, y, level]
if tile_id >= 384
tileset_bitmap = RPG::Cache.tile($game_map.tileset_name, tile_id, 0)
src_rect = Rect.new(0, 0, 32, 32)
bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
end
if tile_id >= 48 and tile_id < 384
id = tile_id / 48 - 1
tileset_bitmap = RPG::Cache.autotile($game_map.autotile_names[id])
src_rect = Rect.new(32, 64, 32, 32)
bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
end
end
end
d_rect = Rect.new(0, 0, width, height)
s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
@map.bitmap.stretch_blt(d_rect, bitmap, s_rect)
bitmap.clear
bitmap.dispose
end
#--------------------------------------------------------------------------
# ● refresh_dots
#--------------------------------------------------------------------------
def draw_event_dots
for event in $game_map.events.values
bitmap = nil
x = event.x * width / $game_map.width
y = event.y * height / $game_map.height
next if event.list == nil
for i in 0...event.list.size
if event.list[i].parameters[0].is_a?(String)
if event.list[i].parameters[0] == "event"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0] == "enemy"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0].include?("teleport")
bitmap = RPG::Cache.picture("teleport")
name = event.list[i].parameters[0].dup
name.slice!("teleport, ")
@teleport_sprites.push(new_name_sprite(name, x, y))
break
elsif event.list[i].parameters[0] == "chest"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0] == "npc"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
elsif event.list[i].parameters[0] == "savepoint"
bitmap = RPG::Cache.picture(event.list[i].parameters[0])
break
else
bitmap = nil
end
end
end
@dots.push([x, y, bitmap])
end
for dot in @dots
unless dot[2] == nil
@event.bitmap.blt(dot[0], dot[1], dot[2], Rect.new(0, 0, 4, 4))
end
end
end
#--------------------------------------------------------------------------
# ● new_name_sprite
#--------------------------------------------------------------------------
def new_name_sprite(name, x, y)
sprite = Sprite.new
sprite.y = y + 240 - height / 2
x + 128 > 640 ? sprite.x = 512 : sprite.x = x + 320 - width / 2
bitmap = Bitmap.new(128, 32)
bitmap.font.name, bitmap.font.size = "Arial", 20
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 128, 32, name)
sprite.bitmap = bitmap
return sprite
end
#--------------------------------------------------------------------------
# ● refresh_dots
#--------------------------------------------------------------------------
def draw_player_dot
x = $game_player.x * width / $game_map.width
y = $game_player.y * height / $game_map.height
bitmap = RPG::Cache.picture("hero")
@event.bitmap.blt(x, y, bitmap, Rect.new(0, 0, 4, 4))
end
end

#==============================================================================
# ■ Scene_MiniMap
#------------------------------------------------------------------------------
#  draw the map full screen
#==============================================================================

class Scene_MiniMap
#--------------------------------------------------------------------------
# ● main
#--------------------------------------------------------------------------
def main
@map = Map_Full.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@map.dispose
end
#--------------------------------------------------------------------------
# ● Update the contents of all five windows on the main menu
#--------------------------------------------------------------------------
def update
if Input.trigger?(Input::B) | Input.trigger?(Input::CTRL)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
end
end

#==============================================================================
# ■ 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
#
# @use_windowskin is whether true or false. true if you want to use the
# the current windowskin for the minimap background.
# or false if you want to use the picture named mapback in your picture folder.
#==============================================================================

class Scene_Map
alias main_minimap main
alias update_minimap update
alias transfer_minimap transfer_player
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
@corner = 4 # 1 or 2 or 3 or 4
@use_windowskin = false # true or false
end
#--------------------------------------------------------------------------
# ● main
#--------------------------------------------------------------------------
def main
@event_map = Map_Event.new(@corner, @use_windowskin)
main_minimap
@event_map.dispose
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
@event_map.update
if $game_system.map_interpreter.running?
@event_map.visible = false
else
@event_map.visible = true
end
if Input.trigger?(Input::CTRL)
$game_system.se_play($data_system.decision_se)
$scene = Scene_MiniMap.new
return
end
update_minimap
end
#--------------------------------------------------------------------------
# ● transfer_player
#--------------------------------------------------------------------------
def transfer_player
transfer_minimap
@event_map.dispose
@event_map = Map_Event.new(@corner, @use_windowskin)
end
end
Revenir en haut Aller en bas
http://manga-rpg-jv.forumpro.fr
Dark Zorro

Dark Zorro


Nombre de messages : 282
Age : 33
Localisation : Rouen Seine Maritime
Date d'inscription : 01/04/2006

Mini map / radar Empty
MessageSujet: Re: Mini map / radar   Mini map / radar EmptyDim 14 Mai - 14:36

Et maintenant mettez ces image dans graphic/pictures :
Mini map / radar Chest6bj

Mini map / radar Enemy4at

Mini map / radar Event2tx

Mini map / radar Hero7fg

Mini map / radar Mapback3qp

Mini map / radar Npc2xx

Mini map / radar Savepoint1bq

Mini map / radar Teleport7fe



Et pour les utiliser, télécharger la démo, dans laquelle, les différents manipulations sont expliqués.
Revenir en haut Aller en bas
http://manga-rpg-jv.forumpro.fr
Kallel

Kallel


Nombre de messages : 11
Age : 32
Localisation : En Terre du Milieu
Date d'inscription : 25/06/2006

Mini map / radar Empty
MessageSujet: Re: Mini map / radar   Mini map / radar EmptyDim 25 Juin - 14:36

Je l'ai fait, mais quand je démarre le jeu, il me met :
"Le fichier No such file or directory - Graphics/Pictures/mapback n'a pas été trouvé".
Revenir en haut Aller en bas
http://alliance-cg.superforum.fr/index.forum et http://www.galax
Kallel

Kallel


Nombre de messages : 11
Age : 32
Localisation : En Terre du Milieu
Date d'inscription : 25/06/2006

Mini map / radar Empty
MessageSujet: Re: Mini map / radar   Mini map / radar EmptyDim 25 Juin - 14:47

Non c'est bon, c'est régler !
Revenir en haut Aller en bas
http://alliance-cg.superforum.fr/index.forum et http://www.galax
Contenu sponsorisé





Mini map / radar Empty
MessageSujet: Re: Mini map / radar   Mini map / radar Empty

Revenir en haut Aller en bas
 
Mini map / radar
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mini FPS

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
City-Maker :: Rpg Maker XP :: Recherche graphique/technique :: Techniques :: Scripts-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser