Hi, I really hope this won't be considered necro-posting...

(my first post.. not really a 'forum' person...)
First thing I'd like to say is: WOW! Amazing script, never seen anything like it! A true masterpiece!
lots of great features and great visualization.
I was playing around with the DEMO, looking at the trees made there and I think its wonderful.
But it seems I failed at making my own tree. :\
I followed the instructions and made every skill\level in the database and set everything up in the
configuration script.
But I keep encountering this error:

Here is my setup script:
CODE
module ST_setup
################################################################################
# * Setup * #
# Basic? - Skill Tree - of Awesome v1.22 #
# 19 Feb 2011 #
################################################################################
# Author: Leongon #
# Contact: carlos_gon47@hotmail.com (or PM leongon on the board below) #
# Licence: Free for commercial and non-commercial proyects, just credit. #
# Share: Exclusive for www.rpgrevolution.com #
# If you want to share it outside give a link only, please. #
################################################################################
# This is my very first big non-so-basic script, and I'm very proud of how it #
# got done, almost exactly what I wanted to accomplish when I start writing it #
# about a week ago. #
# ---------------------------------------------------------------------------- #
# As the name says, this script introduces the very popular function from most #
# MMORPGs: Skill Trees, or talent trees if you prefer, for your heroes. #
# #
# You need to work only in this one, the Core manages the info you give here #
# and builds the system. #
################################################################################
# Instructions # #
################ #
# #
# This works pretty much like Tankentai's action sequences building. You'll #
# need to create objects that you must organize at the end in the final trees. #
# I put descriptions and syntax in each sections to help you on understanding #
# how to build your trees. So read each carefully. #
# #
# Actually I made it to be able to work like Diablo II and World of Warcraft #
# talent systems. Combine both systems if you want. Play with the object's #
# requirements to make it work as you like. #
# #
# If you don't understand this, play the Tutorial, is almost a game more than #
# a demo, and it will carry you around some of this script posibilities, and #
# teach you how to use them. #
# #
# If you still need guidance, find bugs or have ideas, reply on the thread. #
# I will answer everything that is not already explained here, the thread or #
# in the tutorial, if I'm still around. (One never knows what the life have #
# for fate) #
# #
################################################################################
################################################################################
# Command List # Commands for use on script call events #
################ #
# Commands: #
# #
# ST_command::show(mode, actor, exit) - Opens directly an actor's tree. #
# #
# ST_command::reward(mode, actor, quantity) - Give extra points to an actor. #
# ST_command::reward_party(quantity) - Give extra points to party. #
# #
# ST_command::reset(mode, actor) - Reset an actor's skill trees. #
# ST_command::reset_party - Reset entire party skill trees. #
# #
# ---------------------------------------------------------------------------- #
# Values: #
# #
# mode 0 - Target actor by party position. #
# 1 - Target actor by actor name. #
# 2 - Target actor by actor ID. #
# #
# actor Actor position, name or ID, depending on mode. #
# #
# exit true - Exits to Map uppon leaving the Skill Tree scene. #
# Ommit for exiting to menu. #
# #
# quantity Amount of skill points to reward. #
# Ommit to reward one point. #
# #
################################################################################
#------------------------------------------------------------------------------#
# * General Settings * #
# #
# --------- System ---------- # ---------------------------------------------- #
ST_menu_pos = 2 # Menu index to land when exiting Skill Trees. #
ST_scale_mode = true # (true-false) Skills that require actor level #
# will scale with each point spended, requiring #
# one more actor level each time. #
ST_level_up_point = true # (true-false) Gain a skill point on level up. #
ST_first_skill_point = 2 # Actor lvl where start gaining skill points at. #
ST_confirm_popup = true # (true-false) Require confirm for spend point. #
ST_notalents_popup = true # (true-false) Show warning pop-up for actors #
# without skill trees available. #
ST_notalents_popAN = true # (true-false) Include actor's name in warning #
# string for actors without skill trees. #
# -------- Language --------- # ---------------------------------------------- #
ST_menu = "Skills" # Menu selection command. Will be used on menu #
# access to the skill trees. #
ST_voc_max = "Maxed" # Skill maxed. #
ST_voc_unl = "Not Learned" # Skill still not learned. #
ST_voc_now = "Current Lv.: " # Actual skill level description. #
ST_voc_nex = "Next Lv.: " # Next skill level description. #
ST_voc_cur = "Skill Points: "# Currency count. #
ST_voc_req = "Require:" # Title for requirements. #
ST_voc_lvl = "Level " # Hero level required. #
ST_voc_one = " point in " # One point required. #
ST_voc_many = " points in " # More than one point required. #
ST_voc_q = "Are you sure?" # Confirm box question. #
ST_voc_ok = "Confirm" # Confirm selection. #
ST_voc_cancel = "Cancel" # Revoke selection. #
ST_voc_noSTpop_pre = "" # Text before actor's name for no-tree warning. #
ST_voc_noSTpop_pos = "Currently unavailable." # Text #
# after actor's name for no-tree warning. #
ST_voc_noSTpop = "Back" # Command for actors without skill trees #
# -------- Graphics --------- # ---------------------------------------------- #
ST_zero_sp_color = 10 # (0-31) Color for zero skill points. #
ST_skillname_color = 14 # (0-31) Color for selected skill's name. #
ST_arrow_disabled = 118 # (0-255) Alpha for disabled arrow objects. #
ST_skill_disabled = 138 # (0-255) Alpha for disabled skill objects. #
ST_show_obj_lvl = true # (true-false) Show object level over the icons. #
ST_arrow_hue = 155 # (0-360) This is the color variance of the #
# arrow's graphics. #
ST_imageback = 240 # (0-255) Alpha. Replaces the main tree window #
# background with an image. To disable this mode #
# use false. Images must be at 206x348 size, in #
# Graphics/System/ folder, matching the tree #
# names in Tree Building section. (Ex: ARMS.png) #
ST_windows_var = 11 # (ID) Game-variable ID that controls windows #
# distribution on the screen. Change the value #
# of that variable from 0 to 7, try them all. #
ST_tree_selection = 0 # (0-2) Tree selection windows work option. #
# 0: Animated cursor. 1: Steady cursor. #
# 2: Colour name, no cursor. #
ST_treeselection_color = 14 # Color for tree selection option 2. #
#-----------------------------#------------------------------------------------#
ST_arrow = [ # Don't touch.
#------------------------------------------------------------------------------#
# * Arrow Graphics List * #
# #
# You don't need to touch this section unless you change the arrow's order in #
# the SkillTree.png file. #
#------------------------------------------------------------------------------#
# "GraphicName", #
"A_l_st", # To left line, start. #
"A_r_st", # To right line, start. #
"A_ver_st", # Vertical line, start. #
"A_ver", # Vertical line. #
"A_hor", # Horizontal line. #
"A_ver_end", # Vertical line, end. #
"A_l_end", # To left line, end. #
"A_r_end", # To right line, end. #
"A_ver_w_diag_r", # Vertical line with right diagonal branch. #
"A_ver_w_diag_l", # Vertical line with left diagonal branch. #
"A_diag_r_st", # Diagonal to right line, start. #
"A_diag_r_abo_cor", # Diagonal to right upper chunk. #
"A_diag_r_bel_cor", # Diagonal to right lower chunk. #
"A_diag_r", # Diagonal to right line. #
"A_diag_r_end", # Diagonal to right line, end. #
"A_diag_l_st", # Diagonal to left line, start. #
"A_diag_l_abo_cor", # Diagonal to left upper chunk. #
"A_diag_l_bel_cor", # Diagonal to left lower chunk. #
"A_diag_l", # Diagonal to left line. #
"A_diag_l_end", # Diagonal to left line, end. #
] # Don't touch. #
#------------------------------------------------------------------------------#
ST_object = { # Don't touch.
#------------------------------------------------------------------------------#
# * Creating Arrow Objects * #
# #
# Here you build arrow objects for each tree. Each arrow fragment must be #
# created as a unique arrow object, that way they can have requirements to be #
# enabled. #
#------------------------------------------------------------------------------#
# #
# "ArrowObject" - Is the unique name for that arrow object. #
# "arrow_object" - Identifier, use always "arrow_object". #
# "arrow" - Is the graphic name from Arrow Graphics List section. #
# "dadskill" - Father Skill Object name. The skill object that conditions #
# this arrow object. #
#------------------------------------------------------------------------------#
# "ArrowObject" => ["arrow_object", "arrow", "dadskill"],
"MF_1_1" => ["arrow_object", "A_ver_st", "MF_1"],
"MF_1_2" => ["arrow_object", "A_ver_end", "MF_1"],
"MF_2_1" => ["arrow_object", "A_diag_l_st", "MF_2"],
"MF_2_2" => ["arrow_object", "A_diag_l_end", "MF_2"],
"MF_2_3" => ["arrow_object", "A_diag_l_abo_cor", "MF_2"],
"MF_2_4" => ["arrow_object", "A_diag_l_bel_cor", "MF_2"],
"MF_4_1" => ["arrow_object", "A_ver_st", "MF_4"],
"MF_4_2" => ["arrow_object", "A_ver_end", "MF_4"],
"WA_1_1" => ["arrow_object", "A_ver_st", "WA_1"],
"WA_1_2" => ["arrow_object", "A_ver_end", "WA_1"],
#--
"WA_d1_1" => ["arrow_object", "A_ver_st", "WA_d1"],
"WA_d1_2" => ["arrow_object", "A_ver_end", "WA_d1"],
"WA_d2_1" => ["arrow_object", "A_ver_st", "WA_d2"],
"WA_d2_2" => ["arrow_object", "A_ver_end", "WA_d2"],
"WA_d4_1" => ["arrow_object", "A_diag_l_abo_cor", "WA_d4"],
"WA_d4_2" => ["arrow_object", "A_diag_l_st", "WA_d4"],
"WA_d4_3" => ["arrow_object", "A_ver_st", "WA_d4"],
"WA_d4_4" => ["arrow_object", "A_diag_r_st", "WA_d4"],
"WA_d4_5" => ["arrow_object", "A_diag_r_abo_cor", "WA_d4"],
"WA_d4_6" => ["arrow_object", "A_diag_l_end", "WA_d4"],
"WA_d4_7" => ["arrow_object", "A_diag_l_bel_cor", "WA_d4"],
"WA_d4_8" => ["arrow_object", "A_ver_end", "WA_d4"],
"WA_d4_9" => ["arrow_object", "A_diag_r_bel_cor", "WA_d4"],
"WA_d4_10" => ["arrow_object", "A_diag_r_end", "WA_d4"],
#------------------------------------------------------------------------------#
"AR_1_4" => ["arrow_object", "A_diag_l_end", "AR_1"],
"AR_1_5" => ["arrow_object", "A_ver_end", "AR_1"],
"AR_3_7a" => ["arrow_object", "A_ver", "AR_3"],
"AR_3_7b" => ["arrow_obejct", "A_ver_end", "AR_3"],
"AR_4_6" => ["arrow_object", "A_ver_end", "AR_4"],
"AR_5_7" => ["arrow_object", "A_diag_r_end", "AR_5"],
"AR_6_14a" => ["arrow_object", "A_ver", "AR_6"],
"AR_6_14b" => ["arrow_object", "A_ver_end", "AR_6"],
"AR_8_9" => ["arrow_object", "A_ver_end", "AR_8"],
"AR_9_15a" => ["arrow_object", "A_ver", "AR_9"],
"AR_9_15b" => ["arrow_object", "A_ver_end", "AR_9"],
"AR_10_11a" => ["arrow_object", "A_ver", "AR_10"],
"AR_10_11b" => ["arrow_object", "A_ver_end", "AR_10"],
"AR_12_13a" => ["arrow_object", "A_ver", "AR_12"],
"AR_12_13b" => ["arrow_object", "A_ver_end", "AR_12"],
"AR_14_16a" => ["arrow_object", "A_ver", "AR_14"],
"AR_14_16b" => ["arrow_object", "A_ver_end", "AR_14"],
"AR_15_16" => ["arrow_object", "A_diag_r_end", "AR_15"],
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
# * Creating Skill Objects * #
# #
# Here you build skill objects for each tree. They contain the info regarding #
# their levels and requirements to be enabled, and for enabling other skill #
# objects. #
#------------------------------------------------------------------------------#
# #
# "SkillObject" - Is the unique name for that skill object. #
# reqlvl - Is the actor needed level for this object to be enabled. #
# treepts - Are the required points spended in the tree for this object #
# to be enabled. #
# "dad" - "mom" - Parents skill Object name. Skill objects that conditions #
# this skill object. Use nil for no dependance. #
# maxlvl - Is the maximum skill points spendable on this skill object. #
# childreqlvl - Is the necessary ammount of points in this skill object to #
# allow spending points in skills linked to this one. #
# idlvl... - Are the Skill IDs for each level of that skill. #
# -----------------------------------------------------------------------------#
# "SkillObject" => [reqlvl, treepts, "dad", "mom", maxlvl, childreqlvl, idlvl1, idlvl2,...],
"MF_1" => [1, 0, nil, nil, 5, 1, 1, 2, 3, 4, 5],
"MF_2" => [5, 0, nil, nil, 3, 1, 6, 7, 8],
"MF_3" => [10, 0, "MF_1", "MF_2", 5, 0, 9, 10, 11, 12, 13],
"MF_4" => [1, 0, nil, nil, 5, 5, 14, 15, 16, 17, 18],
"MF_5" => [10, 0, "MF_4", nil, 5, 5, 19, 20, 21, 22, 23],
"WA_1" => [1, 0, nil, nil, 3, 3, 24, 25, 26],
"WA_2" => [1, 0, "WA_1", nil, 5, 0, 27, 28, 29, 30, 31],
"WA_d1" => [1, 0, nil, nil, 1, 1, 32],
"WA_d2" => [1, 0, "WA_d1", nil, 1, 1, 33],
"WA_d3" => [1, 0, "WA_d2", nil, 1, 1, 34],
"WA_d4" => [1, 0, "WA_d3", nil, 1, 1, 35],
"WA_d5" => [20, 0, nil, nil, 1, 1, 36],
"WA_d6" => [20, 0, nil, nil, 1, 1, 37],
"WA_d7" => [20, 0, nil, nil, 1, 1, 38],
#---- Archer Class Skills -----------------------------------------------------#
"AR_1" => [1, 0, nil, nil, 10, 5, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125],
"AR_2" => [4, 0, nil, nil, 10, 0, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135],
"AR_3" => [4, 0, nil, nil, 5, 3, 171, 172, 173, 174, 175],
"AR_4" => [6, 0, "AR_1", nil, 5, 1, 144, 145, 146, 147, 148],
"AR_5" => [6, 0, "AR_1", nil, 8, 5, 136, 137, 138, 139, 140, 141, 142, 143],
"AR_6" => [12, 0, "AR_4", nil, 5, 1, 149, 150, 151, 152, 153],
"AR_7" => [12, 0, "AR_3", "AR_5", 3, 0, 154, 155, 156],
"AR_8" => [8, 0, nil, nil, 5, 5, 184, 185, 186, 187, 188],
"AR_9" => [16, 0, "AR_8", nil, 8, 3, 157, 158, 159, 160, 161, 162, 163, 164],
"AR_10" => [16, 0, nil, nil, 5, 5, 179, 180, 181, 182, 183],
"AR_11" => [28, 0, "AR_10", nil, 3, 0, 189, 190, 191],
"AR_12" => [20, 0, nil, nil, 3, 3, 176, 177, 178],
"AR_13" => [32, 0, "AR_12", nil, 5, 0, 193, 194, 195, 196, 197],
"AR_14" => [24, 0, "AR_6", nil, 6, 3, 165, 166, 167, 168, 169, 170],
"AR_15" => [28, 0, "AR_9", nil, 1, 1, 192],
"AR_16" => [36, 0, "AR_14", "AR_15", 6, 0, 198, 199, 200, 201, 202, 203],
} # Don't touch. #
#------------------------------------------------------------------------------#
ST_tree_build = { # Don't touch.
#------------------------------------------------------------------------------#
# * Tree Building * #
# #
# Here you build each skill tree using the previous set'd skill and arrow #
# objects. #
# #
# There are 7 slots per row, being 1, 4 and 7 for skill objects, while 2,3,5 #
# and 6 are for arrow objects. Rows have no max limit, you have the first one #
# for skills, next two are for arrows and so. #
#------------------------------------------------------------------------------#
# #
# "TREE_NAME" - Is the tree unique name. #
# "obj..." - Skill or Arrow Object name from the previous sections. #
# For empty slot use nil. #
# -----------------------------------------------------------------------------#
# "TREE_NAME" => [ obj 1, obj 2, obj 3, obj 4, obj 5, obj 6, obj 7],
"MAGE_FROST" => ["MF_1" , nil, nil, "MF_2", nil, nil, "MF_4",
"MF_1_1","MF_2_3","MF_2_1", nil, nil, nil,"MF_4_1",
"MF_1_2","MF_2_2","MF_2_4", nil, nil, nil,"MF_4_2",
"MF_3" , nil, nil, nil, nil, nil, "MF_5"],
"ARMS" => ["WA_1" , nil, nil, nil, nil, nil, "WA_d1",
"WA_1_1", nil, nil, nil, nil, nil,"WA_d1_1",
"WA_1_2", nil, nil, nil, nil, nil,"WA_d1_2",
"WA_2" , nil, nil, nil, nil, nil, "WA_d2",
nil, nil, nil, nil, nil, nil,"WA_d2_1",
nil, nil, nil, nil, nil, nil,"WA_d2_2",
nil, nil, nil, "WA_d4", nil, nil, "WA_d3",
nil,"WA_d4_1","WA_d4_2","WA_d4_3","WA_d4_4","WA_d4_5", nil,
nil,"WA_d4_6","WA_d4_7","WA_d4_8","WA_d4_9","WA_d4_10", nil,
"WA_d5" , nil, nil, "WA_d6", nil, nil, "WA_d7"],
#---- Archer Class Tree -------------------------------------------------------#
"ARCHER" => [ "AR_2", nil, nil, nil, "AR_1", nil, nil,
nil, nil, nil,"AR_1_4", "AR_1_5", nil, "AR_3",
nil, nil, "AR_4", nil, "AR_5", nil, "AR_3_7a",
"AR_8", nil, "AR_4_6", nil, nil,"AR_5_7", "AR_3_7b",
"AR_8_9", nil, "AR_6", nil, nil, nil, "AR_7",
"AR_9", nil, "AR_6_14a", nil, "AR_10", nil, nil,
"AR_9_15a", nil, "AR_6_14b", nil,"AR_10_11a", nil, "AR_12",
"AR_9_15b", nil, "AR_14", nil,"AR_10_11b", nil,"AR_12_13a",
"AR_15", nil,"AR_14_16a", nil, "AR_11", nil,"AR_12_13b",
nil,"AR_15_16","AR_14_16b", nil, nil, nil, "AR_13",
nil, nil, "AR_16", nil, nil, nil, nil],
} # Don't touch. #
#------------------------------------------------------------------------------#
ST_class_assign = { # Don't touch.
#------------------------------------------------------------------------------#
# * Asigning Skill Trees to Classes * #
# #
# Here you set the available trees for each class. Max of 3 trees per class. #
# If less, use nil. #
#------------------------------------------------------------------------------#
# #
# ClassID - Is the class id, d'oh. #
# "TREE..." - Are the tree's unique names from Tree Building section, #
# this class have available. #
# "Display..." - Are the displayed name for that skill tree. Ex: Having #
# "Protection" tree for Warriors and Paladins in WoW. #
#------------------------------------------------------------------------------#
# ClassID => ["TREE_1", "TREE_2", "TREE_3", "Display 1", "Display 2", "Display 3"],
1 => ["MAGE_FROST", "ARMS", nil, "Frost", "Arms", nil],
12 => ["ARCHER", nil, nil, "Archer", nil, nil],
} # Don't touch. #
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
end # of Skill Tree's setup script. #
#------------------------------------------------------------------------------#
Thanks in advance, I'd really like to get it to work.

EDIT: Never mind! I fixed it!
I'm so dumb.. -__-
It was just a typo at one of the arrow objects ("arrow_obejct" instead of "arrow_object") ...
Thanks anyway! Once again great script!
EDIT 2:
Another question if I may...
Is it possible to make the cursor go up and down by both 2 & 3 rows?
I'm no scripter, but I've seen this part of the code:
CODE
def cursor_down(wrap = false)
if (@index < @item_max - @column_max) or (wrap and @column_max == 1)
@index = (@index + (@column_max*3)) % @item_max unless
@data[(@index + (@column_max*3)) % @item_max] == nil or
@data[(@index + (@column_max*3)) % @item_max] == "arrow"
$sk_tree_data_refresh = true
end
end
def cursor_up(wrap = false)
if (@index >= @column_max) or (wrap and @column_max == 1)
@index = (@index - (@column_max*3) + @item_max) % @item_max unless
@data[(@index - (@column_max*3) + @item_max) % @item_max] == nil or
@data[(@index - (@column_max*3) + @item_max) % @item_max] == "arrow"
$sk_tree_data_refresh = true
end
end
As I understand it, the index will always be a '@culomn_max*3' value, meaning 3 rows up\down...
I'd like it to check for 2 rows as well, but its out of my ability to do so. :\
Could you please help me edit this little part so it will check if it can move by 2 or 3 rows at the same time?
Thanks in advance.
EDIT 3:
Apparently I managed to pull that off myself!
No more issues \ questions~ ^^
Thanks for this great script!