O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Skill level

Iniciado por chrollo, 26/03/2013 às 20:43

Compativel com: RMVXAce
Compatibilidade: bom
Facilidade de uso: fácil
Lag gerado: nulo

Condições de uso:
Pode ser livremente usado no seu projeto, sem necessidade de créditos, porém se modificar mantenha
o nome do autor (eu).

Para que serve o script:
Sistema o qual o personagem aprende habilidades através do uso contínuo de uma específica. Ao usar uma habilidade, após ela atingir um certo nível, será aprendida outra nova.

Script:
#============================================================
# Skill level
# by chrollo        v 1.0   26/03/13
#------------------------------------------------------------
# Sistema o qual o personagem aprende habilidades através
# do uso contínuo de uma específica. Ao usar uma habilidade,
# após ela atingir um certo nível, será aprendida outra nova.
#============================================================

module Skill_Level
  # Nível máximo da habilidade
  Skill_Level = {
  26 => 3,
  81 => 3
  }
  
  # Quantidade de usos necessários para aumentar o nível
  Skill_Use = {
  26 => 2,
  81 => 1
  }
  
  # Skill => [skill aprendida, nível necessário]
  Skill_Unlock = {
    26 => [27, 3],
    81 => [82, 2]
  }
  
end

class Game_Actor < Game_Battler
  attr_accessor :skill_level
  attr_accessor :skill_use
  alias setup_sl setup
  def setup(actor_id)
    setup_sl(actor_id)
    @skill_level = {}
    @skill_use = {}
    for i in Skill_Level::Skill_Level.keys
      @skill_level[i] = 1
    end
    for s in skills
      @skill_use[s.id] = 0
    end
  end
end

class Window_SkillList < Window_Selectable
  def col_max
    return 1
  end
  def draw_item_name2(item, x, y, enabled = true, width = 172)
    return unless item
    draw_icon(item.icon_index, x, y, enabled)
    change_color(normal_color, enabled)
    draw_text(x + 24, y, width, line_height, item.name)
    level = @actor.skill_level[item.id] == nil ? 1 : @actor.skill_level[item.id]
    draw_text(x + 350, y, width, line_height, "*"*level)
  end
  def draw_item(index)
    skill = @data[index]
    if skill
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name2(skill, rect.x, rect.y, enable?(skill))
      draw_skill_cost(rect, skill)
    end
  end
end

class Scene_Battle < Scene_Base
  def on_skill_ok
    @skill = @skill_window.item
    BattleManager.actor.input.set_skill(@skill.id)
    BattleManager.actor.last_skill.object = @skill
    if BattleManager.actor.skill_level[@skill.id] != nil
      BattleManager.actor.skill_use[@skill.id] += 1
      if BattleManager.actor.skill_level[@skill.id] <= Skill_Level::Skill_Level[@skill.id]
        if BattleManager.actor.skill_use[@skill.id] >= Skill_Level::Skill_Use[@skill.id]
          BattleManager.actor.skill_level[@skill.id] += 1
          if BattleManager.actor.skill_level[@skill.id] == Skill_Level::Skill_Unlock[@skill.id][1] and 
            BattleManager.actor.skill_use[@skill.id] == Skill_Level::Skill_Use[@skill.id]
            BattleManager.actor.learn_skill(Skill_Level::Skill_Unlock[@skill.id][0])
            @log_window.add_text(BattleManager.actor.name + " aprendeu " +
            $data_skills[Skill_Level::Skill_Unlock[@skill.id][0]].name)
          end
          BattleManager.actor.skill_use[@skill.id] = 0
        end
      end
    end
    if !@skill.need_selection?
      @skill_window.hide
      next_command
    elsif @skill.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
  end
end


Instruções:
Cole-o acima do main.

Créditos e avisos:
Não é necessário creditarme, apenas se for modificá-lo.

Cara gostei a valer, sério, usar 100 vezes Fire1 para aprender Fire2 por exemplo, é muito interessante, e muito criativo. Não me lembro de um game que use isso, por isso parabéns mesmo.
Agora nos créditos, peça créditos sim xD, é seu trabalho, quem usar tem que falar quem fez, e boa sorte nos scripts :D