Squad Based Action Battle System

18 de maio de 2012

Esta é a terceira versão do ABS do Near Fantastica, um conjunto de scripts para o RPG Maker XP.

Há um monte de recursos neste sistema de batalha, e você controla o herói, com os outros seguindo, formando um esquadrão (por isto o nome Squad). Muitos o relacionam este estilo de batalha com Zelda, por ser um sistema de luta em tempo real, com ação e que o jogador controla de moto ativo, dependendo também de sua habilidade, etc. Por isto é Action (Active) Battle System.

Particularmente eu gosto do sistema de turnos, a não ser em alguns casos, mas muitos preferem uma batalha com ação!

Como dissemos, é um conjunto de 3 scripts que vem na demo para download nesta publicação.

Características chaves

  • Efeitos de status
  • IA (Inteligência Artificial) inimiga
  • Movimento baseado no esquadrão
  • IA aliada
  • Armas ranged (à distância)
  • Sistema de munição
  • Magias ranged

Instruções

Copie e cole os scripts (SBABS 1, SBABS 2 e SBABS 3 que estão nos scripts da demo) abaixo de Scene_Debug ou acima do Main. Importe os gráficos da “Setas” e das “Magic Balls” para o diretório GraphicsCharacters, e crie os seus eventos de inimigos como indicado.

Você pode achar os gráficos na demo, no diretório GraphicsCharacters mesmo.

Controles

  • E – Muda o líder pra frente
  • R – Muda o líder pra trás
  • T – Espera o líder
  • Y – Espera aliados
  • U – Ajunta Aliados
  • I – Dash
  • O – Esconder
  • P – Ligar/Desligar Hud
  • F – Melee Attack
  • G – Range Attack
  • H – Skill 1
  • J – Skill 2
  • K – Skill 3
  • L – Skill 4
  • N – Seguir de longe
  • M – Seguir de perto

Inteligência Artificial Inimiga / Adicionar Aos Eventos De Inimigos

Name
Name Of the Enemy in The Data Base
------------
Behavior
Passive = 0 ● The Event (Enemy) will only attack when attacked
Aggressive = 1 ● The Event will attack when one of its Detection level are set true
Linking = 2 ● Event will only attack when another Event is attacked with in its Detection level
Aggressive Linking = 3 ● Event will attack when either Aggressive or Linking is true
------------
Detection
Sound = range ● The range of sound the enemy can hear inactive if set to zero
Sight = range ● The range of sightthe enemy can see inactive if set to zero
------------
Aggressiveness
Aggressiveness = Level ● The high number the less Aggressive the Event
------------
Movement
Speed = Level ● The movment Speed of the event when engaged
Frequency = Level ● The movment Frequency of the event when engaged
------------
Trigger
Erased = 0 ● The event will be erased on death
Switch = 1 ● The event will be trigger Switch[ID] on death
Varible = 2 ● The event will be set the Varible[ID] = VALUE on death
Local Switch = 3 ● The event will trigger Local_Switch[ID] on death

Quando terminar, fica tipo na lista de EVENT COMMAND:

@>Comment: ABS Event Command List
@>Comment: Name Ghost
@>Comment: Behavior 1
@>Comment: Sound 2
@>Comment: Sight 5
@>Comment: Aggressiveness 1
@>Comment: Speed 4
@>Comment: Frequency 5
@>Comment: Trigger 3 1

ABS CONSTANTS
Se você quiser que seus actors mudem para um sprite diferente quando eles morrem use o Dead Display.

Se você configurar ataques à distância (ranged) você precisa criar um ELEMENT chamado RANGED e digite o ID deste ELEMENT no RANGE_ELEMENT_ID.

Se você configurar armas Ranged, você precisa configurar o RANGE_DISPLAY.

Código do ABS CONSTANTS

#======================================
# ■ ABS CONSTANTS
#======================================
# ● DEAD_DISPLAY is the sprite that is displayed when an actor is dead
# ● DEAD_DISPLAY[Data_Base_Actor_ID] = ["Character_Set_Name", X of sprite, Y of sprite]
#---------------
$DEAD_DISPLAY = {}
$DEAD_DISPLAY[1] = ["189-Down01", 2, 0] #Actor 1
$DEAD_DISPLAY[2] = ["189-Down01", 6, 1] #Actor 2
$DEAD_DISPLAY[7] = ["190-Down02", 8, 0] #Actor 7
$DEAD_DISPLAY[8] = ["191-Down03", 4, 1] #Actor 8
#---------------
# ● RANGE_ELEMENT_ID is which element the range is set to
#---------------
$RANGE_ELEMENT_ID = 17 #Element 17
#---------------
# ● RANGE_DISPLAY is the setup for range weapons
# ● RANGE_DISPLAY[Data_Base_Weapon_ID] =
# ["Character_Set_Name", New Animation Id, Item Id of Ammo]
#---------------
$RANGE_DISPLAY = {}
$RANGE_DISPLAY[17] = ["Arrow", 4, 33] # Weapon 17

Atenção: o código acima não é do Squad Based Action Battle System, e sim do ABS CONSTANTS.

Nota do DerVVulfman: Como você pode ter visto, através do código $RANGE_DISPLAY[17] = ["Arrow", 4, 33] que a Ranged Weapon usa o gráfico da seta (arrow).

Você deve editar a página 2 do script para nomear o gráfico do Ranged MAGIC (“Magic Balls”). A declaração que identifica o gráfico “Magic Balls” é em torno da linha 612, no método de atualização da classe Game_Ranged:

def refresh(event)
moveto(event.x, event.y)
case @type
when "Magic"
@character_name = "Magic Balls.png"
when "Weapon"
display = $RANGE_DISPLAY[@attack]
@character_name = display[0]
end
end

Personalizando

Inteligência Artificial Aliada (Ally Ai)
Funciona mas não é das melhores, segundo o próprio autor. Você pode ligá-la ou desligá-la usando o TRUE ou FALSE no flag (parâmetro) do código:

$ABS.set_ally_ai (flag)

HUD

Se usar TRUE no flag do código abaixo, o jogador tem controle do HUD. Se FALSE, apenas o desenvolvedor (o maker, você) tem controle.

$ABS.hud_pc

O código $ABS.hud determina o estado do HUD quando o desenvolvedor tem controle.

Créditos

  • Near Fantastica (autor)
  • Prexus (gráficos)
  • Cybersam (Script do teclado)
  • DerVVulfman (postagem original e comentou algumas linhas para o script funcionar nos RPG Makers XP ocidentais)

Mais RPG Maker XP

Download e ficha técnica

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Um comentário para “Squad Based Action Battle System”

  1. willian disse:

    Eu já tentei várias vezes e não deu e aparece que ta na linha “612” não tem essa linha, me ajudem?

Deixe um comentário

Inscreva-se na nossa newsletter!