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

Ghsot Casual Abilities

Iniciado por miguel8884, 07/08/2014 às 21:59

07/08/2014 às 21:59 Última edição: 09/08/2014 às 10:50 por miguel8884
Ghost Casual Abilities

Compativel com: RMVXA
Compatibilidade: boa
Facilidade de uso: médio
Lag gerado: desprezível

[box class=titlebg]
Condições de Uso
[/box]
Não divulgue em outro fórum sem minha permissão! Livre para uso comercial e não comercial, apenas dê os créditos!

[box class=titlebg]
Para que serve o script
[/box]
O script cria algumas aptidões extras para o herói, como por exemplo cozinhar, escalar, e coisas do tipo, você define cada uma delas com no máximo 6, esse limite é por questão de estética! Ele também cria um scene que pode ser chamada da seguinte forma em um chamar script: SceneManager.call(Scene_Abilities). Nesse menu você pode usar pontos para aumentar suas habilidades, mas da mesma forma pode também aumentá-las por experiência com simples comandos também, mas esses estão no script!

[box class=titlebg]
Imagens
[/box]

[box class=titlebg]
Script
[/box]
#===============================================================================
# ** Casual Abilities
# Autor: miguel8884
#-------------------------------------------------------------------------------
# Data de lançamento: 07/08/2014
# Versão: 1.0
#-------------------------------------------------------------------------------
# Dependências:
# * Slide Message
#-------------------------------------------------------------------------------
# Descrição:
#
# O script adiciona habilidades extras ao herói, como cozinhar e outros
# parâmetros, e cria um scene mostrando o nível de cada uma delas, são possíveis
# a criação de até 6 habilidades, mais por questões de estética.
#-------------------------------------------------------------------------------
# Características:
# * Bastante personalizável!
# * Lag baixo!
# * 6 habilidades possíveis!
# * Menu que mostra as habilidades e seus níveis!
# * Sistema de pontos para distribuir nas habilidades!
# * Mensagem que avisa ao passar de nível!
#-------------------------------------------------------------------------------
# Log:
# v1.0
#   07/08/2014 - Script lançado!
#   08/08/2014 - Mais configurações e vocabulários adicionados!
#   08/08/2014 - Slide message configurável!
#   09/08/2014 - Adionada opção no menu principal!
#-------------------------------------------------------------------------------
# - Criando condições com as habilidades -
# Você pode usar também o nível de cada uma das habilidades para fazer uma
# condições!
#
# Primeiro em uma condição coloque na aba 4 e vá em script, lá você coloca:
# if $game_actor.ability"id"nv == nv
# sendo que no lugar de id coloque o número de 1 a 6 da habilidade sem aspas.
# Você pode usar o "if", o "unless" e qualquer outro método por script para
# fazer a condição, onde "if" é se aquilo for verdadeiro e "unless" é se aquilo
# for falso.
# No lugar de nv você coloca o nível necessário para essa condição ser verdadeira.
# Obs: Não esqueça de dois espaços!
# Ao ivés de == você pode usar também:
# >= : Maior ou igual
# <= : Menor ou igual
# <  : Menor
# >  : Maior
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# - Aumentando pontos, experiência ou o nível de uma habilidade -
# Você pode aumentar diretamente o nível ou a experiência de uma habilidade
# por um simples comando no chamar script:
#
# $game_player.ability"id"nv += amount : Quando usar isso no lugar de id coloque
# o id da habilidade de 1 a 6 sem aspas, += para aumentar e -= para diminuir e
# no lugar de amount coloque a quantidade de níveis que a habilidade irá subir!
# 
# Para aumentar ou diminuir a experiência é a mesma coisa, só que ao invés de
# $game_player.ability"id"nv você usa $game_player.ability"id".exp e os
# mesmos critérios na frente!
#
# Para aumentar os pontos do herói, é simples também, use:
# $game_player.points += amount
# Onde no lugar de amount você coloca o número de pontos a serem aumentados ou
# diminuídos!
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# - Ganhando ou perdendo a possibilidade de adição no menu -
# Você pode retirar ou colocar a qualquer momento a opção do menu por um
# simples comando, no chamar script coloque:
#
# Casual_Abilities_Config::Add_On_Menu = boolean
#
# Sendo que no lugar de boolean você coloca true ou false, no caso true,
# verdadeiro, ou seja, ele poderá ser acessado pelo menu, se false, não
# vai poder ser acessado.
#===============================================================================
module Casual_Abilities_Config
  #=============================================================================
  # Configurações
  #=============================================================================
  #=============================================================================
  # Vocabulário
  #=============================================================================
  Level = "Nível:" # Nível na window que mostra dados do jogador #
  Level2 = "Nv." # Nível das habilidades extras #
  Levelup = "Passou de nível em" # Mensagem ao passar de nível, o nome é adicionado automaticamente #
  Points = "Pontos:" # Window de pontos #
  Menu_Name = "Distribuir"
  #=============================================================================
  # Fim do vocabulário
  #=============================================================================
  #=============================================================================
  # Quantidade multiplicada pelo nível do herói em uma habilidade para resultar
  # a quantidade necessária para passar ao próximo nível
  #=============================================================================
  Ability_Level_Up = 50
  #=============================================================================
  # Velocidade com que a mensagem de nível sobe
  #=============================================================================
  Slide_Message_Speed = 1
  #=============================================================================
  # Velocidade com que a mensagem de nível desaparece
  #=============================================================================
  Slide_Message_Burn = 2
  #=============================================================================
  # Irá ser adicionado no menu?
  #=============================================================================
  Add_On_Menu = false
  #=============================================================================
  # Títulos que o herói pode conquistar, para criar um título:
  # 1. Entre aspas coloque seu nome, após coloque uma vírgula.
  #
  # Para mudar o título do herói em um evento coloque no chamar script:
  # $game_player.title = id
  # Onde id é o id do title que você criou, começando do zero, ou seja, se
  # você criar um título "lutador", "matador"; lutador é o id 0 e o outro id 1.
  #
  # Obs: O herói começa com o id 0, então se você quiser que comece sem
  # nenhum título apenas isira o primeiro título como nenhum ou coisa
  # parecida.
  #=============================================================================
  Titles = [
  "Nenhum",
  "Cozinheiro",
  "Ferreiro",
  "Matador"
  ]
  #=============================================================================
  # Aqui define os ícones no menu de cada uma das 6 habilidades
  #=============================================================================
  Ability1_Icon = 123
  Ability2_Icon = 133
  Ability3_Icon = 234
  Ability4_Icon = 52
  Ability5_Icon = 96
  Ability6_Icon = 198
  #=============================================================================
  # Nome das 6 habilidades
  #=============================================================================
  Ability1 = "Metalúrgia"
  Ability2 = "Cozinha"
  Ability3 = "Aventura"
  Ability4 = "Cavalos"
  Ability5 = "Explorador"
  Ability6 = "Luta"
  #=============================================================================
  # Fim das configurações
  #=============================================================================
end
#===============================================================================
# Aqui começa o script
#===============================================================================
class Game_Player < Game_Character
  attr_accessor :title
  attr_accessor :ability1nv
  attr_accessor :ability2nv
  attr_accessor :ability3nv
  attr_accessor :ability4nv
  attr_accessor :ability5nv
  attr_accessor :ability6nv
  attr_accessor :ability1exp
  attr_accessor :ability2exp
  attr_accessor :ability3exp
  attr_accessor :ability4exp
  attr_accessor :ability5exp
  attr_accessor :ability6exp
  attr_accessor :points
  alias gst_initialize_abilities initialize
  alias gst_update_abilities update
  #=============================================================================
  # Método modificado para criar todas as hbailidades no herói
  #=============================================================================
  def initialize
    gst_initialize_abilities
    @title = 1
    @ability1nv = 1
    @ability2nv = 1
    @ability3nv = 1
    @ability4nv = 1
    @ability5nv = 1
    @ability6nv = 1
    @ability1exp = 0
    @ability2exp = 0
    @ability3exp = 0
    @ability4exp = 0
    @ability5exp = 0
    @ability6exp = 0
    @points = 0
  end
  #=============================================================================
  # Método que atualiza a classe
  #=============================================================================
  def update
    gst_update_abilities
    check_ability_up
  end
  #=============================================================================
  # Método que checa se o herói passou de nível em alguma das habilidades
  #=============================================================================
  def check_ability_up
    @slider.update unless @slider.nil?
    if @ability1exp >= @ability1nv*Casual_Abilities_Config::Ability_Level_Up
      @ability1exp = 0
      @ability1nv += 1
      @slider = Slide_Message.new("#{Casual_Abilities_Config::Levelup} #{Casual_Abilities_Config::Ability1}",Casual_Abilities_Config::Slide_Message_Speed,Casual_Abilities_Config::Slide_Message_Burn)
    end
    if @ability2exp >= @ability2nv*Casual_Abilities_Config::Ability_Level_Up
      @ability2exp = 0
      @ability2nv += 1
      @slider = Slide_Message.new("#{Casual_Abilities_Config::Levelup} #{Casual_Abilities_Config::Ability2}",Casual_Abilities_Config::Slide_Message_Speed,Casual_Abilities_Config::Slide_Message_Burn)
    end
    if @ability3exp >= @ability3nv*Casual_Abilities_Config::Ability_Level_Up
      @ability3exp = 0
      @ability3nv += 1
      @slider = Slide_Message.new("#{Casual_Abilities_Config::Levelup} #{Casual_Abilities_Config::Ability3}",Casual_Abilities_Config::Slide_Message_Speed,Casual_Abilities_Config::Slide_Message_Burn)
    end
    if @ability4exp >= @ability4nv*Casual_Abilities_Config::Ability_Level_Up
      @ability4exp = 0
      @ability4nv += 1
      @slider = Slide_Message.new("#{Casual_Abilities_Config::Levelup} #{Casual_Abilities_Config::Ability4}",Casual_Abilities_Config::Slide_Message_Speed,Casual_Abilities_Config::Slide_Message_Burn)
    end
    if @ability5exp >= @ability5nv*Casual_Abilities_Config::Ability_Level_Up
      @ability5exp = 0
      @ability5nv += 1
      @slider = Slide_Message.new("#{Casual_Abilities_Config::Levelup} #{Casual_Abilities_Config::Ability5}",Casual_Abilities_Config::Slide_Message_Speed,Casual_Abilities_Config::Slide_Message_Burn)
    end
    if @ability6exp >= @ability6nv*Casual_Abilities_Config::Ability_Level_Up
      @ability6exp = 0
      @ability6nv += 1
      @slider = Slide_Message.new("#{Casual_Abilities_Config::Levelup} #{Casual_Abilities_Config::Ability6}",Casual_Abilities_Config::Slide_Message_Speed,Casual_Abilities_Config::Slide_Message_Burn)
    end
  end
end
#===============================================================================
# Classe que cria as windows de titles - títulos
#===============================================================================
class Window_Titles < Window_Base
  def initialize(x,y,width,height,title)
    super(x,y,width,height)
    refresh(title)
  end
  def refresh(title)
    draw_text(0,0,544,30,title,1)
  end
end
#===============================================================================
# Classe que cria a window que contém a face e dados do herói
#===============================================================================
class Window_AbilitiesActor < Window_Base
  def initialize
    super(0,0,544,116)
    refresh
  end
  def refresh
    draw_actor_face($game_party.members[0],0,0)
    draw_actor_name($game_party.members[0],120,0)
    draw_actor_nickname($game_party.members[0],120,28)
    draw_actor_class($game_party.members[0],120,56)
    draw_actor_hp($game_party.members[0],350,0)
    draw_actor_mp($game_party.members[0],350,28)
    draw_text(350,56,100,35,"#{Casual_Abilities_Config::Level} #{$game_party.members[0].level}",1)
  end
end
#===============================================================================
# Classe que cria a window que guarda os ícones e nomes das habilidades
#===============================================================================
class Window_Abilities < Window_Base
  def initialize
    super(0,116,544/2+544/6,416-116*2)
    refresh
  end
  def refresh
    draw_icon(Casual_Abilities_Config::Ability1_Icon,0,0)
    draw_icon(Casual_Abilities_Config::Ability2_Icon,0,25)
    draw_icon(Casual_Abilities_Config::Ability3_Icon,0,50)
    draw_icon(Casual_Abilities_Config::Ability4_Icon,0,75)
    draw_icon(Casual_Abilities_Config::Ability5_Icon,0,100)
    draw_icon(Casual_Abilities_Config::Ability6_Icon,0,125)
    draw_text(50,0,200,30,Casual_Abilities_Config::Ability1,0)
    draw_text(50,25,200,30,Casual_Abilities_Config::Ability2,0)
    draw_text(50,50,200,30,Casual_Abilities_Config::Ability3,0)
    draw_text(50,75,200,30,Casual_Abilities_Config::Ability4,0)
    draw_text(50,100,200,30,Casual_Abilities_Config::Ability5,0)
    draw_text(50,125,200,30,Casual_Abilities_Config::Ability6,0)
    draw_text(265,0,100,30,"#{Casual_Abilities_Config::Level2} #{$game_player.ability1nv}",0)
    draw_text(265,25,100,30,"#{Casual_Abilities_Config::Level2} #{$game_player.ability2nv}",0)
    draw_text(265,50,100,30,"#{Casual_Abilities_Config::Level2} #{$game_player.ability3nv}",0)
    draw_text(265,75,100,30,"#{Casual_Abilities_Config::Level2} #{$game_player.ability4nv}",0)
    draw_text(265,100,100,30,"#{Casual_Abilities_Config::Level2} #{$game_player.ability5nv}",0)
    draw_text(265,125,100,30,"#{Casual_Abilities_Config::Level2} #{$game_player.ability6nv}",0)
  end
  def clear_bitmaps
    self.contents.clear
    refresh
  end
end
#===============================================================================
# Classe que cria a window dos pontos que o herói possui
#===============================================================================
class Window_AbilitiesPoints < Window_Base
  def initialize
    super(544/2+544/6,116+fitting_height(4),544-(544/2+544/6),64)
    refresh
  end
  def refresh
    draw_text(23,3,100,30,"#{Casual_Abilities_Config::Points} #{$game_player.points}",1)
  end
  def clear_bitmaps
    self.contents.clear
    refresh
  end
end
#===============================================================================
# Classe que cria a window de comando
#=============================================================================
class Window_AbilitiesCommand < Window_Command
  def initialize
    super(544/2+544/6,116)
  end
  def window_width
    return 544-(544/2+544/6)
  end
  def visible_line_number
    return 4
  end
  def make_command_list
    add_command(Casual_Abilities_Config::Ability1, :ability1)
    add_command(Casual_Abilities_Config::Ability2, :ability2)
    add_command(Casual_Abilities_Config::Ability3, :ability3)
    add_command(Casual_Abilities_Config::Ability4, :ability4)
    add_command(Casual_Abilities_Config::Ability5, :ability5)
    add_command(Casual_Abilities_Config::Ability6, :ability6)
  end
end
#===============================================================================
# Classe que gerencia a scene
#===============================================================================
class Scene_Abilities < Scene_Base
  include Casual_Abilities_Config
  #=============================================================================
  # Método que inicia a classe
  #=============================================================================
  def start
    super
    create_background
    create_windows
    create_command_window
  end
  #=============================================================================
  # Método que atualiza a classe
  #=============================================================================
  def update
    super
    update_exit_command
  end
  #=============================================================================
  # Método que termina a classe
  #=============================================================================
  def terminate
    super
    dispose_background
    dispose_windows
  end
  #=============================================================================
  # Método que cria as windows na scene
  #=============================================================================
  def create_windows
    @actor_window = Window_AbilitiesActor.new
    @points_window = Window_AbilitiesPoints.new
    @base_window = Window_Abilities.new
    @title_window = Window_Titles.new(0,416-116,544,116,"Título: #{Titles[$game_player.title]}")
  end
  #=============================================================================
  # Método que apaga as windows da scene
  #=============================================================================
  def dispose_windows
    @actor_window.dispose
    @base_window.dispose
    @title_window.dispose
    @points_window.dispose
    @window_command.dispose
  end
  #=============================================================================
  # Método que cria o fundo da scene
  #=============================================================================
  def create_background
    @background_sprite = Sprite.new
    @background_sprite.bitmap = SceneManager.background_bitmap
    @background_sprite.color.set(16, 16, 16, 128)
  end
  #=============================================================================
  # Método que apaga o fundo da scene
  #=============================================================================
  def dispose_background
    @background_sprite.dispose
  end
  #=============================================================================
  # Método que verifica se saiu da scene
  #=============================================================================
  def update_exit_command
    if Input.trigger?(:B)
      return_scene
    end
  end
  #=============================================================================
  # Método que cria os comandos da window command
  #=============================================================================
  def create_command_window
    @window_command = Window_AbilitiesCommand.new
    @window_command.set_handler(:ability1,method(:increase1))
    @window_command.set_handler(:ability2,method(:increase2))
    @window_command.set_handler(:ability3,method(:increase3))
    @window_command.set_handler(:ability4,method(:increase4))
    @window_command.set_handler(:ability5,method(:increase5))
    @window_command.set_handler(:ability6,method(:increase6))
  end
  #=============================================================================
  # Métodos executados ao selecionar alguma opção
  #=============================================================================
  def increase1
    if $game_player.points > 0
      $game_player.points -= 1
      $game_player.ability1nv += 1
      @base_window.clear_bitmaps
      @points_window.clear_bitmaps
      return_scene
    else
      return_scene
      RPG::SE.new("buzzer1",80).play
    end
  end
  def increase2
    if $game_player.points > 0
      $game_player.points -= 1
      $game_player.ability2nv += 1
      @base_window.clear_bitmaps
      @points_window.clear_bitmaps
      return_scene
    else
      return_scene
      RPG::SE.new("buzzer1",80).play
    end  
  end
  def increase3
    if $game_player.points > 0
      $game_player.points -= 1
      $game_player.ability3nv += 1
      @base_window.clear_bitmaps
      @points_window.clear_bitmaps
      return_scene
    else
      return_scene
      RPG::SE.new("buzzer1",80).play
    end
  end
  def increase4
    if $game_player.points > 0
      $game_player.points -= 1
      $game_player.ability4nv += 1
      @base_window.clear_bitmaps
      @points_window.clear_bitmaps
      return_scene
    else
      return_scene
      RPG::SE.new("buzzer1",80).play
    end
  end
  def increase5
    if $game_player.points > 0
      $game_player.points -= 1
      $game_player.ability5nv += 1
      @base_window.clear_bitmaps
      @points_window.clear_bitmaps
      return_scene
    else
      return_scene
      RPG::SE.new("buzzer1",80).play
    end
  end
  def increase6
    if $game_player.points > 0
      $game_player.points -= 1
      $game_player.ability6nv += 1
      @base_window.clear_bitmaps
      @points_window.clear_bitmaps
      return_scene
    else
      return_scene
      RPG::SE.new("buzzer1",80).play
    end  
  end
end
#===============================================================================
# Classe que cria as mensagens deslizantes
#===============================================================================
class Slide_Message < Sprite
  def initialize(message,speed,burn)
    super(nil)
    @speed = speed
    @burn = burn
    self.bitmap = Bitmap.new(544,30)
    self.bitmap.draw_text(0,0,544,30,message,0)
    self.y = 406
    self.x = 40
  end
  def update
    unless self.bitmap == nil
      if self.opacity > 0
        self.opacity -= @burn
      end
      self.y -= @speed
    end
    unless self.bitmap.nil? or self.bitmap.disposed?
      if self.opacity == 0 and self.bitmap != nil
        dispose
      end
    end
  end
  def dispose
    self.bitmap = nil
    super
  end
end
#===============================================================================
# Classes modificadas para adicionar a opção no menu
#===============================================================================
class Window_MenuCommand < Window_Command
  alias gst_abilities_command make_command_list
  def make_command_list
    if Casual_Abilities_Config::Add_On_Menu
      add_abilities
    end
    gst_abilities_command
  end
  def add_abilities
    add_command(Casual_Abilities_Config::Menu_Name,:abilities)
  end
end

class Scene_Menu < Scene_MenuBase
  alias gst_abilities_createcw create_command_window
  def create_command_window
    gst_abilities_createcw
    if Casual_Abilities_Config::Add_On_Menu
      @command_window.set_handler(:abilities, method(:call_abilities))
    end
  end
  def call_abilities
    SceneManager.call(Scene_Abilities)
  end
end
#===============================================================================
# Fim do script - Miguel8884 
#===============================================================================

[box class=titlebg]
Créditos e Avisos
[/box]
Criador: miguel8884

Eu ainda não terminei totalmente esse script, mais configurações e possibilidades viram, então, fique ligado e se tiver uma dica fale!