RPG Maker Land
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

RPG Maker Land

O Novo mundo do RPG Maker!!
 
InícioPortalGaleriaÚltimas imagensProcurarRegistarEntrar
Entrar
Nome de usuário:
Senha:
Entrar automaticamente: 
:: Esqueci-me da senha
Últimos assuntos
» [RMVX] Sistema de Tempo + Spawner
Sistema de Mixagem de Habilidades Icon_minitimeSáb Ago 04, 2012 3:26 pm por Édipo 13

» [RMVX] Aventuur
Sistema de Mixagem de Habilidades Icon_minitimeSáb Ago 04, 2012 8:48 am por Édipo 13

» Blog Detonados e Downloads Massa!
Sistema de Mixagem de Habilidades Icon_minitimeQua Jan 25, 2012 3:25 pm por Édipo 13

» [RMVX] O Templo
Sistema de Mixagem de Habilidades Icon_minitimeQua Jan 11, 2012 8:11 am por Édipo 13

» [RPG Maker VX - Filme] Lara e a Caneta Cinza
Sistema de Mixagem de Habilidades Icon_minitimeSeg Jan 09, 2012 9:19 am por Édipo 13

» [RPG Maker VX] Mario Kart RPG - Versão NOBug
Sistema de Mixagem de Habilidades Icon_minitimeSáb Jan 07, 2012 11:31 am por Édipo 13

» Preciso de battler
Sistema de Mixagem de Habilidades Icon_minitimeDom Abr 03, 2011 3:35 pm por bigglia

» [RPG Maker VX] Pescaria 3 - O Final
Sistema de Mixagem de Habilidades Icon_minitimeDom Nov 21, 2010 9:20 am por Édipo 13

» [RPG Maker VX] Boy Scout
Sistema de Mixagem de Habilidades Icon_minitimeDom Nov 21, 2010 9:19 am por Édipo 13

Parceiros da RMLand!
Sistema de Mixagem de Habilidades Bannerpequenoly2

Sistema de Mixagem de Habilidades Newbannerreb0

Sistema de Mixagem de Habilidades Banner-2

Sistema de Mixagem de Habilidades Pronpaganda

Sistema de Mixagem de Habilidades Spoweredbytl5

Sistema de Mixagem de Habilidades 66334844kk1


Visite Também
Sistema de Mixagem de Habilidades Rmbbuttonch6 Sistema de Mixagem de Habilidades Tudsobuttongo2

Sistema de Mixagem de Habilidades Qquxzd

Sistema de Mixagem de Habilidades 35kr81e

Banner da Land
Sistema de Mixagem de Habilidades Banneratheronfk6

 

 Sistema de Mixagem de Habilidades

Ir para baixo 
2 participantes
AutorMensagem
Tomah
Iniciante
Iniciante
Tomah


Número de Mensagens : 7
Idade : 29
Localização : Brasil
Reputação :
Sistema de Mixagem de Habilidades Left_bar_bleue15 / 10015 / 100Sistema de Mixagem de Habilidades Right_bar_bleue

Alerta :
Sistema de Mixagem de Habilidades Left_bar_bleue0 / 1000 / 100Sistema de Mixagem de Habilidades Right_bar_bleue

Perfil : Escritor

Sistema de Mixagem de Habilidades Empty
MensagemAssunto: Sistema de Mixagem de Habilidades   Sistema de Mixagem de Habilidades Icon_minitimeDom Fev 01, 2009 7:10 pm

Sistema de Mixagem de Habilidades 1.1

por Woratana



Introdução

Esse script permite que o jogador combine habilidades para ganhar novas. Você pode criar ilimitadas receitas para as habilidades e definir qual personagem pode ou não tentar mixar determinada receita.


Características

- Combine 2 ou mais habilidades para ganhar novas habilidades.
- Escolha que personagens podem ou não mixar cada receita.
- Escolha só adicionar novas habilidades ou remover as habilidades que você usou para mixar também.
- Fácil de editar o texto das janelas do sistema.

Screenshot

Sistema de Mixagem de Habilidades 14m6zwy

Como usar

Não é um script complicado de usar. Primeiro, cole o script acima de Principal. Depois, crie um evento e clique em chamar script. Em seguida, cole esse código: $scene = Scene_Mixskill.new

Maiores informações se encontram no próprio script e na demo.

Demo

Mixagem de Habilidades.rar

Script

Código:
#===============================================================
# ● [VX] ◦ Sistema de Mixagem de Habilidades ◦ □
#--------------------------------------------------------------
# ◦ feito por Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Lançado em: 25/05/2008
# ◦ Versão: 1.1
# ◦ Tradução por Tomah [deviltomah@yahoo.com.br]
#--------------------------------------------------------------
# ◦ Recursos:
# - Combine 2 ou mais habilidades para conseguir nova(s) habilidade(s)
# - Escolha o(s) personagem(s) que podem/não podem usar cada receita
# - Escolha só adicionar nova(s) habilidade(s) ou remover as habilidades que você usou para a receita também.
# - Fácil de editar o texto em janelas de Mixagem de Habilidades
#--------------------------------------------------------------
# ◦ Como usar:
# - Chame Scene_MixSkill chamando o script em um evento:
#  $scene = Scene_Mixskill.new
#=================================================================

  #=============================================================
  # * Constants Initialization (NÃO EDITE ESSA PARTE!) *
  #-------------------------------------------------------------
class Skill_Recipe
  attr_accessor :result, :skills, :user, :nonuser, :replace
end
class Scene_Mixskill < Scene_Base
  RECIPE = []
  #=============================================================
 
  #=============================================================
  # * [SETUP] SCENE MIXSPELL WINDOWS & TEXTS
  #-------------------------------------------------------------
  ACTOR_LIST_WIDTH = 172 # Altura da janela da lista de Personagens
 
  TOP_WINDOW_TEXT = '- Sistema de Mixagem de Habilidades -' # Texto mostrado na janela do topo quando inicia
  TOP_WINDOW_TEXT_WITH_ACTOR = '- Sistema de Mixagem de Habilidades -: {name}'
  # Texto mostrado depois de escolher personagem, use {name} para o nome do personagem
 
  BOTTOM_WINDOW_TEXT_ACTOR = 'Escolha o personagem que você quer mixar as habilidades'
  # Texto mostrado quando jogador tem que escolher o personagem para mixar habilidades
 
  MIX_BUTTON = 'Começar a mixar habilidades!' # Botão de Mixagem
  MIX_BETWEEN = '---------------------------'
  # Texto entre o resultado da receita e as habilidades escolhidas
 
  EXIT_BUTTON = '- Sair -' # Botão de sair na janela da lista de personagens
 
  SE_FOUND_RECIPE = 'Chime1'
  # Efeito de som a tocar quando encontra a receita para as habilidades selecionadas
  SE_FOUND_RECIPE_VOLUME = 80 # Sound Effect volume
 
  SE_MIXED = 'Chime2'
  # Efeito de som a tocar quando mixar habilidades
  SE_MIXED_VOLUME = 80
  #=============================================================
=begin
  #=============================================================
  # * [SETUP] Receita de Mixagem de Habilidades
  #-------------------------------------------------------------
  # .: TEMPLATE DA RECEITA :.
  #-------------------------------------------------
  data = Skill_Recipe.new
  data.skills = [ID da habilidade, ID da habilidade, ...]
  data.result = [ID da habilidade, ID da habilidade, ...]
  data.replace = true (or) false
  data.user = [ID do Personagem, ID do Personagem, ...]
  data.nonuser = [ID do Personagem , ID do Personagem, ...]
  RECEITA << data
  #-------------------------------------------------
  # * data = Skill_Recipe.new: cria nova receita em branco.
 
  # * data.skills: Habilidades que você tem que mixar para conseguir data.result (linha abaixo)
  # Você deve ter pelo menos 2 habilidades em data.skills (ou receita irá falhar).
 
  # * data.result: Habilidades que você ganha quando mixa data.skills (linha acima)
  # Você pode ter 1 habilidade ou mais em data.result.
 
  # * data.user: Personagens que podem usar essa receita, ponha 0 como ID para TODOS OS PERSONAGENS.
 
  # * data.nonuser: Personagens que não podem usar essa receita.
  # Você não precisa usar data.nouser se você não colocou 0
  # em data.user. -- Ponha [] se você não usar isso.
 
  # * DICA: Quando o sistema checar para ver se Personagem pode usar a receita,
  # Ele vai checar se a ID do personagem não está inclusa em data.nouser primeiro.
  # Depois, ele vai checar se a ID do personagem está inclusa em data.user ou o data.user da receita
  # está em 0 (usável para todos os personagens).
  #
  # Então, você pode criar receitas que vão funcionar com todos os personagens,
  # exceto para os personagens 2 e 4 em set data.user e data.nouser assim:
  # data.user = [0]
  # data.nonuser = [2, 3]
 
  # * data.replace = true (or) false: Se você quer remover habilidades em data.skills
  quando mixar a receita, ponha 'true'. Se não, ponha 'false'.
   
  # * RECIPE << data: Adiciona novas receitas para a database.
  #-------------------------------------------------------------
=end
  #=============================================================
  data = Skill_Recipe.new
  data.skills = [1,2]
  data.result = [3]
  data.user = [0]
  data.nonuser = [1]
  data.replace = true
  RECIPE << data
 
  data = Skill_Recipe.new
  data.skills = [33,35,34]
  data.result = [40,42]
  data.user = [3]
  data.nonuser = []
  data.replace = false
  RECIPE << data
  #=============================================================
 
  def start
    super
    create_menu_background
    @help1 = Window_Help.new
    @help2 = Window_Help.new
    @help2.y = Graphics.height - @help2.height
   
    @sk = Window_MS_Skill.new(0, @help1.height, Graphics.width/2,
Graphics.height - (@help1.height*2))
    @sk.help_window = @help2
    @sk_chosen = Window_MS_SkillList.new(@sk.width, @sk.y + @help1.height,
@sk.width, @sk.height - @help1.height)
   
    @act_list = Window_MS_ActorList.new(ACTOR_LIST_WIDTH)
    @act_list.x = (Graphics.width - @act_list.width) / 2
    @act_list.y = (Graphics.height - @act_list.height) / 2
 
    @winmix = Window_Command.new(@sk.width, [MIX_BUTTON])
    @winmix.x = @sk.width
    @winmix.y = @help1.height
   
    runstep(0)
  end
 
  def update
    super
    if @act_list.active
      @act_list.update
      if Input.trigger?(Input::C)
        @act_list.visible = @act_list.active = false
        case @act_list.define[@act_list.index]
        when 'exit'
          Sound.play_cancel
          $scene = Scene_Map.new
        else
          runstep(1)
        end
      elsif Input.trigger?(Input::B)
        Sound.play_cancel
        $scene = Scene_Map.new
      end
    elsif @sk.active
      @sk.update
      if Input.trigger?(Input::C)
        if @sk_chosen.skills.include?(@sk.skill)
          Sound.play_cancel
          return
        end
        Sound.play_decision
        @sk_chosen.skills << @sk.skill
        refresh_chosen_data
      elsif Input.trigger?(Input::B)
        runstep(4)
      elsif Input.trigger?(Input::RIGHT)
        runstep(2)
      end
    elsif @winmix.active
      @winmix.update
      if Input.trigger?(Input::C)
        runstep(5)
      elsif Input.trigger?(Input::LEFT)
        runstep(3)
      elsif Input.trigger?(Input::B)
        runstep(4)
      end
    end
  end
 
  def terminate
    super
    @act_list.dispose
    @sk_chosen.dispose
    @sk.dispose
    @help1.dispose
    @help2.dispose
    dispose_menu_background
  end
 
  def refresh_chosen_data
    @sk.chosen = @sk_chosen.skills
    @sk_chosen.skills.uniq!
    @sk.chosen.uniq!
    data_mixable = spell_mixable(@sk_chosen.skills)
    @sk_chosen.result = data_mixable[0]
    @sk_chosen.result -= @sk.actor.skills
    @sk_chosen.replace = data_mixable[1]
    RPG::SE.new(SE_FOUND_RECIPE, SE_FOUND_RECIPE_VOLUME).play if !@sk_chosen.result.empty?
    @winmix.draw_item(0, !@sk_chosen.result.empty?)
    @sk_chosen.refresh
    @sk.refresh
  end
 
  def spell_mixable(chosen)
    skills = []
    chosen.each {|i| skills << i.id if i.is_a?(RPG::Skill) }
    RECIPE.each_index do |r|
      next if RECIPE[r].nil? or RECIPE[r].skills.size < 2 or
  RECIPE[r].skills.size != skills.size or RECIPE[r].skills.sort != skills.sort
      next if RECIPE[r].nonuser.include?(@sk.actor.id)
      if RECIPE[r].user.include?(@sk.actor.id) or RECIPE[r].user.include?(0)
        result = RECIPE[r].result
        result_skills = []
        result.each {|i| result_skills << $data_skills[i] unless $data_skills[i].nil? }
        return [result_skills, RECIPE[r].replace]
      end
    end
    return [[], true]
  end
 
  def runstep(id)
    case id
    when 0
      @sk.visible = @sk.active = false
      @sk_chosen.visible = @sk_chosen.active = false
      @act_list.active = @act_list.visible = true
      @winmix.visible = @winmix.active = false
      @help1.set_text(TOP_WINDOW_TEXT, 1)
      @help2.set_text(BOTTOM_WINDOW_TEXT_ACTOR, 1)
    when 1
      Sound.play_decision
      @act_list.active = @act_list.visible = false
      @sk.visible = @sk.active = true
      @sk_chosen.visible = true
      @sk_chosen.active = false
      @winmix.visible = true
      @winmix.active = false
      @winmix.index = -1
      @sk.set_actor(@act_list.define[@act_list.index])
      @help1.set_text(TOP_WINDOW_TEXT_WITH_ACTOR.gsub(/\{name\}/i){@sk.actor.name}, 1)
      @sk_chosen.clear
      @winmix.draw_item(0, !@sk_chosen.result.empty?)
    when 2
      if @sk_chosen.result.empty?
        Sound.play_cancel
      else
        Sound.play_decision
        @winmix.index = 0
        @winmix.active = true
        @sk.active = false
        @sk_lastindex = @sk.index
        @sk.index = -1
      end
    when 3
      Sound.play_decision
      @winmix.index = -1
      @winmix.active = false
      @sk.active = true
      @sk.index = @sk_lastindex
    when 4
      if @sk_chosen.skills.empty?
        Sound.play_decision
        runstep(0)
      else
        Sound.play_cancel
        @sk_chosen.skills.pop
        refresh_chosen_data
      end
    when 5
      if @sk_chosen.result.empty?
        Sound.play_cancel
      else
        RPG::SE.new(SE_MIXED,SE_MIXED_VOLUME).play
        actor = @sk.actor
        ingrad = @sk_chosen.skills
        result = @sk_chosen.result
        ingrad.each {|i| actor.forget_skill(i.id) } if @sk_chosen.replace
        result.each {|i| actor.learn_skill(i.id) }
        runstep(1)
      end
    end
  end
end

#==============================================================================
# * Window_MS_Skill
#==============================================================================
class Window_MS_Skill < Window_Selectable
  attr_accessor :chosen, :actor
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @column_max = 1
    @chosen = []
    @data = []
    self.index = 0
  end

  def skill
    return @data[self.index]
  end

  def refresh
    @data = []
    for skill in @actor.skills
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
 
  def set_actor(actor)
    @actor = actor
    @chosen = []
    self.index = 0
    refresh
  end

  def draw_item(index)
    skill = @data[index]
    return if @chosen.include?(skill)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    if skill != nil
      rect.width -= 4
      draw_item_name(skill, rect.x, rect.y)
    end
  end

  def update_help
    @help_window.set_text(skill == nil ? '' : skill.description)
  end
end

#==============================================================================
# * Window_MS_SkillList
#==============================================================================
class Window_MS_SkillList < Window_Selectable
  attr_accessor :result, :skills, :replace
  def initialize(x, y, width, height)
    super(x, y, width, height)
    clear
  end

  def refresh
    self.contents.clear
    @data = @result + [Scene_Mixskill::MIX_BETWEEN] + @skills
    @item_max = @data.size
    for i in 0...@item_max
      draw_item(i)
    end
  end

  def draw_item(index, enabled = true)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    skill = @data[index]
    rect.width -= 4
    if skill.is_a?(RPG::Skill)
      draw_icon(skill.icon_index, rect.x, rect.y, enabled)
      self.contents.font.color = @result.include?(skill) ? system_color : normal_color
      self.contents.draw_text(rect.x + 24, rect.y, rect.width-24, WLH, skill.name)
    else
      self.contents.font.color = normal_color
      self.contents.draw_text(rect.x, rect.y, rect.width, rect.height, skill, 1)
    end
  end
 
  def clear
    @result = []
    @skills = []
    @replace = true
    refresh
  end

  def cursor_movable?
    return false
  end
end

#==============================================================================
# * Window_MS_ActorList
#==============================================================================
class Window_MS_ActorList < Window_Command
  attr_reader :define
  def initialize(width)
    commands = []
    @define = []
    $game_party.members.each do |i|
      commands << i.name
      @define << i
    end
    commands << Scene_Mixskill::EXIT_BUTTON
    @define << 'exit'
    super(width, commands)
  end
end


Perguntas Frequentes

Não há perguntas frequentes


Créditos e Agradecimentos

1. Ao Woratana por fazer esse incrível script.
2. À comunidade Maker, por me ajudar.
3. A mim mesmo, por traduzir e disponibilizar o script aqui.

Observações do Autor

Você está autorizado a usar esse script no seu jogo, desde que dê os devidos créditos. Você também pode postar essa tradução em outro site, desde que dê os devidos créditos.
Ir para o topo Ir para baixo
http://blogs.rpgmakerbrasil.com/tomaht/
Atheron
ADMIN
ADMIN
Atheron


Número de Mensagens : 114
Reputação :
Sistema de Mixagem de Habilidades Left_bar_bleue15 / 10015 / 100Sistema de Mixagem de Habilidades Right_bar_bleue

Alerta :
Sistema de Mixagem de Habilidades Left_bar_bleue0 / 1000 / 100Sistema de Mixagem de Habilidades Right_bar_bleue

Perfil : Veja meu avatar: https://2img.net/r/ihimizer/img239/8997/gyunt8.png

Sistema de Mixagem de Habilidades Empty
MensagemAssunto: Re: Sistema de Mixagem de Habilidades   Sistema de Mixagem de Habilidades Icon_minitimeDom Fev 01, 2009 9:00 pm

Muito bom!!!
Valeu por disponibilizar, Tomah!!
+REP!
Ir para o topo Ir para baixo
https://rpgmakerland.forumeiro.com
 
Sistema de Mixagem de Habilidades
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Sistema de Jan - ken - po! (Com Demo)
» Sistema de Mochila
» Sistema de pulo.
» Sistema de limitação de Dinheiro 1.0
» [RMVX] Sistema de Tempo + Spawner

Permissões neste sub-fórumNão podes responder a tópicos
RPG Maker Land :: RGSS :: Scripts VX-
Ir para: