Azsak von Triger - Wto 03 Lis, 2009 13:01 Temat postu: Mini mapaHej!
Może nie jest to idealna mini mapa ,ale mam nadzieję ,że komuś się przyda.
SCREEN:
Spoiler:
SKRYPT:
Spoiler:
Kod:
#===============================================================
# ● [VX] ◦ MiniMap ◦ □
# * Plug N Play Minimap (Don't need image~) *
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 09/06/2008
# ◦ Version: 1.0
#--------------------------------------------------------------
# ◦ Credit: KGC for XP MiniMap Script,
# this script can't be done without his MiniMap.
#--------------------------------------------------------------
module MiniMap
#===========================================================================
# [START] MINIMAP SCRIPT SETUP PART
#---------------------------------------------------------------------------
SWITCH_NO_MINIMAP = 10 # Turn ON this switch to NOT SHOW minimap
MAP_RECT = [410, 20, 100, 100] # Minimap size and position
# [X, Y, Width, Height]
# You can change it in game, by call script:
# $game_system.minimap = [X, Y, Width, Height]
MAP_Z = 0 # Minimap's Z-coordinate
# Increase this number if there is problem that minimap show below some objects.
GRID_SIZE = 5 # Minimap's grid size. Recommend to use more than 3.
FOREGROUND_COLOR = Color.new(224, 224, 255, 160) # Passable tile color
BACKGROUND_COLOR = Color.new(0, 0, 0, 160) # Unpassable tile color
USE_OUTLINE_PLAYER = true # Draw outline around player in minimap?
PLAYER_OUTLINE_COLOR = Color.new(0, 0, 0, 192) # Player Outline color
USE_OUTLINE_EVENT = true # Draw outline around events in minimap?
EVENT_OUTLINE_COLOR = Color.new(255, 255, 255, 192) # Player Outline color
PLAYER_COLOR = Color.new(255, 0, 0, 192) # Player color
#---------------------------------------------------------------------------
OBJECT_COLOR = {} # Don't change or delete this line!
#===============================================================
# * SETUP EVENT KEYWORD & COLOR
#---------------------------------------------------------------
# ** Template:
# OBJECT_COLOR['keyword'] = Color.new(Red, Green, Blue, Opacity)
#-------------------------------------------------------------
# * 'keyword': Word you want to put in event's comment to show this color
# ** Note: 'keyword' is CASE SENSITIVE!
# * Color.new(...): Color you want
# You can put between 0 - 255 in each argument (Red, Green, Blue, Opacity)
#-------------------------------------------------------------
OBJECT_COLOR['npc'] = Color.new(30,144,255,160)
OBJECT_COLOR['treasure'] = Color.new(0,255,255,160)
OBJECT_COLOR['enemy'] = Color.new(139,35,35,160)
OBJECT_COLOR['merchant'] = Color.new(255,255,0,160)
#===========================================================================
# * [OPTIONAL] TAGS:
#---------------------------------------------------------------------------
# Change keyword for disable minimap & keyword for show event on minimap~
#-----------------------------------------------------------------------
TAG_NO_MINIMAP = '[NOMAP]' # Tag for disable minimap
TAG_EVENT = 'MMEV' # Tag for show event on minimap
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# [END] MINIMAP SCRIPT SETUP PART
#===========================================================================
def self.refresh
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.refresh
end
end
def self.update_object
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.update_object_list
end
end
end
#==============================================================================
# ■ RPG::MapInfo
#==============================================================================
class RPG::MapInfo
def name
return @name.gsub(/\[.*\]/) { }
end
def original_name
return @name
end
def show_minimap?
return !@name.include?(MiniMap::TAG_NO_MINIMAP)
end
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :minimap
alias wora_minimap_gamsys_ini initialize
def initialize
wora_minimap_gamsys_ini
@minimap = MiniMap::MAP_RECT
end
def show_minimap
return !$game_switches[MiniMap::SWITCH_NO_MINIMAP]
end
end
#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map
alias wora_minimap_gammap_setup setup
def setup(map_id)
wora_minimap_gammap_setup(map_id)
@db_info = load_data('Data/MapInfos.rvdata') if @db_info.nil?
@map_info = @db_info[map_id]
end
def show_minimap?
return @map_info.show_minimap?
end
end
#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
def mm_comment?(comment, return_comment = false )
if !@list.nil?
for i in 0...@list.size - 1
next if @list[i].code != 108
if @list[i].parameters[0].include?(comment)
return @list[i].parameters[0] if return_comment
return true
end
end
end
return '' if return_comment
return false
end
end
#==============================================================================
# ■ Game_MiniMap
#------------------------------------------------------------------------------
class Game_MiniMap
def initialize(tilemap)
@tilemap = tilemap
refresh
end
$game_map.width.times do |i|
$game_map.height.times do |j|
if !$game_map.passable?(i, j)
next
end
rect = Rect.new(map_rect.width / 2 + grid_size * i,
map_rect.height / 2 + grid_size * j,
grid_size, grid_size)
if grid_size >= 3
if !$game_map.passable?(i, j)
rect.height -= 1
rect.x += 1
rect.width -= 1
rect.width -= 1
rect.y += 1
rect.height -= 1
end
end
bitmap.fill_rect(rect, MiniMap::FOREGROUND_COLOR)
end
end
end
def update_object_list
@object_list = {}
$game_map.events.values.each do |e|
comment = e.mm_comment?(MiniMap::TAG_EVENT, true)
if comment != ''
type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\s+/){}
@object_list[type] = [] if @object_list[type].nil?
@object_list[type] << e
end
end
end
@object_list.each do |key, events|
color = MiniMap::OBJECT_COLOR[key]
next if events.nil? or color.nil?
events.each do |obj|
if !obj.character_name.empty?
rect.x = mw + obj.real_x * grid_size / 256
rect.y = mh + obj.real_y * grid_size / 256
# Event's Outline
if MiniMap::USE_OUTLINE_EVENT and MiniMap::GRID_SIZE >= 3
bitmap.fill_rect(rect, MiniMap::EVENT_OUTLINE_COLOR)
brect = Rect.new(rect.x + 1, rect.y + 1, rect.width - 2,
rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end
bitmap.fill_rect(brect, color)
end
end
end
end
def update
if @mmr != $game_system.minimap
dispose
refresh
end
draw_object
update_position
if @map_sprite.visible
@map_sprite.update
@object_sprite.update
@position_sprite.update
end
end
def update_position
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
sx = $game_player.real_x * grid_size / 256
sy = $game_player.real_y * grid_size / 256
@map_sprite.src_rect.x = sx
@map_sprite.src_rect.y = sy
@object_sprite.src_rect.x = sx
@object_sprite.src_rect.y = sy
end
end
#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
class Spriteset_Map
attr_reader :minimap
alias wora_minimap_sprsetmap_ini initialize
alias wora_minimap_sprsetmap_dis dispose
alias wora_minimap_sprsetmap_upd update
def initialize
wora_minimap_sprsetmap_ini
if $game_map.show_minimap?
@minimap = Game_MiniMap.new(@tilemap)
$game_system.show_minimap = true if $game_system.show_minimap.nil?
@minimap.visible = $game_system.show_minimap
end
end
def dispose
@minimap.dispose if !@minimap.nil?
wora_minimap_sprsetmap_dis
end
def update
if !@minimap.nil?
if $game_system.show_minimap
@minimap.visible = true
@minimap.update
else
@minimap.visible = false
end
end
wora_minimap_sprsetmap_upd
end
end
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
attr_reader :spriteset
end
Szczurek - Sro 04 Lis, 2009 07:32
Cytat:
Credit: KGC for XP MiniMap Script,
# this script can't be done without his MiniMap
Chyba zapomniałeś o czymś :DAzsak von Triger - Sro 04 Lis, 2009 12:16 Czepiasz się Szczurek .Ayene - Sro 04 Lis, 2009 13:54 Minimapka wygląda całkiem przyzwoicie Rozważę... może dodam do swojego projektu Szczurek - Sro 04 Lis, 2009 19:26 Nie czepiam, uprzejmie zwracam uwagę Cyklop - Czw 05 Lis, 2009 17:46 Czyli mapka zaznacza każdy element który się ustawi!?! Najlepsza w takim razie jest ta część skryptu
Ozzma - Czw 05 Lis, 2009 21:07 A mnie się podoba to że można zmienić położenie mapy w dowolnym momencie gry :) Bo zastanowiło mnie to co zrobię gdy mi się tekst będzie u góry wyświetlał bo czasami tak właśnie mam. Super że to przewidziano. Buziaki.Kable - Nie 08 Lis, 2009 13:55 Mini mapka super ;D podoba mi się lecz jestem wymagaczem ;D i poczekam na coś bardziej rozbudowanego ;D ale z chęcią póki co teraz tego skryptu użyje ^^przykladqq - Wto 17 Lis, 2009 16:49 e wyskakuje mi bląb jak wchodze na następną mapke .... i pisze ze cos nietak z 132 wersem skryptu moze wiecie o co chodzi?Ayene - Wto 17 Lis, 2009 16:54 A co dokładnie jest napisane? Coś z definicją, argumentem? Najlepiej wklej screenshota Niko - Wto 09 Lut, 2010 17:16 Bardzo fajny skrypt.Użyje go do mojej gry Legacy of DragonsBURCZYK - Sro 10 Lut, 2010 15:29 :( EROR MI SIE WYSWIETLA HELP :(Ayene - Sro 10 Lut, 2010 15:38 To że wyświetla się Tobie error nam nic nie mówi. Podaj dokładną treść komunikatu, która linijka w skrypcie? Upewnij się ponadto, że dobrze go wkleiłeś.radek02 - Czw 18 Lut, 2010 11:38 BURCZYK :
Wklejałeś odrazu z internetu ? Jeśli tak , skopiowałeś też wyraz [Kod:] . Usuń go i po sprawie Szczurek - Sob 20 Lut, 2010 11:47 Nie chodzi o wyraz kod. Gdzieś czytałem, że ten skrypt nie radzi sobie z dużymi mapkami i jeśli na ten przykład wychodzi się z domku na mapę świata, wywala błąd. Autor twierdzi, że w takim wypadku należy zmniejszać wartość "GRID_SIZE", ale to nie za dobre rozwiązanie, gdyż wtedy "bloczki są mniejsze" i mapa staje się coraz mniej dokładna - wiem z doświadczenia.Karos - Nie 27 Cze, 2010 11:05 a da rade zrobic tak ze za pomocą ktoregos klawisza mapka pojawia sie i znika? prosze o szybka odpowiedz :)Ayene - Nie 27 Cze, 2010 15:50 Dopisz na końcu skryptu:
Kod:
class Scene_Map < Scene_Base
alias scmap_update update
def update
scmap_update
if Input.trigger?(Input::X)
if $game_system.show_minimap
$game_switches[MiniMap::SWITCH_NO_MINIMAP] = true
else
$game_switches[MiniMap::SWITCH_NO_MINIMAP] = false
end
end
end
end
Włączasz i wyłączasz też klawiszem A - jak w przypadku wcześniejszego skryptu.Karos - Nie 27 Cze, 2010 18:48 swietnie, dziekuje :) a pracujecie moze nad skryptem aby system walk byl prowadzony w ABS? bylo by to bardzo przydatne, a zarazem kolejnym wyzwaniem dla was ;)radek02 - Czw 01 Lip, 2010 15:13 Demo z lepszą minimapą
według mnie , ta jest o niebo lepsza , tylko nad nią trzeba dłubać .sitax5 - Pon 26 Lip, 2010 19:14 a mogłabyś ayene go tak przerobić żeby w mapce wyświetlały się kółeczka tak jak w XP że w zdarzeniu ustawia się komentarz np. red i wyświetla się czerwone kółko.Killerczyc - Wto 27 Lip, 2010 08:51 U mnie wyświetla się błąd jeśli wyłącze mapke i wejde do innej lokacjiradek02 - Wto 27 Lip, 2010 08:56 Killerczyc, bez screena nic nie poradzim . podaj , od razu będzie wiadomo , o co chodzi .Killerczyc - Wto 27 Lip, 2010 12:57 Ok, tylko jestem zielony w tych sprawach więc jak mam wrzucić paint screen'a ?!
[ Dodano: Wto 27 Lip, 2010 15:08 ]
Usunołem skrypt po tym jak wyskoczył mi błąd,ale przd chwilą znowu
go wrzuciłem...
Teraz nic, TYLKO ekran mi się wygasza na ok.300 klatek jest to denerwujące jeśli
przchodzi się z lokacji do lokacji !
Poradź!radek02 - Sro 28 Lip, 2010 08:48 najlepiej podaj wszystkie skrypty , a screen robi se tak . naciskasz printscreen ( F12 , na prawo ) , naciskasz , wklejasz do painta i dajesz na imgeshack.us , czy tinypic.comsitax5 - Sro 28 Lip, 2010 09:40 a mogłabyś ayene go tak przerobić żeby w mapce wyświetlały się kółeczka tak jak w XP że w zdarzeniu ustawia się komentarz np. red i wyświetla się czerwone kółko żeby ktoś np. zauważył że jakiś npc ma misje dla niego
P.S. Czy ktoś wogóle mnie zauważył?Killerczyc - Sro 28 Lip, 2010 10:46 radek02
najlepiej podaj wszystkie skrypty , a screen robi se tak . naciskasz printscreen ( F12 , na prawo ) , naciskasz , wklejasz do painta i dajesz na imgeshack.us , czy tinypic.com
_______________________________________________________________________
Wiem jak się robi screen shot tylko nie wiem jak wrzucić go tutaj...Ayene - Sro 28 Lip, 2010 16:28 Killerczyc, obrazek hostujesz na dowolnej stronie, np. www.imageshack.us i wklejasz link bezpośredni do pliku.Killerczyc - Sob 31 Lip, 2010 08:07 Najwidoczniej źle wrzuciłem skrypt teraz nic sie nie dzieje tylko przy wyjściu z lokacji
np 17x13 wyjściu na mape o rozmiarach 200x200 wtedy trzeba poczekać chwile...CreeperCrisis - Sob 31 Lip, 2010 09:26 Tak za bardzo to nie przepadam za mini-mapą. Lubię się trochę pobawić z obrazkami, chodzi o taką mini-mapę, którą dodał użytkownik radek02.
Dzięki. Pozdrawiam. MistrzZen - Nie 08 Sie, 2010 09:40 Mam pytanko... Idzie zmienić te kolorowe kropki na mini mapie na coś innego?CreeperCrisis - Nie 08 Sie, 2010 16:52 MistrzZen, można. Trzeba tylko podmienić grafikę. To jest chyba w Graphic/Picture. Gabe33 - Wto 31 Sie, 2010 14:57 Ayene można by wkleic tą mapke w inne miejsce np. w lewy górny róg.?????????Ayene - Wto 31 Sie, 2010 17:47 Edytuj fragment:
Kod:
MAP_RECT = [410, 20, 100, 100] # Minimap size and position
# [X, Y, Width, Height]
# You can change it in game, by call script:
# $game_system.minimap = [X, Y, Width, Height]
pozmieniaj 410 i 20tomaj6151 - Czw 14 Kwi, 2011 17:47 A ja jak to wklejam do skryptów i chce przetestować w grze to wyskakuje mi to : http://img641.imageshack.us/i/83778183.png/Ayene - Czw 14 Kwi, 2011 19:01 Używasz polskiej wersji mejkera. Pewnie ona powoduje błąd...sebikPL - Pon 13 Cze, 2011 16:17 mi dziala a mam polska wersje makera vx ale wyskakuje tez blad ten sam Angius - Pon 13 Cze, 2011 16:32 Czekaj czekaj, nie rozumiem głębi twej wypowiedzi... Działa ci, ale masz ten sam błąd? o.Oaragorn7015 - Wto 01 Maj, 2012 20:48 Witam, czy da się coś z tym zrobić?
MAP_RECT = [410, 20, 100, 100] # Minimap size and position
# [X, Y, Width, Height]
# You can change it in game, by call script:
# $game_system.minimap = [X, Y, Width, Height]
Albo błędnie skorzystałeś z polecenia '$game_system.minimap'kolkav5 - Nie 17 Cze, 2012 16:15 Hmmmm
Nie widać NPC
Ktoś mi powie jak zrobić by były widoczne?Ayene - Nie 17 Cze, 2012 20:17 Trzeba w komentarzu umieścić 'npc' (bez ' '), lub inne zadeklarowane w skrypcie eventy: