Lune Skill Tree

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
Lune Skill Tree
Creator name
Introduction
 
 
Skill Tree, as used in many RPG Games, Diablo, Zenonia, Inotia, Ragnarok.... Where the player can choose diferent paths according to the skills chosen.

Portuguese user? Portuguese script page
Features
 
- Skills have levels.
- Skills have requirements for improvements, actor level, skill levels.
- Easy to add/remove skill points.
- Easy to add new skills.
- Possibility of images(not necessary).
- Can add skill points by script calls.

Screenshots
 
The screens are in portuguese, but the script has been translated to english.
 
don´t consider the horrible design below, it is just to show that images are possible, to help improve the script graphically.
How to Use
 
Instructions on the script

Demo
 
Not needed, but who prefers the download.
http://www.mediafire.com/?agsv9frb7y4031l
 
Script
 
Code:
#=======================================================#         Lune Skill Tree# Author: Raizen# Comunity: www.centrorpg.com# Classic Skill Tree, where you choose the skills and allocate# points through out the skill tree.#=======================================================module Skill_Tree#+++++++++++++++++++++++++++++++++++++++++++++ # Possible commands in Script Calls.#+++++++++++++++++++++++++++++++++++++++++++++# Add Skill points manually# Script Call: $game_actors[id].skill_tree[0]# remembering the operations += adds, -= subtracts.# Example, adding 4 points on actor with id of 5.# Script Call: $game_actors[5].skill_tree[0] += 4# Reseting skill tree# Just Script Call: reset_tree(id)# The id is the id of the actor on the database# Change a skill manually# Script Call: $game_actors[id].skill_tree[skill_id]# id = id of actor in database# skill_id = id of skill in database# Example: adding 5 points in skill id 3 in actor with id 2# Script Call: $game_actors[2].skill_tree[3] += 5# remembering the operations += adds, -= subtracts.# To activate the Skill Tree Screen manually.# Script Call: SceneManager.call(Scene_Skill_Change)#+++++++++++++++++++++++++++++++++++++++++++++# Initial Setup#+++++++++++++++++++++++++++++++++++++++++++++# Allow images? true/false# if true, the script will draw a image over the skill tree for# each character, allowing you to add details and improvements on the# design of the skill tree.# The image has to be on the folder Graphics/System with the name Actor1, Actor2...# according to the id of the actor.Images = false#---------------------------------------------# Text Setup#---------------------------------------------# remember to put texts inside" example 'text'.# Text confirming point add.Bot1 = 'Add 1 point'# cancelBot2 = 'Cancel'# Points RemainingRest = 'Points Remaining'# Total PointsTotal = 'Total Points'# Name on Menu.Menu = 'Skill Tree'#====================================================# Screen Actor configuration, read carefully to the instructions,# it is really important that you configure correctly the script.#====================================================# Don't modify.  Actor = []  Sk = []  # Base for actor creation, avoid erasing this part.# any time needed use this template to create actors skill trees and# skills.=begin#Actor[id] = [Sk[0] = {'x' => 100, # icon position on x axis'y' => 32, # icon position on y axis'skill' => 5, # skill obtained'desc1' => 'Requer: Lvl 5, Bola de Fogo lvl 5', # description 1'desc2' => 'Member1', # description 2'desc3' => 'Habilidade com ataque em área', # description 3'req' => [0, 1, 5, 9, 5], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 5, # skill max level'mult' => [10, 5], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[1] = {'x' => 100, # icon position on x axis'y' => 32, # icon position on y axis'skill' => 5, # skill obtained'desc1' => 'Requer: Lvl 5, Bola de Fogo lvl 5', # description 1'desc2' => 'Member1', # description 2'desc3' => 'Habilidade com ataque em área', # description 3'req' => [0, 1, 5, 9, 5], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 5, # skill max level'mult' => [10, 5], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.} # you can add as many skills as necessary]=end# ============================================================================# ======= Actor 1 =======================================================# ============================================================================Actor[8] = [Sk[0] = {'x' => 30, # icon position on x axis'y' => 30, # icon position on y axis'skill' => 51, # skill obtained'desc1' => 'Requires: Level 1', # description 1'desc2' => '', # description 2'desc3' => 'Fire 1', # description 3'req' => [0], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 10, # skill max level'mult' => [10, 2], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[1] = {'x' => 90, # icon position on x axis'y' => 30, # icon position on y axis'skill' => 119, # skill obtained'desc1' => 'Requires: Level 1', # description 1'desc2' => '', # description 2'desc3' => 'Magical Reflection', # description 3'req' => [0], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 1, # skill max level'mult' => [10, 2], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[2] = {'x' => 30, # icon position on x axis'y' => 90, # icon position on y axis'skill' => 52, # skill obtained'desc1' => 'Requires: Level 8 + 4x level', # description 1'desc2' => 'Fire 1 - Level 5', # description 2'desc3' => 'Fire 2', # description 3'req' => [8, 51, 5], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 10, # skill max level'mult' => [10, 4], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[3] = {'x' => 30, # icon position on x axis'y' => 150, # icon position on y axis'skill' => 53, # skill obtained'desc1' => 'Requires: Lvl 15 + 4xlevel', # description 1'desc2' => 'Fire1-lvl 7, Fire2-lvl 5', # description 2'desc3' => 'Flare', # description 3'req' => [15, 51, 7, 52, 5], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 10, # skill max level'mult' => [10, 4], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.}]# ============================================================================# ======= Personagem 2 =======================================================# ============================================================================Actor[9] = [Sk[0] = {'x' => 30, # icon position on x axis'y' => 30, # icon position on y axis'skill' => 51, # skill obtained'desc1' => 'Requires: Level 1', # description 1'desc2' => '', # description 2'desc3' => 'Fire 1', # description 3'req' => [0], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 10, # skill max level'mult' => [10, 2], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[1] = {'x' => 90, # icon position on x axis'y' => 30, # icon position on y axis'skill' => 119, # skill obtained'desc1' => 'Requires: Level 1', # description 1'desc2' => '', # description 2'desc3' => 'Magical Reflection', # description 3'req' => [0], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 1, # skill max level'mult' => [10, 2], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[2] = {'x' => 30, # icon position on x axis'y' => 90, # icon position on y axis'skill' => 52, # skill obtained'desc1' => 'Requires: Level 8 + 4x level', # description 1'desc2' => 'Fire 1 - Level 5', # description 2'desc3' => 'Fire 2', # description 3'req' => [8, 51, 5], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 10, # skill max level'mult' => [10, 4], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.},Sk[3] = {'x' => 30, # icon position on x axis'y' => 150, # icon position on y axis'skill' => 53, # skill obtained'desc1' => 'Requires: Lvl 15 + 4xlevel', # description 1'desc2' => 'Fire1-lvl 7, Fire2-lvl 5', # description 2'desc3' => 'Flare', # description 3'req' => [15, 51, 7, 52, 5], # requeriments [necessary level,#skill id necessary, skill level, skill id, skill level.# You can add as many skills for requirements as you wish'maxlvl' => 10, # skill max level'mult' => [10, 4], # multipliers, first is multiplier of heal/damage/effect# the second is how many levels are needed to up the next skill level.}]end#==============================================================================#==============================================================================#========================= Here Starts the Script =============================#==============================================================================#==============================================================================#==============================================================================# ** Scene_Status#------------------------------------------------------------------------------#  Esta classe executa o processamento da tela de atributos.#==============================================================================class Scene_Skill_Change < Scene_MenuBase  #--------------------------------------------------------------------------  # * Inicialização do processo  #--------------------------------------------------------------------------  def start    @set = $game_party.actors # array com ids dos personagens do grupo    @control_index = 0 #controle do indice de personagens    @control_inindex = 0 # controle do indice de habilidades    @status_window = Window_Skill_Select.new($game_party.actors[0]) # inicialização do menu de habilidades    @actor_window = Window_Actor_Sk.new(0, 0) # inicialização do menu de atores    @desc_window = Window_Help_Sk.new($game_party.actors[0]) # inicialização do menu de ajuda    @confirm = Window_Skill_Confirm.new # inicialização do menu de confirmação    @confirm.set_handler(:use_point, method(:command_use))    @confirm.set_handler(:return_window, method(:command_return))    @confirm.close    @actor_window.active = true    @status_window.active = false    @table = Skill_Tree::Actor    super  end  #--------------------------------------------------------------------------  # * Atualização do Processo  #--------------------------------------------------------------------------  def update    super    # Verificação do índice do menu    if @control_index != @actor_window.index       @control_index = @actor_window.index       @status_window.refresh(@set[@actor_window.index]) # mudança da janela de skills       @desc_window.refresh(@set[@actor_window.index], @status_window.index) # mudança da janela de skills     end    # Verificação do índice de habilidade    if @control_inindex != @status_window.index       @control_inindex = @status_window.index       @desc_window.refresh(@set[@actor_window.index], @status_window.index) # mudança da janela de skills    end    # Confirmação     if Input.trigger?(:C)       if @actor_window.active == true        Sound.play_ok        @status_window.active = true        @actor_window.active = false      elsif @status_window.active == true        @status_window.active = false        @confirm.open        @confirm.activate      end    end    # Retorno    if Input.trigger?(:      if @actor_window.active == true        return_scene      elsif @status_window.active == true        @status_window.active = false        @actor_window.active = true              end    end  end  #--------------------------------------------------------------------------  # * Confirmação de saída  #--------------------------------------------------------------------------  def command_return    @confirm.close    @status_window.active = true  end  #--------------------------------------------------------------------------  # Confirmação de distribuição  #--------------------------------------------------------------------------  def command_use    @nocall = true    id = $game_party.actors[@actor_window.index]    # verificação dos requisitos    if $game_actors[id].skill_tree[0] > 0 && $game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] < @table[id][@status_window.index]['maxlvl']      for n in 1...@table[id][@status_window.index]['req'].size        if n.even?          @nocall = false if @table[id][@status_window.index]['req'][n] > $game_actors[id].skill_tree[@table[id][@status_window.index]['req'][n-1]]        end      end    else      @nocall = false    end    # verificação do multiplicador de level    @nocall = false if @table[id][@status_window.index]['mult'][1]*$game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] + @table[id][@status_window.index]['req'][0] >$game_actors[id].level    @confirm.close    @status_window.active = true    unless @nocall      Sound.play_buzzer      return    end    if $game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] == 0      $game_actors[id].learn_skill(@table[id][@status_window.index]['skill'])    end    $game_actors[id].skill_tree[@table[id][@status_window.index]['skill']] += 1    $game_actors[id].skill_mult[@table[id][@status_window.index]['skill']] += @table[id][@status_window.index]['mult'][0]    $game_actors[id].skill_tree[0] -= 1    Sound.play_ok    @status_window.refresh(@set[@actor_window.index])  end  #--------------------------------------------------------------------------  # * Retorno ao menu principal  #--------------------------------------------------------------------------  def return_scene    super    @status_window.dispose    @actor_window.dispose    @desc_window.dispose  endend#==============================================================================# ** Window_Actor_Sk#------------------------------------------------------------------------------# Esta janela exibe os personagens do grupo.#==============================================================================class Window_Actor_Sk < Window_MenuStatus    #--------------------------------------------------------------------------  # * Largura da janela  #--------------------------------------------------------------------------  def window_width    120   end  #--------------------------------------------------------------------------  # * Altura da janela  #--------------------------------------------------------------------------  def window_height    Graphics.height  endend#==============================================================================# ** Window_Skill_Select#------------------------------------------------------------------------------# Janela Principal da Skill Tree#==============================================================================class Window_Skill_Select < Window_Baseattr_reader :index  #--------------------------------------------------------------------------  # * Inicialização da Janela  #--------------------------------------------------------------------------  def initialize(a)    super(120, 0, window_width, Graphics.height - fitting_height(3))    refresh(a)    @page = 0    @index = 0    update_cursor  end  #--------------------------------------------------------------------------  # * Largura da Janela  #--------------------------------------------------------------------------  def window_width    Graphics.width - 120  end  #--------------------------------------------------------------------------  #--------------------------------------------------------------------------  # * Aquisição do retangulo para desenhar o item(cursor)  #     index : índice do item  #--------------------------------------------------------------------------  def item_rect(index)    rect = Rect.new    rect.x = @table[index]['x']    rect.y = @table[index]['y']    rect.width = 24    rect.height = 24    rect  end  #--------------------------------------------------------------------------  # * Atualização da janela  #--------------------------------------------------------------------------  def refresh(a)    contents.clear    if Skill_Tree::Images      if @tree_load        @tree_load.bitmap.dispose        @tree_load.dispose      end      @tree_load = Sprite.new      @tree_load.bitmap = Cache.system("Actor#{+a}")      @tree_load.z = 200    end    @table = Skill_Tree::Actor[a]    contents.font.color = text_color(1)    @sum = 0    $game_actors[a].skill_tree.each {|z| @sum += z}    draw_text(50, -10, 180, 50, $game_actors[a].skill_tree[0].to_s + " "+ Skill_Tree::Rest)     draw_text(window_width - 200, -10, 180, 50, @sum.to_s + " "+ Skill_Tree::Total)    contents.font.color = text_color(0)    for i in 0...@table.size      contents.font.size = 16      draw_text(@table[i]['x'], @table[i]['y']+ 26, 40, 30, $game_actors[a].skill_tree[@table[i]['skill']].to_s + " /" + @table[i]['maxlvl'].to_s)      draw_icon($data_skills[@table[i]['skill']].icon_index, @table[i]['x'], @table[i]['y'], $game_actors[a].skill_learn?($data_skills[@table[i]['skill']]))    end    contents.font.size = Font.default_size    @page = 0    @index = 0    update_cursor  end  #--------------------------------------------------------------------------  # * Renovação  #--------------------------------------------------------------------------  def update    return if active == false    if Input.repeat?(:RIGHT) || Input.repeat?(:DOWN)      @index += 1       @index = 0 if @index >= @table.size      Sound.play_cursor    elsif Input.repeat?(:LEFT) || Input.repeat?(:UP)      @index -= 1       @index = (@table.size - 1) if @index < 0      Sound.play_cursor    end    update_cursor  end  #--------------------------------------------------------------------------  # * Atualização do cursor  #--------------------------------------------------------------------------  def update_cursor    cursor_rect.set(item_rect(@index))  end  #--------------------------------------------------------------------------  # * Execução do movimento do cursor  #--------------------------------------------------------------------------  def process_cursor_move    last_page = @page    super    update_cursor    Sound.play_cursor if @page != last_page  end  #--------------------------------------------------------------------------  # * Definição de controle de confirmação e cancelamento  #--------------------------------------------------------------------------  def process_handling    return unless open? && active    process_jump if Input.trigger?(:A)    process_back if Input.repeat?(:    process_ok   if Input.trigger?(:C)  end  #--------------------------------------------------------------------------  # * Definição de resultado ao pressionar o botão de confirmação  #--------------------------------------------------------------------------  def process_ok    if !character.empty?      on_name_add    elsif is_page_change?      Sound.play_ok      cursor_pagedown    elsif is_ok?      on_name_ok    end  end  #--------------------------------------------------------------------------  # * Adição ao nome do personagem  #--------------------------------------------------------------------------  def on_name_add    if @edit_window.add(character)      Sound.play_ok    else      Sound.play_buzzer    end  end  #--------------------------------------------------------------------------  # * Definição do nome  #--------------------------------------------------------------------------  def on_name_ok    if @edit_window.name.empty?      if @edit_window.restore_default        Sound.play_ok      else        Sound.play_buzzer      end    else      Sound.play_ok      call_ok_handler    end  end  #--------------------------------------------------------------------------  # * Descarte  #--------------------------------------------------------------------------  def dispose    super    if @tree_load      @tree_load.bitmap.dispose      @tree_load.dispose    end  endend#==============================================================================# ** Window_Help_Sk#------------------------------------------------------------------------------#  Esta janela exibe explicação de habilidades e informações sobre os requerimentos.#==============================================================================class Window_Help_Sk < Window_Base  def initialize(a)    super(120, Graphics.height - fitting_height(3), Graphics.width - 120, fitting_height(3))    @table = Skill_Tree::Actor[a]    refresh(a, 1)  end  #--------------------------------------------------------------------------  # * Atualização da janela  #--------------------------------------------------------------------------  def refresh(a, index)    contents.clear    @table = Skill_Tree::Actor[a] unless Skill_Tree::Actor[a] == nil    contents.font.color = text_color(20)    draw_text(0, 0, Graphics.width - 120, line_height, @table[index]['desc1'])    draw_text(0, line_height, Graphics.width - 120, line_height, @table[index]['desc2'])    contents.font.color = text_color(0)    draw_text(0, line_height*2, Graphics.width - 120, line_height, @table[index]['desc3'])  endend#==============================================================================# ** Window_MenuStatus#------------------------------------------------------------------------------#  Esta janela exibe os parâmetros dos membros do grupo na tela de menu.#==============================================================================class Window_Skill_Confirm < Window_Command  #--------------------------------------------------------------------------  # * Inicialização do objeto  #--------------------------------------------------------------------------  def initialize    super(0, 0)    self.z = 9999    self.x = (Graphics.width / 2) - (window_width / 2)    self.y = Graphics.height / 2    self.openness = 0  end  #--------------------------------------------------------------------------  # * Aquisição da largura da janela  #--------------------------------------------------------------------------  def window_width    return 160  end  #--------------------------------------------------------------------------  # * Criação da lista de comandos  #--------------------------------------------------------------------------  def make_command_list    add_main_commands  end  #--------------------------------------------------------------------------  # * Adição dos comandos principais  #--------------------------------------------------------------------------  def add_main_commands    add_command(Skill_Tree::Bot1,   :use_point,   true)    add_command(Skill_Tree::Bot2,  :return_window,  true)  endend#==============================================================================# ** Game_Actor#------------------------------------------------------------------------------#  Esta classe gerencia os heróis. Ela é utilizada internamente pela classe# Game_Actors ($game_actors). A instância desta classe é referenciada# pela classe Game_Party ($game_party).#==============================================================================class Game_Actor < Game_Battleralias sk_tree_ini setupalias sk_tree_lvl level_upattr_accessor :skill_treeattr_accessor :skill_mult  #--------------------------------------------------------------------------  # * Inicialização do objeto  #     actor_id : ID do herói  #--------------------------------------------------------------------------  def setup(actor_id)    sk_tree_ini(actor_id)    @skill_tree = Array.new($data_skills.size + 1, 0)    @skill_mult = Array.new($data_skills.size + 1, 0)  end  #--------------------------------------------------------------------------  # * Aumento de nível  #--------------------------------------------------------------------------  def level_up    sk_tree_lvl    @skill_tree[0] += 1  endend#==============================================================================# ** Game_Party#------------------------------------------------------------------------------#  Esta classe gerencia o grupo. Contém informações sobre dinheiro, itens.# A instância desta classe é referenciada por $game_party.#==============================================================================class Game_Party < Game_Unitattr_accessor :actorsend#==============================================================================# ** Game_Battler#------------------------------------------------------------------------------#  Esta classe gerencia os battlers. Controla a adição de sprites e ações # dos lutadores durante o combate.# É usada como a superclasse das classes Game_Enemy e Game_Actor.#==============================================================================class Game_Battler < Game_BattlerBase  #--------------------------------------------------------------------------  # * Cálculo de dano  #     user : usuário  #     item : habilidade/item  #--------------------------------------------------------------------------  def make_damage_value(user, item)    value = item.damage.eval(user, self, $game_variables)    value *= item_element_rate(user, item)    value *= pdr if item.physical?    value *= mdr if item.magical?    value *= rec if item.damage.recover?    value = apply_critical(value) if @result.critical    value = apply_variance(value, item.damage.variance)    value = apply_guard(value)    value += (value * $game_actors[user.id].skill_mult[item.id])/100    @result.make_damage(value.to_i, item)  endend#==============================================================================# ** Game_Interpreter#------------------------------------------------------------------------------#  Um interpretador para executar os comandos de evento. Esta classe é usada# internamente pelas classes Game_Map, Game_Troop e Game_Event.#==============================================================================class Game_Interpreter  def reset_tree(id)    @sum_sk = 0    $game_actors[id].skill_tree.each {|z| @sum_sk += z}    $game_actors[id].skill_tree.fill(0)    $game_actors[id].skill_tree[0] = @sum_sk  endend 
 
 
Menu add, to add the script to the menu.
 
Code:
#==============================================================================# ** Scene_Menu#------------------------------------------------------------------------------#  Esta classe executa o processamento da tela de menu.#==============================================================================class Scene_Menu < Scene_MenuBase  def create_command_window    @command_window = Window_MenuCommand.new    @command_window.set_handler(:item,      method(:command_item))    @command_window.set_handler(:skill,     method(:command_personal))    @command_window.set_handler(:equip,     method(:command_personal))    @command_window.set_handler(:status,    method(:command_personal))    @command_window.set_handler(:skill_tree,  method(:command_skill_tree))    @command_window.set_handler(:formation, method(:command_formation))    @command_window.set_handler(:save,      method(:command_save))    @command_window.set_handler(:game_end,  method(:command_game_end))    @command_window.set_handler(:cancel,    method(:return_scene))  end  def command_skill_tree      SceneManager.call(Scene_Skill_Change)  endend#==============================================================================# ** Window_MenuCommand#------------------------------------------------------------------------------#  Esta janela exibe os comandos do menu.#==============================================================================class Window_MenuCommand < Window_Commandalias raizen_add_main_commands add_main_commands  def add_main_commands    raizen_add_main_commands    add_command(Skill_Tree::Menu, :skill_tree, main_commands_enabled)  endend 


Credit and Thanks
- Raizen
 
Last edited by a moderator:

Nosleinad

Storyteller
Veteran
Joined
Dec 12, 2012
Messages
351
Reaction score
29
First Language
Portuguese
Primarily Uses
What a nice script. I love the idea to be able to use a skill tree, even better that it allows a background image for it.

Just a question about the image: is there a default size for it?
 

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
What a nice script. I love the idea to be able to use a skill tree, even better that it allows a background image for it.


Just a question about the image: is there a default size for it?
Actually it isn't a background image xD, its a image over the skill tree, but if you need a background image just tell me to take out the windons and such. About the size, well I did the script to be able to use over any size, so for the picture, there is no limited size, I didn't test this script on 640x480 for example, but it should resize itself.
 
Last edited by a moderator:

Nosleinad

Storyteller
Veteran
Joined
Dec 12, 2012
Messages
351
Reaction score
29
First Language
Portuguese
Primarily Uses
Hum...so its an image over the skill tree, i will test it out tomorrow at night and see how the positioning of the skill works  :) . As far as i saw it's easy to adequate them to a custom image.
 

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
I wont go as far as saying that inotia has a skill tree... the skills arent really branched out, they are independent... you just need to use certain points to unlock new skills...

anyway, the system itself is really cool... nice job!

btw, why not add the second script that adds the skill tree to the menu onto the main script?
 

anavn

Veteran
Veteran
Joined
Feb 24, 2013
Messages
279
Reaction score
2
First Language
French
Primarily Uses
For adiktuzmiko the fact he does not add it in the same script helps for compatibilities and i am using xs menu delux so if i add the second script it will crash.

 

For Raizenhttp://forums.rpgmakerweb.com/index.php?/user/6620-raizen/ great script. What prog did you use to create the background pic I would like to make a similar one. What are the terms as they are not stated and would you like if I translated your script in eng for ppl to have less probes ?

[SIZE=6.5pt]Idea for an update would be allow making the pic scroll so we can have a giant kill tree (left right) so it looks even more professional[/SIZE]

 

 
 
Last edited by a moderator:

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
Oh... I see... I was thinking about that too but wasn't sure until you posted... thanks!
 

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
@adiktuzmiko: yeah a little what anavn said :D


@anavn: you can translate and so, what I did is actually an image over the table, so you can add some design along with the skills in the skill tree, you can translate this script as you wish and post it wherever you want >.>.


I used Paint.net, basically I did the following.


Print Screen, pasted the image and put the dimensions 544x416, and then added a new layer over it, that layer I can know where the skills are, and make some images over it :p .


about the scroll... interesting, but also a lot of work to make that, I'll think about it xD.
 

anavn

Veteran
Veteran
Joined
Feb 24, 2013
Messages
279
Reaction score
2
First Language
French
Primarily Uses
I just saw you put an eng version so no need to translate it.

I also use paint.net and I see what you mean.

For the scrolling it could be replaced by different pages like mage , fighter and knight were you can decide in witch tree you want to put points in.

I think what could help you in this is the code in galv invaders it seems to have that .
 

anavn

Veteran
Veteran
Joined
Feb 24, 2013
Messages
279
Reaction score
2
First Language
French
Primarily Uses
You might want to add in the directions that one MUST add a pic with the actor number or the script will crash even if they are not using the pic.

It keeps saying the size is not good is here a way to fix that ?
 
Last edited by a moderator:

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
You might want to add in the directions that one MUST add a pic with the actor number or the script will crash even if they are not using the pic.

It keeps saying the size is not good is here a way to fix that ?
size not good, are you sure o_o? it should add any pic regardless of the size of them, can you show the message that is appearing?

Oh I didn't add that explained, cause I think it would be quite strange to add pics for one character and not another... dunno xD
 

anavn

Veteran
Veteran
Joined
Feb 24, 2013
Messages
279
Reaction score
2
First Language
French
Primarily Uses
OK so for the size it was referring to the fact one does not add any skills to one of the characters in the party in the tree.

For the pic I was able to do without it was strange as it just started working for no reason.... (not even using any pic...)

What I noticed that is very strange is that every time you add a point it takes you back to skill1 and the way you move around the skills?
 

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
Oh, thats a problem xD, the part moving to the first skill, but the way to move around, shouldn't be so hard, since it goes in the skills order, I thought about making it manually to the maker choosing where the cursor will go next, but it starts to make the skill creating quite long :/
 

anavn

Veteran
Veteran
Joined
Feb 24, 2013
Messages
279
Reaction score
2
First Language
French
Primarily Uses
Well i am trying to creat 3 trees of skills and it looks realy bizzard that one needs to pass all the fier skills to get ot the ice skills as the are just Under.
 

Arisete™

Creator
Veteran
Joined
Jul 14, 2012
Messages
231
Reaction score
61
First Language
English
Primarily Uses
RMMV
I haven't looked too much into this yet.

But is there a "Reset" type of script call for each actor?

I ask this question because I want to allow players to be able to go to an NPC and be able to pay money to reset their skill tree and return all SP used for whatever actor you choose to reset.

In other words, Pay 20,000 Gold to reset Eric's Skills.
Pay another 20,000 to reset Rick's skills if you want.

something like

$script lune_skilltree_reset.actor[1] That probably isn't even proper scripting, but it's an example of what I mean by resetting Actor 1's skills.
 

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
@Jenki: I added that command to the script on the topic, but if you want you just need to add this part to anywhere above main :p .

Just Script Call: reset_tree(id) 

id is the actor's id on database.

Code:
#==============================================================================# ** Game_Interpreter#------------------------------------------------------------------------------#  Um interpretador para executar os comandos de evento. Esta classe é usada# internamente pelas classes Game_Map, Game_Troop e Game_Event.#==============================================================================class Game_Interpreter  def reset_tree(id)    @sum_sk = 0    $game_actors[id].skill_tree.each {|z| @sum_sk += z}    $game_actors[id].skill_tree.fill(0)    $game_actors[id].skill_tree[0] = @sum_sk  endend
 

DarknessFalls

Rpg Maker Jesus - JS Dev.
Veteran
Joined
Jun 7, 2013
Messages
1,393
Reaction score
210
First Language
English
Is this possible to apply to classes?

also, this is my test setup:

Actor[1] = [ Sk[0] = { 'x' => 30, # icon position on x axis 'y' => 30, # icon position on y axis 'skill' => 1, # skill obtained 'desc1' => 'Requires: Level 1', # description 1 'desc2' => '', # description 2 'desc3' => 'Fire 1', # description 3 'req' => [0], # requeriments [necessary level, #skill id necessary, skill level, skill id, skill level. # You can add as many skills for requirements as you wish 'maxlvl' => 10, # skill max level 'mult' => [10, 2], # multipliers, first is multiplier of heal/damage/effect # the second is how many levels are needed to up the next skill level. },]And I get the error:

Line 333 no MethodError occured, undefined method each for nil:NilClass

Line 333: $game_actors[a].skill_tree.each {|z| @sum += z}
 
Last edited by a moderator:

anavn

Veteran
Veteran
Joined
Feb 24, 2013
Messages
279
Reaction score
2
First Language
French
Primarily Uses
By the way there is a compatibility prob with XAS if a monster uses a skill not learned by player .....
 

Raizen

Veteran
Veteran
Joined
Oct 24, 2012
Messages
381
Reaction score
660
First Language
Portuguese
Primarily Uses
RMMV
@Kalacious: I didn't get any bugs with the config you made, can you send me a demo or something? Did you make a skill tree for each character that was on the party?

@anavn: oh, I didn't test it on XAS, what version of XAS you're using so I can fix the compatibility issue?
 

DarknessFalls

Rpg Maker Jesus - JS Dev.
Veteran
Joined
Jun 7, 2013
Messages
1,393
Reaction score
210
First Language
English
@Raizen, No I made it for one actor - there was only one actor. I may have done something wrong, ill try again.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??

Forum statistics

Threads
105,867
Messages
1,017,062
Members
137,575
Latest member
akekaphol101
Top