OPIS:
Minimapa jest bardzo dobra, w przeciwieństwie do tej na forum nie ma ograniczeń wielkości. No i oczywiście można dodać grafiki jakie się chce! Sama mapa składa się z kafelek odwzorowujących ich położenie na faktycznej mapie, można powiedzieć, ze działa na zasadzie stworzenia drugiego okna gry, w którym bohater ma swojego chara, mapa ma swoje kafelki, eventy mają swój wygląd, etc. Oczywiście w mniejszej skali :)
Skrzypt podrzucił radek02 w formie hiszpańskiego dema, ja przetłumaczyłem konfigurację i wrzucam tu całość poskładaną do kupy.
Autorem jest Bennamy
SKRYPT
Spoiler:
Spoiler:
Nazywamy VX_SP1
Ja tak nazwałem, tak było0 w demie i działa. Innej nazwy nie próbowałem bo po co :)
Nietłumaczony, bo konfiguracji w nim chyba nawet nie ma a ja nie znam hiszpańskiego.
#------------------------------------------------------------------------------
# Código de correção
#------------------------------------------------------------------------------
# * Em uma animação, quando um frame possui dimensões maiores ou menores
# que as dimensões de uma imagem utilizada, ocorre um erro de exibição
# * Problemas na exibição de animações com coordenada Y inválida (causada
# pelo problema acima)
# * Problemas relacionados ao caminho dos gráficos de uma animação, que, se
# indisponÃveis, não reportavam problema
#------------------------------------------------------------------------------
class Sprite_Base < Sprite
#--------------------------------------------------------------------------
# Exibição da animação
#--------------------------------------------------------------------------
alias eb_sp1_dispose_animation dispose_animation
def dispose_animation
eb_sp1_dispose_animation
@animation_bitmap1 = nil
@animation_bitmap2 = nil
end
#--------------------------------------------------------------------------
# Configuração do gráfico de animação
# frame : informações do frame (RPG::Animation::Frame)
#--------------------------------------------------------------------------
alias eb_sp1_animation_set_sprites animation_set_sprites
def animation_set_sprites(frame)
eb_sp1_animation_set_sprites(frame)
cell_data = frame.cell_data
for i in 0..15
sprite = @animation_sprites[i]
next if sprite == nil
pattern = cell_data[i, 0]
next if pattern == nil or pattern == -1
if @animation_mirror
sprite.y = @animation_oy + cell_data[i, 2]
end
sprite.z = self.z + 300 + i
end
end
end
Spoiler:
Nazwałem "Mini Mapa" i działa. Przetłumaczona konfiguracja, choć bardziej na podstawie kodu, niż języka. Ważne, że działa :)
# Konfiguracja tagów eventów:
MM_EVENT_OTHER = "other" # Tag dla innych eventów
MM_EVENT_ENEMY = "enemy" # Dla wrogów
MM_EVENT_TELEPORT = "tp" # Dla przejścia
MM_EVENT_CHEST = "chest" # Dla skrzyni
MM_EVENT_NPC = "npc" # Dla NPCa
MM_EVENT_SAVEPOINT = "save" # Dla savepointu
end
#--------------------------------------------------------------------------
# FIM DAS CONFIGURAÇÕES
#--------------------------------------------------------------------------
#==============================================================================
# Scene_Map
#------------------------------------------------------------------------------
# Classe das operações nos mapas.
#==============================================================================
#==============================================================================
# Game_Player
#------------------------------------------------------------------------------
# Esta classe controla as informações do jogador. Entre elas: os veÃculos,
# os eventos (quando iniciá-los), o loop do mapa... etc.
# Pode ser acessada utilizando $game_player.
#==============================================================================
class Game_Player < Game_Character
unless method_defined?(:amy_mm_perform_transfer)
alias amy_mm_perform_transfer perform_transfer
end
#--------------------------------------------------------------------------
# Teletransportar
#--------------------------------------------------------------------------
def perform_transfer
amy_mm_perform_transfer
$scene.minimap_transfer
end
end
#==============================================================================
# Map_Base
#------------------------------------------------------------------------------
# Uma classe Base para mini mapas
#==============================================================================
class Map_Base < Sprite
include CONFIG
#--------------------------------------------------------------------------
# Constantes e Instâncias
#--------------------------------------------------------------------------
PMP_VERSION = 7
attr_reader :event
attr_reader :corner
#--------------------------------------------------------------------------
# Inicialização do objeto
#--------------------------------------------------------------------------
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 = Cache.picture(MM_MAP_BACK)
self.visible = on?
self.opacity = MM_OPACITY
@corner = -1
self.corner = corner
self.visible = on?
end
#--------------------------------------------------------------------------
# Corner
#--------------------------------------------------------------------------
def corner=(valor)
return if @corner == valor
@corner = valor.to_i
case @corner
when 2
self.x = 544 - width - 16
self.y = 16
when 3
self.x = 16
self.y = 416 - height - 16
when 4
self.x = 544 - width - 16
self.y = 416 - height - 16
else
self.x = 16
self.y = 16
end
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[MM_ACTIVATED_ID]
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# largura
#--------------------------------------------------------------------------
def width
return 102
end
#--------------------------------------------------------------------------
# altura
#--------------------------------------------------------------------------
def height
return 78
end
#--------------------------------------------------------------------------
# display_x
#--------------------------------------------------------------------------
def display_x
return $game_map.display_x * 3 / 128
end
#--------------------------------------------------------------------------
# display_y
#--------------------------------------------------------------------------
def display_y
return $game_map.display_y * 3 / 128
end
end
# Konfiguracja tagów eventów: (to wpisujecie w komentarzach)
MM_EVENT_OTHER = "other" # Tag dla innych eventów
MM_EVENT_ENEMY = "enemy" # Dla wrogów
MM_EVENT_TELEPORT = "tp" # Dla przejścia
MM_EVENT_CHEST = "chest" # Dla skrzyni
MM_EVENT_NPC = "npc" # Dla NPCa
MM_EVENT_SAVEPOINT = "pousada" # Dla savepointu
end
#--------------------------------------------------------------------------
# FIM DAS CONFIGURAÇÕES
#--------------------------------------------------------------------------
#TEGO NIŻEJ NIE TYKAĆ!!!
#==============================================================================
# Scene_Map
#------------------------------------------------------------------------------
# Classe das operações nos mapas.
#==============================================================================
#==============================================================================
# Game_Player
#------------------------------------------------------------------------------
# Esta classe controla as informações do jogador. Entre elas: os veÃculos,
# os eventos (quando iniciá-los), o loop do mapa... etc.
# Pode ser acessada utilizando $game_player.
#==============================================================================
class Game_Player < Game_Character
unless method_defined?(:amy_mm_perform_transfer)
alias amy_mm_perform_transfer perform_transfer
end
#--------------------------------------------------------------------------
# Teletransportar
#--------------------------------------------------------------------------
def perform_transfer
amy_mm_perform_transfer
$scene.minimap_transfer
end
end
#==============================================================================
# Map_Base
#------------------------------------------------------------------------------
# Uma classe Base para mini mapas
#==============================================================================
class Map_Base < Sprite
include CONFIG
#--------------------------------------------------------------------------
# Constantes e Instâncias
#--------------------------------------------------------------------------
PMP_VERSION = 7
attr_reader :event
attr_reader :corner
#--------------------------------------------------------------------------
# Inicialização do objeto
#--------------------------------------------------------------------------
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 = Cache.picture(MM_MAP_BACK)
self.visible = on?
self.opacity = MM_OPACITY
@corner = -1
self.corner = corner
self.visible = on?
end
#--------------------------------------------------------------------------
# Corner
#--------------------------------------------------------------------------
def corner=(valor)
return if @corner == valor
@corner = valor.to_i
case @corner
when 2
self.x = 544 - width - 16
self.y = 16
when 3
self.x = 16
self.y = 416 - height - 16
when 4
self.x = 544 - width - 16
self.y = 416 - height - 16
else
self.x = 16
self.y = 16
end
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[MM_ACTIVATED_ID]
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# largura
#--------------------------------------------------------------------------
def width
return 102
end
#--------------------------------------------------------------------------
# altura
#--------------------------------------------------------------------------
def height
return 78
end
#--------------------------------------------------------------------------
# display_x
#--------------------------------------------------------------------------
def display_x
return $game_map.display_x * 3 / 128
end
#--------------------------------------------------------------------------
# display_y
#--------------------------------------------------------------------------
def display_y
return $game_map.display_y * 3 / 128
end
end
Hmm... Ikonki są standardowo 8x8, jednak ja spróbowałem dać 12x12 i... Działa :)
Tylko jeden błąd - gdy przechodzi się obok, to z jednej strony można całkowicie najść na ową ikonę, mimo, że na mapie jest to event z ustawioną blokadą - obrazek taki jest centrowany do rogu, nie do środka. Byłbym wdzięczny za pomoc, co zmienić w skrypcie, by większe grafiki działały bezbłędnie.
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."
ciekawa mapka bardzo ciekawa, podobna do minimapki tyle że znacznie ciekawsza.
________________________ Pracuję nad 2 częścią gry Ostatnia Powieść
Fabuła : Niezła ( jeżeli lubicie Assassin's Creed )
Skrypty: Sporo przyznam siÄ™.
Walki: Dużo i to trudnych!
Misje: Wiele głównych i pobocznych
Muzyka: Ciekawa, wpadajÄ…ca w ucho
Graficzki: Kilka własnych i kilka pożyczonych
Wzorowanie siÄ™: Assassin's Creed, Final Fantasy
Miałem go, tylko nie wiedziałem jak mapę umieścić w grze.Mam polskiego VX'a. Nie chcę mi się próbować bo jestem leniwy i nie robię nic w RPG Makerze
# Konfiguracja tagów eventów:
MM_EVENT_OTHER = "other" # Tag dla innych eventów
MM_EVENT_ENEMY = "enemy" # Dla wrogów
MM_EVENT_TELEPORT = "tp" # Dla przejścia
MM_EVENT_CHEST = "chest" # Dla skrzyni
MM_EVENT_NPC = "npc" # Dla NPCa
MM_EVENT_SAVEPOINT = "save" # Dla savepointu
end
# Konfiguracja tagów eventów:
MM_EVENT_OTHER = "other" # Tag dla innych eventów
MM_EVENT_ENEMY = "enemy" # Dla wrogów
MM_EVENT_TELEPORT = "tp" # Dla przejścia
MM_EVENT_CHEST = "chest" # Dla skrzyni
MM_EVENT_NPC = "npc" # Dla NPCa
MM_EVENT_SAVEPOINT = "save" # Dla savepointu
end
Ekhh... Wiesz jak ustawić zdarzenie? Bo bez podstaw obsługi niewiele zdziałamy...
W zdarzeniu, w polu po prawej (duże, białe) klikasz dwa razy i wybierasz spośród komend "przełącznik" vel. "switch", zależnie od wersji językowej. Następnie wybierasz przełącznik nr. 1 na ON. Klikasz ok.
Dalej w oknie zdarzenia masz wybór uruchomienia go - na wciśnięcie przycisku, etc. Wybierasz równoległe/paralell. Klikasz ok. Gotowe!
Ach... Chcesz włączać ją przyciskiem!
Musisz zastosować skrypt rozszerzający klawiaturę, a potem ustawić w typowym zdarzeniu warunek, jeśli naciśnięte jest "m" włącz przełącznik minimapy, jeśli jest włączony i naciśnięte jest "m" wyłącz przełącznik minimapy.
________________________
"Na trolla pewne są tylko dwie pewne metody, jedna samopowtarzalna i druga, wymagająca przeładowania ręcznego."
Nie mo¿esz pisaæ nowych tematów Nie mo¿esz odpowiadaæ w tematach Nie mo¿esz zmieniaæ swoich postów Nie mo¿esz usuwaæ swoich postów Nie mo¿esz g³osowaæ w ankietach Nie mo¿esz za³±czaæ plików na tym forum Mo¿esz ¶ci±gaæ za³±czniki na tym forum