Need Help With Individual Battle Commands Script
#1
I'm using The Individual Battle Commands By Atoa.(Sorry if i'm wrong.)
It's a script that allows you to fully customize every actors command menu and add specific skill and magic to a battle command.
here is the script.

PHP Code:
<?php 
#==============================================================================
# Individual Battle Commands
# by Atoa
# Based on Charlie Lee script
# Modified by Atoa, to work with ACBS
#==============================================================================
# Following some suggestions, i've made some changes to the individual
# battle commands script
#
# Now you can not only add an command to an skill, you can also add an command
# to an actor (like in RM2000/2003/VX) and add an skill directly to an command
# so if you select the command, the skill will be used without opening the
# skill menu
#
#
# IMPORTANT: If you using the Add-On 'Atoa ATB' or 'Atoa CTB', put this script
# *bellow* the ATB/CTB Add-On.
#==============================================================================

module N01
# Do not remove or change these lines
Skill_Command = {}
Actor_Command = {}
Usable_Command = {}
# Do not remove or change these lines

# Show command list in status menu?
Show_Commands_In_Menu = true

# Position of command window in status menu
Menu_Commands_Postition = [16,160]
# Note: you must edit the status menu, or the command window will stay above
# other informations

# Command Window Border Opacity
Command_Window_Border_Opacity = 255

# Command Window Back Opacity
Command_Window_Back_Opacity = 160

# Max number of commands shown
Max_Commands_Shown = 5

# Skill Commands.
# These commands appear automatically when an actor learn one of the skill
# that is part of the command.
#
# Skill_Command[Command_Name] = [Skills_IDs]
#
Skill_Command['Magic'] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56]

Skill_Command['Sword Skill'] = [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]

Skill_Command['Unite'] = [98,99,100,101,102,103]

Skill_Command['Overdrive'] = [119]

Skill_Command['Summon'] = [120,121,122,123]

# Actor Commands.
# These are the commands linked to the actors, they will be shown even if
# the actor has none of the skill of this command.
# You can add the same command for different actors, the list of skills shown
# will be separated for each
#
# Actor_Command[Command_Name] = {Actor_id => [Skills_IDs]}
#
Actor_Command['Sword Skill'] = {1 => [1,2,3,], 2 => [84,87,88,93,105,106,107],
3 => [96,108,109,111,112,114]}

Actor_Command['Black Magic'] = {1 => [4,5]}

# Usable Commands.
# These commands are linked directly to an skill. Once you choose one of them
# you will use without opening the skill menu.
# This command appear automatically once the actor learn the skill linked to
# the command. The skill linked to the command aren't shown in the skill
# menu outside battle
#
# Direct_Comman[Command_Name] = Skill_ID
#
Usable_Command['Steal'] = 83

Usable_Command
['Cat Form'] = 97

Usable_Command
['Return Summon'] = 124
end

#==============================================================================
# ? Atoa Module
#==============================================================================
$atoa_script['SBS Individual Commands'] = true

#==============================================================================
# ? Game_Actor
#==============================================================================
class Game_Actor
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
attr_accessor :individual_commands
#--------------------------------------------------------------------------
alias acbs_setup_ibc setup
def setup
(actor_id)
acbs_setup_ibc(actor_id)
@
individual_commands = []
end
#--------------------------------------------------------------------------
def refresh_commands
@individual_commands = []
for
i in 0...@skills.size
skill
= $data_skills[@skills[i]]
if
skill != nil
for command in Skill_Command.dup
if command[1].include?(skill.id) and not @individual_commands.include?(command[0])
@
individual_commands << command[0]
end
end
for command in Usable_Command.dup
if command[1] == skill.id and not @individual_commands.include?(command[0])
@
individual_commands << command[0]
end
end
end
end
for command in Actor_Command.dup
if command[1].include?(@actor_id) and not @individual_commands.include?(command[0])
@
individual_commands << command[0]
end
end
end
end

#==============================================================================
# ? Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
alias acbs_add_actor_ibc add_actor
#--------------------------------------------------------------------------
def add_actor(actor_id)
acbs_add_actor_ibc(actor_id)
actor = $game_actors[actor_id]
actor.refresh_commands
end
end

#==============================================================================
# ? Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
attr_accessor :escape_name
#--------------------------------------------------------------------------
alias acbs_phase3_setup_command_window_ibc phase3_setup_command_window
def phase3_setup_command_window
acbs_phase3_setup_command_window_ibc
@active_battler.refresh_commands
s1
= $data_system.words.attack
s2
= $data_system.words.item
s3
= $data_system.words.guard
s4
= @escape_name if @escape_type == 0
@individual_commands = [s1] + @active_battler.individual_commands + [s2, s3]
if @
escape_type == 0
@individual_commands = [s1]+ @active_battler.individual_commands + [s2, s3, s4]
end
@actor_command_window.dispose
@actor_command_window = Window_Command.new(160, @individual_commands, @active_battler)
comand_size = (@individual_commands.size >= 5 ? 5 : @individual_commands.size)
@
actor_command_window.x = COMMAND_WINDOW_POSITION[0]
@
actor_command_window.y = COMMAND_WINDOW_POSITION[1] + 120 - 24 * comand_size
@actor_command_window.opacity = Command_Window_Border_Opacity
@actor_command_window.back_opacity = Command_Window_Back_Opacity
@actor_command_window.z = 4500
@actor_command_window.index = 0
@actor_command_window.active = true
@actor_command_window.visible = true
@active_battler_window.refresh(@active_battler)
@
active_battler_window.visible = BATTLER_NAME_WINDOW
@active_battler_window.x = COMMAND_WINDOW_POSITION[0]
@
active_battler_window.y = COMMAND_WINDOW_POSITION[1] + 56 - 24 * comand_size
@active_battler_window.z = 4500
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_basic_command_ibc update_phase3_basic_command
def update_phase3_basic_command
@direct_command = false
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
phase3_prior_actor
return
end
if Input.trigger?(Input::C)
@
command_name = @actor_command_window.commands[@actor_command_window.index]
case @
command_name
when $data_system
.words.attack
$game_system
.se_play($data_system.decision_se)
@
active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
start_enemy_select
when $data_system
.words.guard
$game_system
.se_play($data_system.decision_se)
@
active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
phase3_next_actor
when $data_system
.words.item
$game_system
.se_play($data_system.decision_se)
@
active_battler.current_action.kind = 2
start_item_select
when
@escape_name
if $game_temp.battle_can_escape == false
$game_system
.se_play($data_system.buzzer_se)
return
end
$game_system
.se_play($data_system.decision_se)
update_phase2_escape
return
end
if @active_battler != nil and
@
active_battler.individual_commands.include?(@command_name)
if
Usable_Command.include?(@command_name)
unless @active_battler.skill_can_use?(Usable_Command[@command_name])
$game_system.se_play($data_system.buzzer_se)
return
end
@active_battler.current_action.kind = 1
@commands_category = @command_name
@direct_command = true
start_command_select
(Usable_Command[@command_name])
else
$game_system.se_play($data_system.decision_se)
@
active_battler.current_action.kind = 1
@commands_category = @command_name
start_skill_select
end
end
return
end
acbs_update_phase3_basic_command_ibc
end
#--------------------------------------------------------------------------
alias acbs_start_skill_select_ibc start_skill_select
def start_skill_select
acbs_start_skill_select_ibc
@skill_window.dispose
@skill_window = Window_Skill.new(@active_battler, @commands_category)
@
skill_window.help_window = @help_window
end
#--------------------------------------------------------------------------
def start_command_select(skill_id)
if
Input.trigger?(Input::C)
@
skill = $data_skills[skill_id]
if @
skill.nil? or not @active_battler.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system
.se_play($data_system.decision_se)
@
active_battler.current_action.skill_id = @skill.id
if @skill.extension.include?("TARGETALL")
start_select_all_battlers
return
elsif @skill.scope == 2 or (@skill.scope < 3 and @skill.extension.include?("RANDOMTARGET"))
start_select_all_enemies
return
elsif @skill.scope == 4 or (@skill.scope > 2 and @skill.extension.include?("RANDOMTARGET"))
start_select_all_actors
return
end
if @skill.scope == 1
start_enemy_select
elsif
@skill.scope == 3 or @skill.scope == 5
start_actor_select
else
phase3_next_actor
end
return
end
end
#--------------------------------------------------------------------------
def active_command_window
@actor_command_window.active = true
@actor_command_window.visible = true
@help_window.visible = false
@active_battler_window.visible = true if BATTLER_NAME_WINDOW
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_enemy_select_ibc update_phase3_enemy_select
def update_phase3_enemy_select
if Input.trigger?(Input::B) and @direct_command
$game_system
.se_play($data_system.cancel_se)
end_enemy_select
active_command_window
return
end
if Input.trigger?(Input::C) and @direct_command
$game_system
.se_play($data_system.decision_se)
@
active_battler.current_action.target_index = @enemy_arrow.index
end_enemy_select
phase3_next_actor
@help_window.visible = false
return
end
acbs_update_phase3_enemy_select_ibc
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_actor_select_ibc update_phase3_actor_select
def update_phase3_actor_select
if Input.trigger?(Input::B) and @direct_command
$game_system
.se_play($data_system.cancel_se)
end_actor_select
active_command_window
return
end
if Input.trigger?(Input::C) and @direct_command
$game_system
.se_play($data_system.decision_se)
@
active_battler.current_action.target_index = @actor_arrow.index
end_actor_select
phase3_next_actor
@help_window.visible = false
return
end
acbs_update_phase3_actor_select_ibc
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_select_all_enemies_ibc update_phase3_select_all_enemies
def update_phase3_select_all_enemies
@enemy_arrow_all.update_multi_arrow
if Input.trigger?(Input::B) and @direct_command
$game_system
.se_play($data_system.cancel_se)
end_select_all_enemies
active_command_window
return
end
if Input.trigger?(Input::C) and @direct_command
$game_system
.se_play($data_system.decision_se)
end_select_all_enemies
phase3_next_actor
@help_window.visible = false
return
end
acbs_update_phase3_select_all_enemies_ibc
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_select_all_actors_ibc update_phase3_select_all_actors
def update_phase3_select_all_actors
@actor_arrow_all.update_multi_arrow
if Input.trigger?(Input::B) and @direct_command
$game_system
.se_play($data_system.cancel_se)
end_select_all_actors
active_command_window
return
end
if Input.trigger?(Input::C) and @direct_command
$game_system
.se_play($data_system.decision_se)
end_select_all_actors
phase3_next_actor
@help_window.visible = false
return
end
acbs_update_phase3_select_all_actors_ibc
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_select_all_battlers_ibc update_phase3_select_all_battlers
def update_phase3_select_all_battlers
@battler_arrow_all.update_multi_arrow
if Input.trigger?(Input::B) and @direct_command
$game_system
.se_play($data_system.cancel_se)
end_select_all_battlers
active_command_window
return
end
if Input.trigger?(Input::C) and @direct_command
$game_system
.se_play($data_system.decision_se)
end_select_all_battlers
phase3_next_actor
@help_window.visible = false
return
end
acbs_update_phase3_select_all_battlers_ibc
end
end

#==============================================================================
# ? Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
def initialize(actor, skill_command_type = '')
super(0, 128, 640, 352)
@
skill_command_type = skill_command_type
@actor = actor
@column_max = 2
refresh
self
.index = 0
if $game_temp.in_battle
self
.y = 320
self
.height = 160
self
.z = 900
self
.back_opacity = MENU_OPACITY
end
end
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self
.contents.dispose
self
.contents = nil
end
@data = []
for
i in 0...@actor.skills.size
skill
= $data_skills[@actor.skills[i]]
if
skill != nil and $game_temp.in_battle and skill_in_command?(skill)
@
data << skill
elsif skill
!= nil and not $game_temp.in_battle
for command in Usable_Command.dup
@data << skill unless command[1] == skill.id or @data.include?(skill)
end
end
end
@item_max = @data.size
if @item_max > 0
self
.contents = Bitmap.new(width - 32, row_max * 32)
for
i in 0...@item_max
draw_item
(i)
end
end
end
#--------------------------------------------------------------------------
def skill_in_command?(skill)
if
Skill_Command[@skill_command_type] != nil and
Skill_Command[@skill_command_type].include?(skill.id)
return
true
elsif Actor_Command
[@skill_command_type] != nil and
Actor_Command[@skill_command_type].include?(@actor.id) and
Actor_Command[@skill_command_type][@actor.id].include?(skill.id)
return
true
end
return false
end
end

#==============================================================================
# ? Window_Command
#==============================================================================
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
attr_accessor :commands
#--------------------------------------------------------------------------
def initialize(width, commands, battler = nil)
if
$scene.is_a?(Scene_Battle)
comand_size = (commands.size >= 5 ? 192 : commands.size * 32 + 32)
max_comand = Max_Commands_Shown * 32 + 32
else
comand_size = commands.size * 32 + 32
max_comand
= comand_size
end
comand_size
= [comand_size, max_comand].min
super
(0, 0, width, comand_size)
@
battler = battler
@item_max = commands.size
@commands = commands
self
.contents = Bitmap.new(width - 32, @item_max * 32)
refresh
self
.index = 0
end
#--------------------------------------------------------------------------
def refresh
self
.contents.clear
for i in 0...@item_max
if $scene.is_a?(Scene_Battle) and @battler != nil and
Usable_Command.include?(@commands[i]) and not
@battler.skill_can_use?(Usable_Command[@commands[i]])
draw_item(i, disabled_color)
elsif $scene.is_a?(Scene_Battle) and @commands[i] == $scene.escape_name and
$game_temp.battle_can_escape == false
draw_item
(i, disabled_color)
else
draw_item(i, normal_color)
end
end
end
end

#==============================================================================
# ? Scene_Status
#==============================================================================
class Scene_Status
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
alias acbs_main_scenestatus_ibc main
def main
set_command_window
if Show_Commands_In_Menu
acbs_main_scenestatus_ibc
@command_window.dispose if Show_Commands_In_Menu
end
#--------------------------------------------------------------------------
def set_command_window
actor
= $game_party.actors[@actor_index]
actor.refresh_commands
s1
= $data_system.words.attack
s2
= $data_system.words.item
s3
= $data_system.words.guard
@individual_commands = [s1] + actor.individual_commands + [s2, s3]
@
command_window = Window_Command.new(160, @individual_commands, actor)
@
command_window.x = Menu_Commands_Postition[0]
@
command_window.y = Menu_Commands_Postition[1]
@
command_window.z = 1000
@command_window.active = false
@command_window.index = -1
end
end

Example: Heres what the default battle commands look like.
Attack
Skill
Defend
Item

Now I added more battle command options so now it looks like this.
[Image: scripterror.jpg]

Now I try to select one of the new battle commands and this error comes up.
[Image: scripterror2.jpg]

Any idea on how to fix this?
Reply }
#2
Do you have any custom menu script? It looks like there is one that is messing with the definition of the Skills window.
Reply }
#3
yes, i'm using MOG Scene Menu Itigo V1.5, and all his other scripts as well.
Reply }
#4
That must be the problem. This individual commands script uses a special skill window to which you pass an extra parameter representing the currently selected category of skills, as far as I know the MOG menu scripts don't.
Have you asked yourself how the menu system you are using should show the different categories of skills?
Reply }
#5
ok thanks, i deleted some of the mog scripts and now it works. ^^
Reply }


Possibly Related Threads…
Thread Author Replies Views Last Post
   Plugin or Script help with Item menu, SKill menu, and Equip menu JayRay 3 353 11-22-2024, 07:02 PM
Last Post: JayRay
   GW Animated Battle backs Patch for Atoa ACBS Solitaire 21 2,436 10-17-2024, 06:37 AM
Last Post: Solitaire
   ACBS - Atoa Custom Battle System and TP System zlsl 2 4,661 10-20-2021, 05:09 AM
Last Post: zlsl
   Script compatibility help Lord Vectra 3 4,779 07-25-2021, 11:42 PM
Last Post: DerVVulfman
   [RMXP] Showing skill gained by leveling up on battle result FrQise 12 13,022 05-07-2021, 02:05 PM
Last Post: FrQise
   Adding face script on Cogwheel's RTAB Battle Status rekkatsu 15 16,184 08-25-2020, 03:09 AM
Last Post: DerVVulfman
   "Wait" in the script Whisper 13 16,512 04-28-2020, 04:06 PM
Last Post: Whisper
   Skill Cooldown script Fenriswolf 11 16,844 12-10-2019, 11:10 AM
Last Post: Fenriswolf
   I want to add an Atoa Custom Battle System command cut-in. zlsl 11 14,216 11-11-2019, 08:55 PM
Last Post: DerVVulfman
   Question about ACBS (Atoa Custom Battle System) aeliath 10 13,082 08-08-2019, 02:50 PM
Last Post: aeliath



Users browsing this thread: 1 Guest(s)