Jump to content
Rpg²S Forum

giver

Utenti
  • Posts

    1,288
  • Joined

  • Last visited

Posts posted by giver

  1. Salve, metto qui perché non so dove metterlo..

     

    Volevo fare una barra Stamina ad eventi ma non riesco ad afferrare come posso fare il calcolo

     

    vorrei fare che ogni 10 passi, perde 1 di stamina (ad esempio) ma non so come fare a fare il calcolo

     

    HP e MP ci sono riuscito.. mi manca la stamina che come detto non so come fare

    Credo che il suo problema, giver, sia calcolare come dopo 10 passi venga tolto 1 di stamina non la barra in se! ^ ^

    Se è così, mi ha tratto in inganno ciò che ho evidenziato in rosso . . .

     

    Tornando al problema, è facile, basta usare due variabili anche per i passi, ponendone una "costantemente" al totale di passi, e confrontarla con una che include i passi dell'ultima volta che ne sono stati percorsi 10 più 10 che sono l'obiettivo suvvessivo . . .

  2. Beh, direi che basta dedicarci due variabili-evento, una per la stamina attuale ed una per quella massima . . .

     

    Poi per usarne i valori in uno script, si scrive $game_variables[iD_VARIABILE_SENZA_ZERI] . . .

     

    Dopodichè la percentuale non dovresti avere problemi a calcolarla . . .

  3. Purtroppo io non ho il VX e non uso il Tankentai, ma ci sono bravi scripter che lo fanno e magari potranno aiutarti per il problema della sovrapposizione scelta comandi/scelta actor . . .

     

    Adesso, ti chiedo di fare un esperimento, e se va a buon fine magari riusciamo ad inserire il Cambio Party come quinto comando, anche se a me sembra più adatto metterlo assieme a Combatti e Fuggi . . .

    Incolla questo pezzetto di codice come ultimo script sotto Materials e prova ad usare Fuga nella Spin di un actor . . .

    class Scene_Battle < Scene_Base
     #
     alias giver_cmdesc_scnbtl_upactcmdsel update_actor_command_selection
     #
     def update_actor_command_selection
    giver_cmdesc_scnbtl_upactcmdsel
    if Input.trigger?(Input::C)
       case @actor_command_window.index
      when 4  # Escape
        Sound.play_decision
        process_escape
      end
       end
     end
     #
    end
    

     

    EDIT - C'era un end di troppo ed avevo dimenticato di verificare se il Button C fosse stato premuto . . .

  4. Come sempre, non posso testarlo o garantire che funzioni. Va messo sotto gli script del Time System.

     

    E' necessario perchè funzioni solo da Menù, che il valore Button in Time_Hud sia nil . . .

    C'è un bug nello script principale del Time System: nel metodo (def) add_year viene chiamato increase_month invece di increase_year . . .

     

     

    class Game_Time
     attr_accessor	 :hud_visibility
    end
    
    class Scene_Map < Scene_Base
     def update
    	$game_time.hud_visibility = @time_hud_window.visible if $game_time.hud_visibility.nil?
    	tsltmhud_scnmp_pdt
    	if @time_hud_window.visible
    	  @time_hud_window.update
    	end
    	if (@time_hud_window.visible != $game_time.hud_visibility) or (Time_Hud::Button != nil and Input.trigger?(Time_Hud::Button) )
    	  show_time_hud(!@time_hud_window.visible)
    	end
     end
     def show_time_hud(show)
    @game_time.hud_visibility = show
    	@time_hud_window.visible = show
    	@time_hud_window.update
     end
    end
    
    class Scene_Menu < Scene_Base
    def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s7 = $game_time.hud_visibility ? "Orologio OFF" : "Orologio ON"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7])
    @command_window.index = @menu_index
    if $game_party.members.size == 0			  # If number of party members is 0
    	  @command_window.draw_item(0, false)	# Disable item
    	  @command_window.draw_item(1, false)	# Disable skill
    	  @command_window.draw_item(2, false)	# Disable equipment
    	  @command_window.draw_item(3, false)	# Disable status
    end
    if $game_system.save_disabled						# If save is forbidden
    	  @command_window.draw_item(4, false)	# Disable save
    end
     end
     #--------------------------------------------------------------------------
     # * Update Command Selection
     #--------------------------------------------------------------------------
     def update_command_selection
    if Input.trigger?(Input::B)
    	  Sound.play_cancel
    	  $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
    	  if $game_party.members.size == 0 and @command_window.index < 4
    		Sound.play_buzzer
    		return
    	  elsif $game_system.save_disabled and @command_window.index == 4
    		Sound.play_buzzer
    		return
    	  end
    	  Sound.play_decision
    	  case @command_window.index
    	  when 0		  # Item
    		$scene = Scene_Item.new
    	  when 1,2,3  # Skill, equipment, status
    		start_actor_selection
    	  when 4		  # Save
    		$scene = Scene_File.new(true, false, false)
    	  when 5 	 # Orologio
     @menu_index = 5
     @command_window.dispose
     @command_window = nil
     $game_time.hud_visibility = (!$game_time.hud_visibility)
     create_command_window
    	  end
       end
     end
    end
    

     

     

    Spero che faccia ciò che effettivamente volevi . . .

     

    EDIT - Ho notato solo ora che hai eliminato il comando che esce dal gioco . . . Rettificato per supplire alla mancanza di quel comando . . .

    EDIT2 - Aggiunto un'istruzione che allinea l'impostazione di visibilità iniziale . . .

  5. Sì, adesso ho capito di che Time System parlavi, e sono andato a vedere . . .

     

    Però, c'è stato un equivoco nel redigere le istruzioni, perchè di base è fatto per funzionare solo in Scene_Map ed usare quel comando così com'è il codice adesso in una Scene diversa dà errore . . .

     

    Suppongo, quindi, che tu non abbia neppure fatto creare un'istanza dell'HUD in Scene_Menu, oppure sì ?

     

    EDIT - Scusa, credo di aver frainteso , , , Puoi chiarirmi se vuoi che il comando "Orologio" nel Menù serva ad attivare/disattivare l'HUD nella Mappa ? Anche perchè c'è già questa possibilità premendo un Button, configurabile nello script, quando stai nella mappa . . .

  6. Vuoi che venga conservata l'ultima impostazione data alla visualizzazione dell'orologio quando si esce dal menù, oppure parte sempre nello stesso status ogni volta che si entra nel menù . . .

     

    Ti suggerirei di usare un sistema di toggling, ossia far funzionare il comando "Orologio" come un interruttore che accende/spegne la visualizzazione in modo alternato ogni volta viene scelto, piuttosto che un sottomenù . . .

     

    Poi, show_time_hud(true/false) è un def di Scene_Base ?

  7. No, scusa, ma allora tu vuoi che lo schermo inquadri sempre il panorama ? Ossia che se c'è un triangolo in alto a sinistra, appaia sempre lì ?

     

    Non che il panorama segua il tileset alla stessa velocità ? Perchè di solito è questo che si intende per panorama bloccato . . .

     

    In tal caso, non devi dividere per niente, ma sostituire la divisione direttamente con 0 . . .

  8. Stavo per dire che forse era la configurazione lasciata com'era, se ci si trovava nella mappa uno, poteva essere la causa dello spostamento . . . Comunque, per impostare il panorama fermo, basta non mettere impostazioni per la mappa coinvolta dove Guardian ha indicato, dato che l'impostazione è 0, 0 se non viene indicato diversamente . . .

     

    In caso non funzioni, visto che non l'ho mai usato, si può provare ad usare questo snippet, non testato, dopo aver eliminato quello script . . .

    class Spriteset_Map
    alias giver_spriteset_map_update update
     def update
           giver_spriteset_map_update
           @panorama.ox = $game_map.display_x / 4
           @panorama.oy = $game_map.display_y / 4
     end
    end
    

    Cos', se funziona, però TUTTI i panorami risulteranno bloccati, e bisognerà ricorrere allo script di Sleeping per muoverli, mettendolo al di sotto di questo pezzettino di codice . . .

  9. Allora, le tiles comunque sono di 32x32 non di 64x64 . . .

     

    Credo che si possa bloccare, in ogni caso, indipendentemente dal rapporto grandezza mappa/grandezza del panorama, con lo script Panorama Mover di Sleeping Leonhart, come ho già sottolineato altre volte . . .

  10. Scusa, Zanmato, ma a te una battaglia normale con timer, come finisce ? Ti rimanda alla Mappa interrompendo lo scontro come avviene quando fuggi con successo, o ti dà Gameover ? (Di solito avviene la prima)

     

    Come detto prima, trattandosi di Boss, probabilmente dovrai usare un Chiama Battaglia, quindi i calcoli sul party non ti servono, in quanto quel comando ti consente di far fare automaticamente delle cose a seconda che vincano, "fuggano"/timer si azzera, o perdano, in caso sia ammessa la sconfitta . . .

    Quindi, poi, non dovrebbero realmente poter fuggire, ma tu dovresti invece "permettere la fuga" in modo che se fuggono o il timer si azzera, abbia luogo il Gameover . . .

     

    Il calcolo sul party (e neppure l'evento comune con switch) non serve, comunque, per una skill del party, ma appunto per sapere in una Battaglia Casuale, se sei sulla mappa perchè hai vinto o perchè il timer è scaduto, visto che non hai modo di saperlo normalmente . . . Ossia, ad inizio battaglia, prendi una cosa che cambia solo se vinci, e la controlli nuovamente al suo termine per apere se è rimasta invariata o no . . .

    In ogni caso, avresti potuto semplicemente usare il Gold come riferimento invece della somma degli EXP del party, se non hai skill che modificano il valore del denaro posseduto dal party . . . Non mi è venuto in mente prima perchè nei miei giochi gli inventari sono separati e lo è anche il denaro, oltre alla presenza di azioni che usano denaro (ma anche che usano EXP, quindi, a meno di usare uno script particolare, come faccio, dovrei spremermi le meningi per trovare un modo per capire se sono in mappa perchè ho vinto oppure no . . .)

    Ma vabbè, come detto a te non dovrebbe servire . . .

  11. Come ha detto Guardian, di solito si sfruttano programmi di grafica avanzati (Io uso The Gimp), applicando filtri, pennelli, stili ed effetti a testo renderizzato tramite la funzione apposita, attingendo ai font che hai, ma si può usare anche un "programma" per gestire tracciati vettoriali (cosa che sia Photoshop che The Gimp sono in grado di fare internamente), e manipolarli attraverso le manigliette sui nodi creati per dare la forma che si preferisce ai caratteri . . .

     

    EDIT - E ci sono pure programmi, o specializzati proprio nella "word art", come WordMaster Artist ed Aurora 3D Text, o che hanno funzioni per creare word art, come le vecchie versioni di Microsoft Office (dico vecchie, perchè l'ultima che ho utilizzato è quella del '97 . . .)

  12. STEP_WINDOW =    [true, 0, 320-32, 160, "Up", 160, 96, 24, "001-Blue01"]
    LOCATION_WINDOW = [true, 160, 480-96, 160, "Left", 480, 96, 24, "001-Blue01"]
    GOLD_WINDOW =    [true, 0, 64, 160, "Left", 160, 64, 24, "001-Blue01"]
    TIME_WINDOW =    [true, 0, 128, 160, "Up", 160, 96, 24, "001-Blue01"]
    PROGRESS_WINDOW = [true, 0, 128+96, 160, "Up", 160, 64, 24, "001-Blue01"]
    KILLED_WINDOW =   [true, 0, 480-96, 160, "Up", 160, 96, 24, "001-Blue01"]
    

    Mettere a false il primo valore (true) fa sparire la finestra, disattivandola, credo . . .

    STEP è quella dei passi . . .

  13. Di base no, Esiste uno script che teoricamente permetterebbe di usare script XP col VX, ma presenta molti problemi e non funziona, da quel che ho capito con gli script più complessi . . .

     

    Tempo fa, qualcuno fece, per "gioco", un progetto XP che usava il game.exe del VX, ma richiedeva di rimpiazzare tutte le classi "nascoste" con quelle dell'XP, vista la riscrittura della struttura dati e la diversa gestione di certe caratteristiche del gioco, come le mappe, gli eventi ed altro . . .

  14. Tornado Quest Book VX

     

     

    Descrizione

     

    Semplice Quest Book per mostrare le quest e i relativi dettagli al giocatore. Il grosso del lavoro va fatto comunque ad eventi . . .

     

    Autore

    Storm per la versione XP. giver per la conversione VX

     

    Screen (gentilmente offerti da Ichika Strize)

     

     

     

    http://img140.imageshack.us/img140/5484/screen1jz.png

    http://img816.imageshack.us/img816/8895/screen1xu.png

    http://img402.imageshack.us/img402/9931/screen2dt.png

    http://img84.imageshack.us/img84/1697/screen3ixu.png

     

     

     

    Istruzioni per l'uso

     

    Nello script, tradotte in italiano da Superspammer, con aggiunte di giver.

     

    SCRIPT

     

     

    #=========================================================================
    #=========================================================================
    #							  Tornado Quest Book
    #								 Versione 1.0
    #							    Autore: Storm
    #						  Tradotto da: Superspammer
    #					    http://rpgxpultimate.darkbb.com
    #
    # Istruzioni per l'uso:
    # Incollare lo script sopra Main e sotto Materials.
    #
    # Usare   $scene = Scene_QuestBook.new   per chiamare il libro.
    #
    # Usare   $game_party.add_quest(id)   per aggiungere una missione.
    #
    # Usare   $game_party.delete_quest(id)   per eliminare una missione.
    #
    # Usare   $game_party.finish_quest(id)   per finire una missione.
    #
    # Use   $game_party.unfinish_quest(id)   per impostare una missione come non-finita.
    #
    # Nel condition branch (ramo condizioni), inserire questo script: $game_party.quest_complete?(id)
    # per controllare se la missione è stata completata.
    #
    # Opzioni:
    # Possibilità di cambiare il nome del quest book.
    # Opacità configurabile.
    # Colori missioni complete personalizzabile.
    # Colori missioni incomplete personalizzabile.
    # Auto-rimpiazzamento testo.
    # 10 Rimpiazzamenti configurabili.
    #
    # Compatibilità:
    # La maggior parte degli script. Sovrascrivendo il metodo draw_item di
    #   Window_Command è meglio metterlo sopra altri script che agiscono
    #   sullo stesso metodo, sperando che non lo sovrascrivano anch'essi
    #
    # Crediti E Ringraziamenti:
    #   Storm  - Per averlo creato.
    #   Game_Guy  - Per avermi insegnato come usare le Array.
    #   Superspammer - Per averlo tradotto.
    #   giver - Per la conversione al VX. (Fatta su "richiesta" di Ichika Strize)
    #   Ichika Strize - Per il Testing e gli Screen della versione VX.
    #===========================================================================
    #===========================================================================
    module TNDqb
     #=========================================================================
     # START CONFIG
     #=========================================================================
     #============================== General Config ===========================
     # General Config.
     #=========================================================================
     QB_Name	 = "Quest Book"    # Nome del quest Book
     Author_Name = "Autore"    # Nome Autore
     Title_Name  = "Titolo"    # Nome del Titolo
     Reward_Name = "Ricompensa"    # Nome della ricompensa
     Status_Name = "Status"    # Status
     Complete    = "Completata"    # Nome delle missioni complete
     Incomplete  = "Non completata."    # Nome delle missioni incomplete.
     Unknown	 = "???"	 # Nome sconosciuto
     Opacity	 = 200    # Opacità della finestra (200 è quella base del VX)
     Screen	  = 1    # (0 = nero, 1 = screenshot mappa, "nome immagine tra virgolette" = picture)
     Cmp_Color   = Color.new(0, 255, 0, 255)    # Colore missioni Complete
     Incmp_Color = Color.new(255, 0, 0, 255)    # Colore missioni Incomplete
     Return	  = -1   # Imposta la Scena di Ritorno quando si esce dal QuestBook premendo ESC
    				 #   se messa a -1 torna alla Mappa, altrimenti torna al Menù con l'indice
    				 #   indicato selezionato nella lista dei comandi (il primo vale 0, il
    				 #   secondo 1, il terzo 2, e così via . . . Di base dovrebbe essere la
          				  #   posizione del comando del menù per aprire il QuestBook (es. 3 se è il
    				 #   quarto comando della lista)
     #================================ Ignore Part ============================
     # Ignorare la sezione qui sotto.
     #=========================================================================
     Quest = []
     #============================ Replacement Config =========================
     # Rimpiazzamenti, questi sono i testi che verranno auto ripiazzati.
     #
     # Replace = ["segnaposto testo","testo sostitutivo"]
     # NOTA BENE: Il massimo dei rimpiazzamenti è 10. I Rimpiazzamenti non possono essere aggiunti o eliminati.
     #		    Cannot include {nome0}, {nome1}, {nome2}, ..., {nomeN} (vedi sotto)
     #		    Si consiglia di includere i segnaposto tra parentesi graffe
     #
     #		    Completed Replacements: (Do not add)
     #		    {nomeNNN} = Nome dell'attore che si trova nella posizione NNN del party
     #			   es. per far apparire il nome del primo personaggio nel party bisogna
     #				   inserire il segnaposto   {nome0}
     #=========================================================================
     Replace1 = ["{s}","Ciao!"]
     Replace2 = ["",""]
     Replace3 = ["",""]
     Replace4 = ["",""]
     Replace5 = ["",""]
     Replace6 = ["",""]
     Replace7 = ["",""]
     Replace8 = ["",""]
     Replace9 = ["",""]
     Replace10 = ["",""]
     #=============================== Configurazione Missioni =================
     # Configura le missioni qui.
     #
     # Quest[id] = ["Titolo","Nome dell'autore","testo","ricompensa"]
     #=========================================================================
     #PART 1
     Quest[0] = ["Saluti e Baci","Tizio","Tizio vuole che il party vada al suo paese e dire alla mamma {s}", "Cesta di Mele"]
     Quest[1] = ["Pupazzo Scomparso","Mr.Bean","Mr.Bean vuole che tu ritrovi il suo pupazzo scomparso. LOL","10000 G"]
     Quest[2] = ["Esplora la montagna","Tom","Tom ha chiesto a {nome0} di esplorare la montagna.","Qualcosa"]
     Quest[3] = ["Ammazza Ratti","Contadino","George, il contadino, vuole che venga liberato il proprio granaio dai ratti che lo infestano","Un Vecchio Libro"]
     #=========================================================================
     # END CONFIG
     #=========================================================================
    end
    #====================
    # Game_Party
    #====================
    class Game_Party < Game_Unit
     attr_accessor :quest
     attr_accessor :qComplete
     alias tnd_qb_init initialize unless $@
     def initialize
       set_questbook
       tnd_qb_init
     end
     def set_questbook
       @quest = []
       @qComplete = []
     end
     def add_quest(id)
       msg = TNDqb::Quest[id]
       return if msg == nil
       unless @quest.include?(id)
      @qComplete.delete(id)
      @quest.push(id)
       end
     end
     def delete_quest(id)
       msg = TNDqb::Quest[id]
       return if msg == nil
       if @quest.include?(id)
      @qComplete.delete(id)
      @quest.delete(id)
       end
     end
     def finish_quest(id)
       msg = TNDqb::Quest[id]
       return if msg == nil
       if @quest.include?(id)
      @qComplete.push(id) unless @qComplete.include?(id)
       end
     end
     def unfinish_quest(id)
       msg = TNDqb::Quest[id]
       return if msg == nil
       if @qComplete.include?(id)
      @quest.push(id) unless @quest.include?(id)
      @qComplete.delete(id)
       end
     end
     def quest_complete?(id)
       return false if id == nil
       msg = TNDqb::Quest[id]
       return false if msg == nil
       return @qComplete.include?(id)
     end
    end
    #====================
    # Bitmap
    #====================
    class Bitmap
     def format_text(text, width)
       words = text.split(' ')
       return words if words.size == 1
       result, current_text = [], words.shift
       words.each_index {|i|
      if self.text_size("#{current_text} #{words[i]}").width > width
        result.push(current_text)
        current_text = words[i]
      else
        current_text = "#{current_text} #{words[i]}"
      end
      result.push(current_text) if i >= words.size - 1}
       return result
     end
    end
    #====================
    # Window_Command
    #====================
    class Window_Command < Window_Selectable
     def draw_item(index, enabled = true, icolor = normal_color)
       rect = item_rect(index)
       rect.x += 4
       rect.width -= 8
       self.contents.clear_rect(rect)
       self.contents.font.color = icolor
       self.contents.font.color.alpha = enabled ? 255 : 128
       self.contents.draw_text(rect, @commands[index])
     end
    end
    #====================
    # Window_QuestTitle
    #====================
    class Window_QuestTitle < Window_Base
     def initialize
       super(0, -8, 544, 56)
       self.back_opacity = TNDqb::Opacity
       refresh
     end
     def refresh
       self.contents.clear
       self.contents.font.color = normal_color
       self.contents.font.size = 22
       cx = contents.text_size(TNDqb::QB_Name).width
       self.contents.draw_text(0, 0, cx, 24, TNDqb::QB_Name)
     end
    end
    #====================
    # Window_QuestMain
    #====================
    class Window_QuestMain < Window_Base
     def initialize
       super(24, 76, 336, 268)
       self.back_opacity = TNDqb::Opacity
       refresh
     end
     def refresh
       return if @quest_id == nil
       msg = TNDqb::Quest[@quest_id]
       return if msg == nil
       self.contents.clear
       self.contents.font.size = Font.default_size - 2
       t = self.contents.text_size(TNDqb::Title_Name+": ").width
       t2 = self.contents.text_size(TNDqb::Author_Name+": ").width
       t3 = self.contents.text_size(TNDqb::Reward_Name+": ").width
       t4 = self.contents.text_size(TNDqb::Status_Name+": ").width
       tw = self.width - 32
       self.contents.font.color = system_color
       self.contents.draw_text(0, 0, tw, 24, TNDqb::Title_Name+": ")
       self.contents.draw_text(0, 24, tw, 24, TNDqb::Author_Name+": ")
       self.contents.draw_text(0, 186, tw, 24, TNDqb::Reward_Name+": ")
       self.contents.draw_text(0, 210, tw, 24, TNDqb::Status_Name+": ")
       self.contents.font.color = normal_color
       self.contents.draw_text(t, 0, tw, 24, msg[0])
       self.contents.draw_text(t2, 24, tw, 24, msg[1])
    
       @text = msg[2]
    
       @text = @text.gsub(TNDqb::Replace1[0], TNDqb::Replace1[1])
       @text = @text.gsub(TNDqb::Replace2[0], TNDqb::Replace2[1])
       @text = @text.gsub(TNDqb::Replace3[0], TNDqb::Replace3[1])
       @text = @text.gsub(TNDqb::Replace4[0], TNDqb::Replace4[1])
       @text = @text.gsub(TNDqb::Replace5[0], TNDqb::Replace5[1])
       @text = @text.gsub(TNDqb::Replace6[0], TNDqb::Replace6[1])
       @text = @text.gsub(TNDqb::Replace7[0], TNDqb::Replace7[1])
       @text = @text.gsub(TNDqb::Replace8[0], TNDqb::Replace8[1])
       @text = @text.gsub(TNDqb::Replace9[0], TNDqb::Replace9[1])
       @text = @text.gsub(TNDqb::Replace10[0], TNDqb::Replace10[1])
    
       for i in 0...$game_party.members.size
      actor = $game_party.members[i]
      @text = @text.gsub("{nome"+i.to_s+"}", actor.name)
       end
    		     
       draw_msg(@text, 0, 48)
    		     
       if $game_party.quest_complete?(@quest_id)
      self.contents.draw_text(t3, 186, tw, 24, msg[3])
      self.contents.font.color = TNDqb::Cmp_Color
      self.contents.draw_text(t4, 210, tw, 24, TNDqb::Complete)
       else
      self.contents.draw_text(t3, 186, tw, 24, TNDqb::Unknown)
      self.contents.font.color = TNDqb::Incmp_Color
      self.contents.draw_text(t4, 210, tw, 24, TNDqb::Incomplete)
       end
     end
     def draw_msg(msg, x, y)
       text = self.contents.format_text(msg, 304)
       text.each_index {|i|self.contents.draw_text(x, y + i*24, 304, 24, text[i])}
     end
     def set_quest(id)
       return if @quest_id == id
       @quest_id = id
       refresh
     end
    end
    #====================
    # Scene_QuestBook
    #====================
    class Scene_QuestBook < Scene_Base
     def main
       if TNDqb::Screen.is_a?(Integer)
      if TNDqb::Screen == 1
        create_menu_background
      end
       else
      @menuback_sprite = Sprite.new
      @menuback_sprite.bitmap = Cache.picture(TNDqb::Screen) if (TNDqb::Screen).is_a?(String)
       end
    		     
       #Command window setup
       @quest = $game_party.quest
       create_command_window
       #Make main windows
       @title = Window_QuestTitle.new
       @main = Window_QuestMain.new
    		     
       Graphics.transition
       loop do
      Graphics.update
      Input.update
      #Update windows and inputs
      update
      inputUpdate
      #Break if scene is not Scene_QuestBook
      if $scene != self
       break
      end
       end
       Graphics.freeze
    		     
       #Dispose windows
       dispose_menu_background unless (TNDqb::Screen.is_a?(Integer) and TNDqb::Screen == 0)
       @command_window.dispose
       @title.dispose
       @main.dispose
     end
     def create_command_window
       @msg = []
       @quest.each {|i|
      @msg.push(TNDqb::Quest[i][0])
       }
       @msg = [""] if @msg.size < 1
    		     
       #Create command window
       @command_window = Window_Command.new(160, @msg)
       @command_window.x = 384
       @command_window.back_opacity = TNDqb::Opacity
       @command_window.height = 360
       @command_window.y = 52
       j = 0
       @quest.each{|i|
       if $game_party.quest_complete?(i)
      @command_window.draw_item(j, true, TNDqb::Cmp_Color)
       end
       j += 1}
     end
     def inputUpdate
       if Input.trigger?(Input::B)
      #Play Cancel SE
      Sound.play_cancel
      #Return to set scene
      $scene = TNDqb::Return > -1 ? Scene_Menu.new(Return) : Scene_Map.new
       elsif Input.trigger?(Input::C)
      #Play Decision SE
      Sound.play_decision
      #Refresh quest data
      @main.set_quest(@quest[@command_window.index])
      #Goto command_refresh
       end
     end
     def update
       #Updates
       @command_window.update
       @title.update
       @main.update
     end
    end
    

     

     

     

    Demo

     

    Nessuna, in quanto non ho il VX, ma ho realizzato uno snippet, da piazzare temporaneamente sotto lo script, che vi aggiunge in automatico delle quest, con completamento impostato per un paio di queste. Voi dovete comunque mettere nella prima mappa di gioco, in un evento a piacere, un (call) script per far aprire il Quest Book, che ricordo è $scene = Scene_QuestBook.new

     

    class Scene_Title < Scene_Base
     #
     alias giver_qbookdemo_scttl_cmdnugheim command_new_game
     #
     def command_new_game
       giver_qbookdemo_scttl_cmdnugheim
       # Aggiunge la quest 1 tra quelle da completare
       $game_party.add_quest(1)
       # Aggiunge la quest 3 tra quelle da completare
       $game_party.add_quest(3)
       # Aggiunge la quest 0 tra quelle da completare
       $game_party.add_quest(0)
       # Segnala che la quest 1 è da considerarsi completata
       $game_party.finish_quest(1)
       # DEBUG CODE (Tutto ciò che c'è qua sotto è sbagliato e non funzionerà)
       # Toglierebbe la quest 3 dalla lista di quelle completate, ma non essendolo non
       #   accadrà nulla
       $game_party.unfinish_quest(3)
       # Aggiungerebbe la quest 6, se fosse impostata/configurata, ma non accadrà nulla
       $game_party.add_quest(6)
       # Segnala che la quest 2 sarebbe da considerarsi completata, ma non essendo
       #   stata aggiunta non accadrà nulla
       $game_party.finish_quest(2)
       # Eliminrebbe la quest 2 dalle quest da completare e/o completate, se fosse stata
       #   aggiunta, ma non accadrà nulla
       $game_party.delete_quest(2)
     end
    end
    

     

    Bugs e Conflitti Noti

     

    Teoricamente, venendo da XP, potrebbe creare conflitti con tutto ciò che è personalizzato per VX. Di base solo ciò che è indicato nello script.

     

    Altri Dettagli

    Trovate qui http://www.rpg2s.net/forum/index.php?showtopic=14724 la versione XP, se volete fare confronti, tradotta ad opera di Superspammer. Crediti e Ringraziamenti sono nello script

  15. In alternativa, potresti sacrificare un'area che copra la parte dove ti serve il BGM . . .

    In un processo parallelo metti (te lo scrivo in pseudo-codice):

    IF (script): $game_player.in_area?($data_areas[iD_AREA_BGM])
     IF SwitchNNNN  è OFF
       Suona BGM
       Metti ON SwitchNNNN
     FINE IF switch
    ALTRIMENTI
     IF SwitchNNNN  è ON
       Dissolvi BGM
       Metti OFF SwitchNNNN
     FINE IF switch
    FINE IF area
    

    Ovviamente al posto di ID_AREA_BGM devi mettere il numero di ID dell'Area dove viene suonato il BGM, e se il processo parallelo è in un evento-mappa, puoi usare uno self_switch invece di uno switch . . .

×
×
  • Create New...