#=============================================================================== # ** Ghost Craft System # Autor: miguel8884 # Comunidade: CRM & MRM #------------------------------------------------------------------------------- # Data de lançamento: 01/10/2014 # Versão: 1.0.2 #------------------------------------------------------------------------------- # Dependências: # * Nenhuma #------------------------------------------------------------------------------- # Descrição: # # O script permite que você tenha um sistema de craft (contruir/montar itens), # pode ser colocado no menu ou chamado por eventos, a equipe também pode ganhar # o sistema de craft no menu apenas quando você quiser, por uso de um simples # comando. É bem completo e pode ser facilmente configurado! #------------------------------------------------------------------------------- # Características: # * Crafts ilimitados! # * Janela bem completa com várias informações que podem ser retiradas! # * Alta configuração! # * Sistema de falha ou sucesso no craft, pode ser retirado! #------------------------------------------------------------------------------- # Log: # v1.0 # 01/10/2014 - Script lançado! # v1.0.2 # 23/05/2015 - Correções nos crafts e otimização de métodos! #------------------------------------------------------------------------------- # - Comandos - # Aqui veja os comandos utilizáveis tanto para fazer o sistema funcionar tanto # para utiliza-lo proveitosamente. Use todos no chamar script. # # SceneManager.call(Scene_CraftItems) # Utilize para chamar a cena de craft. # # GST::ICS.put_on_menu # Utilize para colocar a opção de craft no menu # # $game_party.unlock_craft(type,id) # Utilize para a equipe destravar um craft, sendo type: # 0 - Arma # 1 - Armadura # 2 - Item # e id o id do item no database #------------------------------------------------------------------------------- # - Como utilizar - # Para definir o craft para um item, apenas escreva em suas notas: Craft=id # onde id é o id do craft nas configurações. # # IMPORTANTE: # Nunca faça com que a equipe ganhe o craft de um item sem o craft dele nas # notas, pois o script apontará um erro #=============================================================================== # Registrar geral -------------------------------------------------------------- ($imported ||= {})[:ghost_craft_system] = true # ------------------------------------------------------------------------------ module GST #----------------------------------------------------------------------------- # * Registrar (Nome do script, Dependência) - Não mexa #----------------------------------------------------------------------------- def self.register(name,needed = nil) ($miguel8884 ||= {})[name] = true unless needed.nil? msgbox("Instale o script #{needed}") end end module ICS #--------------------------------------------------------------------------- # * Criação da variável - Não mexa #--------------------------------------------------------------------------- Craft = Array.new #--------------------------------------------------------------------------- # * Configurações gerais #--------------------------------------------------------------------------- # Ícone para a janela que mostra o vocabulário dos crafts # Craft_Icon = 224 # Ícone para os itens necessários # Necessary_Item_Icon = 234 # Ícone para os tipo arma # Weapon_Icon = 147 # Ícone para os tipo armadura # Armor_Icon = 161 # Ícone para os tipo item # Item_Icon = 192 # Cor verde # Green_Color = Color.new(120,255,120) # Cor cinza # Gray_Color = Color.new(160,160,160,190) # Cor vermelha Red_Color = Color.new(255,120,120) # Nome da imagem de fundo, deixe como "" caso não queira fundo por imagens # # Pasta pictures # Background_Image = "" # Caso queira mudar a opacidade do fundo das windows, max 255, min 0 # Windows_Opacity = 255 # Variável que guarda a chance de falha no craft, será multiplicada por 10 # # portanto deve estar em um valor de 0 a 10 e vai interferir diretamente # # na chance de falha. Deixe como nil para chance ser sempre 50% # Craft_Fail_Chance_Variable = nil # Som produzido após o craft falhar # Fail_SE = "Buzzer2" #--------------------------------------------------------------------------- # * Configurações da imagem #--------------------------------------------------------------------------- # Mostrar o geral da arma/armadura # Show_Overall = true # Mostrar a quantidade de itens disponíveis para craft # Show_Crafts_Amount = true # Mostrar os parâmetros das armas/armaduras # Show_Item_Params = true # Mostrar o ícone que representa o tipo na seleção de crafts # Show_Item_Icon_Select = false # Iniciar no menu # Init_In_Menu = false # Sistema de falha ou sucesso no craft # Success_Or_Fail = false # Mostrar vocabulário do OK ao obter o número de itens necessários # Show_OK_Items = false # Mostrar os membros que podem utilizar o item em questão # Show_The_Actors_Can_Use = true # Colocar um antecedente na frente do penultimo nome dos membros que podem # usar o item # Actors_Can_Use_Prefix = true #--------------------------------------------------------------------------- # Vocabulário #--------------------------------------------------------------------------- # Vocabulário para a janela da lista dos crafts # Craft_Vocab = "Itens" # Vocabulário para a janela do topo # Top_Craft_Vocab = "Montar Itens" # Vocabulário para os itens necessários # Necessary_Item_Vocab = "Itens Necessários" # Abreviação de ataque # Attack_Abreviation = "ATK" # Abreviação de defesa # Defense_Abreviation = "DEF" # Vocabulário para geral da arma/armadura # Overall_Vocab = "OVR" # Vocabulário para itens possuídos sendo verdadeiro # OK_Vocab = "OK!" # Vocabulário para o menu # Menu_Vocab = "Mesa" # Vocabulário que antecede os membros da equipe que podem equipar o item # Actor_Equip_OK = "Disponível para:" # O que irá separar o nome dos membros que podem equipar o item # Separate_Actors_By = ", " # Vocabulário do antecedente ao penultimo membro # Prefix_Ant_Last_Actor = "e " # Caso ninguém possa usar o item, vocabulário do que irá aparecer # Nobody_Can_Use = "Nenhum dos integrantes" # Vocabulário para falha # Fail_Vocab = "Falha" # Vocabulário para sucesso # Success_Vocab = "Sucesso" #--------------------------------------------------------------------------- # Crafts Iniciais #--------------------------------------------------------------------------- # Crafts disponíveis no começo de armas # Initial_Crafts_W = [] # Crafts disponíveis no começo de armaduras # Initial_Crafts_A = [] # Crafts disponíveis no começo de itens # Initial_Crafts_I = [] #--------------------------------------------------------------------------- # Tipos dos Crafts #--------------------------------------------------------------------------- # Aqui você cria os crafts, onde você deverá colocar o id correspondente # nas notas do database. # # Aqui vai como deve configurar cada opção: # Craft[id] = [ # Substitua o id pelo id do craft que está sendo feito. # # Items = [i,i], # Coloque aqui os itens que serão necessários para o craft ser feito, são # ilimitados, separe por vírgula e coloque pelo id do item, ou por seu nome. # Obs: apenas itens são aceitos. # # Amount = [a,a] # Coloque aqui a quantidade correspondente de cada item que é necessária # para o craft ser feito. #--------------------------------------------------------------------------- Craft[0] = [ Items = [18,17], Amount = [1,1] ] Craft[1] = [ Items = [20,17,19], Amount = [3,1,1] ] #--------------------------------------------------------------------------- # * Fim das configurações #--------------------------------------------------------------------------- #--------------------------------------------------------------------------- # * Verificação se está no menu - Não mexa #--------------------------------------------------------------------------- def self.on_menu? if $on_menu.nil? return Init_In_Menu else return $on_menu end end #--------------------------------------------------------------------------- # * Colocar no menu - Não menxa #--------------------------------------------------------------------------- def self.put_on_menu $on_menu = true end end end # Registrar na variável Miguel8884 --------------------------------------------- GST.register(:Ghost_Craft_System) # ------------------------------------------------------------------------------ class RPG::BaseItem #-------------------------------------------------------------------------- # * Retorna o id dos itens necessários para o craft #-------------------------------------------------------------------------- def craft_items if @note.match(/Craft=(\d+)/im) return $1.to_i else return false end end end class Scene_CraftItems < Scene_Base #-------------------------------------------------------------------------- # * Inicialização do processo #-------------------------------------------------------------------------- def start super @sprites = [] create_background create_top_window create_craft_window create_craft_list create_craftitems create_description_window end #-------------------------------------------------------------------------- # * Atualização da tela #-------------------------------------------------------------------------- def update super @craft_items.item = party_all_items[@craft_list.index] @craft_items.draw_needed_items @des_window.item = party_all_items[@craft_list.index] @des_window.refresh @craft_window.index = @craft_list.index + 1 @craft_window.refresh update_fs_sprites end #-------------------------------------------------------------------------- # * Finalização do processo #-------------------------------------------------------------------------- def terminate super dispose_all_windows dispose_background dispose_all_fs end #-------------------------------------------------------------------------- # * Criação da janela do topo #-------------------------------------------------------------------------- def create_top_window @top_window = Window_CraftTop.new end #-------------------------------------------------------------------------- # * Criação da lista de crafts #-------------------------------------------------------------------------- def create_craft_list @craft_list = Window_CraftList.new(0,@top_window.height+@craft_window.height) @craft_list.activate @craft_list.select(0) @craft_list.set_handler(:ok,method(:on_craft_ok)) @craft_list.set_handler(:cancel,method(:on_cancel)) end #-------------------------------------------------------------------------- # * Selecionar craft #-------------------------------------------------------------------------- def on_craft_ok if craft_items_need.size < GST::ICS::Craft[@craft_list.item.craft_items][0].size Sound.play_buzzer @craft_list.activate @craft_list.select_last else GST::ICS::Craft[@craft_list.item.craft_items][0].each do |i| if i.is_a?(String) $game_party.lose_item(data_is_string[GST::ICS::Craft[@craft_list.item.craft_items][0].index(i)],GST::ICS::Craft[@craft_list.item.craft_items][1][GST::ICS::Craft[@craft_list.item.craft_items][0].index(i)]) else $game_party.lose_item($data_items[i],GST::ICS::Craft[@craft_list.item.craft_items][1][GST::ICS::Craft[@craft_list.item.craft_items][0].index(i)]) end end if GST::ICS::Success_Or_Fail GST::ICS::Craft_Fail_Chance_Variable.nil? ? var = 50 : var = $game_variables[GST::ICS::Craft_Fail_Chance_Variable]*10 if Possibilities.check(var) add_sprite_fs(26,Graphics.height-32,true) $game_party.gain_item(@craft_list.item,1) @craft_list.activate @craft_list.select_last else add_sprite_fs(26,Graphics.height-32,false) RPG::SE.new(GST::ICS::Fail_SE,100).play @craft_list.activate @craft_list.select_last end else $game_party.gain_item(@craft_list.item,1) @craft_list.activate @craft_list.select_last end end end #-------------------------------------------------------------------------- # * Cancelar #-------------------------------------------------------------------------- def on_cancel return_scene end #-------------------------------------------------------------------------- # * Verificar se a equipe possui os itens necessários para o craft #-------------------------------------------------------------------------- def craft_items_need items = [] GST::ICS::Craft[@craft_list.item.craft_items][0].each{|i| if i.is_a?(Integer) items.push(i) if $game_party.item_number($data_items[i]) >= GST::ICS::Craft[@craft_list.item.craft_items][1][GST::ICS::Craft[@craft_list.item.craft_items][0].index(i)] else items.push(i) if $game_party.item_number(data_is_string[GST::ICS::Craft[@craft_list.item.craft_items][0].index(i)]) end } return items end #-------------------------------------------------------------------------- # * Caso o id dos itens de craft seja pelo nome do item #-------------------------------------------------------------------------- def data_is_string data = [] for d in 0..GST::ICS::Craft[@craft_list.item.craft_items][0].size-1 $data_items.each{|i| unless i.nil? data.push(i) if i.name == GST::ICS::Craft[@craft_list.item.craft_items][0][d] end } end return data end #-------------------------------------------------------------------------- # * Criar janela dos dados do craft #-------------------------------------------------------------------------- def create_craftitems wx = @craft_list.width wy = @craft_window.y ww = Graphics.width - @craft_list.width wh = @craft_list.height + @craft_window.height @craft_items = Window_CraftItems.new(wx,wy,ww,wh) end #-------------------------------------------------------------------------- # * Criar janela do vocabulário dos crafts #-------------------------------------------------------------------------- def create_craft_window @craft_window = Window_CraftVocab.new(@top_window.height) end #-------------------------------------------------------------------------- # * Criar janela de descrição #-------------------------------------------------------------------------- def create_description_window wx = 0 wy = @craft_items.height + @top_window.height ww = Graphics.width wh = Graphics.height - wy @des_window = Window_CraftDescription.new(wx,wy,ww,wh) end #-------------------------------------------------------------------------- # * Apagar todas as janelas #-------------------------------------------------------------------------- def dispose_all_windows @top_window.dispose @craft_list.dispose @craft_window.dispose @craft_items.dispose @des_window.dispose end #-------------------------------------------------------------------------- # * Criar o fundo #-------------------------------------------------------------------------- def create_background if GST::ICS::Background_Image == "" @background_sprite = Sprite.new @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) else @background_sprite = Sprite.new @background_sprite.bitmap = Cache.picture(GST::ICS::Background_Image) end end #-------------------------------------------------------------------------- # * Apagar o fundo #-------------------------------------------------------------------------- def dispose_background @background_sprite.dispose end #-------------------------------------------------------------------------- # * Todos os crafts que a equipe possui #-------------------------------------------------------------------------- def party_all_items $game_party.av_craft_w + $game_party.av_craft_a + $game_party.av_craft_i end #-------------------------------------------------------------------------- # * Adicionar sprite do sistema de sucesso ou falha # x : Coordenada X # y : Coordenada Y # success : Flag de sucesso #-------------------------------------------------------------------------- def add_sprite_fs(x,y,success) @sprites.push(GST_CraftS_SF_Sprite.new(x,y,success)) end #-------------------------------------------------------------------------- # * Atualizar os sprites #-------------------------------------------------------------------------- def update_fs_sprites trash = [] @sprites.each{|i| if i.opacity > 0 i.opacity -= 3 end i.y -= 2 } @sprites.each{|p| trash.push(p) if p.disposed? @sprites.delete(p) if p.disposed? } trash.clear end #-------------------------------------------------------------------------- # * Apagar todos os sprites #-------------------------------------------------------------------------- def dispose_all_fs @sprites.each{|i| i.dispose } end end class Game_Party < Game_Unit #-------------------------------------------------------------------------- # * Variáveis públicas #-------------------------------------------------------------------------- attr_reader :av_craft_w attr_reader :av_craft_a attr_reader :av_craft_i #-------------------------------------------------------------------------- # * Alias #-------------------------------------------------------------------------- alias gst_ics_ini_c initialize #-------------------------------------------------------------------------- # * Inicialização do obejto #-------------------------------------------------------------------------- def initialize gst_ics_ini_c @av_craft_w = [] @av_craft_a = [] @av_craft_i = [] GST::ICS::Initial_Crafts_W.each{|w| @av_craft_w.push($data_weapons[w]) } GST::ICS::Initial_Crafts_A.each{|a| @av_craft_a.push($data_armors[a]) } GST::ICS::Initial_Crafts_I.each{|i| @av_craft_i.push($data_items[i]) } end #-------------------------------------------------------------------------- # * Destravar craft # type : Tipo do item (Arma, Armadura, Item) # id : Id do item no database #-------------------------------------------------------------------------- def unlock_craft(type,id) case type when 0 return if @av_craft_w.include?($data_weapons[id]) @av_craft_w.push($data_weapons[id]) when 1 return if @av_craft_a.include?($data_armors[id]) @av_craft_a.push($data_armors[id]) when 2 return if @av_craft_i.include?($data_items[id]) @av_craft_i.push($data_items[id]) end end end class Window_CraftDescription < Window_Base #-------------------------------------------------------------------------- # * Variável pública #-------------------------------------------------------------------------- attr_accessor :item #-------------------------------------------------------------------------- # * Inicialização do obejto # x : Coordenada X # y : Coordenada Y # width : Largura da janela # height : Altura da janela #-------------------------------------------------------------------------- def initialize(x,y,width,height) @item = $game_party.av_craft_w[0] super(x,y,width,height) self.opacity = GST::ICS::Windows_Opacity refresh end #-------------------------------------------------------------------------- # * Renovação #-------------------------------------------------------------------------- def refresh self.contents.clear return if @item.nil? draw_text_ex(0,0,@item.description) if GST::ICS::Show_The_Actors_Can_Use draw_actors_equip_ok unless @item.is_a?(RPG::Item) end end #-------------------------------------------------------------------------- # * Desenho dos membros que podem usar o item #-------------------------------------------------------------------------- def draw_actors_equip_ok text = "#{GST::ICS::Actor_Equip_OK} #{equips_ok}" draw_text(0,contents_height-24,contents_width,24,text) end #-------------------------------------------------------------------------- # * Forma a string dos membros que podem usar o item #-------------------------------------------------------------------------- def equips_ok text = "" acts = 0 number_ok = 0 $game_party.members.each{|i| number_ok += 1 if i.equippable?(@item) } $game_party.members.each{|p| if p.equippable?(@item) if GST::ICS::Actors_Can_Use_Prefix if acts < number_ok-2 text << "#{p.name}#{GST::ICS::Separate_Actors_By}" acts += 1 elsif acts == number_ok-1 text << p.name elsif acts == number_ok-2 text << "#{p.name} #{GST::ICS::Prefix_Ant_Last_Actor}" acts += 1 end else unless acts == number_ok-1 text << "#{p.name}#{GST::ICS::Separate_Actors_By}" acts += 1 else text << p.name end end end } if number_ok == 0 text = GST::ICS::Nobody_Can_Use end return text end end class Window_CraftVocab < Window_Base #-------------------------------------------------------------------------- # * Variável pública #-------------------------------------------------------------------------- attr_accessor :index #-------------------------------------------------------------------------- # * Inicialização do obejto # y : Coordenada Y #-------------------------------------------------------------------------- def initialize(y) @index = 1 super(0,y,Graphics.width - 260,fitting_height(1)) self.opacity = GST::ICS::Windows_Opacity refresh end #-------------------------------------------------------------------------- # * Renovação #-------------------------------------------------------------------------- def refresh self.contents.clear if GST::ICS::Show_Crafts_Amount draw_text(0,0,contents_width,24,"#{@index}/#{party_all_items.size}",2) end draw_icon(GST::ICS::Craft_Icon,0,0) draw_text(32,0,contents_width-32,24,GST::ICS::Craft_Vocab) end #-------------------------------------------------------------------------- # * Todos os crafts que a equipe possui #-------------------------------------------------------------------------- def party_all_items $game_party.av_craft_w + $game_party.av_craft_a + $game_party.av_craft_i end end class Window_CraftTop < Window_Base #-------------------------------------------------------------------------- # * Inicialização do obejto #-------------------------------------------------------------------------- def initialize super(0,0,Graphics.width,fitting_height(1)) self.opacity = GST::ICS::Windows_Opacity draw_text(-10,0,Graphics.width,24,GST::ICS::Top_Craft_Vocab,1) end end class Window_CraftList < Window_Selectable #-------------------------------------------------------------------------- # * Inicialização do objeto # x : coordenada X # y : coordenada Y #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, window_width, window_height) self.opacity = GST::ICS::Windows_Opacity @pending_index = -1 refresh end #-------------------------------------------------------------------------- # * Aquisição da largura da janela #-------------------------------------------------------------------------- def window_width Graphics.width - 260 end #-------------------------------------------------------------------------- # * Aquisição da altura da janela #-------------------------------------------------------------------------- def window_height Graphics.height - 96 - fitting_height(3) end #-------------------------------------------------------------------------- # * Aquisição do número máximo de itens #-------------------------------------------------------------------------- def item_max return party.av_craft_w.size + party.av_craft_a.size + party.av_craft_i.size end #-------------------------------------------------------------------------- # * Aquisição de altura do item #-------------------------------------------------------------------------- def item_height 24 end #-------------------------------------------------------------------------- # * Desenho de um item # index : índice do item #-------------------------------------------------------------------------- def draw_item(index) draw_icon(all_items[index].icon_index,0,(index*24)) draw_text(24,(index*24),contents_width,24,all_items[index].name) if GST::ICS::Show_Item_Icon_Select if all_items[index].is_a?(RPG::Weapon) draw_icon(GST::ICS::Weapon_Icon,contents_width-24,(index*24)) elsif all_items[index].is_a?(RPG::Armor) draw_icon(GST::ICS::Armor_Icon,contents_width-24,(index*24)) elsif all_items[index].is_a?(RPG::Item) draw_icon(GST::ICS::Item_Icon,contents_width-24,(index*24)) end end end #-------------------------------------------------------------------------- # * Item atual selecionado #-------------------------------------------------------------------------- def item all_items[index] end #-------------------------------------------------------------------------- # * Todos os itens #-------------------------------------------------------------------------- def all_items party.av_craft_w + party.av_craft_a + party.av_craft_i end #-------------------------------------------------------------------------- # * Retorno à seleção anterior #-------------------------------------------------------------------------- def select_last select(index) end #-------------------------------------------------------------------------- # * Equipe em questão #-------------------------------------------------------------------------- def party $game_party end end class Window_CraftItems < Window_Base #-------------------------------------------------------------------------- # * Variável pública #-------------------------------------------------------------------------- attr_accessor :item #-------------------------------------------------------------------------- # * Inicialização do obejto # x : Coordenada X # y : Coordenada Y # width : Largura da janela # height : Altura da janela #-------------------------------------------------------------------------- def initialize(x,y,width,height) @item = $game_party.av_craft_w[0] super(x,y,width,height) self.opacity = GST::ICS::Windows_Opacity draw_needed_items end #-------------------------------------------------------------------------- # * Desenhar os itens necessários #-------------------------------------------------------------------------- def draw_needed_items self.contents.clear return if @item.nil? draw_icon(GST::ICS::Necessary_Item_Icon,0,24) draw_text(24,24,contents_width - 24,24,GST::ICS::Necessary_Item_Vocab) unless @item.is_a?(RPG::Item) if GST::ICS::Show_Overall item_overall = (@item.params[0].to_f+@item.params[1].to_f+@item.params[2].to_f+@item.params[3].to_f+@item.params[4].to_f+@item.params[5].to_f+@item.params[6].to_f+@item.params[7].to_f)/8.to_f draw_text(0,0,contents_width,24,"#{GST::ICS::Overall_Vocab} #{item_overall}",2) end end draw_horz_line(40) case @item when RPG::Weapon draw_icon(GST::ICS::Weapon_Icon,0,0) draw_text(24,0,contents_width - 24,24,$data_system.terms.etypes[@item.etype_id]) when RPG::Armor draw_icon(GST::ICS::Armor_Icon,0,0) draw_text(24,0,contents_width - 24,24,$data_system.terms.etypes[@item.etype_id]) when RPG::Item draw_icon(GST::ICS::Item_Icon,0,0) draw_text(24,0,contents_width - 24,24,Vocab.item) end craft_items.size.times{|i| draw_item(i) } if GST::ICS::Show_Item_Params www = 50 4.times{|t| draw_black_block(t*(www+10),contents_height-24,www) } draw_item_data unless @item.is_a?(RPG::Item) draw_item_params else draw_item_nil end end end #-------------------------------------------------------------------------- # * Desenhar os parâmetros do item #-------------------------------------------------------------------------- def draw_item_params change_color(GST::ICS::Green_Color) draw_text(10,contents_height-24,24,24,@item.params[2]) draw_text(70,contents_height-24,24,24,@item.params[3]) draw_text(130,contents_height-24,24,24,@item.params[0]) draw_text(190,contents_height-24,24,24,@item.params[1]) change_color(normal_color) end #-------------------------------------------------------------------------- # * Desenhar item quando não for arma nem armadura #-------------------------------------------------------------------------- def draw_item_nil change_color(GST::ICS::Gray_Color) draw_text(10,contents_height-24,24,24,0) draw_text(70,contents_height-24,24,24,0) draw_text(130,contents_height-24,24,24,0) draw_text(190,contents_height-24,24,24,0) change_color(normal_color) end #-------------------------------------------------------------------------- # * Desenhar o item #-------------------------------------------------------------------------- def draw_item(index) draw_horz_line(86+(index*30)) draw_icon(craft_data(index).icon_index,0,72+(30*index)) draw_text(24,72+(30*index),contents_width - 50,24,craft_data(index).name) critem = @item.craft_items if $game_party.item_number(craft_data(index)) >= GST::ICS::Craft[critem][1][index] and GST::ICS::Show_OK_Items change_color(GST::ICS::Green_Color) draw_text(0,72+(index*30),contents_width,24,GST::ICS::OK_Vocab,2) change_color(normal_color) else draw_text(0,72+(index*30),contents_width,24,"#{$game_party.item_number(craft_data(index))}/#{GST::ICS::Craft[critem][1][index]}",2) end end #-------------------------------------------------------------------------- # * Desenhar os vocabulários dos parâmetros do item #-------------------------------------------------------------------------- def draw_item_data draw_text(10,contents_height-40,40,24,GST::ICS::Attack_Abreviation) draw_text(70,contents_height-40,40,24,GST::ICS::Defense_Abreviation) draw_text(130,contents_height-40,40,24,Vocab.hp_a) draw_text(190,contents_height-40,40,24,Vocab.mp_a) end #-------------------------------------------------------------------------- # * Itens necessários para o craft #-------------------------------------------------------------------------- def craft_items if @item.craft_items != false GST::ICS::Craft[@item.craft_items][0] else return 0 end end #-------------------------------------------------------------------------- # * Dado de um item de craft a partir do index #-------------------------------------------------------------------------- def craft_data(index) if @item.craft_items != false if craft_items[index].is_a?(String) data_is_string[index] else $data_items[craft_items[index]] end else return nil end end #-------------------------------------------------------------------------- # * Caso o id dos itens de craft seja pelo nome do item #-------------------------------------------------------------------------- def data_is_string data = [] for d in 0..GST::ICS::Craft[@item.craft_items][0].size-1 $data_items.each{|i| unless i.nil? data.push(i) if i.name == GST::ICS::Craft[@item.craft_items][0][d] end } end return data end #-------------------------------------------------------------------------- # * Desenho de linha horizontal #-------------------------------------------------------------------------- def draw_horz_line(y) line_y = y + line_height / 2 - 1 contents.fill_rect(0, line_y, contents_width, 2, Color.new(255,255,255,200)) end #-------------------------------------------------------------------------- # * Desenhar bloco preto #-------------------------------------------------------------------------- def draw_black_block(x,y,width) height = 30 contents.fill_rect(x,y-6,width,height,Color.new(0,0,0,50)) end end class Window_MenuCommand < Window_Command #-------------------------------------------------------------------------- # * Alias #-------------------------------------------------------------------------- alias gst_menu_craft_mgst_main add_main_commands #-------------------------------------------------------------------------- # * Adição dos comandos principais #-------------------------------------------------------------------------- def add_main_commands gst_menu_craft_mgst_main if GST::ICS.on_menu? add_command(GST::ICS::Menu_Vocab,:craft) end end end class Scene_Menu < Scene_MenuBase #-------------------------------------------------------------------------- # * Alias #-------------------------------------------------------------------------- alias gst_menu_craft_mgst_createcw create_command_window #-------------------------------------------------------------------------- # * Criação da janela de comando #-------------------------------------------------------------------------- def create_command_window gst_menu_craft_mgst_createcw if GST::ICS.on_menu? @command_window.set_handler(:craft,method(:call_craft_scene)) end end #-------------------------------------------------------------------------- # * Comando [Craft] #-------------------------------------------------------------------------- def call_craft_scene SceneManager.call(Scene_CraftItems) end end module Possibilities # Checar percentual # def self.check(percent) percent + rand(100) >= 100 end end class GST_CraftS_SF_Sprite < Sprite #-------------------------------------------------------------------------- # * Inicialização do objeto #-------------------------------------------------------------------------- def initialize(x,y,success) super(nil) self.bitmap = Bitmap.new(200,24) self.bitmap.font.color = GST::ICS::Green_Color if success self.bitmap.font.color = GST::ICS::Red_Color unless success self.bitmap.draw_text(0,0,200,24,GST::ICS::Success_Vocab,1) if success self.bitmap.draw_text(0,0,200,24,GST::ICS::Fail_Vocab,1) unless success self.z = 120 self.x = x self.y = y end #-------------------------------------------------------------------------- # * Apagar objeto #-------------------------------------------------------------------------- def dispose self.bitmap.dispose super end end # Fim do script # # Miguel88884 ☺ #