Últimos temas
» [MV] ¿Cómo mover un sprite?
por Frägarach Hoy a las 2:19 am

» Como cambio esto?...
por Shy_Cream Hoy a las 2:09 am

» El Dia Z - Demo
por EdwarPlay Ayer a las 8:08 pm

» Pokemon Destiny
por Greninja555 Ayer a las 5:46 pm

» Animación Habilidad de Enemigos RPGMAKER VX ACE
por Metatron Ayer a las 3:16 am

» [VX] Cambio de Resolución
por luistop12 Vie Sep 13, 2019 6:51 am

» ¿Como Mover al jugador mientras hay una conversación?
por Zachy Vie Sep 13, 2019 2:05 am

» ¿Como hacer un menú/Galería de imágenes? (RPG VxAce)
por ZororoWhite Jue Sep 12, 2019 7:57 pm

» Inherited Sins [Juego Completo] [Definitive Edition]
por Nina Jue Sep 12, 2019 7:47 pm

» Zaza no konpasu (La Brújula de Zaza) [VXACE]
por Pocari Sáb Sep 07, 2019 12:28 pm

» Ayuda con el ABS
por DarkarPro0102 Sáb Sep 07, 2019 8:32 am

» Pop! Horror City Complementos
por EdwarPlay Jue Sep 05, 2019 10:59 pm


[VX] Custom Target Select

Ir abajo

[VX] Custom Target Select Empty [VX] Custom Target Select

Mensaje por Turbiosoft.acho el Vie Mar 28, 2014 12:48 am

Este es un script de Yanfly, que permite configurar los objetivos en batalla. A veces es horrendo que un enemigo ataque a lo random cuando tú quieres que ataque a x jugador, o que dicho ataque tenga otras tantas condiciones. Y como me explico mal, el resto de instrucciones y cosas que pueden hacerse están explicadas dentro del script.

Código:
#===============================================================================
#
# Yanfly Engine - Custom Target Select
# Última actualización: 2009.04.18
# Nivel: Normal, Lunático
# Traducido por Turbiosoft.acho
#
# Este script hace varias cosas. Primero, arregla los problemas de objetivo
# de los enemigos aleatorios. El problema de esto es que se seleccionaba
# enemigos ya muertos y causaba que el actor malgastase su ataque.
# Esto no es algo que KGC lo arregle tampoco, así que
# he decidido arreglarlo.
#
# Además del arreglo, aquellos que quieren ir un poco más lejos pueden
# poner tags en la sección de comentarios de las habilidades para tener
# opciones extra de objetivo. Estas opciones adicionales incluyen cosas
# como ataque múltiple (como ataque doble pero más veces :'D)
# seleccionar más de cuatro enemigos aleatorios, seleccionar aliados
# aleatorios o aliados y enemigos a la vez. Cosas como esa.
#
# Aquellos que quieren ir aún más lejos pueden customizar la selección.
# Esto te permite hacer cosas como atacar a muchos objetivos si están
# bajo X HP o atacar únicamente a los objetivos si su HP está por encima
# del 50%. Cosas así.
#
# Nota: Este script también afecta a los objetos. También es un capullo
# porque no funciona por razones estúpidas más allá de mi comprensión.
#
#===============================================================================
# Actualizaciones:
# ----------------------------------------------------------------------------
# o 2009.04.18 - Se mejoró la caché REGEXP.
# o 2009.04.12 - Se mejoraron los tags.
# o 2009.03.29 - Se empezó el script.
#===============================================================================
# INSTRUCCIONES: Modo Normal
#===============================================================================
#
# Pon uno de estos en la sección de comentarios. Sólo se activará UNO,
# y la prioridad va de arriba a abajo.
#
#          <everybody> Esta habilidad afectará a todos los vivos, aliados y enemigos.
#            <phoenix> Esta habilidad afectará a todos los enemigos vivos y aliados MUERTOS.
#       <targetallfoe> Esta habilidad selecciona sólo a un enemigo pero ataca a todos.
#  <targetrandomfoe x> Esta habilidad selecciona sólo a un enemigo pero ataca a varios aleatorios.
#        <randomfoe x> Esta habilidad ataca un número x enemigos aleatorios.
#         <multifoe x> Esta habilidad ataca a un enemigo y golpea x veces.
#         <allbutuser> Esta habilidad afecta a todos los aliados menos al usuario.
#      <targetallally> Esta habilidad selecciona a un aliado pero afecta a todos.
# <targetrandomally x> Esta habilidad selecciona sólo a un aliado pero afecta a varios aleatorios.
#       <randomally x> Esta habilidad ataca un número x aliados aleatorios.
#
#===============================================================================
# INSTRUCCIONES: Modo Lunático
#===============================================================================
#
# Si quieres hacer un poco más diferente la selección, DEBES usar
# <pick custom x> como tag. La variable x será reemplazada con la ID
# del sistema de selección personalizado que quieras.
# Entonces, baja hacia "def pickcustom" y modifica los valores ahí
# para ajustar cómo quieres que vaya la selección personalizada.
#
#===============================================================================
#
# Compatibilidad
# - Sobreescribe: Game_BattleAction, make_obj_targets
# - Sobreescribe: RPG::UsableItem, y... más cosas
# - Incompatible: KGC_TargetExtension
#
#===============================================================================

$imported = {} if $imported == nil
$imported["CustomTargetSelect"] = true

class Game_BattleAction
  
  #-----------------------------------------------------------------------------
  # Modifica esta sección SÓLO si usas xpick. Si no,
  # no tiene sentido que sigas mirando más abajo.
  #-----------------------------------------------------------------------------
  def pickcustom(obj, pickcustom)
    selected = []
    case pickcustom
    #---------------------------------------------------------------------------
    # //////////////////////////////////////////////////////////////////////////
    # Aquí empiezas a editar tu propio sistema de selección de objetivo
    #---------------------------------------------------------------------------
    when 1 # Golpea el objetivo 5 veces.
      selected = opponents_unit.existing_members
      random_target_starfall = rand(3)
      if opponents_unit.existing_members.size >= random_target_starfall
        while selected.size < random_target_starfall
          target = opponents_unit.random_target
          selected.push(target) unless targets.include?(target)
        end
      else
        targets = opponents_unit.existing_members
      end
      
    #---------------------------------------------------------------------------
    # A partir de aquí no debes tocar nada.
    # //////////////////////////////////////////////////////////////////////////
    #---------------------------------------------------------------------------
    end
    return selected
  end
  
end

#===============================================================================
# No toques nada a partir de aquí o tu ordenador explotará y
# estarás muy triste.
#===============================================================================

module YE
  module REGEXP
    module SKILL
      
      # Todos!
      EVERYBODY = /<(?:EVERYBODY|every body)>/i
      PHOENIX = /<(?:PHOENIX|fenix)>/i
      
      # Objetivos enemigos.
      TARGETALLFOE = /<(?:TARGETALLFOE|target all foe)>/i
      TARGETRANDOMFOE = /<(?:TARGETRANDOMFOE|target random foe)[ ]*(\d+)>/i
      CHAINTARGETENEMY = /<(?:CHAINTARGETENEMY|chain target enemy)[ ]*(\d+)>/i
      RANDOMFOE = /<(?:RANDOMFOE|random foe)[ ]*(\d+)>/i
      MULTI_FOE = /<(?:MULTI_FOE|multi foe|multifoe)[ ]*(\d+)>/i
      
      # Objetivos aliados.
      ALLBUTUSER = /<(?:ALLBUTUSER|all but user)>/i
      TARGETALLALLY = /<(?:TARGETALLALLY|target all ally)>/i
      TARGETRANDOMALLY = /<(?:TARGETRANDOMALLY|target random ally)[ ]*(\d+)>/i
      CHAINTARGETALLY = /<(?:CHAINTARGETALLY|chain target ally)[ ]*(\d+)>/i
      RANDOMALLY = /<(?:RANDOMALLY|random ally)[ ]*(\d+)>/i
      MULTI_ALLY = /<(?:MULTI_ALLY|multially|multi ally)[ ]*(\d+)>/i
      
      # Objetivo personalizado.
      PICKCUSTOM = /<(?:PICK_CUSTOM|pick custom)[ ]*(\d+)>/i
      
    end
  end
end

#===============================================================================
# RPG BaseItem
#===============================================================================

class RPG::BaseItem
  #--------------------------------------------------------------------------
  # Yanfly_Cache_CTS
  #--------------------------------------------------------------------------
  def yanfly_cache_cts
   @everybody = false; @phoenix = false; @targetallfoe = false
    @targetrandomfoe = 0; @randomfoe = 0; @multifoe = 0; @allbutuser = false
    @targetallally = false; @targetrandomally = 0; @randomally = 0
    @multially = 0; @pickcustom = 0; @chaintargetenemy = 0; @chaintargetally = 0;
    
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when YE::REGEXP::SKILL::EVERYBODY
        @everybody = true
      when YE::REGEXP::SKILL::PHOENIX
        @phoenix = true
      when YE::REGEXP::SKILL::TARGETALLFOE
        @targetallfoe = true
      when YE::REGEXP::SKILL::CHAINTARGETENEMY
        @chaintargetenemy = $1.to_i
      when YE::REGEXP::SKILL::CHAINTARGETALLY
        @chaintargetally = $1.to_i
      when YE::REGEXP::SKILL::TARGETRANDOMFOE
        @targetrandomfoe = $1.to_i
      when YE::REGEXP::SKILL::RANDOMFOE
        @randomfoe = $1.to_i
      when YE::REGEXP::SKILL::MULTI_FOE
        @multifoe = $1.to_i
      when YE::REGEXP::SKILL::ALLBUTUSER
        @allbutuser = true
      when YE::REGEXP::SKILL::TARGETALLALLY
        @targetallally = true
      when YE::REGEXP::SKILL::TARGETRANDOMALLY
        @targetrandomally = $1.to_i
      when YE::REGEXP::SKILL::RANDOMALLY
        @randomally = $1.to_i
      when YE::REGEXP::SKILL::MULTI_ALLY
        @multially = $1.to_i
      when YE::REGEXP::SKILL::PICKCUSTOM
        @pickcustom = $1.to_i
        
      end
    }
  end # end yanfly_cache_cts
  
  #--------------------------------------------------------------------------
  # Target Everybody?
  #--------------------------------------------------------------------------
  def everybody?
    yanfly_cache_cts if @everybody == nil
    return @everybody
  end
  
  #--------------------------------------------------------------------------
  # Target Phoenix?
  #--------------------------------------------------------------------------
  def phoenix?
    yanfly_cache_cts if @phoenix == nil
    return @phoenix
  end
  
  #--------------------------------------------------------------------------
  # Target and All Foes?
  #--------------------------------------------------------------------------
  def targetallfoe?
    yanfly_cache_cts if @targetallfoe == nil
    return @targetallfoe
  end
  
  #--------------------------------------------------------------------------
  # Call for Random Foes?
  #--------------------------------------------------------------------------
  def targetrandomfoe
    yanfly_cache_cts if @targetrandomfoe == nil
    return @targetrandomfoe
  end
  
  def chaintargetenemy
    yanfly_cache_cts if @chaintargetenemy == nil
    return @chaintargetenemy
  end
  
  def chaintargetally
    yanfly_cache_cts if @chaintargetally == nil
    return @chaintargetally
  end
  
  #--------------------------------------------------------------------------
  # Random Foes?
  #--------------------------------------------------------------------------
  def randomfoe
    yanfly_cache_cts if @randomfoe == nil
    return @randomfoe
  end
  
  #--------------------------------------------------------------------------
  # Multi Hit Foe?
  #--------------------------------------------------------------------------
  def multifoe
    yanfly_cache_cts if @rmultifoe == nil
    return @multifoe
  end
  
  #--------------------------------------------------------------------------
  # All But User?
  #--------------------------------------------------------------------------
  def allbutuser?
    yanfly_cache_cts if @allbutuser == nil
    return @allbutuser
  end
  
  #--------------------------------------------------------------------------
  # Target and All Allies?
  #--------------------------------------------------------------------------
  def targetallally?
    yanfly_cache_cts if @targetallally == nil
    return @targetallally
  end
  
  #--------------------------------------------------------------------------
  # Random Allies?
  #--------------------------------------------------------------------------
  def targetrandomally
    yanfly_cache_cts if @targetrandomally == nil
    return @targetrandomally
  end
  
  #--------------------------------------------------------------------------
  # Call for Random Allies?
  #--------------------------------------------------------------------------
  def randomally
    yanfly_cache_cts if @randomally == nil
    return @randomally
  end
  
  #--------------------------------------------------------------------------
  # Multi Hit Ally?
  #--------------------------------------------------------------------------
  def multially
    yanfly_cache_cts if @multially == nil
    return @multially
  end
  
  #--------------------------------------------------------------------------
  # Custom Picking?
  #--------------------------------------------------------------------------
  def pickcustom
    yanfly_cache_cts if @pickcustom == nil
    return @pickcustom
  end
  
end

#==============================================================================
# RPG::UsableItem
#==============================================================================

class RPG::UsableItem < RPG::BaseItem
  
  #--------------------------------------------------------------------------
  # Does this need selecting?
  #--------------------------------------------------------------------------
  def need_selection?
    return false if everybody?
    return false if phoenix?
    return false if allbutuser?
    return true if targetallfoe?
    return true if targetallally?
    return true if targetrandomfoe > 0
    return true if chaintargetenemy > 0
    return true if chaintargetally > 0
    return false if randomfoe > 0
    return true if multifoe > 0
    return true if targetrandomally > 0
    return false if randomally > 0
    return true if multially > 0
    return [1, 3, 7, 9].include?(@scope)
  end
  
  #--------------------------------------------------------------------------
  # For Opponent?
  #--------------------------------------------------------------------------
  def for_opponent?
    return true if targetallfoe?
    return false if targetallally?
    return true if chaintargetenemy > 0
    return false if chaintargetally > 0
    return true if targetrandomfoe > 0
    return true if multifoe > 0
    return false if targetrandomally > 0
    return false if randomally > 0
    return false if multially > 0
    return [1, 2, 3, 4, 5, 6].include?(@scope)
  end
  
  #--------------------------------------------------------------------------
  # For Friend?
  #--------------------------------------------------------------------------
  def for_friend?
    return false if targetallfoe?
    return true if targetallally?
    return false if targetrandomfoe > 0
    return false if chaintargetenemy > 0
    return true if chaintargetally > 0
    return false if multifoe > 0
    return true if targetrandomally > 0
    return true if randomally > 0
    return true if multially > 0
    return [7, 8, 9, 10, 11].include?(@scope)
  end
  
  #--------------------------------------------------------------------------
  # For User?
  #--------------------------------------------------------------------------
  def for_user?
    return false if allbutuser?
    return [11].include?(@scope)
  end
  
end

#===============================================================================
# Game_BattlerAction
#===============================================================================

class Game_BattleAction

  def friends_unit
    if battler.actor? and !battler.confusion?
      return $game_party
    else
      return $game_troop
    end
  end

  def opponents_unit
    if battler.actor? and !battler.confusion?
      return $game_troop
    else
      return $game_party
    end
  end
  
  def evaluate
    @value = 0
    if attack?
      evaluate_attack
    elsif skill?
      evaluate_skill
    end
    @value = 0 if @value.nil?
    if @value > 0
      @value + rand(nil)
    end
  end
  
  def evaluate_attack
    # chance = rand(100)
    for target in opponents_unit.existing_members
      value = evaluate_attack_with_target(target)
      if value > @value
        @value = value # if chance < 75
        @target_index = target.index
      end
    end
  end
  
  def evaluate_skill
    unless battler.skill_can_use?(skill)
      return
    end
    if skill.for_opponent?
      targets = opponents_unit.existing_members
    elsif skill.for_user?
      targets = [battler]
    elsif skill.for_dead_friend?
      targets = friends_unit.dead_members
    else
      targets = friends_unit.existing_members
    end
    chance = rand(100)
    for target in targets
      value = evaluate_skill_with_target(target)
      if skill.for_all?
        @value += value if chance < 25
      else
      # elsif value > @value
        @value = value if chance < 25
        @target_index = target.index
      end
    end
    @value = value if @value == 0
  end
  
  #--------------------------------------------------------------------------
  # make_obj_targets
  #--------------------------------------------------------------------------
  def make_obj_targets(obj)
    targets = holder = []

    #------------------------------------------------
    
    if obj.everybody?
      targets += opponents_unit.existing_members
      targets += friends_unit.existing_members
    
    elsif obj.phoenix?
      targets += opponents_unit.existing_members
      targets += friends_unit.dead_members
      
    #------------------------------------------------
      
    elsif obj.targetallfoe?
      targets.push(opponents_unit.smooth_target(@target_index))
      targetted = opponents_unit.smooth_target(@target_index)
      othertargets = opponents_unit.existing_members
      othertargets.delete(targetted)
      targets += othertargets
        
    elsif obj.targetrandomfoe > 0
      number_of_targets = obj.targetrandomfoe
      targets.push(opponents_unit.smooth_target(@target_index))
      number_of_targets.times do
        targets.push(opponents_unit.random_target)
      end
      
    elsif obj.chaintargetenemy > 0
      number_of_targets = obj.chaintargetenemy
      targets.push(opponents_unit.smooth_target(@target_index))
      if opponents_unit.existing_members.size >= number_of_targets + 1
        while targets.size < number_of_targets + 1
          target = opponents_unit.random_target
          targets.push(target) unless targets.include?(target)
        end
      else
        targets = opponents_unit.existing_members
      end
              
    elsif obj.randomfoe > 0
      number_of_targets = obj.randomfoe
      number_of_targets.times do
        targets.push(opponents_unit.random_target)
      end
      
    elsif obj.multifoe > 0
      number_of_targets = obj.multifoe
      hits = obj.multifoe
      for i in 0...hits
        targets.push(opponents_unit.smooth_target(@target_index))
      end
      
    #------------------------------------------------
      
    elsif obj.allbutuser?
      targets += friends_unit.existing_members
      targets.delete(battler)
      
    elsif obj.targetallally?
      targets.push(friends_unit.smooth_target(@target_index))
      targetted = friends_unit.smooth_target(@target_index)
      othertargets = friends_unit.existing_members
      othertargets.delete(targetted)
      targets += othertargets
      
    elsif obj.targetrandomally > 0
      number_of_targets = obj.targetrandomally
      targets.push(friends_unit.smooth_target(@target_index))
      number_of_targets.times do
        targets.push(friends_unit.random_target)
      end
      
    elsif obj.chaintargetally > 0
      number_of_targets = obj.chaintargetally
      targets.push(friends_unit.smooth_target(@target_index))
      if friends_unit.existing_members.size >= number_of_targets + 1
        while targets.size < number_of_targets + 1
          target = friends_unit.random_target
          targets.push(target) unless targets.include?(target)
        end
      else
        targets = friends_unit.existing_members
      end
      
    elsif obj.randomally > 0
      number_of_targets = obj.randomally
      number_of_targets.times do
        targets.push(friends_unit.random_target)
      end
      
    elsif obj.multially > 0
      number_of_targets = obj.multially
      hits = obj.multially
      for i in 0...hits
        targets.push(friends_unit.smooth_target(@target_index))
      end
      
    #------------------------------------------------
      
    elsif obj.pickcustom > 0
      targets = pickcustom(obj, obj.pickcustom)
      
    #------------------------------------------------
    
    elsif obj.for_opponent?
            
      if obj.for_random?
        
        if obj.for_one?         # One random enemy
          number_of_targets = 1
        elsif obj.for_two?      # Two random enemies
          number_of_targets = 2
        else                    # Three random enemies
          number_of_targets = 3
        end
        number_of_targets.times do
          targets.push(opponents_unit.random_target)
        end
        
      elsif obj.dual?           # One enemy, dual
        targets.push(opponents_unit.smooth_target(@target_index))
        targets += targets
      elsif obj.for_one?        # One enemy
        targets.push(opponents_unit.smooth_target(@target_index))
      else                      # All enemies
        targets += opponents_unit.existing_members
      end
      
    elsif obj.for_user?         # User
      targets.push(battler)
      
    elsif obj.for_dead_friend?
      if obj.for_one?           # One ally (incapacitated)
        targets.push(friends_unit.smooth_dead_target(@target_index))
      else                      # All allies (incapacitated)
        targets += friends_unit.dead_members
      end
      
    elsif obj.for_friend?
      if obj.for_one?           # One ally
        targets.push(friends_unit.smooth_target(@target_index))
      else                      # All allies
        targets += friends_unit.existing_members
      end
    end
    
    return targets.compact
    
  end
  
end

#===============================================================================
#
# FIN
#
#===============================================================================

Pégalo encima de Main.

_________________

¡Apoya PCII colocando esta barrita en tu firma!
[VX] Custom Target Select JZxmSi
Turbiosoft.acho apoya a...:
[VX] Custom Target Select AvSsi3
[VX] Custom Target Select TpIA16
[VX] Custom Target Select VqJJJp
[VX] Custom Target Select BU4sOt

Y a los juegos de Zoro y Japo (?)


Turbiosoft.acho
Turbiosoft.acho
Admin
Admin

Femenino
Rmakercom
RPG Maker : Ace
Mensajes : 1287
Monedas : 4378
Reputación : 195
Localización : En el glorioso y magistral Zulo.

Volver arriba Ir abajo

[VX] Custom Target Select Empty Re: [VX] Custom Target Select

Mensaje por Muzgar el Vie Mar 28, 2014 1:00 am

Es bastante interesante el script y puede ser muy útil. Voy a implementarlo y si veo que hay alguna incompatibilidad con algún script te aviso.

Me interesa bastante los tags que ponen xD a ver que tal, te dejo el +1

Gracias por el aporte

_________________
[VX] Custom Target Select 8jqSjBi
[VX] Custom Target Select A4IkPGg
Apoya wild wars poniendo esta barra en tu firma
[VX] Custom Target Select 6Q3Q0PD

Muzgar apoya a...
Spoiler:
[VX] Custom Target Select PZdiBZY
[VX] Custom Target Select 2d82ir5
Muzgar
Muzgar
Admin
Admin

Rmakercom
RPG Maker : Ace
Mensajes : 1406
Monedas : 1347
Reputación : 181

Volver arriba Ir abajo

[VX] Custom Target Select Empty Genial aporte!

Mensaje por Harry404 el Vie Mar 28, 2014 2:36 am

Este script sera perfecto para el boss final de mi juego  Very Happy Mil gracias turby!
Harry404
Harry404
PJ de Quest
PJ de Quest

Masculino
Colombia
RPG Maker : Ace
Mensajes : 35
Monedas : 49
Reputación : 0
Edad : 18
Localización : Hogwarts School of Witchcraft and Pajas

Volver arriba Ir abajo

[VX] Custom Target Select Empty Re: [VX] Custom Target Select

Mensaje por Turbiosoft.acho el Vie Mar 28, 2014 2:35 pm

Wait, wait! Harry, tú no usas Ace? xD

Este script es para VX. Desconozco si funciona en Ace (lo más probable es que no) o si existe una versión equivalente.

_________________

¡Apoya PCII colocando esta barrita en tu firma!
[VX] Custom Target Select JZxmSi
Turbiosoft.acho apoya a...:
[VX] Custom Target Select AvSsi3
[VX] Custom Target Select TpIA16
[VX] Custom Target Select VqJJJp
[VX] Custom Target Select BU4sOt

Y a los juegos de Zoro y Japo (?)


Turbiosoft.acho
Turbiosoft.acho
Admin
Admin

Femenino
Rmakercom
RPG Maker : Ace
Mensajes : 1287
Monedas : 4378
Reputación : 195
Localización : En el glorioso y magistral Zulo.

Volver arriba Ir abajo

[VX] Custom Target Select Empty Re: [VX] Custom Target Select

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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