Jump to content
Rpg²S Forum

bisba94

Utenti
  • Posts

    17
  • Joined

  • Last visited

Posts posted by bisba94

  1. Mi sono accorto di una cosa strana, mettendo il  comando

    SceneManager.call(Scene_Bestiary)
    

    in un evento comune (come mi avevi detto tu) con trigger "none" se premo il pulsante Y del joypad (uso il joypad dell'xbox360... non so di preciso a che tasto di rpgmaker corrisponda) mi si apre il bestiario...

     

    ??

     

    E' normale?

     

    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

  2. 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!

  3. 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 :)

  4. È 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
    

     

     

  5. 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!

  6. 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

  7. 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?

  8. 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_col
    

    all'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!

  9. 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!

  10. 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!

  11. 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!

  12. 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'uso

    Inserite 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
    =end
    

     

     

     

    Add-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 #$imported
    

     

     

    Bugs 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.

  13. 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!

  14. 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

×
×
  • Create New...