Luigi Posted January 1, 2007 Share Posted January 1, 2007 (edited) Creato da Mewsterus Questo script ricrea un effeto semi 3d veramente meraviglioso..soprattutto perchè potrete usarlo solo quando volete...ma andiamo al dunque...Ecco 2 screens per farvi capire meglio.. http://img332.imageshack.us/img332/557/mode70uy.jpg http://img78.imageshack.us/img78/4987/mode736ul.jpg Istruzioni per l'uso:Vi riporto ciò che è stato scritto dal creatore dello script..Instructions: To install, just insert this in a descriptive code slot right above Main. This is different than previous instructions; please read the next paragraph. If you had a previous install of this script and need an original version of Spriteset_Map, one can be found here. One more thing has changed; read on through the next paragraph. To activate Mode07, add [#XX]to the map's name, replacing XX with the percentage of Mode07 to apply. Greater numbers will result in a more slanted world. The numbers for this feature have been expanded, such that any numbers will be halved. Take note; if you once used [#24], it will now be [#12] for the same appearance. All numbers should be halved.To activate overworld sprite resize, add [OV] to the map's name. This will make sprites smaller on that map. For the purposes of location scripts, these identifiers will not appear. A note on the $strip_size variable; the default value is 8, however there is extremely minimal, almost nonexistant lag with 16. The screen is extremely smooth with 4, or even 2. If you're having major problems with lag, you may need to use 32, but it won't look too pretty. Examples: "Overworld[#40]" will result in a slant identical to the second screenshot."Underworld[OV]" will resize only the player character to a small size, as if seen from high above."Atthelevelworld[OV][#12]" will result in the player being resized, and a modest slant of 12%"JustPlainWorld" will result in the same old map you've always seen. To add a sky, simply use the panorama with the tileset. Also, events will not be drawn flat with the map. Any vertical objects such as trees should be put in events and displayed that way. You can also add a sky by adding a picture. If you add this picture, you can make it look even better, with a curved world and sunlight, and it will not move with the map. E adesso il tanto atteso Script: =begin Mode07 on the Map! Includes: Mode07 v0.6 Overworld Sprite Resize Written by mewsterus Special Thanks: Fanha Giang (for a reverse engineered Tilemap class) To install, just insert this in a descriptive code slot right above Main. This is different than previous instructions; please read the next paragraph. If you had a previous install of this script and need an original version of Spriteset_Map, one can be found at: http://www.rpg-palace.com/scripts/spriteset_map.txt To activate Mode07, add [#XX] to the map's name, replacing XX with the percentage of Mode07 to apply. Greater numbers will result in a more slanted world. The numbers for this feature have been expanded, such that any numbers will be halved. Take note; if you once used [#24], it will now be [#12] for the same appearance. All numbers should be halved. To activate overworld sprite resize, add [OV] to the map's name. This will make sprites smaller on that map. For the purposes of location scripts, these identifiers will not appear. Examples: "Overworld[#40]" will result in a slant identical to the second screenshot. "Underworld[OV]" will resize only the player character to a small size, as if seen from high above. "Atthelevelworld[OV][#12]" will result in the player being resized, and a modest slant of 12% "JustPlainWorld" will result in the same old map you've always seen. To add a sky, simply use the panorama with the tileset. Also, events will not be drawn flat with the map. Any vertical objects such as trees should be put in events and displayed that way. You can also add a sky by adding a picture. If you add this picture, you can make it look even better, with a curved world and sunlight, and it will not move with the map. -------------------------------------------------------------------------------- * Draw_Tilemap v1.72-0.6 Fanha Giang, 02/12/2006 (mm/dd/yyyy) Edited for Mode07 by mewsterus 08/08/2006 (mm/dd/yyyy) =end #=============================================================================== $width = 640 # Screen width (will not change resolution, $height = 480 # Screen height here for compatibility) $ov_zoom = 0.6 # Overworld zoom multiplier $strip_size = 8 # Size of each strip of the map. Higher numbers will lag less. # Recommended that this number be a power of 2. # Do not make higher than 64. $curve = true # Whether the map is curled, for overworlds (old method) $data_map = load_data("Data/MapInfos.rxdata") #=============================================================================== class RPG::MapInfo def name # Definition prevents location scripts from reading anything within return @name.gsub(/\[.*\]/) {""} # brackets, including the brackets end #----------------------------------------------------------------------------- def original_name return @name end #----------------------------------------------------------------------------- def overworld? return @name.scan(/[OV]/).size > 0 end #----------------------------------------------------------------------------- def pitch @name =~ /\[#[ ]*([00-99]+)\]/i return $1 end end #=============================================================================== class Draw_Tilemap # This class controls a set of sprites, with different Z # values, arranged into horizontal bars attr_accessor :tileset attr_accessor :map_data attr_accessor :priorities attr_accessor :autotiles attr_accessor :bitmaps attr_accessor :pitch attr_accessor :ox attr_accessor :oy attr_accessor :plus_y INDEX = # Autotile definitions [ 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] # Used in 16x16 autotile drawing; left, right, left, right Y = [0, 0, 1, 1] # Used in 16x16 autotile drawing; up, up, down, down #----------------------------------------------------------------------------- def initialize # Get initial data from Game_Map @tileset = RPG::Cache.tileset($game_map.tileset_name) @map_data = $game_map.data @priorities = $game_map.priorities @autotiles = [] for i in 0..6 @autotiles[i] = RPG::Cache.autotile($game_map.autotile_names[i]) end # Provide blank data in proper object form @ox = 0 @oy = 0 # Bitmaps used for each priority's drawing. Priorities 2-5 are combined. @bitmaps = [Bitmap.new($game_map.width*32, $game_map.height*32+$strip_size), Bitmap.new($game_map.width*32, $game_map.height*32+$strip_size), Bitmap.new($game_map.width*32, $game_map.height*32+$strip_size)] # Generate blank sprites @sprites = [[], [], []] for i in 0..2 # For each layer for j in 0..$game_map.height * (32 / $strip_size) - 1 # For each horizontal strip of $strip_size height, make a blank sprite @sprites[i].push(Sprite.new) @sprites[i][j].bitmap = Bitmap.new($game_map.width*32, $strip_size*2) @sprites[i][j].x = $width / 2 @sprites[i][j].y = -64 @sprites[i][j].z = -5 + (i * 10) end end @disposed = false draw end #----------------------------------------------------------------------------- def update # Retrieve variable values for slant drawing; these values accesible by event @pitch = $game_map.pitch.to_f @plus_y = $game_map.plus_y for i in 0..2 # For each layer for j in [0, (($height / 2) - (($height * 60) / @pitch) + @oy) / $strip_size].max.to_i..[@sprites[i].size - 1, (@oy + $height) / $strip_size].min.to_i # For each strip within the visible screen, update OX/Y @sprites[i][j].x = $width / 2 @sprites[i][j].y = j * $strip_size - @oy unless @pitch == 0 # Apply X Zoom @sprites[i][j].zoom_x = (@sprites[i][j].y - $height / 2) * (@pitch / ($height * 25)) + 1 if $curve # Zoom Y values same as X, and compensate @sprites[i][j].zoom_y = @sprites[i][j].zoom_x @sprites[i][j].y += $strip_size * (1 - @sprites[i][j].zoom_y) * ((1 - @sprites[i][j].zoom_y) / (2 * ((@pitch / 100) / ($height / ($strip_size * 2)))) + 0.5) end end @sprites[i][j].ox = @ox + $width / 2 # Add plus_y value; used in airship script @sprites[i][j].y += @plus_y end end end #----------------------------------------------------------------------------- def dispose # Dispose all sprites for i in 0..2 for j in @sprites[i] j.bitmap.dispose j.dispose end end for i in @bitmaps i.dispose end @tileset.dispose for i in 0..6 @autotiles[i].dispose end @disposed = true end #----------------------------------------------------------------------------- def disposed? return @disposed end #----------------------------------------------------------------------------- def draw # Draw each individual position by XY value for x in 0...@map_data.xsize for y in 0...@map_data.ysize draw_position(x, y) end end for i in 0..2 # For each priority for j in 0..@sprites[i].size - 1 # For each horizontal strip, transfer the bitmap appropriately @sprites[i][j].bitmap.blt(0, 0, @bitmaps[i], Rect.new(0, j * $strip_size, $game_map.width * 32, $strip_size * 2)) end end end #----------------------------------------------------------------------------- def draw_position(x, y) for layer in 0..2 pos = @map_data[x, y, layer] @priorities[pos] = 2 if @priorities[pos] > 2 # Round priorities down to 2 if pos >= 384 # If it is a tile # src_rect = 32x32 Rect on the tileset for source bitmap src_rect = Rect.new(((pos-384)%8)*32, ((pos-384)/8)*32, 32, 32) # Transfer source bitmap on the tileset to the current map tile @bitmaps[@priorities[pos]].blt(x * 32, y * 32, @tileset, src_rect) elsif pos >= 48 and pos < 384 # If it is an autotile id = pos / 48 - 1 # Which autotile is used (0-6) # plus_x is in development for animated autotiles plus_x = 0 #((@anim / 4) % (@autotiles[id].width / 96)) * 96 for corner in 0..3 h = 4 * (pos % 48) + corner # Used to access INDEX # src_rect = 16x16 Rect on the autotile for source bitmap src_rect = Rect.new((INDEX[h]%6)*16+plus_x, (INDEX[h]/6)*16, 16, 16) # Transfer source bitmap on the autotile to the current 16x16 tile @bitmaps[@priorities[pos]].blt(x*32+X[corner]*16, y*32+Y[corner]*16, @autotiles[id], src_rect) end end end end end #=============================================================================== class Game_Map attr_accessor :pitch attr_accessor :plus_y #----------------------------------------------------------------------------- alias setup_or :setup def setup(map_id) setup_or(map_id) @pitch = $data_map[$game_map.map_id].pitch @plus_y = 0 end #----------------------------------------------------------------------------- def name return $data_map[@map_id].name end end #=============================================================================== class Sprite_Character < RPG::Sprite attr_accessor :character #----------------------------------------------------------------------------- def initialize(character = nil) super() @character = character update end #----------------------------------------------------------------------------- alias update_or :update def update update_or # Update pitch value, and update zoom values to match @pitch = $data_map[$game_map.map_id].pitch.to_f self.zoom_x = self.zoom_y = ((@character.screen_y - 16) - ($height / 2)) * (@pitch / ($height * 25)) + 1 # Set sprite coordinates. X value is multiplied by zoom value from the center self.x = ($width / 2) + ((@character.screen_x - ($width / 2)) * self.zoom_x) self.y = @character.screen_y # Add Y value for zoom compensation while in curve mode if $curve and @pitch != 0 self.y += (8 * (1 - self.zoom_y) * ((1 - self.zoom_y) / (2 * ((@pitch / 100) / ($height / 16.0))) + 0.5)) end # Add plus_y value; used in airship script self.y += $game_map.plus_y unless @character.is_a?(Game_Player) self.z = @character.screen_z(@ch) - (self.zoom_y < 0.5 ? 1000 : 0) if $data_map[$game_map.map_id].overworld? and @character.is_a?(Game_Player) # Multiply zoom by Overworld factor if self.zoom_x *= $ov_zoom # the map is marked with [OV] and event self.zoom_y *= $ov_zoom # is a Game_Player end end end #=============================================================================== class Spriteset_Map def initialize # Make viewports @viewport1 = Viewport.new(0, 0, 640, 480) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport2.z = 2000 @viewport3.z = 5000 # Make tilemap @tilemap = Draw_Tilemap.new # Make panorama plane @panorama = Plane.new @panorama.z = -2000 # Make fog plane @fog = Plane.new @fog.z = 3000 # Make character sprites @character_sprites = [] for i in $game_map.events.keys.sort sprite = Sprite_Character.new($game_map.events[i]) @character_sprites.push(sprite) end @character_sprites.push(Sprite_Character.new($game_player)) # Make weather @weather = RPG::Weather.new(@viewport1) # Make picture sprites @picture_sprites = [] for i in 1..50 @picture_sprites.push(Sprite_Picture.new(@viewport2, $game_screen.pictures[i])) end # Make timer sprite @timer_sprite = Sprite_Timer.new # Frame update update end #----------------------------------------------------------------------------- def dispose # Dispose of tilemap @tilemap.dispose # Dispose of panorama plane @panorama.dispose # Dispose of fog plane @fog.dispose # Dispose of character sprites for sprite in @character_sprites sprite.dispose end # Dispose of weather @weather.dispose # Dispose of picture sprites for sprite in @picture_sprites sprite.dispose end # Dispose of timer sprite @timer_sprite.dispose # Dispose of viewports @viewport1.dispose @viewport2.dispose @viewport3.dispose end end Edited January 2, 2007 by Luigi Link to comment Share on other sites More sharing options...
Lord Bel Posted January 1, 2007 Share Posted January 1, 2007 Se non erro, questo script era già stato postato.E in ogni caso, questa non era proprio la sezione giusta. Comunque, Bello. Questo Finto 3-D è affascinante. ~ R²S ~ - '°•o Realizing Random Scrips o•°' Link to comment Share on other sites More sharing options...
Luigi Posted January 2, 2007 Author Share Posted January 2, 2007 E quale è la sezione giusta? Link to comment Share on other sites More sharing options...
havana24 Posted January 2, 2007 Share Posted January 2, 2007 Ho spostato nella sezione giusta.Cmq sia questo script é ottimo (per orsa) solo per le mappe del mondo... a meno che non si usino chip simil 3D il risultato (con chip nomrlai) non é dei migliori... Aspettiamo aggiornamenti quindi ^^ http://www.browsergamer.net/banner/190x60/browsergamer.jpg http://www.medioshopping.com/img/medioshopping_logo_mini.png www.havana24.net Premi vinti http://www.rpg2s.net/gif/GC_bestof1.gif http://www.rpg2s.net/gif/GC_bestoftool1.gif http://www.rpg2s.net/gif/GC_musica3.gif http://www.rpg2s.net/gif/GC_effettispeciali1.gif http://www.rpg2s.net/gif/GC_effettispeciali1.gif http://www.rpg2s.net/gif/GC_gameplay2.gif http://www.rpg2s.net/gif/GC_mapping1.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_trama1.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/awards/bestgraphic1.jpg http://www.rpg2s.net/awards/bestmaker1.jpg http://www.rpg2s.net/awards/bestmapper1.jpg http://www.rpg2s.net/awards/bestprogrammer3.jpg http://rpg2s.net/gif/SCContest1Oct.gif http://i54.tinypic.com/15cikht.gif http://img42.imageshack.us/img42/3015/terzoposto.png Link to comment Share on other sites More sharing options...
Ultima Weapon Posted January 2, 2007 Share Posted January 2, 2007 (edited) Scusate, avevo già visto questo script da qualche parte e c'era un piccolo problema.. il pg non passava più sotto gli oggetti della mappa (alberi, case ecc)! Per caso avete corretto questo bug? Edited January 2, 2007 by Ultima Weapon Link to comment Share on other sites More sharing options...
Luigi Posted January 3, 2007 Author Share Posted January 3, 2007 no Link to comment Share on other sites More sharing options...
Extreme Z Posted January 5, 2007 Share Posted January 5, 2007 (edited) Scusate,ho un piccolo problemino.Con questo script,Attivo o meno,quando porto la tonalità schermo a 0(Per qualche evento)I Pg ed avvolte anche alcuni oggetti(Forse quellidel secondo o terzo LV,rimangono chiari.Come potrei correggere il problema? PsBella la barca volante dello screen,dove la posso trovare? Edited January 5, 2007 by Extreme Z Link to comment Share on other sites More sharing options...
moltheni Posted January 6, 2007 Share Posted January 6, 2007 2 domande.1. è possibile far ruotare la visuale della mappa (come nel vero mode7 dello snes)?2. le picture come vengono visualizzate (a dimensioni normali, rimpicciolite in base alla distanza del centro dell'immagine, appiattite al terreno.. ecc)? grazie. ex-lev http://www.rpg2s.net/forum/uploads/monthly_04_2008/post-256-1207331778.gif Adottare una gigacciola?!? Ecco cosa ne penso io:_____________http://img386.imageshack.us/img386/2594/gigacciolaje7.gif http://lev.altervista.org/_altervista_ht/nodalmolin.gif http://lev.altervista.org/_altervista_ht/knino.GIFhttp://lev.altervista.org/_altervista_ht/sherwood.gifhttp://imagegen.last.fm/senatormad/recenttracks/phykos.gif http://lev.altervista.org/_altervista_ht/piccioni.gif giorni mesi anni interi mi han fottuto dietro i banchimi han rubato la passione maledetti governantima adesso mi organizzo per la nuova libertà« anarcofricchettanza da domani…vencerá! » tratto da "Anarcosong - Osteria Popolare Berica" ๑۩۞۩๑http://www.rpg2s.net/awards/bestcritical3.jpg Link to comment Share on other sites More sharing options...
marigno Posted January 6, 2007 Share Posted January 6, 2007 Caro Luigi,Posta la demooooooooooooo!!!!!!! ù_ù Link to comment Share on other sites More sharing options...
moltheni Posted January 12, 2007 Share Posted January 12, 2007 me ne sono accorto ora, esisteva già il topic QUI con tanto di demo xD ex-lev http://www.rpg2s.net/forum/uploads/monthly_04_2008/post-256-1207331778.gif Adottare una gigacciola?!? Ecco cosa ne penso io:_____________http://img386.imageshack.us/img386/2594/gigacciolaje7.gif http://lev.altervista.org/_altervista_ht/nodalmolin.gif http://lev.altervista.org/_altervista_ht/knino.GIFhttp://lev.altervista.org/_altervista_ht/sherwood.gifhttp://imagegen.last.fm/senatormad/recenttracks/phykos.gif http://lev.altervista.org/_altervista_ht/piccioni.gif giorni mesi anni interi mi han fottuto dietro i banchimi han rubato la passione maledetti governantima adesso mi organizzo per la nuova libertà« anarcofricchettanza da domani…vencerá! » tratto da "Anarcosong - Osteria Popolare Berica" ๑۩۞۩๑http://www.rpg2s.net/awards/bestcritical3.jpg Link to comment Share on other sites More sharing options...
Luigi Posted February 21, 2007 Author Share Posted February 21, 2007 allora ce ne sono 3 Link to comment Share on other sites More sharing options...
EaglEye Posted February 21, 2012 Share Posted February 21, 2012 non per necropostare, ma non riesco a far funzionare questo script.Aggiungo tutto su Main, creo una nuova mappa (anche grandi e anche piccole, ne ho provate di tutte), eppure mettendo il [#XX] con il numero o [OV] dopo il nome della mappa. La mappa va e si vede, ma l'effetto non c'è.Siccome la demo postata sull'altro topic era su megaupload, causa la sua chiusura non posso più scaricare la demo. ç_______çQualcuno se ha la demo la può riuppare o mi spiega cosa ho sbagliato? . "Hurry up, we're dreaming." Soundcloud Page Link to comment Share on other sites More sharing options...
Dilos Posted February 22, 2012 Share Posted February 22, 2012 (edited) EaglEye, non ti preoccupare non è necropost se si posta per segnalare un non funzionamento, comunque la versione postata in questo topic è molto vecchia e probabilmente anche buggata...prova a inserire nel nome della mappa anche il tag [M7]...io non l'ho provata però ti linko quella che ho provato io, che è più recente e funzionante:Neo-Mode7probabilmente se fai un giro sui forum stranieri trovi versioni ancora più aggiornate Edited February 22, 2012 by Dilos |FIRMA| http://img190.imageshack.us/img190/4826/pizzamannew.png Uomo Delle Pizze Uomo Misterioso http://img209.imageshack.us/img209/6190/dilos.jpg Link to comment Share on other sites More sharing options...
EaglEye Posted February 22, 2012 Share Posted February 22, 2012 allora vedrò di patchare la versione 1.01^^ . "Hurry up, we're dreaming." Soundcloud Page Link to comment Share on other sites More sharing options...
Dilos Posted February 22, 2012 Share Posted February 22, 2012 Pensi che la causa del problema sia la versione di RPG Maker? Prova può essere quello non ci avevo pensato Ma prova anche la Neo-Mode07, peggio di questa non può essere |FIRMA| http://img190.imageshack.us/img190/4826/pizzamannew.png Uomo Delle Pizze Uomo Misterioso http://img209.imageshack.us/img209/6190/dilos.jpg Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now