Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More

Recommended Posts

Nome Script: Some Popup

Versione: 2.8

Autore/i: mikb89

 

Informazioni:

Con questo script potrete specificare del testo in un evento che verrà mostrato quando il giocatore si avvicina.

 

Features:

Sono disponibili diversi effetti di comparsa ed è possibile utilizzare picture anziché testo. Il testo può essere mostrato, oltre che sul giocatore, anche agganciato all'evento, per scomparire quando questo si allontana. È possibile riprodurre un suono SE, ME, BGM e BGS, sia generico che personalizzato per evento.

 

Screenshots:

somepopupvxace.png

 

Istruzioni:

Inserite lo script sotto Materials. Le istruzioni sono fra i commenti.

 

Script

 

 

# Some Popup v 2.8# VX Ace version# by mikb89# Dettagli:#  Mostra del testo in popup quando vicino a un evento.#  Il testo può essere piazzato al centro dello schermo, sul giocatore o#   sull'evento.#  Scrivi [pop] in un commento per assegnare il popup e scrivi nel commento#   successivo il testo che verrà mostrato.# NOTA: [pop] è di default, ma puoi cambiarlo dalle configurazioni.#  Il testo può essere anche ingrigito, per indicare qualcosa non disponibile.#   Per far questo, scrivi [npop] invece di [pop].#  Puoi anche mostrare una Picture anziché testo. Per far ciò, il primo#   commento deve essere [ppop] e il secondo conterrà il nome della Picture.#  È possibile riprodurre suoni/musica per ogni evento. Scrivi in un terzo#   commento queste linee:#    SE (o ME o BGM o BGS)#    Nome del file audio#    Volume (1-100)#    Pitch (50-150)#    Puoi omettere le ultime due e saranno impostate di default:#    Volume 80 per BGS e SE, 100 per BGM e ME#    Pitch 100# ATTENZIONE: i commenti devono essere i primi due (o tre) comandi dell'evento.##  Puoi anche chiamare uno script con:#    $game_player.remove_town_sprite#   scritto per togliere il popup. Ad esempio se metti il popup su un evento#   con cui parlerai.# Configurazioni:module SPOP  ID = "pop" # Metti "loc" per compatibilità con vecchie versioni.   # Cosa scrivere per identificare l'evento con del popup.   # Se il valore è ad esempio "pop" dovrai scrivere:   #  - [pop] per il tipico popup;   #  - [npop] per il popup ingrigito;   #  - [ppop] per il popup con Picture.  AUTO_REMOVE_AT_TRANSFER = true   # Testa per capire cosa intendo.   #  true - stesso effetto delle città in Chrono Trigger.   #  false - il popup rimarrà al trasporto. Se ne andrà al primo movimento.  GRAYED_COLOR = Color.new(255,245,255,175)   # Valore del colore grigio. Rosso, verde, blu, alpha. Da 0 a 255.  WALK_8_DIR = true   # Non devi aggiungere lo script per le 8 direzioni. Metti true qui.  POPUP_TRANSITION = 9   # Effetti di s/comparsa del popup.   #  0: nessun effetto   #  1: dissolvenza   #  2: movimento su/giù   #  3: movimento & dissolvenza   #  4: movimento ridotto   #  5: movimento ridotto & dissolvenza   #  6: zoom in/out   #  7: zoom & dissolvenza   #  8: zoom & movimento   #  9: zoom, movimento, dissolvenza   # 10: zoom & movimento ridotto   # 11: zoom, movimento ridotto, dissolvenza  POPUP_SOUND = ["SE", "Book1", 80, 100]   # Cosa riprodurre al popup.   # 4 parametri:   #  1. Tipo di suono ("SE", "ME", "BGS", "BGM");   #  2. Nome del file;   #  3. Volume (0-100);   #  4. Pitch (50-150 (o 15-453 se vuoi i MASSIMI valori)).   # Per disattivare metti "" al 2. O metti 0 al 3. Esempi:   #  POPUP_SOUND = ["SE", "", 80, 100]   #  POPUP_SOUND = ["SE", "Book1", 0, 100]   # Non saranno riprodotti.   # Eventuali BGM o BGS in riproduzione dissolveranno insieme alla grafica   #  e poi ripartiranno. Non valido se usi SE/ME.   # Esempi con ME, BGM, BGS:   #  POPUP_SOUND = ["ME", "Item", 100, 100]   #  POPUP_SOUND = ["BGM", "Town1", 100, 100]   #  POPUP_SOUND = ["BGS", "Clock", 100, 100]  POPUP_BINDING = 2   # Dove deve essere agganciato il popup.   #  0: centro dello schermo   #  1: sul giocatore   #  2: sugli eventiend# Altro:#  Vedrai 'town' (città) ovunque nello script. Questo perché il SECONDO nome #   dato allo script era: "Popup town name".#  Il PRIMO nome originale era "Location system", da qui il [loc] da mettere#   nel commento. Comunque non ho mai pubblicato la versione con questo nome#   quindi non troverai niente riguardo a questa.#Codename: spop($imported ||= {})[:mikb89_spop] = true# Licenza:# - Puoi chiedermi di includere il supporto per altri script, a patto che usino#   il $imported[script] = true;# - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per#   ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi#   fare un post con lo script così com'è;# - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi#   a commerciali. Apprezzerei comunque essere messo al corrente di quello che#   stai creando;# - Devi creditarmi, se usi questo script o parte di esso.class Game_Player < Game_Character  #--------------------------------------------------------------------------  # * Object Initialization  #--------------------------------------------------------------------------  alias_method(:initGP_b4_spop, :initialize) unless method_defined?(:initGP_b4_spop)#class Game_Player#def initialize() <- aliased  def initialize    initGP_b4_spop    @town_sprite = nil    @town_text = ""    reset_audio    @town_ex_audio = nil    @sync_event = nil  end  #--------------------------------------------------------------------------  # * Frame Update  #--------------------------------------------------------------------------  alias_method(:updateGP_b4_spop, :update) unless method_defined?(:updateGP_b4_spop)#class Game_Player#def update() <- aliased  def update    updateGP_b4_spop    if @town_sprite != nil      case SPOP::POPUP_BINDING      when 1        @town_sprite.x = $game_player.screen_x        if @town_sprite.y != $game_player.screen_y && $game_player.screen_y != @sync_y          @town_sprite.y = $game_player.screen_y - (@town_sprite.y - @sync_y).abs          @sync_y = $game_player.screen_y        end      when 2        if @sync_event != nil          @town_sprite.x = @sync_event.screen_x          if @town_sprite.y != @sync_event.screen_y && @sync_event.screen_y != @sync_y            @town_sprite.y = @sync_event.screen_y - (@town_sprite.y - @sync_y).abs            @sync_y = @sync_event.screen_y          end          remove_town_sprite if Math.hypot(@sync_event.distance_x_from($game_player.<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' />, @sync_event.distance_y_from($game_player.y)) > 2        end      end      rem = false      @town_sprite.visible = SceneManager.scene_is?(Scene_Map)      @town_sprite.update      if [1,3,5,7,9,11].include?(SPOP::POPUP_TRANSITION)        @town_sprite.opacity -= 15 if @town_sprite.z == 5 && @town_sprite.opacity > 0        @town_sprite.opacity += 15 if @town_sprite.z == 10 && @town_sprite.opacity < 255        rem = true if @town_sprite.opacity <= 0      end      if [2,3,4,5,8,9,10,11].include?(SPOP::POPUP_TRANSITION)        mov = [4,5,10,11].include?(SPOP::POPUP_TRANSITION) ? 32 : 64        val = mov/16        t = @town_sprite.y        @town_sprite.y += val if @town_sprite.z == 5 && @toadd > -mov        @town_sprite.y -= val if @town_sprite.z == 10 && @toadd > 0        @toadd -= val if t != @town_sprite.y        rem = true if @toadd <= -mov      end      if [6,7,8,9,10,11].include?(SPOP::POPUP_TRANSITION)        if @town_sprite.z == 5 && @town_sprite.zoom_x > 0          @town_sprite.zoom_x -= 0.25          @town_sprite.zoom_y -= 0.25        end        if @town_sprite.z == 10 && @town_sprite.zoom_x < 1          @town_sprite.zoom_x += 0.25          @town_sprite.zoom_y += 0.25        end        rem = true if @town_sprite.zoom_x <= 0      end      if @town_ex_audio != nil        if @audiowait > 0          @audiowait -= 1        elsif @audiowait == 0          if @town_audio != nil            @town_audio.play            if @town_ex_audio.class != @town_audio.class              @town_ex_audio.replay              @town_ex_audio = nil            end            reset_audio if @town_audio.name != SPOP::POPUP_SOUND[1]          end          @audiowait = -1        end      end      remove_town_sprite(true) if rem    end  end  #--------------------------------------------------------------------------  # * Removing of town sprite when changing map  #--------------------------------------------------------------------------  alias_method(:perform_transfer_b4_spop, :perform_transfer) unless method_defined?(:perform_transfer_b4_spop)#class Game_Player#def perform_transfer() <- aliased  def perform_transfer    remove_town_sprite(true, false) if SPOP::AUTO_REMOVE_AT_TRANSFER    perform_transfer_b4_spop  end  #--------------------------------------------------------------------------  # * Processing of Movement via input from the Directional Buttons  #--------------------------------------------------------------------------#class Game_Player#def move_by_input() <- rewritten  def move_by_input    return unless movable?    return if $game_map.interpreter.running?    x, y = self.x, self.y    case SPOP::WALK_8_DIR ? Input.dir8 : Input.dir4    when 1      move_diagonal(4,2)#lower_left      if !@move_succeed        check_town(x-1, y+1)      else        check_town(x-2, y+2)      end    when 2      move_straight(2)#down      if !@move_succeed        check_town(x, y+1)      else        check_town(x, y+2)      end    when 3      move_diagonal(6,2)#lower_right      if !@move_succeed        check_town(x+1, y+1)      else        check_town(x+2, y+2)      end    when 4      move_straight(4)#left      if !@move_succeed        check_town(x-1, y)      else        check_town(x-2, y)      end    when 6      move_straight(6)#right      if !@move_succeed        check_town(x+1, y)      else        check_town(x+2, y)      end    when 7      move_diagonal(4,8)#upper_left      if !@move_succeed        check_town(x-1, y-1)      else        check_town(x-2, y-2)      end    when 8      move_straight(8)#up      if !@move_succeed        check_town(x, y-1)      else        check_town(x, y-2)      end    when 9      move_diagonal(6,8)#upper_right      if !@move_succeed        check_town(x+1, y-1)      else        check_town(x+2, y-2)      end    end  end  #--------------------------------------------------------------------------  # * Operations for sprite removal and audio stopping  #--------------------------------------------------------------------------#class Game_Player#def remove_town_sprite(instant, audio)  def remove_town_sprite(instant=false, audio=true)    if @town_sprite != nil      if instant || SPOP::POPUP_TRANSITION == 0        if audio          @town_audio.class.stop if @town_audio != nil          @town_ex_audio.replay if @town_ex_audio != nil        end        @town_ex_audio = nil        @town_sprite.dispose        @town_sprite = nil        @sync_event = nil      else        @town_sprite.z = 5        unless @town_audio.is_a?(RPG::SE)          @town_audio.class.fade(4) if @town_audio != nil        end      end    end  end  #--------------------------------------------------------------------------  # * Set the audio as the one specified in SPOP or passed  #--------------------------------------------------------------------------#class Game_Player#def reset_audio(spn)  def reset_audio(spn = SPOP::POPUP_SOUND)    @town_audio = (spn[1] == "" ||                  spn[2] <= 0) ? nil :                    case spn[0]                    when "BGM"; RPG::BGM.new(spn[1], spn[2], spn[3])                    when "BGS"; RPG::BGS.new(spn[1], spn[2], spn[3])                    when "ME"; RPG::ME.new(spn[1], spn[2], spn[3])                    when "SE"; RPG::SE.new(spn[1], spn[2], spn[3])                    end  end  #--------------------------------------------------------------------------  # * Check if there is a town event in front of the player  #--------------------------------------------------------------------------#class Game_Player#def check_town(x, y)  def check_town(x, y)    return false if $game_map.interpreter.running?    result = false    for event in $game_map.events_xy(x, y)      unless [1,2].include?(event.trigger) and event.priority_type == 1        if event.list != nil          if event.list[0].code == 108 and            ["[#{SPOP::ID}]", "[n#{SPOP::ID}]", "[p#{SPOP::ID}]"].include?(event.list[0].parameters[0])            result = true            next if @town_sprite != nil && @town_sprite.z == 10 && @town_text == event.list[1].parameters[0]            remove_town_sprite(true)            @town_sprite = Sprite.new            @town_sprite.z = 10            if [6,7,8,9,10,11].include?(SPOP::POPUP_TRANSITION)              @town_sprite.zoom_x = @town_sprite.zoom_y = 0.0            end            @town_sprite.opacity = 15 if [1,3,5,7,9,11].include?(SPOP::POPUP_TRANSITION)            if event.list[0].parameters[0] != "[p#{SPOP::ID}]"              @town_sprite.bitmap ||= Bitmap.new(1,1)              siz = @town_sprite.bitmap.text_size(event.list[1].parameters[0])              h = siz.height              s = siz.width              @town_sprite.bitmap.dispose              @town_sprite.bitmap = Bitmap.new(s, 24)              if event.list[0].parameters[0] == "[n#{SPOP::ID}]"                ex = @town_sprite.bitmap.font.color                @town_sprite.bitmap.font.color = SPOP::GRAYED_COLOR              end              @town_sprite.bitmap.draw_text(0,2,s,22,event.list[1].parameters[0],1)              @town_sprite.bitmap.font.color = ex if event.list[0].parameters[0] == "[n#{SPOP::ID}]"            else              @town_sprite.bitmap = Cache.picture(event.list[1].parameters[0])              s = @town_sprite.bitmap.width              h = @town_sprite.bitmap.height            end            @town_text = event.list[1].parameters[0]            @town_sprite.ox = s/2            @town_sprite.oy = h/2            case SPOP::POPUP_BINDING            when 1              @town_sprite.x = $game_player.screen_x#*32+16              @town_sprite.y = @sync_y = $game_player.screen_y#*32+16            when 2              @town_sprite.x = event.screen_x#*32+16              @town_sprite.y = @sync_y = event.screen_y#*32+16              @sync_event = event            else              @town_sprite.x = 544/2# - s/2              @town_sprite.y = 416/2# - h/2            end            @town_sprite.y -= 64 if [0,1,6,7].include?(SPOP::POPUP_TRANSITION)            @town_sprite.y -= 32 if [4,5,10,11].include?(SPOP::POPUP_TRANSITION)            @toadd = [2,3,4,5,8,9,10,11].include?(SPOP::POPUP_TRANSITION) ? 64 : 0            @toadd -= 32 if [4,5,10,11].include?(SPOP::POPUP_TRANSITION)            if @town_audio != nil || event.list[2].code == 108              if ["BGM", "ME", "BGS", "SE"].include?(event.list[2].parameters[0]) &&                event.list[3].code == 408                arr = []                arr.push(event.list[2].parameters[0])                arr.push(event.list[3].parameters[0])                if event.list[4].code == 408                  arr.push(event.list[4].parameters[0].to_i)                  arr.push(event.list[5].parameters[0].to_i) if event.list[5].code == 408                else                  arr.push(["BGS", "SE"].include?(event.list[2].parameters[0]) ? 80 : 100)                end                arr.push(100) if arr.size < 4                reset_audio(arr)              end              @town_ex_audio = @town_audio.class.last if [RPG::BGM, RPG::BGS].include?(@town_audio.class)              if @town_ex_audio != nil                @town_ex_audio.class.fade(4)                @audiowait = 4              else                @town_audio.play                reset_audio if arr != nil              end            end          end        end      end    end    remove_town_sprite unless result    return result  endend#--------------------------------------------------------------------------# * Sprite removal at Save (can't save a Sprite) and End#--------------------------------------------------------------------------class Scene_Save < Scene_File  if method_defined?(:start)    alias_method(:start_SSav_b4_spop, :start) unless method_defined?(:start_SSav_b4_spop)  end#class Scene_Save#def start() <- aliased/added  def start    if respond_to?(:start_SSav_b4_spop)      start_SSav_b4_spop    else      super    end    $game_player.remove_town_sprite(true)  endendclass Scene_End < Scene_MenuBase  alias_method(:start_SEnd_b4_spop, :start) unless method_defined?(:start_SEnd_b4_spop)#class Scene_End#def start() <- aliased  def start    start_SEnd_b4_spop    $game_player.remove_town_sprite(true)  endend

 

Demo:

Demo multilingua v. 2.8 (1,35 MB)\nhttp://www.mediafire.com/?1q8pjd848mvd6n4

 

Incompatibilità:

Sovrascrive lo script per la camminata in 8 direzioni. O viene sovrascritto, a seconda. Per ovviare, questo script è stato incorporato ed è attivabile/disattivabile tramite opzione.

 

Note dell'autore:

Ringrazio Unamuno per avere chiesto la versione per VX altrimenti non l'avrei postato né convertito e Guardian of Irael per avermi suggerito molti miglioramenti.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da Ally
      Nome Script: Napoleon's Minimap V1.06a
      Versione: 1.06a
      Autore/i: Napoleon
       
      Informazioni:
      Mini-Map script molto bello e personalizzabile con varie opzioni =)
       
      Screenshots:
       
       
      Istruzioni:
      Istruzioni e script all'interno della demo.
       
      Demo:
      https://www.dropbox.com/s/jm92rbqb5eadryr/Napoleons%20Master%20Demo.zip
    • Da Ally
      Nome Script: Camminata 8 Direzioni
      Versione: N/D
      Autore/i: Raizen884
       
      Informazioni:
      Script che simula le 8 direzioni di camminata.
       
      Istruzioni:
      Inserite lo script sotto Material.
       
      Script:
       
      #=======================================================# Engine 8 direções.# Autor: Raizen884# Mude completamente o seu jogo de 4 direções, para# 8 direções. O script vai adicionar movimentos em 8# direções para o personagem e para todos os eventos# no jogo.#=======================================================class Game_Player < Game_Character def move_by_input return if !movable? || $game_map.interpreter.running? move_diagonal(4, 2) if Input.dir8 == 1 move_straight(2) if Input.dir8 == 2 move_diagonal(6, 2) if Input.dir8 == 3 move_straight(4) if Input.dir8 == 4 move_diagonal(6, 8) if Input.dir8 == 9 move_straight(6) if Input.dir8 == 6 move_diagonal(4, 8) if Input.dir8 == 7 move_straight(8) if Input.dir8 == 8 end def move_diagonal(horz, vert) @followers.move if diagonal_passable?(@x, @y, horz, vert) check_event_trigger_touch(@x+1, @y+1) if horz == 6 and vert == 2 check_event_trigger_touch(@x+1, @y-1) if horz == 6 and vert == 8 check_event_trigger_touch(@x-1, @y-1) if horz == 4 and vert == 8 check_event_trigger_touch(@x-1, @y+1) if horz == 4 and vert == 2 super endendclass Game_Character < Game_CharacterBase def move_toward_character(character) sx = distance_x_from(character.x) sy = distance_y_from(character.y) if sx.abs > sy.abs and sy == 0 move_straight(sx > 0 ? 4 : 6) move_straight(sy > 0 ? 8 : 2) if !@move_succeed && sy != 0 elsif sx.abs > sy.abs and sy > 0 if sx > 0 move_diagonal(4, 8) else move_diagonal(6, 8) end elsif sx.abs > sy.abs and sy < 0 if sx > 0 move_diagonal(4, 2) else move_diagonal(6, 2) end end if sx.abs <= sy.abs and sx == 0 move_straight(sy > 0 ? 8 : 2) move_straight(sx > 0 ? 4 : 6) if !@move_succeed && sx != 0 elsif sx.abs <= sy.abs and sx > 0 if sy > 0 move_diagonal(4, 8) else move_diagonal(4, 2) end elsif sx.abs <= sy.abs and sx < 0 if sy > 0 move_diagonal(6, 8) else move_diagonal(6, 2) end endend def move_random case rand(2) when 0 move_straight(2 + rand(4) * 2, false) when 1 move_diagonal(2 + rand(4) * 2, 2 + rand(4) * 2) end end def move_away_from_character(character) sx = distance_x_from(character.x) sy = distance_y_from(character.y) if sx.abs > sy.abs and sy == 0 move_straight(sx > 0 ? 6 : 4) move_straight(sy > 0 ? 2 : 8) if !@move_succeed && sy != 0 elsif sx.abs > sy.abs and sy < 0 if sx < 0 move_diagonal(4, 8) else move_diagonal(6, 8) end elsif sx.abs > sy.abs and sy > 0 if sx > 0 move_diagonal(6, 2) else move_diagonal(4, 2) end end if sx.abs <= sy.abs and sx == 0 move_straight(sy > 0 ? 2 : 8) move_straight(sx > 0 ? 6 : 4) if !@move_succeed && sx != 0 elsif sx.abs <= sy.abs and sx < 0 if sy > 0 move_diagonal(4, 2) else move_diagonal(4, 8) end elsif sx.abs <= sy.abs and sx > 0 if sy < 0 move_diagonal(6, 8) else move_diagonal(6, 2) end endendend
    • Da Ally
      Nome Script: Overlay Mapping
      Versione: del 16.04.2012
      Autore/i: Yami
       
      Informazioni:
      Questo script permette di poter utilizzare i vari livelli di parallasse per mappare all'interno del vostro progetto di RPG Maker VX Ace.
       
      Screenshots:

       
      Istruzioni:
      Create una cartella dentro "Graphics" chiamata Overlay (nome progetto/Graphic/Overlay).
      Potete creare fino a 4 tipi di immagini:
      • Ground (parte base della mappa - va SOTTO a tutto)
      • Par (parte alta della mappa - va SOPRA a tutto e copre gli eventi e il personaggio - vedi albero)
      • Light (crea effetti di luce statici)
      • Shadow (crea effetti di ombra statici)
       
      Le immagini della vostra mappa dovranno essere nominate in base alla loro funzione:
      • Il prato è un ground
      • Gli alberi e tutto quello che è sopra al livello dell'eroe è un par
      • Le luci e le ombre sono rispettivamente light e shadow
       
      Esempio:
      Io ho creato un prato con degli alberi come nell'immagine sopra.
      Tutto questo andrà inserito all'interno delle prima mappa del gioco (quindi ID:0001); di conseguenza chiamerò la mia immagine del prato cosi: Ground1_1 (il primo 1 è l'ID della mappa nel quale il prato verrà visualizzato; il secondo 1 è usato se, per esempio, nella stessa mappa volete creare più versioni: ground1_1 versione normale ground1_2 versione distruzione, per esempio); L'immagine deve essere in PNG.
      Gli alberi andranno salvati cosi: Par1_1 (i numeri seguono lo stesso principio spiegato sopra); L'immagine deve essere in PNG.
      Le luci e le ombre (se presenti) andranno salvate con lo stesso principio spiegato sopra (light1_1 e Shadow1_1); L'immagine deve essere in JPG.
       
      (se questo prato dovrà essere messo nell mappa con ID 23 le immagini saranno chiamate ground23_1, par23_1, light23_1 e shadow23_1)
       
      Spero di essere stato chiaro D:
       
      Script:
       
       
      F.A.Q:
      N/D
       
      Demo:
      N/D
       
      Incompatibilità:
      N/D
       
      Note dell'autore:
      N/D
    • Da Ally
      Nome Script: Lune Ultimate Anti-Lag
      Versione: N/D
      Autore/i: Raizen
       
      Informazioni:
      Lo script Anti-Lag ormai è un must have da inserire nei propri progetti.
      Infatti consente di migliorare le prestazioni nonostante i troppi eventi, script, etc...
       
      Istruzioni:
      Inserite lo script sotto Material e configuratelo se necessario...
       
      Script:
       
       
      #=======================================================# Lune Ultimate Anti-Lag# Author: Raizen# Compatible with: RMVXAce# Comunity: centrorpg.com# This script allows a very well balanced anti-lag, in which# considers the own PC of the player, using a smart frame-skipper# to slow lags,#========================================================#To update constantly the event, put a commentary on the first# command of the script written :update:module Anti_conf#==============================================================================# ** Configurations#------------------------------------------------------------------------------# Configure what is necessary for a better performance.#==============================================================================# Choose how the script will act.# <=====Quality============================Performance=====># 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20# Default = 10Fr = 10# Configure the FPS rate (default = 60)Fps = 60# Configure the minimum FPS rate (default = 25)Mini = 25# Quantity of frames the anti-lag will study,# the higher the time, the more precise the script,# but will take longer to load the anti-lagTime = 60end=beginFunctions on this Anti-Lag* Common event positioning bug fixed* Smart Frame Skipper* updates what is only necessary* helps to lower lags from visual system/scripts* Changes its behavior according to the players PC* Increases the RPG Maker priority over other programs=end#=================================================================##=================================================================##==================== Alias methods =============================## command_203 => Game_Interpreter# start => Scene_Map# update => Scene_Map# perform_transfer => Scene_Map#=================================================================##==================== Rewrite methods ===========================## update_events => Game_Map# update_one_event => Spriteset_Map#=================================================================##======================== New methods ===========================## need_to_update? => Game_Event# near_the_screen? => Sprite_Character# call_position_event => Scene_Map# skip_calculate => Scene_Map# update_one_event => Spriteset_Map#=================================================================##=================================================================##==============================================================================#============================ Início do Script! =============================#==============================================================================#==============================================================================# ** Scene_Map#------------------------------------------------------------------------------# Esta classe executa o processamento da tela de mapa.#==============================================================================class Scene_Map < Scene_Basealias lune_skip_start startalias lune_skip_update updatealias lune_perform perform_transfer #-------------------------------------------------------------------------- # * Inicialização do processo #-------------------------------------------------------------------------- def start Graphics.frame_rate = Anti_conf::Fps @update_skip = false @count_up = 0 lune_skip_start end #-------------------------------------------------------------------------- # * Execução da transferência #-------------------------------------------------------------------------- def perform_transfer $get_new_ids = Array.new Graphics.frame_rate = Anti_conf::Fps lune_perform @count_up = 0 @update_skip = false end #-------------------------------------------------------------------------- # * Atualização da tela #-------------------------------------------------------------------------- def update @update_skip ? lune_skip_update : skip_calculate end #-------------------------------------------------------------------------- # * Atualização de um personagem especifico #-------------------------------------------------------------------------- def call_position_event(id) @spriteset.update_one_event(id) end #-------------------------------------------------------------------------- # * Calcula o tempo necessário para rodar o update do Scene_Map #-------------------------------------------------------------------------- def skip_calculate @count_up += 1 return unless @count_up >= Anti_conf::Time auto_skip = Time.now lune_skip_update old_skip = Time.now get_skip = old_skip - auto_skip Graphics.frame_rate -= (get_skip * Graphics.frame_rate * 2 * Anti_conf::Fr - 1).to_i Graphics.frame_rate = [Graphics.frame_rate, Anti_conf::Mini].max @update_skip = true endend#==============================================================================# ** Scene_Base#------------------------------------------------------------------------------# Esta é a superclasse de todas as cenas do jogo.#==============================================================================class Scene_Basealias skipper_main main #-------------------------------------------------------------------------- # * Processamento principal #-------------------------------------------------------------------------- def main @fr_cont = 0 skipper_main end #-------------------------------------------------------------------------- # * Execução da transição #-------------------------------------------------------------------------- def perform_transition Graphics.transition(transition_speed * Graphics.frame_rate / 60) end #-------------------------------------------------------------------------- # * Atualização da tela (básico) #-------------------------------------------------------------------------- def update_basic if @fr_cont >= 60 Graphics.update @fr_cont -= 60 end @fr_cont += Graphics.frame_rate update_all_windows Input.update endend#==============================================================================# ** Aumento da prioridade do rpg maker#------------------------------------------------------------------------------Lune_high = Win32API.new("kernel32", "SetPriorityClass", "pi", "i")Lune_high.call(-1, 0x90)#==============================================================================#==============================================================================# ** Game_Event#------------------------------------------------------------------------------# Esta classe gerencia os eventos. Ela controla funções incluindo a mudança# de páginas de event por condições determinadas, e processos paralelos.# Esta classe é usada internamente pela classe Game_Map.#==============================================================================class Game_Event < Game_Character #-------------------------------------------------------------------------- # * necessário atualizar? #-------------------------------------------------------------------------- def need_to_update? ax = $game_map.adjust_x(@real_<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> - 8 ay = $game_map.adjust_y(@real_y) - 6 ax.between?(-9, 9) && ay.between?(-7, 7) || @list[0].parameters.include?(':update:') endend#==============================================================================# ** Sprite_Character#------------------------------------------------------------------------------# Este sprite é usado para mostrar personagens. Ele observa uma instância# da classe Game_Character e automaticamente muda as condições do sprite.#==============================================================================class Sprite_Character < Sprite_Base #-------------------------------------------------------------------------- # * Evento próximo a tela? #-------------------------------------------------------------------------- def near_the_screen? ax = $game_map.adjust_x(@character.<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> - 8 ay = $game_map.adjust_y(@character.y) - 6 ax.between?(-11, 11) && ay.between?(-8, 8) endend#==============================================================================# ** Game_Event#------------------------------------------------------------------------------# Esta classe gerencia os eventos. Ela controla funções incluindo a mudança# de páginas de event por condições determinadas, e processos paralelos.# Esta classe é usada internamente pela classe Game_Map.#==============================================================================class Game_Event < Game_Characteralias lune_ant_initialize initialize #-------------------------------------------------------------------------- # * Inicialização do objeto # event : RPG::Event #-------------------------------------------------------------------------- def initialize(*args, &block) lune_ant_initialize(*args, &block) $get_new_ids.push(@event.id) endend#==============================================================================# ** Game_Interpreter#------------------------------------------------------------------------------# Um interpretador para executar os comandos de evento. Esta classe é usada# internamente pelas classes Game_Map, Game_Troop e Game_Event.#==============================================================================class Game_Interpreteralias lune_lag_command_203 command_203 #-------------------------------------------------------------------------- # Definir posição do evento #-------------------------------------------------------------------------- def command_203 lune_lag_command_203 SceneManager.scene.call_position_event($get_new_ids.index(@event_id)) endend#==============================================================================# ** Game_Map#------------------------------------------------------------------------------# Esta classe gerencia o mapa. Inclui funções de rolagem e definição de# passagens. A instância desta classe é referenciada por $game_map.#==============================================================================class Game_Map #-------------------------------------------------------------------------- # * Atualização dos comandos dos eventos #-------------------------------------------------------------------------- def update_events @events.each_value {|event| event.update if event.need_to_update?} @common_events.each {|event| event.update} endend$get_new_ids = Array.new#==============================================================================# ** Spriteset_Map#------------------------------------------------------------------------------# Esta classe reune os sprites da tela de mapa e tilesets. Esta classe é# usada internamente pela classe Scene_Map.#==============================================================================class Spriteset_Map #-------------------------------------------------------------------------- # * Atualização dos personagens #-------------------------------------------------------------------------- def update_characters refresh_characters if @map_id != $game_map.map_id @character_sprites.each {|sprite| sprite.update if sprite.near_the_screen? } end #-------------------------------------------------------------------------- # * Atualização de algum personagem remoto #-------------------------------------------------------------------------- def update_one_event(id) @character_sprites[id].update endend
×