Sei sulla pagina 1di 5

########################################################### #################### LIVRO DE ITENS ####################### #### V 1.0.

2 ############################################## ################################### Por: LB ############### ########################################################### #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # PESANTEMENTE MODIFICATO DA giver (con Commenti al codice) j2010-09-11 #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # L'immagine, se si inserisce solo il nome del file, credo debba trovarsi nella # cartella principale del progetto (Ribadisco una volta di pi che non ho il VX) # Si pu indicare una sottocartella inserendone il nome seguito da una / # Es. BACK_LITENS = "sottocartella/litens bg" BACK_LITENS = "" class Scene_LItens < Scene_Base # def start super create_menu_background # Crea finestra con lista degli oggetti conosciuti @window_items = Window_LItens.new(228,416) # Crea finestra per mostrare i dati dell'oggetto selezionato @window_infos = Window_Base.new(228,0,316,416) # Se presente un fondale, elimina la struttura delle finestre e lo disegna if BACK_LITENS != "" @window_items.opacity = 0 @window_infos.opacity = 0 @window_items.z = 1 @window_infos.z = 1 @back = Sprite.new @back.bitmap = Bitmap.new(BACK_LITENS) end # Verifica quanti oggetti sono conosciuti (inclusi nel Catalogo) b = 0 # Scorre la lista dove indicato quali oggetti si conoscono # dal secondo elemento (0 + 1) all'ultimo ($data_items2.size - 2 + 1) # e conta quelli che risultano conosciuti for i in 0...$data_items2.size - 1 # +0 if $data_items2[i + 1] == true b += 1 end end # Se non ci sono oggetti conosciuti if b == 0 # Mette una flag a false @t = false # Imposta la lista degli oggetti vuota affinch non mostri il cursore @window_items.index = -1 # Crea una terza finestra, dove avvisa dell'indisponibilit di informazioni # e che per uscire da questa Scene bisogna premere ESC @window_info = Window_Base.new(261,180,250,128) @window_info.contents.draw_text(0, 0, 218, 24, "Voc no conhece", 1) @window_info.contents.draw_text(0, 24, 218, 24, "nenhum item", 1) @window_info.contents.draw_text(0, 72, 218, 24, "Precione ESC para sair", 1) else # (se invece ci sono oggetti conosciuti) # Mette una flag a true @t = true

# Aggiorna i dati a disposizione e mostra quelli dell'oggetto selezionato # attraverso def update_info (vedi) update_info # Crea una terza finestra e la nasconde @window_info = Window_Base.new(261,180,250,128) @window_info.visible = false end end # def update super update_menu_background @window_items.update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.repeat?(Input::DOWN) and @t # Se Freccia-Gi viene premuto e la flag @t true # aggiorna i dati a disposizione e mostra quelli dell'oggetto selezionato # attraverso def update_info (vedi) update_info elsif Input.repeat?(Input::UP) and @t # Se Freccia-Su viene premuto e la flag @t true # aggiorna i dati a disposizione e mostra quelli dell'oggetto selezionato # attraverso def update_info (vedi) update_info end end # def terminate super dispose_menu_background @window_info.dispose @window_items.dispose @window_infos.dispose # Se stato usato un fondale personalizzato, lo elimina if BACK_LITENS != "" @back.dispose end end # def update_info # La variabile @a viene impostata come Array vuoto @a = [] # Scorre la lista dove indicato quali oggetti si conoscono # e, quando ne individua uno, ne inserisce l'indice in @a b = 0 for i in 0...$data_items2.size - 1 # +0 if $data_items2[i + 1] == true @a[b] = i + 1 b += 1 end end @window_infos.contents.clear # Prende dal DataBase l'oggetto selezionato nella finestra con la lista # degli Oggetti Conosciuti, e ne mostra i dati item = $data_items[@a[@window_items.index]] @window_infos.contents.font.color = @window_infos.normal_color @window_infos.contents.draw_text(0, 24 * 0, 284, 24, "Nome: " + item.name.to _s)

@window_infos.contents.draw_text(0, 24 * 1, 284, 24, item.description.to_s) @window_infos.contents.draw_text(0, 24 * 2, 284, 24, "Valor: " + item.price. to_s) cx = @window_infos.contents.text_size("Valor: " + item.price.to_s).width @window_infos.contents.draw_text(cx, 24 * 2, 284, 24, " " + Vocab::gold) hp = "Recuperao de HP: " + item.hp_recovery.to_s + " + " + item.hp_recovery_rate.to_s + "%" mp = "Recuperao de MP: " + item.mp_recovery.to_s + " + " + item.mp_recovery_rate.to_s + "%" @window_infos.contents.draw_text(0, 24 * 4, 284, 24, hp) @window_infos.contents.draw_text(0, 24 * 5, 284, 24, mp) if item.parameter_type > 0 parameter = ["","o HP Max","o MP Max","o Ataque","a Defesa","a Agilidade", "a Inteligencia"] text = "Almenta " + parameter[item.parameter_type] + " em " + item.parameter_points.to_s + " pontos" else text = "No modifica atributos" end @window_infos.contents.draw_text(0, 24 * 7, 284, 24, text) # Elenco dei possibili Bersagliamenti scopes = ["Nenhum","Um inimigo","Grupo de inimigos","Prximo inimigo", "Um inimigo aleatrio","Dois inimigos aleatrios", "Trs inimigos aleatrios","Um aliado","Grupo de personagens", "Um aliado morto","Todos os personagens mortos","Heri"] text = "Afeta: " + scopes[item.scope] @window_infos.contents.draw_text(0, 24 * 9, 284, 24, text) occasions = ["Batalha e menu","Apenas batalha","Apenas menu","No usvel"] text = "Usvel em: " + occasions[item.occasion] @window_infos.contents.draw_text(0, 24 * 10, 284, 24, text) sn = item.consumable ? "Sim" : "No" @window_infos.contents.draw_text(0, 24 * 12, 284, 24, "Consumivel? " + sn) @window_infos.contents.draw_text(0, 24 * 15, 284, 24, "Precione ESC para sai r") end # end # class Scene_Title < Scene_Base # Aggiunge funzioni al def command_new_game di Scene_Title alias litens command_new_game def command_new_game # Chiama la versione originale del Metodo command_new_game litens # Prepara una lista in cui verr segnato quali oggetti sono conosciuti # e se i loro dati saranno quindi consultabili # La inizializza indicando che tutti gli oggetti sono sconosciuti # # Il primo elemento nil, come nel DataBase $data_items2 = [nil] # Tutti gli altri elementi vengono impostati a false for i in 1...$data_items.size # - 1 $data_items2[i] = false end end # end # class Window_LItens < Window_Selectable #

def initialize(width, height) super(0, 0, width, height) # La lista dei comandi diventa uguale a quella che indica se # un oggetto conosciuto o meno # Comunque, non vengono usati nell'elaborazione dei dati nella finestra @commands = $data_items2 # Ma essendo nil il primo elemento, i comandi mostrati saranno uno in meno @item_max = @commands.size - 1 # + 0 @column_max = 1 self.contents = Bitmap.new(width-32, @item_max * 24) # @commands.size*24 ) refresh self.index = 0 if @item_max > 0 end # def refresh self.contents.clear # @a il contatore dei comandi effettivamente presenti nella finestra @a = 0 # Scorre (ancora) la lista che indica se un oggetto conosciuto o meno, # e disegna il nome dell'oggetto se risulta conosciuto for i in 0...@item_max if $data_items2[i + 1] == true draw_item(i) @a += 1 end end # Aggiusta l'indice massimo della lista dei comandi # per gestire correttamente il cursore nella finestra @item_max = @a end # def draw_item(index, enabled = true) # Verifica qual la posizione in cui scrivere a seconda di dove si # trova la voce nella lista dei "comandi" rect = item_rect(@a) # Cancella il contenuto eventualmente presente nella posizione di cui sopra self.contents.clear_rect(rect) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 draw_item_name($data_items[index + 1], rect.x, rect.y) end # end # class Game_Party < Game_Unit # Questo metodo stato completamente sovrascritto per # aggiungere una singola istruzione def gain_item(item, n, include_equip = false) number = item_number(item) case item when RPG::Item @items[item.id] = [[number + n, 0].max, 99].min $data_items2[item.id] = true # L'Oggetto diventa "conosciuto" when RPG::Weapon @weapons[item.id] = [[number + n, 0].max, 99].min when RPG::Armor @armors[item.id] = [[number + n, 0].max, 99].min end n += number

if include_equip and n < 0 for actor in members while n < 0 and actor.equips.include?(item) actor.discard_equip(item) n += 1 end end end end # end