RPG maker VX


Unirse al foro, es rápido y fácil

RPG maker VX
RPG maker VX
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Últimos temas
» Script de menu
por maxi Jue 04 Dic 2014, 1:44 pm

» Ayuda intro animado!!!
por maxi Miér 03 Dic 2014, 9:41 pm

» ayuda con este engin
por maxi Miér 03 Dic 2014, 8:42 am

» Hud de Vida 100% Personalizable - Engine Sencillo! Sin Scripts :)
por davidaikago Jue 20 Nov 2014, 10:58 am

» Ultimate parallax control by:GDS [ace]
por arellano Miér 08 Oct 2014, 8:28 pm

» Script Touhou (animated) Map name (v1.4)
por davidaikago Miér 08 Oct 2014, 2:09 pm

» tutorial puerta nueva
por davidaikago Miér 08 Oct 2014, 9:08 am

» cámara de fotos
por davidaikago Miér 08 Oct 2014, 9:05 am

» Imperial Action System II Demo
por davidaikago Miér 08 Oct 2014, 8:47 am

» VE Batalla animada [ACE]
por FhierusIV Jue 18 Sep 2014, 10:57 am

» Nuevo Reglamento del Foro [Vigente desde Septiembre 2014]
por maxi Miér 17 Sep 2014, 8:37 am

» MOG|Animated Title
por Souta21 Mar 09 Sep 2014, 7:24 pm

» Tutorial Engine - Cambiar Character al Equipar Objeto
por maxi Lun 21 Jul 2014, 10:19 am

» Script de climas
por gambasoxd Sáb 19 Jul 2014, 8:58 am

» Script de contraseña(codigo) para abrir un cofre
por rpgame Jue 03 Jul 2014, 6:03 pm

¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Ninguno

[ Ver toda la lista ]


El record de usuarios en línea fue de 117 durante el Mar 09 Ago 2011, 3:39 pm

[Aporte]Script Sistema de Cadena [VX]

Ir abajo

[Aporte]Script Sistema de Cadena [VX] Empty [Aporte]Script Sistema de Cadena [VX]

Mensaje por luistop12 Dom 21 Oct 2012, 2:07 pm

Este script te permite realizar ataques en cadena uno tras otro en el mismo ataque (creo XD)

nesesitas esta imagen

[Tienes que estar registrado y conectado para ver esa imagen]


script
Código:
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Sistema de chain que permite executar várias ações no mesmo turno.
#==============================================================================
# NOTA
# - Velocidade do medidor aumenta cada vez que você obtém sucesso.
#  Isso serve para o jogador não se acostumar com o timming.
#==============================================================================
# Serão necessários ter os seguintes arquivos.
#
# Chain_Layout.png
# Chain_Meter.png
# Chain_Text.png
#
# Grave-os na pasta GRAPHICS/SYSTEM
#==============================================================================
# Histórico
# 1.1 Remoção do limite de tempo baseado na quantidade de frames da animação.
#==============================================================================
module MOG
  #Definição ID dos personagens que terão o chain de ataque ativado.
  CHAIN_ACTOR_ATTACK = [1,2,5]
  #Definição ID das habilidades que terão o chain ativado. 
  CHAIN_SKILL_ID = [59,63]
  #Definição ID dos itens que terão o chain ativado. 
  CHAIN_ITEM_ID = []
  #Área de sucesso. Configure-o baseado na imagem do medidor que você criar.
  CHAIN_SUCCESS_RANGE = [42,58] 
  #Velocidade do medidor.
  CHAIN_BASE_SPEED = 23
  #Adição extra na velocidade do medidor cada vez que você tiver sucesso.
  CHAIN_EXTRA_SPEED = 4
  #Velocidade especifica baseado no personagem. 
  CHAIN_ACTOR_SPEED = {2=> 10 }
  #Deixe true caso seu Battle System não mostrar o sprite de seu personagem.
  #Essa opção desativa ações de chain direcionadas no grupo dos heróis,
  #uma vez que a posição do chain é baseado na posição do sprite do alvo.
  CHAIN_NO_ACTOR_SPRITE_BATTLE_SYSTEM = true
  #Posição do Layout.
  CHAIN_LAYOUT_POSITION = [0,0]
  #Posição do medidor.
  CHAIN_METER_POSITION = [8,18]
  #Posição do texto.
  CHAIN_TEXT_POSITION = [-20,10]
  #Som ao atingir o sucesso.
  CHAIN_SUCCESS_SE = RPG::SE.new("Chime1", 100, 150)
  #Som caso falhar.
  CHAIN_FAIL_SE = RPG::SE.new("Ice2", 100, 100)
end 
#===============================================================================
# ● Chain_Sprite
#===============================================================================
class Chain_Sprite < Sprite
  attr_accessor :gauge
  attr_accessor :active
  attr_accessor :press_phase
  attr_accessor :fade
  include MOG 
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
  def initialize
    super
    @gauge = 0
    @active = false
    @press_phase = false
    @speed = CHAIN_BASE_SPEED
    @maxgauge = 1000
    @gauge_limit_a = CHAIN_SUCCESS_RANGE[0] * 10
    @gauge_limit_b = CHAIN_SUCCESS_RANGE[1] * 10
    @time_limit = false
    @fade = false
    create_layout
    create_chain_meter
    create_chain_text
  end
#--------------------------------------------------------------------------
# ● Create Layout
#-------------------------------------------------------------------------- 
  def create_layout
    @layout = Sprite.new
    @layout.bitmap = Cache.system("Chain_Layout")
    @layout.z = 201
    @layout_width = @layout.bitmap.width
    @layout_width2 = @layout_width / 2
    @layout_height = @layout.bitmap.height / 2
    @layout_pre_x = -@layout_width2 + CHAIN_LAYOUT_POSITION[0]
    @layout_pre_y = -@layout_height + CHAIN_LAYOUT_POSITION[1]
    @layout.x = @layout_pre_x
    @layout.y = @layout_pre_y
  end 
#--------------------------------------------------------------------------
# ● Create Layout
#-------------------------------------------------------------------------- 
  def create_chain_text
    @text_time = 0
    @text_image = Cache.system("Chain_Text")
    @text_bitmap = Bitmap.new(@text_image.width,@text_image.height)
    @text_width = @text_image.width
    @text_height = @text_image.height / 3
    @text_src_rect = Rect.new(0, 0, @text_width, @text_height)
    @text_bitmap.blt(0,0, @text_image, @text_src_rect)
    @text_sprite = Sprite.new
    @text_sprite.bitmap = @text_bitmap
    @text_sprite.opacity = 0
    @text_sprite.z = 202
    @text_sprite_pre_x = -@layout_width2 + CHAIN_TEXT_POSITION[0]
    @text_sprite_pre_y = CHAIN_TEXT_POSITION[1]
    @text_sprite.x = @text_sprite_pre_x
    @text_sprite.y = @text_sprite_pre_y
  end       
#--------------------------------------------------------------------------
# ● Create Chain Meter
#-------------------------------------------------------------------------- 
  def create_chain_meter
    @chain_flow = 0
    @chain_image = Cache.system("Chain_Meter")
    @chain_bitmap = Bitmap.new(@chain_image.width,@chain_image.height)
    @chain_width = @chain_image.width
    @chain_height = @chain_image.height * @gauge / @maxgauge
    @chain_src_rect = Rect.new(0, @chain_height, @chain_width, @chain_height)
    @chain_bitmap.blt(0,0, @chain_image, @chain_src_rect)
    @chain_sprite = Sprite.new
    @chain_sprite.bitmap = @chain_bitmap
    @chain_sprite_pre_x = -@layout_width2 + CHAIN_METER_POSITION[0]
    @chain_sprite_pre_y = -@layout_height + CHAIN_METER_POSITION[1]
    @chain_sprite.x = @chain_sprite_pre_x
    @chain_sprite.y = @chain_sprite_pre_y
    @chain_sprite.z = 200
    update_flow_chain_meter     
  end   
#--------------------------------------------------------------------------
# ● Dispose
#-------------------------------------------------------------------------- 
  def dispose
      @layout.bitmap.dispose
      @layout.dispose   
      @chain_sprite.bitmap.dispose
      @chain_sprite.dispose
      @chain_bitmap.dispose
      @text_sprite.bitmap.dispose
      @text_sprite.dispose
      @text_bitmap.dispose     
      super
  end 
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------     
  def update
      super
      update_visible
      update_flow_chain_meter
      check_chain_active if @press_phase == true
  end
#--------------------------------------------------------------------------
# ● update_text
#--------------------------------------------------------------------------   
  def refresh_text
    @text_sprite.bitmap.clear
    @text_sprite.opacity = 255   
    if @time_limit == true
        h = @text_height * 2
    elsif @active == true
        h = 0
    else
        h = @text_height
    end 
    @text_src_rect = Rect.new(0, h, @text_width, @text_height)
    @text_bitmap.blt(0,0, @text_image, @text_src_rect)       
  end 
#--------------------------------------------------------------------------
# ● update_visible
#--------------------------------------------------------------------------             
  def update_visible
    if @fade == false
      @text_sprite.x += 1
      @text_sprite.opacity -= 1
        if @press_phase == false
          @chain_sprite.opacity -= 6
          @layout.opacity -= 6
          @text_sprite.opacity -= 6
        end 
    else
        if @layout.opacity > 0   
          @chain_sprite.opacity -= 4
          @text_sprite.opacity -= 4
          @layout.opacity -= 4
          @chain_sprite.x += 1
          @text_sprite.x += 1
          @layout.x += 1
        end 
    end
  end 
#--------------------------------------------------------------------------
# ● reset
#--------------------------------------------------------------------------       
  def reset
      @active = false
      @press_phase = false
      refresh_text
      @speed = CHAIN_BASE_SPEED
      @time_limit = true
      refresh_text
  end 
#--------------------------------------------------------------------------
# ● check_chain_active 
#--------------------------------------------------------------------------         
  def check_chain_active
    @press_phase = false if @gauge >= @maxgauge
    if Input::trigger?(Input::C)
      case @gauge
          when @gauge_limit_a..@gauge_limit_b
            @active = true
            CHAIN_SUCCESS_SE.play
            @speed += CHAIN_EXTRA_SPEED
          else
            @active = false
            CHAIN_FAIL_SE.play
            @speed = CHAIN_BASE_SPEED
        end
      @time_limit = false
      @press_phase = false
      refresh_text
    end
  end     
#--------------------------------------------------------------------------
# ● Update Flow Chain Meter
#--------------------------------------------------------------------------         
  def update_flow_chain_meter   
      return if @press_phase == false
      @gauge += @speed + @e_s if @gauge < @maxgauge
      @gauge = @gauge_limit_b if @gauge > @gauge_limit_b and @active == true 
      reset if @gauge >= @maxgauge
      @chain_sprite.bitmap.clear
      @chain_height = @chain_image.height * @gauge / @maxgauge
      @chain_src_rect = Rect.new(0, 0 ,@chain_width, @chain_height)
      @chain_bitmap.blt(0,0, @chain_image, @chain_src_rect)       
  end 
#--------------------------------------------------------------------------
# ● flow_clear       
#--------------------------------------------------------------------------             
  def flow_clear(a_id)       
      @gauge = 0
      @active = false
      @text_time = 120
      @time_limit = false
      actor = $data_actors[a_id]
      e_speed = CHAIN_ACTOR_SPEED[actor.id]
      @e_s = e_speed
      @e_s = 0 if e_speed == nil
      update_flow_chain_meter 
      @chain_sprite.opacity = 255   
      @layout.opacity = 255
    end   
#--------------------------------------------------------------------------
# ● check_position(sx,sy)     
#--------------------------------------------------------------------------             
  def check_position(sx,sy) 
      nx = [[sx, 0].max,-@layout_width + 544].min
      ny = [[sy, @layout_height].max, 416].min   
      @chain_sprite.x = @chain_sprite_pre_x + nx
      @chain_sprite.y = @chain_sprite_pre_y + ny
      @layout.x = @layout_pre_x + nx
      @layout.y = @layout_pre_y + ny
      @text_sprite.x = @text_sprite_pre_x + nx - 30
      @text_sprite.y = @text_sprite_pre_y + ny     
  end 
end 

#===============================================================================
# Scene_Battle
#===============================================================================
class Scene_Battle < Scene_Base
  include MOG
  #--------------------------------------------------------------------------
  # ● start
  #--------------------------------------------------------------------------
  alias mog_chain_start start
  def start
      create_chain_sprite
      mog_chain_start
  end 
  #--------------------------------------------------------------------------
  # ● create_chain_sprite
  #--------------------------------------------------------------------------
  def create_chain_sprite
      @chain = Chain_Sprite.new
  end
  #--------------------------------------------------------------------------
  # ● dispose_info_viewport
  #-------------------------------------------------------------------------- 
  alias mog_chain_dispose_info_viewport dispose_info_viewport 
  def dispose_info_viewport
    mog_chain_dispose_info_viewport
    @chain.dispose
  end   
  #--------------------------------------------------------------------------
  # ● update_basic
  #--------------------------------------------------------------------------
  alias mog_chain_update_basic update_basic
  def update_basic(main = false)
    mog_chain_update_basic(main)
    @chain.update
  end     
  #--------------------------------------------------------------------------
  # ● execute_action_attack
  #--------------------------------------------------------------------------
  alias mog_chain_execute_action_attack execute_action_attack
  def execute_action_attack
      active_chain(0)           
      mog_chain_execute_action_attack
      check_chain(0)
  end
  #--------------------------------------------------------------------------
  # ● execute_action_skill
  #--------------------------------------------------------------------------
  alias mog_chain_execute_action_skill execute_action_skill
  def execute_action_skill
      active_chain(1)
      mog_chain_execute_action_skill
      check_chain(1)
  end
  #--------------------------------------------------------------------------
  # ● execute_action_item
  #--------------------------------------------------------------------------
  alias mog_chain_execute_action_item execute_action_item
  def execute_action_item
      active_chain(2) 
      mog_chain_execute_action_item
      check_chain(2)
  end     
  #--------------------------------------------------------------------------
  # ● clear_chain
  #--------------------------------------------------------------------------
  def active_chain(type)
      return if @active_battler.is_a?(Game_Enemy)
      case type
          when 0
            actor = @active_battler
            enable = CHAIN_ACTOR_ATTACK.include?(actor.id)
          when 1
            skill = @active_battler.action.skill
            enable = CHAIN_SKILL_ID.include?(skill.id)
          when 2
            item = @active_battler.action.item
            enable = CHAIN_SKILL_ID.include?(item.id)
          end
      return if enable == false   
      targets = @active_battler.action.make_targets
      for target in targets   
          return if target.is_a?(Game_Actor) and CHAIN_NO_ACTOR_SPRITE_BATTLE_SYSTEM == true
          sx = target.screen_x
          sy = target.screen_y
          @chain.check_position(sx,sy) 
      end 
      a_id = @active_battler.id
      @chain.press_phase = true
      @chain.flow_clear(a_id)
      for i in 0...180
          break if @chain.active == false
          update_basic   
      end     
  end
  #--------------------------------------------------------------------------
  # ● check_chain
  #-------------------------------------------------------------------------- 
  def check_chain(type)
      return if @active_battler.is_a?(Game_Enemy) or @chain.active == false
      targets = @active_battler.action.make_targets
      for target in targets
        if target.hp > 0 
          case type
            when 0
              execute_action_attack
            when 1
              skill_mp = @active_battler.calc_mp_cost(@active_battler.action.skill)
              execute_action_skill unless skill_mp > @active_battler.mp
            when 2
              item = @active_battler.action.item
              execute_action_item unless $game_party.item_number(item) == 0
          end   
        end 
      end
      @chain.press_phase = false 
  end
  #--------------------------------------------------------------------------
  # ● process_victory 
  #--------------------------------------------------------------------------
  alias mog_chain_process_victory  process_victory 
  def process_victory 
      @chain.fade = true
      mog_chain_process_victory     
  end 
end 

$mog_rgssvx_chain_system = true

CREDITOS:ateliergss2 y moghunter
luistop12
luistop12
500
500

Masculino

Edad 33

Cantidad de envíos 759

Maker Cash 944

Reputación 42


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.