Melosx Posted October 9, 2011 Share Posted October 9, 2011 (edited) Continuous Maps DescrizionePermette di legare le mappe come in pokemon ottenendo l'effetto di un unica mappa. AutoreBlizzard Allegati->DOWNLOAD DEMO<- Istruzioni per l'usoNello script. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= # Continuous Maps by Blizzard # Version: 1.2 # Type: Custom Map System # Date: 14.12.2009 # Date v1.2: 11.9.2010 #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= # # This work is protected by the following license: # #---------------------------------------------------------------------------- # # # # Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported # # ( http://creativecommons.org/licenses/by-nc-sa/3.0/ ) # # # # You are free: # # # # to Share - to copy, distribute and transmit the work # # to Remix - to adapt the work # # # # Under the following conditions: # # # # Attribution. You must attribute the work in the manner specified by the # # author or licensor (but not in any way that suggests that they endorse you # # or your use of the work). # # # # Noncommercial. You may not use this work for commercial purposes. # # # # Share alike. If you alter, transform, or build upon this work, you may # # distribute the resulting work only under the same or similar license to # # this one. # # # # - For any reuse or distribution, you must make clear to others the license # # terms of this work. The best way to do this is with a link to this web # # page. # # # # - Any of the above conditions can be waived if you get permission from the # # copyright holder. # # # # - Nothing in this license impairs or restricts the author's moral rights. # # # #---------------------------------------------------------------------------- # #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= # # Compatibility: # # 95% compatible with SDK v1.x. 80% compatible with SDK 2.x. WILL corrupt old # savegames. Compatible with Blizz-ABS. Not compatible with Intelligent # Passability from Blizz-ABS, it's being turned off. # # # Features: # # - virtually creates one continuous map from any number of map fragments # - easy to configure # # new in v1.2: # # - fixed bug where transferring into a non-configured map would crash the # game # - fixed bug when teleporting into another set of maps would mess up # everything # # # Instructions: # # - Explanation: # # This Script will allow you to make the game simulate a continuous map using # smaller maps. The system displays the current map and the neighbor maps. # Walking over a map border will cause the new map to be loaded as main map # and the neighbor maps will be changed. # # # Notes: # # - You may notice lag when walking over a map border. # - Do not use too big maps as it increases loading time and the short moment # of lag will become more and more visible. Due to the fact that map # loading times in Blizz-ABS are increased, those moments will be longer if # Blizz-ABS is being used. # - Remember to connect ALL neighbor maps or you might experience bugs. # # # If you find any bugs, please report them here: # http://forum.chaos-project.com #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= module CTMAPS #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # START Configuration #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # define all neighbor maps here MAP_DATA = [ # [MAP_ID1, MAP_ID2, X_OFFSET, Y_OFFSET] [1, 2, 17, 0], # connected map 1 and 2 where 2 has an X, Y offset of 25, 0 [2, 3, 17, 0], [3, 4, 0, 29] ] #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # END Configuration #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: MAP_DATA.compact! MAPS = {} MAP_DATA.each {|data| MAPS[data[0]] = [] if MAPS[data[0]] == nil MAPS[data[0]] |= [data[1, 3]] MAPS[data[1]] = [] if MAPS[data[1]] == nil MAPS[data[1]] |= [[data[0], -data[2], -data[3]]]} MAP_DATA = nil $ctmaps = 1.2 end #============================================================================== # Game_Temp #============================================================================== class Game_Temp attr_accessor :player_no_straighten attr_accessor :normal_transfer alias cont_maps_init initialize unless $@ def initialize cont_maps_init @player_no_straighten = true @normal_transfer = false end end #============================================================================== # Game_Character #============================================================================== class Game_Character attr_accessor :x attr_accessor :y attr_accessor :real_x attr_accessor :real_y alias straighten_ctmaps_later straighten def straighten if $game_temp.player_no_straighten $game_temp.player_no_straighten = nil return end straighten_ctmaps_later end alias moveto_ctmaps_later moveto def moveto(x, y) ox, oy = $game_map.upper_left; moveto_ctmaps_later(x - ox, y - oy) end end #============================================================================== # Game_Player #============================================================================== class Game_Player < Game_Character alias center_ctmaps_later center def center(x, y) ox, oy = $game_map.upper_left center_ctmaps_later(x - ox, y - oy) end end #============================================================================== # Game_Map #============================================================================== class Game_Map attr_reader :upper_left attr_reader :lower_right attr_reader :maps alias init_ctmaps_later initialize def initialize @maps = {} @events = {} init_ctmaps_later end alias setup_ctmaps_later setup def setup(map_id) last_maps = @maps last_map_id = @map_id @upper_left = [0, 0] @lower_right = [0, 0] events = @events setup_ctmaps_later(map_id) @maps = get_neighbor_maps if !@maps.has_key?(last_map_id) @events = {} last_maps = {} last_map_id = 0 else @events = events end setup_continuous_map setup_continuous_events(last_maps, last_map_id) end def get_neighbor_maps maps = {} maps[@map_id] = [@map, 0, 0] @upper_left = [0, 0] @lower_right = [@map.width, @map.height] if CTMAPS::MAPS.has_key?(@map_id) CTMAPS::MAPS[@map_id].each {|data| id, x, y = data if @maps[id] != nil map = @maps[id][0] else map = load_data(sprintf('Data/Map%03d.rvdata', id)) end maps[id] = [map, x, y] @upper_left[0] = x if @upper_left[0] > x @upper_left[1] = y if @upper_left[1] > y width, height = x + map.width, y + map.height @lower_right[0] = width if @lower_right[0] < width @lower_right[1] = height if @lower_right[1] < height} maps.each_value {|data| data[1] -= @upper_left[0] data[2] -= @upper_left[1]} end return maps end def setup_continuous_map width = @lower_right[0] - @upper_left[0] height = @lower_right[1] - @upper_left[1] data = Table.new(width, height, 3) @map = @map.clone @map.events = {} @maps.each_key {|id| map, ox, oy = @maps[id] if id == @map_id map.events.each_key {|i| @map.events[i] = map.events[i]} else map.events.each_key {|i| @map.events[id * 1000 + i] = map.events[i]} end (0...map.width).each {|x| (0...map.height).each {|y| (0...3).each {|z| data[x + ox, y + oy, z] = map.data[x, y, z]}}}} @map.width = width @map.height = height @map.data = data end def setup_continuous_events(last_maps, last_map_id) correct_event_positions(last_maps) if last_maps[@map_id] != nil delete_removed_events(last_maps, last_map_id) shift_events_from_last_map(last_maps, last_map_id) if last_map_id != 0 shift_events_for_new_map add_new_events(last_maps) end def delete_removed_events(last_maps, last_map_id) keys = [] @maps.each_key {|id| keys += @events.keys.find_all {|key| @events[key].real_x < 0 || @events[key].real_y < 0 || @events[key].real_x >= (@lower_right[0] - @upper_left[0]) * 256 || @events[key].real_y >= (@lower_right[1] - @upper_left[1]) * 256}} (keys | keys).each {|key| @events.delete(key)} end def shift_events_from_last_map(last_maps, last_map_id) @events.each_key {|key| if key < 1000 @events[last_map_id * 1000 + key] = @events[key] @events.delete(key) end} end def shift_events_for_new_map @events.each_key {|key| if key >= @map_id * 1000 && key < (@map_id + 1) * 1000 @events[key % 1000] = @events[key] @events.delete(key) end} end def correct_event_positions(last_maps) sx = @maps[@map_id][1] - last_maps[@map_id][1] sy = @maps[@map_id][2] - last_maps[@map_id][2] @events.each_value {|event| x, y = sx, sy event.x += x event.y += y event.real_x += sx * 256 event.real_y += sy * 256} end def add_new_events(last_maps = {}) if last_maps[@map_id] == nil @maps[@map_id][0].events.each_key {|i| if @events[i] == nil @events[i] = Game_Event.new(@map_id, @maps[@map_id][0].events[i]) end} end (@maps.keys - last_maps.keys - [@map_id]).each {|id| map, sx, sy = @maps[id] sx -= @maps[@map_id][1] sy -= @maps[@map_id][2] map.events.each_key {|i| if @events[id * 1000 + i] == nil @events[id * 1000 + i] = event = Game_Event.new(id, map.events[i]) x, y = sx, sy event.x += x event.y += y event.real_x += sx * 256 event.real_y += sy * 256 end}} end alias update_ctmaps_later update def update update_ctmaps_later return if $game_player.moving? || @maps.size <= 1 map, x, y = @maps[@map_id] if $game_player.real_x < x * 256 || $game_player.real_y < y * 256 || $game_player.real_x >= x * 256 + map.width * 256 || $game_player.real_y >= y * 256 + map.height * 256 (@maps.keys - [@map_id]).each {|id| map, x, y = @maps[id] if $game_player.real_x >= x * 256 && $game_player.real_y >= y * 256 && $game_player.real_x < x * 256 + map.width * 256 && $game_player.real_y < y * 256 + map.height * 256 $game_temp.player_no_straighten = true nx = $game_player.real_x / 256 - x ny = $game_player.real_y / 256 - y p "map_id = #{map_id}, new_map_id = #{id}, x,y = #{nx},#{ny}" if Input.press?(Input::F5) $game_player.reserve_transfer(id, nx, ny, 0) break end} end end end class Scene_Map < Scene_Base alias cont_map_updt_transfer update_transfer_player unless $@ def update_transfer_player if !$game_temp.normal_transfer do_new_transfer $game_temp.normal_transfer = false else cont_map_updt_transfer end end def do_new_transfer return unless $game_player.transfer? @spriteset.dispose # Dispose of sprite set $game_player.perform_transfer # Execute player transfer $game_map.autoplay # Automatically switch BGM and BGS $game_map.update Graphics.wait(0) @spriteset = Spriteset_Map.new # Recreate sprite set Input.update end end class Game_Interpreter def normal_transfer(boolean) $game_temp.normal_transfer = boolean end end Bugs e Conflitti NotiAll'interno dello script vi sono le incompatibilità e i confliti. Aggiungo però un problema con lo swapxt. se si fa caso solo il terreno viene correttemente swappato, al contrario gli altri tile swappano solo quando si mette effettivamente piede nella mappa avendo un brutto effetto. Edited October 9, 2011 by Melosx http://i.imgur.com/ROhv4te.png Link to comment Share on other sites More sharing options...
Guardian of Irael Posted October 9, 2011 Share Posted October 9, 2011 Ah l'hai trovato poi e pure postato! Bene! XD^ ^ Argh quella dello swap è un bel problemino... scripter sotto a risolvere! D:^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^ REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Holy87 Posted October 9, 2011 Share Posted October 9, 2011 Eh ragazzi è difficile da risolvere.. Non è una questione di conflitto, ma i due script dovrebbero lavorare in sincronia. Provo a risolvere, ma non vi prometto niente. "Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]http://holyres.altervista.org/UserBoard/BannerOverdrive35.pnghttp://holyres.altervista.org/UserBoard/Cap3.pnghttp://www.indiexpo.net/signature/578.png Miei script per RPG Maker VX Ace:*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza. Modulo di supporto scripters - per utilizzare le API di Windows facilmente!Sistema Popup generaleHOT - per dei popup più divertenti!Sistema di monete - come in WoWDownload e avviso patch di giocoHOT - Sistema d'aggiornamenti!Sistema degli obiettiviHOT - Per dare un valore aggiunto al tuo gioco!Set Equipaggiamenti - perché vestire pan-dan va di moda!Logo inizialeHOT - flessibilissimo, funzionale e personalizzabile!Requisiti Equipaggiamenti - se vuoi dare un tocco di RPG occidentaleLampeggiamento critico - fa vedere al giocatore un alone rosso intorno allo schermo quando sta per morireMenu titolo person. - uno stile originale per il menu iniziale!Movmento fluido - Puoi muovere in modo stickoso sprite, finestre e viewportTransizioni fluide del menu - Animazione di transizione per le finestre dei menuInfo del gioco dal Titolo - fa sempre bene mostrare i crediti del gioco!Barra generica - una barra per fare quello che vuoiScambio truppe di nemici - utile se usi gli incontri casualiParty multipli - se vuoi avere due gruppi paralleliFinestra dettagli oggetti - Per avere le informazioni più dettagliate su oggetti, equip e abilitàConteggio nemici uccisi - per le quest!Titoli di coda - quando finalmente finirai il gioco!Cartella salvataggi - Per raggruppare i salvataggi in una cartella specifica o nella home dell'utente I miei tutorial:Come distribuire il gioco - e anche come creare un'installazione professionale!RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed espertiCome mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mappingLoop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finaliCreare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto! Link to comment Share on other sites More sharing options...
Dexter Posted October 10, 2011 Share Posted October 10, 2011 Ma questo l'avete provato? http://www.rpg2s.net/forum/index.php?showtopic=11285 Fatto dal nostro buon murshu... penso che l'effetto che volete dare sia questo... poi non so! X°°D http://img89.imageshack.us/img89/618/qzfc.pngPremi:http://i49.tinypic.com/2cpdkb8.jpghttp://i40.tinypic.com/w0tfev.jpghttp://i42.servimg.com/u/f42/13/12/87/37/screen10.pnghttp://i42.servimg.com/u/f42/13/12/87/37/screen10.pnghttp://i42.servimg.com/u/f42/13/12/87/37/screen10.pnghttp://www.rpgmkr.net/contest/screen-contest-primo.pnghttp://www.rpgmkr.net/contest/screen-contest-secondo.pnghttp://www.rpgmkr.net/contest/screen-contest-secondo.png http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest1Oct.gif http://oi60.tinypic.com/206c3nc.jpg Link to comment Share on other sites More sharing options...
Melosx Posted October 14, 2011 Author Share Posted October 14, 2011 Lo script di morshu è utile ma non è quello che cerco... Lo script di morshu elimina le dissolvenze lo script da me postato incolla le mappe una all'altra dando l'effetto di mappa unica... http://i.imgur.com/ROhv4te.png Link to comment Share on other sites More sharing options...
Melosx Posted October 21, 2011 Author Share Posted October 21, 2011 Dalle prove fatte con questo script ho notato che il problema si presenta solo le mappe adiacenti non hanno lo stesso settaggio per quanto riguardo i tile da swappaere. Se due mappe adiacenti swappano allo stesso modo nessun problema. http://i.imgur.com/ROhv4te.png 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