InícioPortalFAQBuscarMembrosGruposRegistrar-seConectar-se

Compartilhe | 
 

 Enemy Summon Skill 1.0[RGSS2]

Ir em baixo 
AutorMensagem
SarliM
Usuário
Usuário
avatar

Número de Mensagens : 9
Idade : 21

MensagemAssunto: Enemy Summon Skill 1.0[RGSS2]   Qua Jun 16, 2010 7:06 pm

Enemy Summon Skill 1.0
por Modern Algebra

Introdução

Esse script permite que você crie habilidades para inimigos onde eles podem invocar ou chamar inimigos adicionais para o campo de batalha. Isso NÃO é uma habilidade que pode ser usada por atores/heróis - Isso só pode ser usado por inimigos.


Características
* Lhe permite criar habilidades em que inimigos podem invocar outros inimigos para a batalha.
* Extremamente facil de ser configurado.
* Pode criar habilidades que invoquem diferentes inimigos.



Screenshots
Spoiler:
 



Como usar

Para instalá-lo, apenas cole o script acima do main.
As outras instruções estão no contidas no script.

Demo

Não possui demo traduzida (não acho que precise, mas caso for necessário eu posso disponibilizar).

script
Código:
Código: [Selecionar]
#==============================================================================
#    Enemy Summon Skill
#    Versão: 1.0
#    Autor: modern algebra (rmrk.net)
#    Data: Maio, 8 de 2010
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Descrição:
#
#    Esse script permite que você crie habilidades para inimigos onde eles podem
#  invocar ou chamar inimigos adicionais para o campo de batalha. Isso NÃO é uma
#  habilidade que pode ser usada por actors - Isso só pode ser usado por inimigos
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instruções:
#
#    Copie esse script acima do Main no editor de scripts (F11).

#
#    Você pode alterar configurações basicas na linha 52. Porfavor leia os
#  comentários para saber o que cada um faz.
#
#    Para criar uma habilidade/magia de invocação(novamente, isso só pode ser
#  usado por inimigos), tudo o que você precisa é colocar o seguinte código(pode
#  ser alterado na linha 69 se você desejar):
#
#      \SUMMON_ENEMY[enemy_id, x, y, chance]
#        enemy_id : A ID do inimigo a ser invocado.
#        x : a posição x em pixel, com a posição do criador como ponto de referencia 
#          (ponto inicial). Se omitido, será usado o valor padrão definido na linha 64.
#        y : a posição y em pixel, com a posição do criador como ponto de referencia
#          (ponto inicial). Se omitido, será usado o valor padrão definido na linha 67.
#        chance: frequencia em que o candidato de ser invocado seja escolhido (no caso
#          de uma habilidade que pode invocar diferentes monstros. Se omitido, será 1.
#
#    Como você provavelmente pode imaginar, você pode colocar mais destes códigos na
#  mesma caixa de texto e, logo, você pode fazer a mesma habilidade potencialmente
#  invocar diferentes inimigos, alem de controlar as chances de cada um.
#
#  EXEMPLOS:
#
#    Uma habilidade configurada em sua caixa de texto desta forma:
#      \summon_enemy[1, 35, 45, 3]
#      \summon_enemy[2, 25, 35, 1]
#
#  Se bem sucedida,(que é controlada diretamente pela taxa de acerto da habilidade)
# invocará o inimigo com a ID 1 (Padrão: Slime) 75% das vezes ou o inimigo com a
# ID 2 (Padrão: Bat) 25% das vezes, e a posição caso for o slime ser invocado
# seria 35 pixels para a direita do invocador e 45 pixels abaixo, ou se por acaso
# o invocado for o morcego, então será 25 pixels para a direita do invocador e 35
# pixels abaixo. As chances são 75 para 25 pois 3 + 1 = 4 no qual significa que 3/4
# das vezes o slime será invocado e 1/4 das vezes o morcego será invocado.
#==============================================================================
#  CONFIGURAÇÃO
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new constant - MAES_VOCAB_SUMMON_FAILURE; MAES_MAX_TROOP_SIZE;
#      MAES_DEFAULT_X_PLUS; MAES_DEFAULT_Y_PLUS; MAES_NOTECODE
#==============================================================================
# Mensagem mostrada quando a habilidade falha.
MAES_VOCAB_SUMMON_FAILURE = "%s falhou ao invocar um aliado!"
# O numero maximo de inimigos em um grupo de invocados
MAES_MAX_TROOP_SIZE = 8
# O padrão para a posição x extra para um inimigo invocado. Se você inseriu
# isto manualmente na caixa de texto esse valor será ignorado.
MAES_DEFAULT_X_PLUS = 35
# O padrão para a posição y extra para um inimigo invocado. Se você inseriu
# isto manualmente na caixa de texto esse valor será ignorado.
MAES_DEFAULT_Y_PLUS = 25
# Esse é o código que você tem que usar na caixa de texto antes de tudo.
MAES_NOTECODE = "\\SUMMON_ENEMY"

#==============================================================================
#  ** RPG::Skill
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new methods - ma_call_ally?; ma_call_ally
#==============================================================================

class RPG::Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Call Ally Skill?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_call_ally?
    return self.note[/#{MAES_NOTECODE}\[\d+.*?\]/i] != nil
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Call Ally Stats
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_call_ally
    miss = rand (100)
    return nil if self.hit < miss
    possibilities = []
    note = self.note.dup
    note.gsub! (/#{MAES_NOTECODE}\[(\d+)[,;]?\s*(-?\d*)[,;]?\s*(-?\d*)[,;]?\s*(\d*)\]/i) { |match|
      id = $1.to_i
      x = $2.empty? ? MAES_DEFAULT_X_PLUS : $2.to_i
      y = $3.empty? ? MAES_DEFAULT_Y_PLUS : $3.to_i
      percent = $4.empty? ? 1 : $4.to_i
      (percent).times do possibilities.push ([id, x, y]) end
      ""
    }
    return *possibilities[rand(possibilities.size)]
  end
end

#==============================================================================
# ** Game Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    attr_accessor - summon_count
#    aliased method - initialize, skill_can_use?
#==============================================================================

class Game_Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  attr_accessor :ma_summon_count
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias moda_clally_intz_7uj2 initialize
  def initialize (*args)
    @ma_summon_count = 0
    moda_clally_intz_7uj2 (*args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Can Use?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias moral_caly_skllcnuse_6yh1 skill_can_use?
  def skill_can_use? (skill, *args)
    return false if skill.ma_call_ally? && $game_troop.members.size >= MAES_MAX_TROOP_SIZE
    return moral_caly_skllcnuse_6yh1 (skill, *args)
  end
end

#==============================================================================
# ** Game_Actor
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - skill_can_use?
#==============================================================================

class Game_Actor
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Can Use?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modbr_ess_skcnuse_7uj2 skill_can_use?
  def skill_can_use? (skill, *args)
    return false if skill.ma_call_ally?
    return modbr_ess_skcnuse_7uj2 (skill, *args)
  end
end

#==============================================================================
# ** Game Troop
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - ma_call_ally
#==============================================================================

class Game_Troop
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Call Ally
  #    user    : the enemy using the skill
  #    enemy_id : the ID of the enemy being summoned
  #    x, y    : screen coordinates to display enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_call_ally (user, enemy_id, x, y)
    user.ma_summon_count += 1
    enemy = Game_Enemy.new (@enemies.size, enemy_id)
    good_position = false
    while !good_position
      enemy.screen_x = user.screen_x + (x*user.ma_summon_count)
      enemy.screen_y = user.screen_y + (y*user.ma_summon_count)
      good_position = true
      @enemies.each { |baddie|
        if baddie.screen_x == enemy.screen_x && baddie.screen_y == enemy.screen_y
          user.ma_summon_count += 1
          good_position = false
        end
      }
    end
    @enemies.push(enemy)
    make_unique_names
    return enemy
  end
end

#==============================================================================
# ** Spriteset_Battle
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - ma_call_enemy
#==============================================================================

class Spriteset_Battle
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Call Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def ma_call_enemy (battler)
    @enemy_sprites.push(Sprite_Battler.new(@viewport1, battler))
  end
end

#==============================================================================
# ** Scene_Battle
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - execute_action_skill
#==============================================================================

class Scene_Battle
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Execute Action Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malb_callally_exactsk_5hy1 execute_action_skill
  def execute_action_skill (*args)
    skill = @active_battler.action.skill
    if skill.ma_call_ally?
      enemy_id, x, y = skill.ma_call_ally
      if enemy_id.nil?
        text = sprintf (MAES_VOCAB_SUMMON_FAILURE, @active_battler.name)
        @message_window.add_instant_text(text)
        wait (30)
        return
      else
        target = $game_troop.ma_call_ally (@active_battler, enemy_id, x, y)
        @spriteset.ma_call_enemy (target)
        display_animation([target], skill.animation_id)
      end
    end
    malb_callally_exactsk_5hy1 (*args) # Run Original Method
  end
end
Perguntas Frequentes

Citar

Citação :
Pergunta: Funciona no Xp?
Resposta: Creio que não.

Pergunta: Se dá pra fazer por eventos..porque postou isso?
Resposta: Com esse script é bem mais facil configurar.


Créditos e Agradecimentos

* Feito por modern algebra
* Traduzido por LuKo
Voltar ao Topo Ir em baixo
Ver perfil do usuário
 
Enemy Summon Skill 1.0[RGSS2]
Voltar ao Topo 
Página 1 de 1

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Generation Maker  :: Ruby Game Scripting System :: Lista de Scripts-
Ir para: