-
Posts
17 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by bisba94
-
-
Su Amazon lo mette disponibile dal 4 Ottobre... Spesso sono date a caso ma spero sia realmente così!
Ho ancora l'edizione speciale della versione per GameCube... Uno dei migliori Zelda mai fatto... Ho passato davvero tanto tempo a vagare per il mare!
Sono molto tentato di prenderlo... Se ci dovessero essere novità interessanti probabilmente sarà mio!
-
Sì è una buona soluzione... Però mi sembra un processo abbastanza macchinoso per l'utente finale, preferivo fare qualcosa di più semplice e automatico!
[EDIT]
Addon per inserire sfondi diversi per ogni categoria!
Richiede la nuova versione che troverete insieme all'addon nel primo post :)
-
È un'impresa scriptare con l'XP @.@
Il problema è che tu richiami dall'evento direttamente la finestra... Invece devi chiamare un'altra classe che gestisca la finestra.
La seconda classe deve contenere solo il main e i processi di unpdate, mentre la prima (la window) solo il codice per far apparire il testo nella finestra.
Perciò il codice deve essere qualcosa del genere:
class Finestra_Sega < Window_Base def initialize super (0,0, 636, 476) @testo = "Leggi Questo" self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Arial" self.contents.font.size = 22 self.contents.draw_text( 30, 30, self.width-24, self.height-24, @testo) end end class Scene_Prova def main @finestra = Finestra_Sega.new Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end @finestra.dispose end def update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end end -
Non è possibile inserire un mostro in due categorie differenti in quanto non era stata pensata questa caratteristica nello script originario, ma dovrebbe essere abbastanza semplice cambiare questa opzione.
Per quanto riguarda la categoria "tutti" è qualcosa che intendevo fare già da un po', ma ci sono dei problemi nell'attuarlo causati dal modo in cui ho gestito le categorie, quindi sto cercando una soluzione alternativa invece di riscrivere metà script :)
Vi farò sapere quando ci saranno aggiornamenti, farò del mio meglio!
-
Sono stato pieno di impegni negli ultimi giorni... (Qualcuno ha detto Pikmin 3? :D)
Questa mattina ho ricevuto una richiesta di inserire uno sfondo custom allo script. Quindi ho aggiornato aggiungendo questa possibilità.
Lo script aggiornato alla versione 1.1.2 è nel primo post e al suo interno sono presenti le nuove istruzioni per questa feature!
Per le altre novità che sto preparando presto arriveranno, ma come ho già detto... Sono stati giorni impegnativi :D
-
leggo nel primo post dello script che vuoi fare una seconda versione più potente. E' un messaggio obsoleto o ancora hai da aggiungere modifiche sostanziali? :3
Se la modifica che vuoi fare è radicale, non puoi chiedere due volte i rens per questo script.
Fammi sapere se vuoi i rens ora o quando avrai finito di aggiornarlo ed aggiungerci cose. Io posso valutarlo una volta sola, perciò a te la libera scelta.
Il messaggio si riferiva alla primissima versione (quella della demo), in ogni caso ci sono un paio di feature che pensavo di aggiungere... Quindi aspetto!
Quando è aggiornato devo scrivere qua o fare un altro post nell'altro topic?
-
Qualche soldino per il mio primo script?
http://www.rpg2s.net/forum/index.php/topic/17380-bestiario-con-categorie/
-
Complimenti è uno script davvero utile!
Potrebbe essere carino poter visualizzare il progresso dell'obiettivo... Così un giocatore sa quante altre volte deve ripetere un'azione prima di sbloccare l'obiettivo, come si vede in molti giochi commerciali con una barra...
-
Credo sia un limite di Window_HorzCommand... Ho fatto un paio di prove e mostra al massimo il doppio di quel valore...
In ogni caso è un bug risolvibile, devo solo capire come ;)
[edit]
Ok ho trovato. Nel primo post ho messo la versione aggiornata, altrimenti è sufficiente inserire questo codice
def top_col=(col) col = 0 if col < 0 col = CATEGORIE.length - 1 if col > CATEGORIE.length - 1 self.ox = col * (item_width + spacing) end #top_colall'interno della classe Window_BestiaryCategory.
Ho provato mettendo COL_MAX molto più grande e molto più piccolo del numero di categorie, se c'è ancora qualcosa che non va fammi sapere!
-
Sì, hai ragione, è il salvataggio (ed è già sul secondo script che mi becco 'st'errore ^^;;; forse dovrei imparare a smettere di usare i salvataggi).
Comunque, io volevo inserire l'abilità di "scan" nel gioco, e mi piacerebbe che il bestiaro non vedesse subito le statistiche dei nemici incontrati.
Per dire, combatto contro un mostro a cui non ho fatto scan, compare nel bestiario, ma al posto delle statistiche del mostro ci sia solo "???", nel caso che abbia fatto lo scan invece si vedrebbe tutto.
E magari una tag per una descrizione del mostro non sarebbe malvagia ^^
[EDIT]
Se metto molte categorie mi accorcia il nome (ne ho messe 14 e invece di scrivere "Bestie" scive "Besti"), non c'è modo di fare in modo che siano a scorrimento?
Sono due feature che avevo pensato di inserire... La prima gestirla attraverso Switch o Oggetti (ma con un addon si può rendere compatibile con uno script di scan) la seconda è un work in progress di un futuro prossimo!
Per quanto riguarda il problema credo tu abbia impostato "COL_MAX = 14" e in effetti per come l'ho descritto è la cosa più ovvia da fare, però in realtà quello è il numero di categorie mostrate contemporaneamente su schermo, quindi se metti un numero più basso ci sarà lo scorrimento!
-
Non so se è un conflitto con altri scipt, ma mi da questo errore:
http://img838.imageshack.us/img838/1815/owo9.png
Ho fatto un paio di prove... Hai per caso inserito lo script e poi caricato un salvataggio vecchio? Se la risposta è sì dovrebbe essere sufficiente creare una nuova partita, altrimenti indagherò più a fondo!
-
Veramente molto interessante, mi piacerebbe poterlo mettere tipo key item un libro su cui far aprire il bestiario (e quando se ne esce tornare al menù degli oggetti).
Purtroppo però non mi fa vedere gli screen, ma ho scaricato la demo ^^
Mi fa piacere che qualcuno apprezzi :D
Per fare quello che dici tu basta mettere
SceneManager.call(Scene_Bestiary)
in un call script di un evento comune e fare in modo che un oggetto richiami l'evento... Però per ritornare al menù degli oggetti non ho idea di come fare :/
Per quanto riguarda gli screen non capisco... A me quei link funzionano...
Ne approfitto per dire che ho aggiornato lo script! Ho implementato l'utilizzo dei NoteTag per le categorie e i mostri esclusi, inoltre ora c'è la possibilità di inserire più di 4 categorie! Purtroppo non ho preparato nessuna demo per l'occasione, ma il codice nuovo è già nel primo post!
-
Automatico non saprei neanche come farlo :D
Penso sfrutterò i tag dal db dei mostri, mi sembra la cosa più comoda... Vedo se riesco a cavarci qualcosa!
-
Non avevo pensato a una suddivisione per regioni, però è una buona idea... Provo a realizzare qualcosa del genere!
-
B94 - Bestiario con categorie Aggionamento! v1.1.3 (02/08)
Descrizione
Script per creare un bestiario con i mostri organizzati per categorie predefinite.
Autore
Bisba94
Allegati
Demo v1.0 - Devo ancora preparare la demo aggiornata!
Screen
http://i42.tinypic.com/p0eqg.png
http://i42.tinypic.com/2ro6kg7.png
http://i44.tinypic.com/2qn9lp4.png
Istruzioni per l'usoInserite lo script sotto Materials prima di Main.
La nuova finestra si può aprire direttamente dal menù.
Nella prima parte dello script sono presenti opzioni modificabili.
Per gestire i mostri che non appariranno nel bestiario e la suddivisione in categorie si utilizzano i notebox del database (Maggiori dettagli all'inizio dello script)
Script
#=============================================================================== # Titolo: B94 - Bestiario con Categorie # Versione: 1.1.3 # Autore: Bisba94 #------------------------------------------------------------------------------- # Riepilogo versioni: # - 1.1.3 (02/08/13): - Compatibilità con Add-on sfondi multipli # - 1.1.2 (30/07/13): - Aggiunta la possibilità di inserire uno sfondo al bestiario # - 1.1.1 (25/07/13): - Fixato un bug nella visualizzazione delle categorie # - 1.1 (24/07/13): - Utilizzo di Notetag per gestire le categorie dei mostri e mostri esclusi # - Possibilità di inserire più di quattro categorie # - Codice e impostazioni utente leggermente semplificati # - 1.0 (23/07/13) Realase iniziale #------------------------------------------------------------------------------- # Condizioni d'uso: # - Siete liberi di utilizzare questo script in qualunque progetto commerciale o # non commerciale, chiedo solo di essere citato fra i Crediti. # - Siete liberi di pubblicare questo script su qualunque community a patto che # vengano citati l'autore e la provenienza # - Lo Script può essere modificato per utilizzo personale e pubblicato nella # nuova versione a patto che vengano citati l'autore del lavoro originale e la provenienza #------------------------------------------------------------------------------- # Istruzioni: # - Incollare sotto Materials prima di Main # - Apparirà una nuova voce nel menù per accedere al Bestiario (è possibile rimuoverla) # - Modificate le impostazioni fin dove è segnato, non modificate nulla dello # script se non sapete cosa state facendo. # # PER ESCLUDERE UN MOSTRO DAL BESTIARIO inserite # <nobestiario> # in una nuova riga nello spazio riservato alle note nel database # # PER INCLUDERE UN MOSTRO IN UNA CATEGORIA inserite # <categoria: x> # in una nuova riga nello spazio riservato alle note del database # x deve essere il numero della categoria (il conteggio parte da 0) # in caso non ci sia alcun tag il mostro verrà assegnato alla categoria 0 #------------------------------------------------------------------------------- # Contatti: # - Per qualunque informazione, segnalazione, richiesta o altro scrivete a: # bisba1994@live.it #=============================================================================== $imported = {} if $imported.nil? # Non modificare queste linee $imported["B94-Bestiario"] = false # Non modificare queste linee module Bestiario # PARTE MODIFICABILE # Nome: Il nome della categoria # :symbolo: può essere qualunque parola preceduta da : (è necessario che siano diverse) # cifre max: Il numero di cifre nella lista dei mostri. Se è 0 appare il numero # senza zeri davanti # cap sconfitti: Numero massimo di mostri sconfitti segnati per ogni categoria. # Se è 0 non c'è alcun limite. # NOME :simbolo cifre max cap sconfitti CATEGORIE = [ ["Spiaggia", :spiaggia, 2, 5], ["Mare", :mare, 2, 3], ["Bosco", :bosco, 1, 1], ["Montagna", :montagna, 1, 1], ["Vulcano", :vulcano, 0, 1] ] MENU_COMMAND = "Bestiario" # Nome del Comando che apparirà nel menù SWITCH_MENU_ATTIVATO = 0 # Switch per attivare il comando nel menù # (se si imposta 0 è sempre attivo) COL_MAX = 3 #Numero massimo di categorie contemporanee SCONOSCIUTO = "?????????" # Nome visualizzato per i mostri non ancora sconfitti # Icone degli elementi da visualizzare nel bestiario ICONE_ELEMENTI = {3 => 96, 4 => 97, 5 => 98, 6 => 99, 7 => 100, 8 => 101, 9 => 102, 10 => 103 } # NON CANCELLARE CONFRONTO_STAT = true # true: mostra una barra che si riempie al crescere delle statistiche #Colore barre delle statistiche. # 'Statistica' => id colore # 0: PV 1: PM 2: ATT 3: DIF 4: ATTM 5: DIFM 6: AGI 7: FORT COLORE_STATISTICHE = { 0=>0, 1=> 1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7} COLORE_RESISTENZA = 10 # Colore attribuito alle resistenze del mostro COLORE_DEBOLEZZA = 11 # Colore attribuito alle debolezze del mostro COLORE_NULLO = 7 # Colore attribuito agli elementi che provocano danni nulli COLORE_CAP = 11 # Colore numero mostri sconfitti massimo COLORE_BARRA1 = 4 # Colore iniziale barra di completamento COLORE_BARRA2 = 12 # Colore finale barra di completamento SWITCH_COMPLETAMENTO = 1 # Switch che quando è ON attiva la visualizzazione delle # statistiche di completamento del Bestiario (Lista di tutti # i mostri e percentuale di completamento). Se impostata su 0 # la visualizzazione sarà sempre attiva. NOME_SPRITE = "" # Testo aggiuntivo per inidicare gli sprite dei nemici che # appariranno nel bestiario. # ES: inserendo "_B" il programma cercherà nella cartella battlers # il file "Mostro_B" invece di "Mostro" usato dal database MOSTRA_INCONTRI = true # true: mostra il numero di nemici sconfitti SCONFITTI = "Sconfitti" # Testo per i nemici sconfitti EXP_NAME = "Esperienza" # Testo per il nome dei punti esperienza TOT_INCONTRATI = "Mostri Incontrati" TOT_SCONFITTI = "Mostri Sconfitti" TOT_DANNI = "Danni Inflitti" # Lista dei titolo ottenibili # no. % col titolo TITOLI = { 1 => [ 0, 1, "Principiante"], 2 => [ 20, 2, "Intermedio"], 3 => [ 50, 3, "Esperto"], 4 => [ 80, 4, "Maestro"], 5 => [100, 5, "IL Cacciatore"] } # NON CANCELLARE SFONDO = true #true imposta un'immagine come sfondo al bestiario SFONDO_BEST = "Wallpaper" #File dell'immagine di sfondo del bestiario. Deve trovarsi #nella cartella "Graphics/System" del gioco. SFONDO_ESTENSIONE = ".jpg" #Tipo di file dell'immagine. Necessario se si usa # il Wallpaper EX di Moghunter TRASPARENZA_SFONDO = 0 #Valore fra 0 e 255 di opacità delle finestre del bestiario. #(0: completamente trasparente, 255: completamente opaco) # FINE PARTE MODIFICABILE!! def self.create_enemies_array mostri = [] for i in 0..$data_enemies.length if escluso?(i) mostri[i] = nil else mostri.push($data_enemies[i].id) end #if end #for return mostri end #create_enemies_array def self.escluso?(i) return true if $data_enemies[i].nil? stringa = $data_enemies[i].note stringa.each_line do |riga| return true if riga.match(/<(?:nobestiario|NOBESTIARIO|Nobestiario)>/) end #do return false end #escluso? def self.get_symbol(id) CATEGORIE[id][1] end #get_symbol def self.get_cifre(id) CATEGORIE[id][2] end #get_cifre def self.get_cap(id) CATEGORIE[id][3] end #get_cap end #=============================================================================== # Window_Bestairy_Category (Nuova Classe) #=============================================================================== class Window_Bestiary_Category < Window_HorzCommand include Bestiario def initialize super(0,0) end #initialize def col_max return COL_MAX end def window_width Graphics.width end #window_width def top_col=(col) col = 0 if col < 0 col = CATEGORIE.length - 1 if col > CATEGORIE.length - 1 self.ox = col * (item_width + spacing) end #top_col def update super @list_window.category = self.index if @list_window end #update def make_command_list CATEGORIE.each_index do |i| add_command(CATEGORIE[i][0], CATEGORIE[i][1]) end #do end #make_command_list def list_window=(list_window) @list_window = list_window update end #list_window= end #Window_Bestiary_Category #=============================================================================== # Window_Bestiary_List (Nuova Classe) #=============================================================================== class Window_Bestiary_List < Window_Command include Bestiario def initialize(id) @id_symbol = id @symbol = Bestiario.get_symbol(@id_symbol) super(0,48) end #initialize def window_width return Graphics.width / 2 end #window_width def window_height return Graphics.height - 48 end #window_height def category=(id) return if @id_symbol == id @id_symbol = id @symbol = Bestiario.get_symbol(@id_symbol) refresh self.index = 0 end #category= def enemy_name(index) enemy = $data_enemies[index] return enemy.name end #enemy_name def id_for_list(index) return @enemies[index] end #id_for_list def select_symbol mantain_enemies end #select_symbol def mantain_enemies @enemies.each_index do |i| next if @enemies[i].nil? @enemies[i] = nil if @symbol != categoria?(i) end #do end #mantain_enemies def categoria?(i) stringa = get_note(i) stringa.each_line do |linea| if linea.match(/<(?:CATEGORIA|Categoria|categoria):[ ]*(\d+)>/i) return Bestiario.get_symbol(0) if $1.to_i > (CATEGORIE.length - 1) return Bestiario.get_symbol($1.to_i) end end #do return Bestiario.get_symbol(0) end #categoria? def get_note(i) $data_enemies[i].note end def make_command_list @enemies = Bestiario.create_enemies_array select_symbol @enemies.compact! n = 0 @enemies.each_index do |i| @enemies[i] = nil if !$game_party.incontrato?(@enemies[i]) and !$game_switches[SWITCH_COMPLETAMENTO] and SWITCH_COMPLETAMENTO != 0 next if @enemies[i] == nil n += 1 num = zeri(n) enabled = $game_party.sconfitto?(@enemies[i]) $game_party.incontrato?(@enemies[i]) ? name = enemy_name(@enemies[i]) : name = SCONOSCIUTO add_command(num + ": " + name, :mostro, enabled) end #do @enemies.compact! end #make_command_list def zeri(i) istr = i.to_s until istr.size >= Bestiario.get_cifre(@id_symbol) istr = "0" + istr end #until return istr end #zeri end #Window_Bestiary_List #=============================================================================== # Window_Bestiary_Progress (Nuova Classe) #=============================================================================== class Window_Bestiary_Progress < Window_Base include Bestiario def initialize @sconfitti = 0 @tot_sconfitti = 0 @percentuale = 0 # @danni = 0 @incontrati = 0 @tot_incontrati = 0 super(window_width, 48, window_width, window_height) totale_mostri_sconfitti draw_completamento draw_horz_line(0,line_height*3, window_width - 24) draw_info_inutili(0, line_height*4) draw_horz_line(0,line_height*9, window_width - 24) draw_titolo(0,line_height*10) end #initialize def draw_completamento change_color(system_color) draw_text(0,0,window_width - 24, line_height, "Completamento") change_color(normal_color) contents.fill_rect(0,(line_height*2) + 2, window_width - 24, line_height - 4, Color.new(0,0,0,200)) contents.fill_rect(2,(line_height*2) + 4, window_width - 28, line_height - 8, Color.new(0,0,0,80)) if $game_switches[SWITCH_COMPLETAMENTO] or SWITCH_COMPLETAMENTO == 0 draw_text(0,0,window_width - 24, line_height, sprintf("%.2f%", @percentuale), 2) bar_w = ((@percentuale / 100) * (window_width - 28)).to_i contents.gradient_fill_rect(2, (line_height*2) + 4, bar_w, line_height - 8, text_color(COLORE_BARRA1), text_color(COLORE_BARRA2)) draw_text(0,line_height*1,window_width - 24, line_height, @sconfitti.to_s + "/" + @max.to_s, 2) else draw_text(0,0,window_width - 24, line_height, "??? %", 2) draw_text(0,line_height*1,window_width - 24, line_height, @sconfitti.to_s + "/" + @incontrati.to_s, 2) end #if end #draw_completamento def draw_info_inutili(x, y) change_color(system_color) draw_text(x,y,window_width - 24, line_height, TOT_INCONTRATI) draw_text(x,y + (line_height)*2,window_width - 24, line_height, TOT_SCONFITTI) # draw_text(x,y + (line_height)*4,window_width - 24, line_height, TOT_DANNI) change_color(normal_color) draw_text(x,y + line_height,window_width - 24, line_height, @tot_incontrati,2) draw_text(x,y + (line_height)*3,window_width - 24, line_height, @tot_sconfitti,2) # draw_text(x,y + (line_height)*5,window_width - 24, line_height, @danni,2) end #draw_info_inutili def draw_titolo(x,y) change_color(system_color) draw_text(x,y,window_width - 24, line_height, "Titolo:") TITOLI.each_key do |i| next if @percentuale < TITOLI[i][0] change_color(text_color(TITOLI[i][1])) @tit = TITOLI[i][2] end draw_text(x,y + (line_height*1.5),window_width - 24, line_height, @tit, 1) end #draw_titolo def totale_mostri_sconfitti mostri = Bestiario.create_enemies_array mostri.compact! @max = mostri.size mostri.each do |i| @sconfitti += 1 if $game_party.sconfitto?(i) @incontrati += 1 if $game_party.incontrato?(i) @tot_sconfitti += $game_party.conta_sconfitti(i) if $game_party.sconfitto?(i) @tot_incontrati += $game_party.conta_incontrati(i) if $game_party.incontrato?(i) end #do @percentuale = (@sconfitti.to_f * 100) / @max end #totale_mostri_sconfitti def draw_horz_line(x, y, length) line_y = y + line_height / 2 - 1 contents.fill_rect(x, line_y, length, 2, line_color) end #draw_horz_line def line_color color = text_color(0) color.alpha = 80 return color end #line_color def window_width Graphics.width / 2 end #window_width def window_height Graphics.height - 48 end #window_height end #Window_Bestiary_Progress #=============================================================================== # Window_Monster_Page (Nuova Classe) #=============================================================================== class Window_Monster_Page < Window_Selectable include Bestiario def initialize(id, id_symbol) super(window_x,window_y, window_width, window_height) create_enemy_array @id = id @id_symbol = id_symbol draw_block1(0,0) draw_horz_line(0, line_height, line_width) draw_horz_line(0, line_height * 9.5, window_width - 24) draw_block2(0, line_height) end #initialize def create_enemy_array @enemies = [] for i in 0...$data_enemies.length @enemies.push($data_enemies[i]) end #for end #create_enemy_array def draw_block1(x, y) draw_name(x, y) draw_stat(x, y + (line_height*1.5)) draw_sprite(x + line_width + 12, y) end #draw_block1 def draw_block2(x, y) draw_elements(x, y*10) draw_loot(x, y*11) end #draw_block2 def draw_name(x, y) contents.fill_rect(x, y, line_width, line_height, Color.new(0,0,0,60)) change_color(normal_color) draw_text(x, y, line_width, line_height, @enemies[@id].name) end #draw_name def draw_stat(x,y) for i in 0..7 draw_param(x, y + (line_height*i), i) end #for end #draw_stat def draw_param(x, y, param_id) contents.fill_rect(x, y, line_width, line_height - 4, Color.new(0,0,0,60)) if CONFRONTO_STAT contents.fill_rect(x, y + line_height - 6, line_width, 2, Color.new(0,0,0,180)) if param_id > 1 media = calcola_media percentage = (@enemies[@id].params[param_id] * (line_width*0.67)) / media percentage = line_width if percentage > line_width contents.fill_rect(x, y + line_height - 6, percentage, 2, text_color(param_id + 2)) if param_id > 1 contents.fill_rect(x, y + line_height - 6, line_width, 2, text_color(param_id + 2)) if param_id <= 1 end #if change_color(system_color) draw_text(x, y, line_width, line_height, Vocab::param(param_id)) change_color(normal_color) draw_text(x, y, line_width, line_height, @enemies[@id].params[param_id], 2) end #draw_param def calcola_media media = 0 for i in 2..7 media += @enemies[@id].params[i] end #for media = media / 6 return media end #calcola_media def draw_sprite(x,y) contents.fill_rect(x, y, line_width, line_height * 9.5, Color.new(0,0,0,60)) view_x = x + window_x + 12 view_y = y + window_y + 12 viewport = Viewport.new(view_x,view_y,line_width, line_height * 9.5) viewport.z = 150 @battler = Sprite.new(viewport) @battler.bitmap = Cache.battler(@enemies[@id].battler_name + NOME_SPRITE, @enemies[@id].battler_hue) @battler.ox = @battler.width/ 2 @battler.x = line_width / 2 @battler.oy = @battler.height / 2 @battler.y = (line_height * 9.5) / 2 (@battler.zoom_x -= 0.05 and @battler.zoom_y -= 0.05) until (@battler.width*@battler.zoom_x) <= line_width and (@battler.height*@battler.zoom_y) <= line_height * 9.5 draw_incontri(x) if MOSTRA_INCONTRI end #draw_sprite def close @battler.dispose super end #close def draw_incontri(x) change_color(system_color) draw_text(window_width - 24 - line_width, line_height*8.5, line_width, line_height, SCONFITTI) if calcola_sconfitti >= Bestiario.get_cap(@id_symbol) and Bestiario.get_cap(@id_symbol) != 0 change_color(text_color(COLORE_CAP)) draw_text(window_width - 24 - line_width, line_height*8.5, line_width, line_height, Bestiario.get_cap(@id_symbol), 2) else change_color(normal_color) draw_text(window_width - 24 - line_width, line_height*8.5, line_width, line_height, calcola_sconfitti.to_s + "/" + calcola_incontrati.to_s, 2) end #if end #draw_incontri def calcola_sconfitti return $game_party.conta_sconfitti(@id) end #calcola_sconfitti def calcola_incontrati return $game_party.conta_incontrati(@id) end #calcola_incontrati def draw_elements(x,y) width = (window_width - 24) / ICONE_ELEMENTI.length ICONE_ELEMENTI.each_key do |i| current_x = 1 + x + (width * (i-3)) contents.fill_rect(current_x, y, width - 2, line_height - 2, Color.new(0,0,0,60)) draw_icon(ICONE_ELEMENTI[i], current_x, y) value = element_rate(i) change_color(normal_color) change_color(text_color(COLORE_RESISTENZA)) if value < 1.0 change_color(text_color(COLORE_NULLO)) if value == 0.0 change_color(text_color(COLORE_DEBOLEZZA)) if value > 1.0 draw_text(current_x, y, width, line_height, sprintf("%d%", value*100), 2) end #do end #draw_elements def draw_loot(x,y) width = (window_width - 24) / max_loot contents.fill_rect(x + 1, y, width - 2, line_height - 2, Color.new(0,0,0,60)) change_color(system_color) draw_text(x + 1, y, width - 2, line_height - 2, EXP_NAME + ":") change_color(normal_color) draw_text(x + 1, y, width - 2, line_height - 2, @enemies[@id].exp, 2) contents.fill_rect(x + 1 + width, y, width - 2, line_height - 2, Color.new(0,0,0,60)) change_color(system_color) draw_text(x + 1 + width, y, width - 2, line_height - 2, Vocab.currency_unit + ":") change_color(normal_color) draw_text(x + 1 + width, y, width - 2, line_height - 2, @enemies[@id].gold, 2) end #draw_loot def max_loot return 2 end #max_loot def element_rate(i) element = 1.0 @enemies[@id].features.each do |f| if f.code == 11 element = f.value if f.data_id == i end #if end #do return element end #element_rate def draw_horz_line(x, y, length) line_y = y + line_height / 4 - 1 contents.fill_rect(x, line_y, length, 2, line_color) end #draw_horz_line def line_color color = text_color(0) color.alpha = 80 return color end #line_color def line_width (window_width - 36) / 2 end #line_width def window_width Graphics.width - 32 end #window_width def window_height return 24 + (line_height * 12) end #window_height def window_y (Graphics.height - window_height) / 2 end #window_y def window_x (Graphics.width - window_width) / 2 end #window_x end #Window_Monster_Page #=============================================================================== # Scene_Bestiary (Nuova Classe) #=============================================================================== class Scene_Bestiary < Scene_Base include Bestiario def initialize super @category = 0 @id = 0 create_bestiary_list create_bestiary_progress create_bestiary_category @sfondo = Sprite.new if SFONDO disegna_sfondo if SFONDO end #initialize def create_bestiary_list @list_window = Window_Bestiary_List.new(@category) @list_window.opacity = TRASPARENZA_SFONDO if SFONDO @list_window.activate @list_window.set_handler(:mostro, method(:disegna_mostro)) @list_window.set_handler(:cancel, method(:return_scene)) end #create_bestiary_list def create_bestiary_category @category_window = Window_Bestiary_Category.new @category_window.opacity = TRASPARENZA_SFONDO if SFONDO @category_window.activate @category_window.list_window = @list_window end #create_bestiary_category def disegna_mostro @category = @category_window.index @id = @list_window.index @category_window.deactivate @list_window.deactivate index = @list_window.id_for_list(@id) crea_pagina_mostro(index) end #disegna_mostro def crea_pagina_mostro(index) @monster_window = Window_Monster_Page.new(index, @category) @monster_window.back_opacity = 255 @monster_window.activate @monster_window.set_handler(:ok, method(:return_list)) @monster_window.set_handler(:cancel, method(:return_list)) end #crea_pagina_mostro def return_list @monster_window.close @category_window.activate @list_window.activate end #return_list def create_bestiary_progress @progress_window = Window_Bestiary_Progress.new @progress_window.opacity = TRASPARENZA_SFONDO if SFONDO end #create_bestiary_progress def disegna_sfondo @sfondo.bitmap = Cache.BestSfondo(SFONDO_BEST+SFONDO_ESTENSIONE) end end #Scene_Bestiary #=============================================================================== # Game_Party #------------------------------------------------------------------------------- # alias: initialize # new method: sconfitto? # new method: conta_sconfitti # new method: mostro_sconfitto #=============================================================================== class Game_Party < Game_Unit alias initialize_bestiario initialize def initialize @sconfitto = [] @contatore_kill = [] @incontrato = [] @contatore_incontri = [] @kill_totali = 0 @incontri_totali = 0 initialize_bestiario end #initialize def sconfitto?(i) # return true return true if @sconfitto[i] == true return false end #sconfitto? def incontrato?(i) # return true return true if @incontrato[i] == true return false end #incontrato? def conta_sconfitti(i) contatore = @contatore_kill[i] contatore = 0 if contatore.nil? return contatore end #conta_sconfitti def conta_incontrati(i) contatore = @contatore_incontri[i] contatore = 0 if contatore.nil? return contatore end #conta_incontrati def mostro_sconfitto(i) @contatore_kill[i] = 0 if @contatore_kill[i].nil? @contatore_kill[i] += 1 @kill_totali += 1 @sconfitto[i] = true end #mostro_sconfitto def mostro_incontrato(i) @contatore_incontri[i] = 0 if @contatore_incontri[i].nil? @contatore_incontri[i] += 1 @incontri_totali += 1 @incontrato[i] = true end #mostro_incontrato end #Game_Party #=============================================================================== # BattleManager #------------------------------------------------------------------------------- # alias: battle_end #=============================================================================== class << BattleManager alias setup_bestiario setup def setup(troop_id, can_escape = true, can_lose = false) setup_bestiario(troop_id, can_escape, can_lose) $game_troop.members.each {|i| $game_party.mostro_incontrato(i.enemy_id)} end #setup alias battle_end_bestiario battle_end def battle_end(result) $game_troop.dead_members.each {|i| $game_party.mostro_sconfitto(i.enemy_id)} battle_end_bestiario(result) end #battle_end end #BattleManager #=============================================================================== # Game_ActionResult (Inutilizzato) #------------------------------------------------------------------------------- # alias: initialize # alias: make_damage # new method: total_damage #=============================================================================== #class Game_ActionResult # # alias initialize_bestiario initialize # def initialize(battler) # initialize_bestiario(battler) # @total_damage = 0 # end # # alias make_damage_bestiario make_damage # def make_damage(value, item) # make_damage_bestiario(value, item) # @total_damage += @hp_damage # end # # def total_damage # return @total_damage # end # #end #=============================================================================== # Window_MenuCommand #------------------------------------------------------------------------------- # alias: add_original_commands #=============================================================================== class Window_MenuCommand < Window_Command alias add_original_commands_bestiario add_original_commands def add_original_commands add_original_commands_bestiario add_command(Bestiario::MENU_COMMAND, :bestiary) if $game_switches[Bestiario::SWITCH_MENU_ATTIVATO] or Bestiario::SWITCH_MENU_ATTIVATO == 0 end #add_original_commands end #Window_MenuCommand #=============================================================================== # Scene_Menu #------------------------------------------------------------------------------- # alias: create_command_window # new method: command_bestiary #=============================================================================== class Scene_Menu < Scene_MenuBase alias create_command_window_bestiary create_command_window def create_command_window create_command_window_bestiary @command_window.set_handler(:bestiary, method(:command_bestiary)) end #create_command_window def command_bestiary SceneManager.call(Scene_Bestiary) end #command_bestiary end #Scene_Menu #=============================================================================== # Cache #------------------------------------------------------------------------------- # new: BestSfondo #=============================================================================== module Cache def self.BestSfondo(filename) load_bitmap("Graphics/System/", filename) end end #=============================================================================== # SceneManager (Debug) #------------------------------------------------------------------------------- # rewrite: first_scene_class #=============================================================================== =begin module SceneManager def self.first_scene_class Scene_Bestiary end end =endAdd-on
- Inserimento di sfondi multipli:
#=============================================================================== # Titolo: B94 - [Add-on] Sfondi multipli Bestiario # Versione: 1.0 # Autore: Bisba94 #------------------------------------------------------------------------------- # Riepilogo versioni: # - 1.0 (23/07/13) Realase iniziale #------------------------------------------------------------------------------- # Condizioni d'uso: # - Siete liberi di utilizzare questo script in qualunque progetto commerciale o # non commerciale, chiedo solo di essere citato fra i Crediti. # - Siete liberi di pubblicare questo script su qualunque community a patto che # vengano citati l'autore e la provenienza # - Lo Script può essere modificato per utilizzo personale e pubblicato nella # nuova versione a patto che vengano citati l'autore del lavoro originale e la provenienza #------------------------------------------------------------------------------- # Istruzioni: # Richiede "B94 - Bestiario con categorie" v 1.1.3 o successive! # Inserire sotto lo script originale! # # Questo script permette di aggiungere uno sfondo diverso per ogni categoria del # Bestiario. Tutti gli sfondi devono trovarsi nella cartella "Graphics/System". # I nomi dei file seguono il formato: "NomeX.yyy". X è un numero crescente che # identifica la categoria del bestiario. #------------------------------------------------------------------------------- # Contatti: # - Per qualunque informazione, segnalazione, richiesta o altro scrivete a: # bisba1994@live.it #=============================================================================== if $imported["B94-Bestiario"] == true class Scene_Bestiary def disegna_sfondo @sfondo.bitmap = Cache.BestSfondo(SFONDO_BEST+@category.to_s+SFONDO_ESTENSIONE) end #disegna_sfondo def update super if @category != @category_window.index @category = @category_window.index disegna_sfondo end end #update end #Scene_Bestiary end #$importedBugs e Conflitti Noti
Se si utilizza lo script "Wallpaper EX" di Moghunter è necessario inserire l'estensione del file alla voce SFONDO_ESTENSIONE
Altri dettagli
Al momento sono in sviluppe tre feature per lo script:
- Visibilità di una categoria "Tutti"
- Possibilità di nascondere categorie vuote
- Necessita di Switch o oggetti (o altre condizioni) per mostrare i dettagli di ogni mostro.
Sto lavorando anche a un piccolo addon per rendere lo script compatibile con lo script di Yanfly per i livelli dei mostri.
-
Complimenti Holy!
Anche se non l'ho ancora finito è davvero un ottimo gioco, hai dimostrato come basti un'idea semplice per creare un capolavoro!
Ciò che mi ha colpito di più è la rapidità con cui hai risolto problemi segnalati attraverso il tool in game! (anche se manca una conferma che il messaggio sia arrivato a destinazione)
Appena lo finisco (nei prossimi giorni dovrei riprenderlo in mano) farò un commento più approfondito sul gioco... Per il momento ti dico solo in bocca al lupo per il quarto capitolo!
-
Ciao a tutti!
Mi chiamo Andrea, ho 19 anni e da molti anni sono appassionato di making. Il primo tool che ho provato è stato il 2000 e più o meno ho dato una chance a tutti gli altri per soffermarmi sul più recente.
Dopo un po' di tempo (un bel po') passato a seguire questo forum mi sono deciso a iscrivermi, in quanto finalmente posso dedicarmi con maggior impegno al making e magari produrre qualcosa di buono!
Nell'ultimo periodo mi sono dedicato principalmente alla creazione di script per VX Ace, non penso di aver fatto cose di altissimo livello, in quanto sono agli inizi... Ma punto a migliorarmi sempre di più.
Spero di trovarmi bene qua con voi!
Ci si vede in giro :D

Bestiario con categorie
in Scripts RGSS3 (VX-Ace)
Posted
No per niente normale...
L'unica cosa che mi viene in mente è che ci sia qualche script che alla pressione del tasto Y attivi il primo evento comune... Prova a utilizzare un evento comune differente.
Dalla demo con solo quello script ho provato e non succede nulla di simile con nessun pulsante