Hi, I need a script compatible with Blizz abs to create an isometric game. I am using a script to the isometry of Dad, but it does not work properly with BABS. Someone was kind enough to modify this script making it functional?
Here is the script
#==============================================================================
# Mappe Isometriche - Autore: DaD, www.dermfxp.altervista.org
#==============================================================================
# In questo script sono andato a modificare le seguenti classi:
# Game_Map; Game_Character; Game_Player; Scene_Title;
# Spriteset_Map; Interpreter;
# Quindi se alcuni dei vostri script dovessero andare a modificare queste stesse
# classi è probabile che lo script non funzioni piu' come dovrebbe, cercherò di
# impostarlo in modo tale da farlo essere compatibile con altri script in futuro.
#==============================================================================
# Indicazioni: $game_map crea la mappa che servirà per la mappa isometrica
# $game_map_iso crea la mappa isometrica
#==============================================================================
#==============================================================================
# - Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# - Movimento in giu
# distance : Distanza
#--------------------------------------------------------------------------
def scroll_down(distance)
corr = (($game_map.height + $game_map.width)%2 == 0 ? 0 : 4*16)
@display_y = [@display_y + distance, 128*$game_map_iso.height - 4*480 - corr].min
end
#--------------------------------------------------------------------------
# - Movimento a destra
# distance : Distanza
#--------------------------------------------------------------------------
def scroll_right(distance)
@display_x = [@display_x + distance, 128*$game_map_iso.width - 4 * 640].min
end
end
#==============================================================================
# - Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# - Coordinate X Schermo
#--------------------------------------------------------------------------
def screen_x
return (@real_x - @real_y)/4 + 32*$game_map.height - 0 - $game_map.display_x/4
end
#--------------------------------------------------------------------------
# - Coordinate Y Schermo
#--------------------------------------------------------------------------
def screen_y
y = (@real_y + @real_x) / 8 + 24 - $game_map.display_y/4
if @jump_count >= @jump_peak
n = @jump_count - @jump_peak
else
n = @jump_peak - @jump_count
end
return y - (@jump_peak * @jump_peak - n * n) / 2
end
#--------------------------------------------------------------------------
# - Coordinate Z Schermo
# height : Altezza del personaggio
#--------------------------------------------------------------------------
def screen_z(height = 0)
if @always_on_top
return 999
end
z = screen_y
if @tile_id > 0
return z + $game_map_iso.priorities[@tile_id] * 32
else
return z + ((height > 32) ? 31 : 0)
end
end
end
#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# In questa classe viene tattato il giocatore, gli spostamenti e il movimento
# della mappa. Naturalmente sono stati modificati per lo script
#--------------------------------------------------------------------------
def update
# Memorizza l'ultimo movimento se ci si sta muovendo
last_moving = moving?
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
# qui vengono settati i movimenti e le direzioni che prenderà il pg
# alla pressione del tasto direzionale indicato.
case Input.dir8
when 1..2
move_down
when 3
move_right
when 4
move_left
when 7
move_left
when 6
move_right
when 8..9
move_up
end
end
# Le coordinate vengono memorizzate in variabili temporanee
last_real_x = @real_x
last_real_y = @real_y
super
disp_y = screen_y + $game_map.display_y/4
disp_x = screen_x + $game_map.display_x/4
if CENTER_Y - (4*disp_y - $game_map.display_y) < 0
$game_map.scroll_down(4*disp_y - $game_map.display_y - CENTER_Y)
end
if CENTER_X - (4*disp_x - $game_map.display_x) > 0
$game_map.scroll_left(CENTER_X - (4*disp_x - $game_map.display_x))
end
if CENTER_X - (4*disp_x - $game_map.display_x) < 0
$game_map.scroll_right(4*disp_x - $game_map.display_x - CENTER_X)
end
if CENTER_Y - (4*disp_y - $game_map.display_y) > 0
$game_map.scroll_up(CENTER_Y - (4*disp_y - $game_map.display_y))
end
# Quando non ci si sta muovendo
unless moving?
# Quando il movimento è appena finito
if last_moving
# Controllo eventi "Tocco con l'eroe" - "Collisione"
result = check_event_trigger_here([1,2])
# Se non ci sono eventi da eseguire
if result == false
# Se la modalità di debug è disattiva e non si sta premendo ctrl
unless $DEBUG and Input.press?(Input::CTRL)
# Conteggio incontri casuali
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
# Quando C è premuto
if Input.trigger?(Input::C)
# Controlla esecuzione eventi
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
end
#==============================================================================
# - Scene_Title
#==============================================================================
class Scene_Title
alias main_orig main
#--------------------------------------------------------------------------
# Qui si va a trovare l'id della mappa affinchè si possa tovare la seconda
# mappa, appunto quella con il titles isometrico
#--------------------------------------------------------------------------
def main
# E' un aggiunta riguardante la seconda mappa, ovvero quella con il Titleset
# isometrico, e rinominata iso.
$data_map_infos = load_data("Data/MapInfos.rxdata")
main_orig
end
end
#==============================================================================
# - Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# - Inizializzazione Oggetto
#--------------------------------------------------------------------------
def initialize
# Creazione Livelli
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 200
@viewport3.z = 5000
# Creazione Titlemap
@tilemap = Tilemap.new(@viewport1)
map_infos = $data_map_infos[$game_map.map_id]
# Creazione Titlemap iso
$game_map_iso = Game_Map.new
$game_map_iso.setup(map_infos.parent_id)
@tilemap.tileset = RPG::Cache.tileset($game_map_iso.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names[i]
@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map_iso.data
@tilemap.priorities = $game_map_iso.priorities
# Creazione Panorama
@panorama = Plane.new(@viewport1)
@panorama.z = -1000
# Creazione Nebbia
@fog = Plane.new(@viewport1)
@fog.z = 3000
# Creazione Chara
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
# Creazione effetti meteorologici
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
@weather = RPG::Weather.new(@viewport1)
# Creazione Pictures
@picture_sprites = []
for i in 1..50
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end
# Creazione Sprite del timer
@timer_sprite = Sprite_Timer.new
# Aggiornamento frame
update
end
#--------------------------------------------------------------------------
# Per trovare l'origine del panorama usato nella mappa isometrica bisogna
# modificare questi due parametri.
# @panorama.ox = $game_map.display_x / 4
# @panorama.oy = $game_map.display_y / 4
# in questo modo:
# @panorama.ox = $game_map.display_y / 8
# @panorama.oy = $game_map.display_y / 8
#--------------------------------------------------------------------------
def update
# Quando cambia il panorama
if @panorama_name != $game_map_iso.panorama_name or
@panorama_hue != $game_map_iso.panorama_hue
@panorama_name = $game_map_iso.panorama_name
@panorama_hue = $game_map_iso.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
# Quando cambia la nebbia
if @fog_name != $game_map_iso.fog_name or @fog_hue != $game_map_iso.fog_hue
@fog_name = $game_map_iso.fog_name
@fog_hue = $game_map_iso.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
# Aggiornamento Tile
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
# Aggiornamento Panorama
@panorama.ox = $game_map.display_x / 4
@panorama.oy = $game_map.display_y / 4
# Aggiornamento Nebbia
@fog.zoom_x = $game_map_iso.fog_zoom / 100.0
@fog.zoom_y = $game_map_iso.fog_zoom / 100.0
@fog.opacity = $game_map_iso.fog_opacity
@fog.blend_type = $game_map_iso.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
# Aggiornamento Chara
for sprite in @character_sprites
sprite.update
end
# Aggiornamento effetti meteorologici
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
# Aggiornamento Picture
for sprite in @picture_sprites
sprite.update
end
# Aggiornamento sprite del timer
@timer_sprite.update
# Settaggio della tonalità e dell'effetto scuoti schermo
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# Settaggio del colore dell'effetto flash
@viewport3.color = $game_screen.flash_color
# Aggiornamento Livelli
@viewport1.update
@viewport3.update
end
end
#==============================================================================
# - Interpreter
#------------------------------------------------------------------------------
# E' la classe che esegue i comandi degli eventi
# è usata in Game_System e in Game_Event
#==============================================================================
class Interpreter
#--------------------------------------------------------------------------
# - Impostazioni Mappa
#--------------------------------------------------------------------------
def command_204
case @parameters[0]
when 0
$game_map_iso.panorama_name = @parameters[1]
$game_map_iso.panorama_hue = @parameters[2]
when 1
$game_map_iso.fog_name = @parameters[1]
$game_map_iso.fog_hue = @parameters[2]
$game_map_iso.fog_opacity = @parameters[3]
$game_map_iso.fog_blend_type = @parameters[4]
$game_map_iso.fog_zoom = @parameters[5]
$game_map_iso.fog_sx = @parameters[6]
$game_map_iso.fog_sy = @parameters[7]
when 2
$game_map_iso.battleback_name = @parameters[1]
$game_temp_iso.battleback_name = @parameters[1]
end
return true
end
#--------------------------------------------------------------------------
# - Cambia Tonalità Nebbia
#--------------------------------------------------------------------------
def command_205
$game_map_iso.start_fog_tone_change(@parameters[0], @parameters[1] * 2)
return true
end
#--------------------------------------------------------------------------
# - Cambia Opacità Nebbia
#--------------------------------------------------------------------------
def command_206
$game_map_iso.start_fog_opacity_change(@parameters[0], @parameters[1] * 2)
return true
end
end
#==============================================================================
# Istruzioni per l'uso
#==============================================================================
# Lo sript è molto semplice da utilizzare, innanzitutto ogni qual volta che
# andrete a ricreare una mappa isometrica dovrete, creare due mappe, la prima
# sarà costituita dal titleset isometrico, che dovrete chiamare
# [Nome della mappa]Iso dopodiche potrete andare a ricreare la
# seconda mappa con gli eventi e tutto quello di cui avrete bisogno
# al suo interno, il nome della seconda mappa, dovrà essere uguale a quello
# della mappa a cui vorrete associare il titleset isometrico.
# Esempio:
# Mappa con Tileset isometrico ===> TestIso
# Mappa con Tileset Normale ===> Test
# Nota: Non avrete bisogno di settare il tileset isometrico, perchè basterà
# mettere degli eventi o parti di tileset non trapassabili per non far passare
# il chara, dove voi non vorrete che passi.
# Esempio:
# Mappa con Tileset isometrico ===> Albero che viene trappasato
# Mappa con Tileset Normale ===> Evento non trapassabile
# In questo modo anche se l'albero è trapassabile, non verrà attraversato dal
# chara perchè nella seconda mappa avrete inserito un evento per bloccare
# il passagio del vostro pg.
# Nota 2: In questo script vanno bene qualsiasi chara (non ho provato quelli a
# 9 frame però) quindi non dovrebbero esserci problemi di alcun tipo, anche se
# non escludo che in futuro possa creare dei chara appositi per questo script.
# Credo di aver detto tutto quindi se avrete problemi potete contattarmi su
# www.dermfxp.altervista.org oppure su www.rpgshrine.altervista.org.
#==============================================================================
# Fine
#==============================================================================
Blizz ABS + NM7 (http://forum.chaos-project.com/index.php/topic,4373.0.html)
NM7 can make an isometric view.
please search before posting.
Thanks, but I do not need this script! I need someone to DAD as compatible but I did titleset of isometric and I need the script to the isometric movement.
Example: This is an isometric map!
(http://img66.imageshack.us/img66/771/isoscreenyd7.png)
Well, It looks like GubiD's tileset and ISO script.....
O_o I had already said that I need an ISO-compatible script Babs. because the script creates problems: the "camera" that frames the pg is not always on it remains at the center of the map, and also the damage can not be seen or shown out of the battle.
UP :'( :'( :'( :'( :'( >:(
(http://wwwstatic.megaupload.com/gui2/en/but_dnld_file.gif) (http://www.megaupload.com/?d=MWX9161C)