Anti-Lag Events
Descrizione
Questo script sembra essere un POTENTISSIMO Anti-Lag per Eventi. Guardate lo screen!
PS. Non evita il lag causato da troppi script!
Autore
Victor Sant
Allegati
Screen:
* Questa è una mappa grande 100x100 con 500 Eventi (O_O) tutti in movimento, e ciò non ha impatto sui FPS (O_O)
Istruzioni per l'uso
Installare lo script sotto Materials e sotto il Victor Engine - Basic Module, richiesto obbligatoriamente per far partire tutti i suoi script.
Script:
#============================================================================== # ** Victor Engine - Anti Lag #------------------------------------------------------------------------------ # Autore : Victor Sant # Tradotto in italiano da Yoshi91 # # Cronistoria aggiornamenti: # v 1.00 - 2012.08.03 > Prima versione # v 1.01 - 2012.08.04 > Fixato un bug che causava un crash quando si veniva # teletrasportati su una mappa. #------------------------------------------------------------------------------ # Questo script decrementa enormemente il Lag su una mappa piena di eventi. # PS. Questo script non decrementa il lag causato dall'abuso di troppi script! #------------------------------------------------------------------------------ # Compabilità # Richiede lo Script Victor Engine - Basic Module alla versione 1.00 o successive # # * Metodi sovrascritti # class Game_Map # def update_events # def event_list # # class Spriteset_Map # def update_characters # # * Metodi Alias # class Game_Map # def setup(map_id) # def refresh # # class Game_Event < Game_Character # def setup_page_settings # # class Spriteset_Map # def create_characters # #------------------------------------------------------------------------------ # Istruzioni per l'uso: # Installare uno script in una nuova sezione sotto Materials, sotto # il Victor Engine Basic Module e sopra Main. # Ottieni il VE - Basic Module qui http://victorscripts.wordpress.com/rpg-maker-vx-ace/basic-scripts/basic-module/ #------------------------------------------------------------------------------ # Notetags da usare nei commenti: # Tags da usare nei commenti, negli eventi; ce ne sono differenti. # Questi sono chiamati quando viene effettuato un Refresh. # # <always update> # Pagine Evento con questa Notetag permetteranno un continuo refresh della pagina evento. # # <never update> # Pagine evento con questa Notetag impediranno un Refresh diminuendo il Lag. # Da usare per eventi-decorazioni. # #------------------------------------------------------------------------------ # Istruzioni Addizionali: # # Eventi in processe parallelo e eventi ad inizio automatico vengono sempre # aggiornati. # # Ricorda che anche l'hardware del PC influenza la velocità del gioco. #============================================================================== #============================================================================== # ** Victor Engine #------------------------------------------------------------------------------ # Settaggi - Impostazioni #============================================================================== module Victor_Engine #-------------------------------------------------------------------------- # * Setta il buffer d'aggiornamento # Settando alori diversi da 0, puoi incrementare l'area di aggiornamento per tile. # Incrementando il valore, il Lag aumenterà. #-------------------------------------------------------------------------- VE_UPDATE_BUFFER = 0 #============================================================================== # EVITA DI MODIFICARE LE PROSSIME RIGHE, POTRESTI CAUSARE ERRORI DEL GIOCO!!! #============================================================================== def self.required(name, req, version, type = nil) if !$imported[:ve_basic_module] msg = "Lo script '%s' richiede lo script \n" msg += "'Victor Engine - Basic Module' v%s o superiori\n" msg += "Vai su http://victorscripts.wordpress.com/ per scaricare questo script." msgbox(sprintf(msg, self.script_name(name), version)) exit else self.required_script(name, req, version, type) end end def self.script_name(name, ext = "VE") name = name.to_s.gsub("_", " ").upcase.split name.collect! {|char| char == ext ? "#{char} -" : char.capitalize } name.join(" ") end end $imported ||= {} $imported[:ve_anti_lag] = 1.01 Victor_Engine.required(:ve_anti_lag, :ve_basic_module, 1.00, :above) class Game_Map def update_events @update_list.each {|event| event.update } @common_events.each {|event| event.update } end def event_list @event_list end alias :setup_ve_anti_lag :setup def setup(map_id) @event_list = [] @update_list = [] setup_ve_anti_lag(map_id) end alias :refresh_ve_anti_lag :refresh def refresh refresh_ve_anti_lag refresh_event_list end def screen_moved? @last_screen_x != @display_x.to_i || @last_screen_y != @display_y.to_i end def refresh_screen_position @last_screen_x = @display_x.to_i @last_screen_y = @display_y.to_i end def refresh_event_list @event_list = events.values.select {|event| event.on_screen? } @update_list = events.values.select {|event| event.update? } end end class Game_CharacterBase def update?(*args) return true end def near_the_screen?(*args) return true end def on_screen?(*args) return true end end class Game_Event < Game_Character alias :setup_page_settings_ve_anti_lag :setup_page_settings def setup_page_settings setup_page_settings_ve_anti_lag @mode = nil @mode = :always if note =~ /<ALWAYS UPDATE>/i @mode = :never if note =~ /<NEVER UPDATE>/i end def update? return false if @mode == :never on_screen?(12, 8) end def auto_event? @mode == :always || @trigger == 3 || @trigger == 4 end def on_screen?(x = 14, y = 10) z = [VE_UPDATE_BUFFER, 0].max near_the_screen?(x + z, y + z) || auto_event? end end class Spriteset_Map def update_characters refresh_characters if @map_id != $game_map.map_id refresh_sprites if $game_map.screen_moved? @screen_sprites.each {|sprite| sprite.update } end alias :create_characters_ve_anti_lag :create_characters def create_characters create_characters_ve_anti_lag refresh_characters_sprites end def refresh_characters_sprites @screen_sprites = [] @character_sprites.each do |sprite| sprite.update @screen_sprites.push(sprite) if sprite.character.on_screen? end end def refresh_sprites refresh_characters_sprites $game_map.refresh_event_list $game_map.refresh_screen_position end end
Bugs e Conflitti Noti
Nessuno. L'ho provato anche contemporaneamente all'Anti-Lag di Moghunter e all'Anti-Lag di Yami e funzionava. Probabilmente ognuno dei tre sovrascrive metodi e classi diverse :/
Altri Dettagli
Creditate me (Yoshi91) per la traduzione in Ita e Victor Sant per la creazione dello Script.
Modificato da Yoshi91, 15 February 2013 - 20:38 PM.