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

Dúvida Básica Sobre Scripts

Iniciado por Gking, 08/07/2017 às 14:59

08/07/2017 às 14:59 Última edição: 08/07/2017 às 15:31 por Gking
O problema está no método Draw_Commands, da Window_Habilities.
Especificamente no "draw_text".
Spoiler
#=begin

#Módulo contendo todas as informações
module Contents
  #Missões e seus conteudos, "QUE SERÃO MOSTRADOS"
  Amlet = {
            :Aml1 => {
                   :price => "56000 G",
                   :buff => ["+ Ataque", "+ Defesa", "- Agilidade"],
                   :desc => "Antigo amuleto que premite ao portador se \ntransformar em um Urso",
                   :anml => "Urso",
                   :icons_buffs => [34, 35, 54],
                   :ids => 20,
                   :id_icon => 292
            },
            :Aml2 => {
                   :price => "75000 G",
                   :buff => ["- Ataque", "+ Evasão", "+ Agilidade"],
                   :desc => "Amuleto místico que permite a transmutação em Lobo",
                   :anml => "Lobo",
                   :icons_buffs => [50, 29, 38],
                   :ids => 21,
                   :id_icon => 406
            },
            :Aml3 => {
                   :price => "98000 G",
                   :buff => ["- Ataque", "+ Defesa", "- Agilidade", "Regeneração"],
                   :desc => "Carapaça amaldiçoada, quem usar poderá se \ntransformar em uma Tartaruga",
                   :anml => "Tartaruga",
                   :icons_buffs => [50, 35, 54, 26],
                   :ids => 22,
                   :id_icon => 502
            },
            :Aml4 => {
                   :price => "850000 G",
                   :buff => ["+ Ataque", "+ Evasão", "+ Agilidade", "Redução de MP"],
                   :desc => "Dente de um tigre mágico que se apodera do corpo \ndo usuario",
                   :anml => "Tigre",
                   :icons_buffs => [34, 29, 38, 81],
                   :ids => 23,
                   :id_icon => 326
            },
            :Aml5 => {
                   :price => "980000 G",
                   :buff => ["+ Ataque", "+ Defesa", "+ Agilidade", "Magia de Fogo"],
                   :desc => "Pena de Fênix, a ave lendária",
                   :anml => "Fênix",
                   :icons_buffs => [34, 35, 38, 96],
                   :ids => 24,
                   :id_icon => 338
            },
            :Aml6 => {
                   :price => "640000 G",
                   :buff => ["- Ataque", "+ Defesa", "- Agilidade", "Escondido"],
                   :desc => "Vegetais sagrados, permite se transformar em \num camaleão",
                   :anml => "Camaleão",
                   :icons_buffs => [50, 35, 54, 28],
                   :ids => 25,
                   :id_icon => 201
            },
            :Aml7 => {
                   :price => "150 G",
                   :buff => ["- Macarrão", "+ Susto", "- Força", "Pronto"],
                   :desc => "Nâo faço a menor ideia do que colocar aqui como \ndescrição",
                   :anml => "Tem Macarrão, é Japão",
                   :icons_buffs => [25, 65, 85, 122],
                   :ids => 19,
                   :id_icon => 322
            }
  }
end

#Janela das Informações da skill
class Window_Info < Window_Base
end
  
#Janela do título da loja
class Window_Shop_Title < Window_Base
  def initialize(x, y, width, height)
    super
    self.draw_text_ex((Graphics.width / 2)-215,0 , "Loja da Transmutação")
  end
end

#Janela do dinheiro
class Gold_Window < Window_Base
  def initialize(x, y, width, height)
    super
    self.draw_text_ex(0, 0, $game_party.gold)
    self.draw_text_ex(150, 0, "G")
  end
  
  def refresh
    self.contents.clear
    self.draw_text_ex(0, 0, $game_party.gold)
    self.draw_text_ex(150, 0, "G")
  end
end

#Janela de descrição
class Window_Descrition < Window_Base
end

#Janela das Habilidades
class Window_Habilities < Window_Selectable
  include Contents
  def initialize(x, y, width, height)
    #Criação da janela de dinheiro
    @win_gold = Gold_Window.new(Graphics.width - 200, 265, 200, 50)
    
    make_command_list
    @index = 0
    super
    draw_commands
    activate
    select(0)
  end
  
  def make_command_list
    @commands = []
    Contents::Amlet.each_key do |key|
      @commands.push(key)
    end
  end
  
  def current_item
    return Contents::Amlet[@commands[index]]
  end
  
  def draw_commands
    @icons = []
    Contents::Amlet.each_key do |k|
      @icons.push(Contents::Amlet[k][:id_icon])
    end
    
    for i in 0...@commands.size
      rect = item_rect(i)
      self.draw_icon(@icons[i], rect.x, rect.y)
      rect.x =+ 24
      self.draw_text(rect, Contents::Amlet[k][:anml])
    end
  end
  
  def item_max
    Contents::Amlet.size
  end
  
  def update
    super
    if Input.trigger?(:C)
      if $game_party.gold >= current_item[:price].to_i
        Sound.play_ok
        $game_party.lose_gold(current_item[:price].to_i)
        $game_party.gain_item($data_items[current_item[:ids]], 1)
        @win_gold.refresh
      end
      Sound.play_cancel
      draw_commands
    end
  end
end

#Cena da loja
class Scene_Habilit_Shop < Scene_Base
  include Contents
  def start
    super
    #Criação da janela de títulos
    @win_shop = Window_Shop_Title.new(0, 0, Graphics.width-200, 50)
    
    #Criação da janela que mostra as habilidades
    @win_habilities = Window_Habilities.new(0, 50, Graphics.width - 200,
         Graphics.height - 150)
    
    #Criação da janela de descrição
    @win_descrition = Window_Descrition.new(0, Graphics.height - 100,
         Graphics.width, 100)
    
    #Criação da janela das informações da skill
    @win_info = Window_Info.new(Graphics.width - 200, 0, 200, Graphics.height-150)
    
    draw_all_info
  end
  
  def update
    ci = @win_habilities.current_item
    super
    return_scene if Input.trigger?(:B)
     
     if ci != @win_habilities.current_item
       draw_all_info
     end
  end
   
################################################################################
######################DESENHO DO CONTEÚDO DAS JANELAS###########################
################################################################################
 
  def draw_all_info
    @win_info.contents.clear
    @win_descrition.contents.clear
    draw_price
    draw_info_base
    draw_info
    draw_icons
    draw_descrition
  end
  
  def draw_info_base
    @win_info.draw_text_ex(0, 0, "Preço:")
    @win_info.draw_text_ex(0, 30, "Bônus:")
  end
  
  def draw_price
    @win_info.draw_text_ex(65, 0, @win_habilities.current_item[:price])
  end
    
  def draw_info
    @y_text = 50
    for i in @win_habilities.current_item[:buff]
      @win_info.draw_text_ex(0, @y_text, i)
      @y_text += 24
    end
    @y_text = 50
  end
  
  def draw_icons
    @y_icons = 50
    for i in @win_habilities.current_item[:icons_buffs]
      @win_info.draw_icon(i, 150, @y_icons)
      @y_icons += 24
    end
    @y_icons = 50
  end
  
  def draw_descrition 
    @win_descrition.draw_text_ex(0, 0, @win_habilities.current_item[:desc])
  end
    
end


#=end
[close]


O problema é que você definiu "k" na parte verde, enquanto ele não existe na parte azul.

Percebi isso, e qual seria a solução?

Seu trabalho como scripter é encontrar a resposta, jovem c:

Mas bem, a solução mais simples seria que, ao invés de adicionar apenas o ícone em @icons, você adicionasse a hash em si.
Daí você só precisaria acessar o ícone/texto direto de @icons.


É apenas uma luz, você precisa descobrir por si só qual seria a melhor solução baseado no que já sabe.