SarliM Usuário
Número de Mensagens : 9 Idade : 27
| Assunto: 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 | |
|