Jump to content

AD-Blocker detected, please disable your ad-blocker when surfing in makerando.com - There is no invasive Ad.

 

  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
Ally

Gameplay Caterpillar by Atoa

Recommended Posts

Nome Script: Caterpillar by Atoa

Versione: N/D

Autore/i: Atoa

 

Informazioni:

Questo sistema permette di avere il gruppo che segue l'eroe ^^

 

Screenshots:

 

img9-13.png

 

 

Istruzioni:

Inserite il solito script sotto Material

 

Script

 

#=============================================================================
# Atoa Atoa Caterpillar
# Por Atoa
#==============================================================================
# Este script permite vizualizar os membros no mapa, eles irão seguir o herói
# Um pouco diferente dos outros caterpillar, neste os personagens
# Só se movimentam caso necessário (portanto eles não ficam igual "barata tonta"
# se você ficar indo e voltando.
#
# Para juntar os personagens use o comando: $game_player.caterpillar_gather
#
# Um aviso importante: O script não funciona muito bem com movimeno em diagonal
# ele fica visualmente bonito apenas com 3 ou 2 pesonagens no grupo.
# Após usa-lo, use o comando de reunir grupo.
#==============================================================================

module Atoa

  # Numero máximos de personagens seguindo o herói na tela
  Max_Caterpillar_Actor = 3

  # ID do switch que esconde a vizualização dos personagens quando ativado
  Caterpillar_Hide_Switch = 1

  # Permitir alterar ordem do grupo apertando-se as teclas Q ou W?
  Allow_Reorder = true

  # Distancia máxima entre os personagens do grupo
  # Deixe 0 para desativar
  Max_Distance = 0

end

#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  include Atoa
  #--------------------------------------------------------------------------
  attr_accessor(:direction)
end

#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  attr_accessor(:catterpillar, :old_x, :old_y, :move_speed)
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_refresh refresh  if !method_defined?(:atoa_caterpillar_refresh)
  def refresh
    catterpillar_update
    atoa_caterpillar_refresh
  end
  #--------------------------------------------------------------------------
  def catterpillar_update
    if @catterpillar == nil
      @catterpillar = []
      for i in 1...(Max_Caterpillar_Actor + 1)
        @catterpillar[i - 1] = Atoa_Catterpillar.new(i)
      end
    end
    for cat in @catterpillar
      cat.refresh
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_update update if !method_defined?(:atoa_caterpillar_update)
  def update
    for cat in @catterpillar
      cat.update
    end
    atoa_caterpillar_update
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_moveto moveto if !method_defined?(:atoa_caterpillar_moveto)
  def moveto(x, y)
    atoa_caterpillar_moveto(x, y)
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    for i in [email protected]
      @catterpillar[i].moveto(x, y)
    end
  end
  #--------------------------------------------------------------------------
  def set_old_direction
    @[member=OldPat]_x = @x
    @[member='oldmythology'] = @y
    for i in [email protected]
      @catterpillar[i].old_x = @catterpillar[i].x
      @catterpillar[i].old_y = @catterpillar[i].y
    end
  end
  #--------------------------------------------------------------------------
  def cat_moved?(i, d)
    cat = i == 0 ? self : @catterpillar[i - 1]
    cat2 = @catterpillar[i]
    if d == 1 or d == 3 or d == 7 or d == 9
      return true
    elsif (cat.direction == 2 or cat.direction == 8) and cat.y == cat2.y
      return false
    elsif (cat.direction == 4 or cat.direction == 6) and cat.x == cat2.x
      return false
    elsif cat.old_x != cat.x or cat.old_y != cat.y
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
  def move_cat(i, d)
    if cat_moved?(i, d)
      @catterpillar[i].move_player
      if i == 0 or (i != 0 and (d == 1 or d == 3 or d == 7 or d == 9))
        @catterpillar[i].move_update.push(d)
      else
        @catterpillar[i].move_update.push(@catterpillar[i - 1].direction)
      end
    else
      if i == 0 or check_same_tile(i)
        @catterpillar[i].move_update.clear
      else
        cat = @catterpillar[i].move_update[0]
        @catterpillar[i].move_update.clear
        @catterpillar[i].move_update.push(cat)
      end
    end
  end
  #--------------------------------------------------------------------------
  def check_same_tile(i)
    return false if i == 0
    cat = @catterpillar[i - 1]
    cat2 = @catterpillar[i]
    return true if cat.x == cat2.x and cat.y == cat2.y
    return false
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_down move_down if !method_defined?(:atoa_caterpillar_move_down)
  def move_down(turn_ok = true)
    set_old_direction
    passable = passable?(@x, @y+1)
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_down
    if passable
      for i in [email protected]
        move_cat(i, 2)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_left move_left if !method_defined?(:atoa_caterpillar_move_left)
  def move_left(turn_ok = true)
    set_old_direction
    passable = passable?(@x-1, @y)
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_left
    if passable
      for i in [email protected]
        move_cat(i, 4)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_right move_right if !method_defined?(:atoa_caterpillar_move_right)
  def move_right(turn_ok = true)
    set_old_direction
    passable = passable?(@x+1, @y)
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_right
    if passable
      for i in [email protected]
        move_cat(i, 6)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_up move_up if !method_defined?(:atoa_caterpillar_move_up)
  def move_up(turn_ok = true)
    set_old_direction
    passable = passable?(@x, @y-1)
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_up
    if passable
      for i in [email protected]
        move_cat(i, 8)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_lower_left move_lower_left if !method_defined?(:atoa_caterpillar_move_lower_left)
  def move_lower_left
    set_old_direction
    passable = (passable?(@x, @y+1) and passable?(@x-1, @y+1)) or (passable?(@x-1, @y) and passable?(@x-1, @y+1))
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_lower_left
    if passable
      for i in [email protected]
        move_cat(i, 1)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_lower_right move_lower_right if !method_defined?(:atoa_caterpillar_move_lower_right)
  def move_lower_right(turn_ok = true)
    set_old_direction
    passable = (passable?(@x, @y+1) and passable?(@x+1, @y+1)) or (passable?(@x+1, @y) and passable?(@x+1, @y+1))
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_lower_right
    if passable
      for i in [email protected]
        move_cat(i, 3)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_upper_left move_upper_left if !method_defined?(:atoa_caterpillar_move_upper_left)
  def move_upper_left(turn_ok = true)
    set_old_direction
    passable = (passable?(@x, @y-1) and passable?(@x-1, @y-1)) or (passable?(@x-1, @y) and passable?(@x-1, @y-1))
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_upper_left
    if passable
      for i in [email protected]
        move_cat(i, 7)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_move_upper_right move_upper_right if !method_defined?(:atoa_caterpillar_move_upper_right)
  def move_upper_right(turn_ok = true)
    set_old_direction
    passable = (passable?(@x, @y-1) and passable?(@x+1, @y-1)) or (passable?(@x+1, @y) and passable?(@x+1, @y-1))
    catterpillar_update if @catterpillar.nil? or @move_update.nil?
    atoa_caterpillar_move_upper_right
    if passable
      for i in [email protected]
        move_cat(i, 9)
      end
    end
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_get_on_vehicle get_on_vehicle if !method_defined?(:atoa_caterpillar_get_on_vehicle)
  def get_on_vehicle
    enter = atoa_caterpillar_get_on_vehicle
    caterpillar_gather if enter
    return enter
  end
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_get_off_vehicle get_off_vehicle if !method_defined?(:atoa_caterpillar_get_off_vehicle)
  def get_off_vehicle
    for i in [email protected]   
      @catterpillar[i].moveto(@x, @y)
    end
    atoa_caterpillar_get_off_vehicle
    caterpillar_gather
  end
  #--------------------------------------------------------------------------
  def caterpillar_gather
    for i in [email protected]   
      @catterpillar[i].gather_party
    end
  end
end

#==============================================================================
# ■ Atoa_Catterpillar
#==============================================================================
class Atoa_Catterpillar < Game_Character
  #--------------------------------------------------------------------------
  attr_accessor(:move_update, :member, :old_x, :old_y, :x, :y, :move_speed)
  #--------------------------------------------------------------------------
  def initialize(member)
    super()
    @move_update = []
    @member = member
    moveto($game_player.x, $game_player.y)
    @through = true
    refresh
  end
  #--------------------------------------------------------------------------
  def moveto(x, y)
    super(x, y)
    @move_update.clear
  end
  #--------------------------------------------------------------------------
  def refresh
    party = $game_party.members
    if party.size < @member
      @character_name = ""
      @character_hue = 0
      return
    end
    actor = party[@member]
    if actor == nil
      @character_name = ""
      @character_hue = 0
      return
    end
    @character_name = actor.character_name
    @character_index = actor.character_index
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  def screen_z
    if $game_player.x == @x and $game_player.y == @y
      return $game_player.screen_z - 1
    end
    super
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    return false
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    return false
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    return false
  end
  #--------------------------------------------------------------------------
  def update
    member = @member == 1 ? $game_player : $game_player.catterpillar[@member - 2]
    diff = ((player_distance(member) >= Max_Distance) or !$game_player.moving?) ? 0 : 1
    @move_speed = [member.move_speed - diff, 1].max
    super
    @transparent = $game_player.transparent
    @transparent = @transparent ? @transparent : $game_switches[Caterpillar_Hide_Switch]
  end
  #--------------------------------------------------------------------------
  def player_distance(member)
    if far_from_member(member)
      dist_x = ((member.screen_x - self.screen_x)/32).to_i.abs
      dist_y = ((member.screen_y - self.screen_y)/32).to_i.abs
      return dist_x - 1 if dist_x >= dist_y
      return dist_y - 1 if dist_y >= dist_x
    end
    return 0
  end
  #--------------------------------------------------------------------------
  def far_from_member(member)
    return true if (member.screen_x > self.screen_<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> and ((member.screen_x - self.screen_<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> > 32)
    return true if (member.screen_y > self.screen_y) and ((member.screen_y - self.screen_y) > 32)
    return true if (member.screen_x < self.screen_<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> and ((self.screen_x - member.screen_<img src='http://rpgmkr.net/forum/public/style_emoticons/<#EMO_DIR#>/sourirex.gif' class='bbc_emoticon' alt='X)' /> > 64)
    return true if (member.screen_y < self.screen_y) and ((self.screen_y - member.screen_y) > 64)
    return false
  end
  #--------------------------------------------------------------------------
  def move_player
    refresh
    return if @move_update.empty?
    case @move_update[0]
    when 1
      move_lower_left
    when 2
      move_down
    when 3
      move_lower_right
    when 4
      move_left
    when 6
      move_right
    when 7
      move_upper_left
    when 8
      move_up
    when 9
      move_upper_right
    end
    @move_update.delete_at(0)
  end
  #--------------------------------------------------------------------------
  def gather_party
    for i in 0...$game_party.members.size
      move_toward_player
    end
    @x = $game_player.x
    @y = $game_player.y
    @move_update.clear
  end
end

#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  include Atoa
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_create_characters create_characters if !method_defined?(:atoa_caterpillar_create_characters)
  def create_characters
    atoa_caterpillar_create_characters
    for caterpillar in $game_player.catterpillar.reverse
      sprite = Sprite_Character.new(@viewport1, caterpillar)
      @character_sprites.push(sprite)
    end
    @[member=OldPat]_party = $game_party.members.dup
  end
  #--------------------------------------------------------------------------
  def update_characters
    for sprite in @character_sprites
      sprite.update
    end
  end
end

#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  attr_accessor :actors
end

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  include Atoa
  #--------------------------------------------------------------------------
  alias atoa_caterpillar_update update if !method_defined?(:atoa_caterpillar_update)
  def update
    atoa_caterpillar_update
    if Input.trigger?(Input::L) and Allow_Reorder
      Sound.play_decision
      reorder_party(true)
    end
    if Input.trigger?(Input::R) and Allow_Reorder
      Sound.play_decision
      reorder_party(false)
    end
  end
  #--------------------------------------------------------------------------
  def reorder_party(order)
    if order
      party = $game_party.actors.shift
      $game_party.actors << party
    else
      party = $game_party.actors.pop
      $game_party.actors.unshift(party)
    end
    $game_player.refresh
  end
end

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By 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
    • By 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 [email protected]_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 [email protected]_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 [email protected]_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 [email protected]_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
    • By 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
    • By 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
×