Jump to content
Rpg²S Forum

Zosimos

Utenti Speciali
  • Posts

    1,364
  • Joined

  • Last visited

Posts posted by Zosimos

  1. Ragazzi, pardon, doppioposto solo per segnalarvi che questa pazza qui praticamente se li sta giocando tutti in ordine alfabetico...

     

    https://www.youtube.com/playlist?list=PLJ3UljwnX8StmMyx3sZCaMeLLpDF_p1d3

     

    E dunque è già arrivata a Dictionary. Se vedete sul box informazioni del video su YT mette anche delle minirecensioni.

     

    https://www.youtube.com/watch?v=UHOXDikm58o&list=PLJ3UljwnX8StmMyx3sZCaMeLLpDF_p1d3&index=19

  2. Segnalo alla vostra attenzione quattro concorrenti interessanti:

     

    - UTILITOPOLY - gestionale - http://contest.rpgmakerweb.com/game/view/id/361#.U7W2BEBqN78

    - THE LAST WORD - rpg - http://contest.rpgmakerweb.com/game/view/id/464#.U7W2LEBqN78

    - BEACON - shooter/tower defense - http://contest.rpgmakerweb.com/game/view/id/609#.U7W2W0BqN78

    - CRIMSON STORY - action adventure - http://contest.rpgmakerweb.com/game/view/id/392#.U7W2L0BqN78

     

    Non per mettere ansia, ma per indicarvi delle gradevoli (e diversissime) esperienze videoludiche in mezzo a un mare di robaccia orrida.

  3. Il testo di Dictionary è anche molto ben scritto in inglese. Molto superiore alla media dei giochi prodotti dai non-native. A mio parere meriterebbe un bel reboot con grafica professionale.

     

    Comunque, un'osservazione: molti giochi dalla grafica sontuosa o apparentemente vincente si stanno rivelando fallosi in fatto di gameplay. Avrò provato almeno dieci o quindici titoli tra quelli più blasonati, ma buona parte semplicemente non si lascia giocare. Eccezioni ce ne sono poche. Tra quelli che ho provato:

     

    - Run Joe Run - (uno dei potenziali vincitori, anche se odio il genere di gioco)

    - Goats on a Bridge - (idem)

    - Painted Heart - (sfidante pericoloso in categoria RPG, bello stile e BS fighissimo)

    - Darkness Ascension - (è graficamente notevole, ma un po' farraginoso... e noioso)

    - Cloudfall - (gameplay interessante, è il tipico gioco hipster che vince per lo stile)

     

    E soprattutto in campo RPG va notato UNRAVELED, prodotto veramente buono, fluido e veloce come un gioco di Lollo, BS notevolissimo e grafica apprezzabile. Difficile che non piaccia alla giuria, praticamente non ha quasi punti deboli.

    Parecchi non li ho ancora visti, ma anche nelle retrovie della classifica c'è roba che potrebbe piacere parecchio: Utilitopoly, per dire, sembra una bomba, e non se l'è filato nessuno.

  4. Beh, è normale. Ma immagino che per evitare accuse eccessive (che non gioverebbero ad eventuali nuove edizioni del concorso) i gestori dovranno fare qualcosa, la gente si sta lamentando a bestia del gioco in testa alla classifica, che è obiettivamente orribile. Per non parlare di quello del dodgeball in seconda pagina.

     

    Poi ci sono giochi che sembrano strafighissimi per gli screen, tipo Purrcour, ma che sono letteralmente ingiocabili.

     

    Comunque, come ho detto prima, la raccolta di voti ONESTA vi deve interessare per ragioni qualitative, e per restare tra i "trendsetter" della classifica, che significa naturalmente essere notati, scaricati e commentati di più. Vi deve interessare l'immediato futuro ed eventuali sviluppi, magari professionali, non tanto vincere una gara di giudizio popolare truccato.

    Sono abbastanza sicuro che i giudici terranno conto dei commenti delle persone che scrivono, per decidere cosa far passare e cosa no. Mica davvero si giocheranno 600 giochi di cui 590 in pura RTP senza manco il title personalizzato... perciò la qualità della comunicazione è fondamentale.

  5. Ragazzi, non preoccupatevi di puntare alla vittoria popolare, è evidentissimo che quel premio lo otterranno prodotti già molto pubblicizzati. Dovete piuttosto puntare a concludere la fase del giudizio popolare con il maggior numero di voti possibili, perché da essi dipende il posizionamento delle "entries" nella pagina del contest.

     

    Mantenere il proprio gioco entro le prime due o tre pagine significa ESSERE VISTI, e dunque ESSERE GIOCATI e farsi conoscere dal pubblico. L'uso concomitante di social network + votazioni serve a questo. E non è escluso che una buona percentuale di commenti positivi non possa influenzare la giuria nelle fasi di scrematura.

     

    Quindi continuate a spammare in giro, mi raccomando.

     

    Di quanto sia etico tutto questo nell'immediato ne discuteremo altrove, dovete pensare al futuro di quello che fate. Tanto le cose orrende verranno dimenticate per processo naturale.

  6. Ragazzi, non preoccupatevi di puntare alla vittoria popolare, è evidentissimo che quel premio lo otterranno prodotti già molto pubblicizzati. Dovete piuttosto puntare a concludere la fase del giudizio popolare con il maggior numero di voti possibili, perché da essi dipende il posizionamento delle "entries" nella pagina del contest.

     

    Mantenere il proprio gioco entro le prime due o tre pagine significa ESSERE VISTI, e dunque ESSERE GIOCATI e farsi conoscere dal pubblico. L'uso concomitante di social network + votazioni serve a questo. E non è escluso che una buona percentuale di commenti positivi non possa influenzare la giuria nelle fasi di scrematura.

     

    Quindi continuate a spammare in giro, mi raccomando.

     

    E RISPONDETE a chi vi commenta. Anche solo con un "Thank you for playing my game!"

  7. I Need More ha seri problemi di gameplay. La grafica è eccezionale e l'idea di base ottima, ma il personaggio è ingestibile via tastiera, si incastra in ogni fessura e le meccaniche di salto in corsa sono poco intuitive. Bisognerà vedere a cosa vorrà badare la giuria.

     

    Un RPG interessante che potrebbe ambire ad alti risultati è Painted Heart, non tanto per la grafica piacevole quanto per il battle system molto peculiare.

    Tra i platform Regalia Alpha è molto, moooolto competitivo, anche se a mio parere soffre un po' del fatto che il personaggio non possa attaccare in movimento, cosa che rende abbastanza inutile il pur bellissimo sistema di gestione dei poteri.

  8. Ragazzi, come funziona la faccenda della votazione?

    Sul sito del contest vedo giochi orridi che hanno già 7-8 voti, mi sembra strano. Sarebbe il caso di informarsi e farci sapere, io provo ora a loggarmi con FB e a votarvi.

     

     

    EDIT

     

    LE VOTAZIONI SONO APERTE.

    Attenzione però: bisogna loggarsi seguendo queste istruzioni qui:ù

     

    http://contest.rpgmakerweb.com/

     

    (scorrete sotto)

     

    La registrazione è gratuita e velocissima. Io ho già provveduto a dare il mio voto. Sarebbe bene pubblicizzare la cosa anche sui social!

  9. Se la giocheranno molto probabilmente i titoli con grafica/gameplay differenti dai classici JRPG.

     

    Rimanendo nel campo delle avventure grafiche, il maggior avversario per Little Briar Rose sarà probabilmente Plato.

     

    Anche il platform I Need More è un avversario temibile, ma ha qualche difetto di gameplay.

  10. Regà, causa rischio spam non posso postare tutti i commenti che state or ora ricevendo dal mondo esterno.

     

    In sintesi.

    Avete tutto il gotha della videoludica italiana incazzato nero contro voi due.

    Quelli di Multiplayer, quelli di Indie Vault, quelli di Retrogamer, quelli di Steam Raiders, etc etc etc.

     

    Ma mica perché sono invidiosi. Si stanno dannando per capire in quale razza di buco di cXXo di mondo ve ne steste nascosti prima di far uscire Little Briar Rose.

     

    Quindi.

    Come dice il buon Guardian (ciao! ^^), è ora di fare promozione come cristo comanda.

    Prendete esempio dal buon Testament (ciao! ^^). Presenza discreta ma costante sui social, aggiornamenti rilasciati regolarmente che informino la gente delle recensioni che ricevete, e dei progressi che state facendo per la prossima release - che a questo punto dovrebbe forse puntare al mercato.

     

    Nel frattempo, apertura di un development blog e correzione dei testi inglesi (ProGM ti ho dato già un contatto), oltre a release della versione in italiano - quella ve la posso vedere io.

     

    Altrimenti, verranno a scrocchiarvi le ossa.

    Dico sul serio, sono imbufaliti.

  11. ProGm, ultimissima correzione del paragrafo finale, c'era qualche refuso ("people" è sempre singolare, meglio sostituirlo con "other characters").

    Ah, per definire Little Briar Rose è meglio usare "point-and-click adventure, è più comprensibile al pubblico internazionale.

     

     

    Gameplay:

    This is a point-and-click adventure, so you have to use the mouse for every single task:

    Look: just look for items
    Action: use an item or interact with an object
    Talk: talk with other characters
    Go: move your hero to next the map

    There are several items in the game. Some are well visible, some are not. To use an item, select it from the item menu and click on a character (or an area).

  12. Ottimo! Bene anche per gli screen.

    Se potete, sistemate il testo della presentazione come segue:

     

     

    Introduction

    Little Briar Rose is a graphic adventure game inspired by “The Sleeping Beauty”.
    You are a brave prince who is trying to save the princess from an evil spell that forces her to sleep forever. In order to save her, you have to explore the enchanted forest which surrounds the castle where she is imprisoned.
    It will not be an easy task at all: the forest is populated by several magic creatures, and you have to help them in order to break the curse.

    Characters

    You are a prince, but are you a Prince Charming? Or are you just an ordinary pretender, such as Philip, Arthur and Edward before you? As the Grimm brothers said: "Many tried, but only one prevailed". Every time you fail, a new suitor will take your place and try to save the princess.

  13. Allora, ho provato un po' ad applicare questo sistema.

    Inizialmente mi dave errore per quell'"<" del def update_cursor_rect.

    Al che io l'ho sostituito con un più canonico if @index

     

    La visualizzazione sembra corretta,

     

    http://i45.tinypic.com/2059xz7.png

     

    ma non posso verificare lo scorrimento perché non appena provo a entrare nella finestra salta fuori un errore:

     

    http://i49.tinypic.com/vdx5x.png

     

    Relativo alla riga 443, ovvero return (self.height -32)/20

    Probabilmente si riferisce alle coordinate che dicevi, ma non ho idea di cosa cambiare, la parte dell'oy è ancora parecchio complicata per me.

     

    Grazie in anticipo!

  14. Grazie Maxy... mi era parso fosse qualcosa là, per quel poco che ne sto capendo di script... dipende da qualche richiamo strano del row da Window_Selectable? Mi pare fosse quello a regolare lo scroll, dico bene?

     

    Questo è lo script completo, il punto è dalla riga 336. C'è modo di risolvere questo stupido problema? Sono ancora a caro amico in fatto di RGSS, ma questo script mi serve come il pane, purtroppo...

     

     

     

     

    #==============================================================================
    # ■ Systeme de gestion de quête
    #------------------------------------------------------------------------------
    #   Ce script a pour but de rajouter un systeme de gestion de quête sur votre
    # projet. Divers commandes script permettent d'intéragir avec ce systeme :
    #
    #   $scene = Scene_Quete.new  # Ouvre le livre de quete
    #   $game_party.quete_demarrer(id_quete) # Démarre une quete
    #   $game_party.quete_echouer(id_quete) # Fait echouer la quete
    #   $game_party.quete_finir(id_quete) # Fait réussir la quete et donne les récompenses
    #   $game_party.quete_parler(nom) # Permet de valider l'objectif de parler, quelque soit les quetes
    #   $game_party.quete_termine?(id_quete) # Vérifie si les objectifs sont terminé # Dans commande condition
    #   $game_party.quete_trouve?(id_quete) # Vérifie si la quête est trouvé # Dans commande condition
    #   $game_party.quete_en_cours?(id_quete) # Vérifie si la quête est en cours # Dans commande condition
    #   $game_party.quete_reussie?(id_quete) # Vérifie si la quête est réussi # Dans commande condition
    #   $game_party.quete_echoue?(id_quete) # Vérifie si la quête est échoué # Dans commande condition
    #   $game_party.quete_tuer_monstre(id_monstre) # Ajoute 1 monstre au compteur de monstre tué dans les quêtes
    #   $game_party.quete_objectif_termine?(id_quete,id_objectif) # Vérifie si l'objectif de la quete est terminé # Dans commande condition
    #
    #
    # Date : 20/07/2006
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  20/09/2007    Tonyryu	   Finalisation version 1
    #   1.01	  23/09/2007    Tonyryu	   Correction d'un bug de comparaison
    #   1.02	  26/09/2007    Tonyryu	   Correction Anomalie : caractere '\n' non interprété
    #   1.03	  03/10/2007    Tonyryu	   Correction Anomalie : quete_echouer et quete_finir buggés
    #   1.04	  16/07/2008    Tonyryu	   Ajout fonction quete_tuer_monstre
    #   1.05	  22/07/2008    Tonyryu	   Ajout fonction quete_objectif_termine? ,correction d'un bug de validation de quête, les objectifs terminés sont grisés
    #
    # Attention : Ce script est ma propriété en tant que création et il est donc
    # soumis au droit de la propriété intellectuelle ( http://www.irpi.ccip.fr/ ).
    # En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
    # avoir reçu mon accord au préalable.
    #
    #==============================================================================
    #==============================================================================
    # ■ Game_Party
    #------------------------------------------------------------------------------
    #  Ajout de méthode de gestion de quete, permettant l'intégration à la sauvegarde
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  12/09/2007    Tonyryu	   Création
    #
    #==============================================================================
    class Game_Party
    
     attr_accessor :tab_quete
    
     #--------------------------------------------------------------------------
     # ● initialize (surcharge)
     #--------------------------------------------------------------------------
     alias quete_initialize initialize
     def initialize
       quete_initialize
       @tab_quete = {}
     end
    
     #--------------------------------------------------------------------------
     # ● quete_demarrer
     #--------------------------------------------------------------------------
     def quete_demarrer(id_quete)
       # Si La quête existe
       if !$data_quete.tab_def_quete[id_quete].nil?
      # Si la quête n'est pas déjà accepter
      if @tab_quete[id_quete].nil?
        # Ajouter une entrée dans le tableau de quete du joueur
        @tab_quete[id_quete] = [1,Array.new($data_quete.tab_def_quete[id_quete]["but"].size, 0)]
      end
       else
      # Sinon, affiché un message d'erreur
      print "Quete ID : #{id_quete} non configurée!!"
       end
     end
     #--------------------------------------------------------------------------
     # ● quete_objectif_termine?
     #--------------------------------------------------------------------------
     def quete_objectif_termine?(id_quete,id_objectif)
       # Tester si la quete existe
       return false if @tab_quete[id_quete].nil?
      
       # Tester si l'ojectif existe
       return false if $data_quete.tab_def_quete[id_quete]["but"][id_objectif].nil?
      
       objectif = $data_quete.tab_def_quete[id_quete]["but"][id_objectif]
      
       fait = @tab_quete[id_quete][1][id_objectif]
       sur = objectif[1]
      
       if ["TR_OBJ","TR_ARME","TR_ARMU"].include?(objectif[0])
      case objectif[0]
      when "TR_OBJ"
        item = $data_items[objectif[2]]
        fait = item_number(objectif[2])
      when "TR_ARME"
        item = $data_weapons[objectif[2]]
        fait = weapon_number(objectif[2])
      when "TR_ARMU"
        item = $data_armors[objectif[2]]
        fait = armor_number(objectif[2])
      end
      fait = ( fait > sur ? sur : fait)
       end
       sur = 1 if objectif[0] == "Parlare"
      
       return (fait == sur)   
      
     end
      
     #--------------------------------------------------------------------------
     # ● quete_termine?
     #--------------------------------------------------------------------------
     def quete_termine?(id_quete)
     
       # Tester si la quete existe
       return false if @tab_quete[id_quete].nil?
       for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
      return false if !quete_objectif_termine?(id_quete,i)
       end
       return true
     end
    
     #--------------------------------------------------------------------------
     # ● quete_parler
     #--------------------------------------------------------------------------
     def quete_parler(nom)
      
       # Parcourir la liste des quete en cours
       @tab_quete.each_key { |id_quete|
      # Si la quete est en cours
      if @tab_quete[id_quete][0] == 1
        # Vérifier tous les objectifs de la quete
        for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
    	  objectif = $data_quete.tab_def_quete[id_quete]["but"][i]
    	 
    	  if objectif[0] == "Parlare"
    	    if objectif[2] == nom
    		  @tab_quete[id_quete][1][i] = 1
    	    end
    	  end
        end
      end
       }
     end
    
     #--------------------------------------------------------------------------
     # ● quete_finir
     #--------------------------------------------------------------------------
     def quete_finir(id_quete)
       # Tester si la quete existe
       if !@tab_quete[id_quete].nil?
      # Si la quete n'est pas deja cloturer
      if @tab_quete[id_quete][0] == 1
        # changer la quete d'état
        @tab_quete[id_quete][0] = 2
       
        # Réceptionner la récompense
        for i in 0...$data_quete.tab_def_quete[id_quete]["gain"].size
    	  gain = $data_quete.tab_def_quete[id_quete]["gain"][i]
    	  nbr = gain[1]
    	  case gain[0]
    	  when "EXP"
    	    for i in 0...@actors.size
    		  @actors[i].exp += nbr
    	    end
    	  when "OBJ"
    	    gain_item(gain[2], nbr)
    	  when "ARME"
    	    gain_weapon(gain[2], nbr)
    	  when "ARMU"
    	    gain_armor(gain[2], nbr)
    	  when "ARGENT"
    	    gain_gold(nbr)
    	  end
        end
      end
       end
      
     end
    
     #--------------------------------------------------------------------------
     # ● quete_echouer
     #--------------------------------------------------------------------------
     def quete_echouer(id_quete)
       # Si la quete est connu
       if !@tab_quete[id_quete].nil?
      # Si la quete n'est pas deja cloturer
      if @tab_quete[id_quete][0] == 1
        # changer la quete d'état
        @tab_quete[id_quete][0] = 3
      end
       end
     end
    
     #--------------------------------------------------------------------------
     # ● quete_trouve?
     #--------------------------------------------------------------------------
     def quete_trouve?(id_quete)
       return !@tab_quete[id_quete].nil?
    
     end
    
     #--------------------------------------------------------------------------
     # ● quete_en_cours?
     #--------------------------------------------------------------------------
     def quete_en_cours?(id_quete)
     return false if @tab_quete[id_quete].nil?
    
     return ( @tab_quete[id_quete][0] == 1 )
     end
    
     #--------------------------------------------------------------------------
     # ● quete_reussie?
     #--------------------------------------------------------------------------
     def quete_reussie?(id_quete)
     return false if @tab_quete[id_quete].nil?
    
     return (@tab_quete[id_quete][0] == 2)
      end
     
     #--------------------------------------------------------------------------
     # ● quete_echoue?
     #--------------------------------------------------------------------------
     def quete_echoue?(id_quete)
     return false if @tab_quete[id_quete].nil?
    
     return (@tab_quete[id_quete][0] == 3)
     end
     #--------------------------------------------------------------------------
     # ● quete_tuer_monstre
     #--------------------------------------------------------------------------
     def quete_tuer_monstre(id_monstre)
       # Parcourir la liste des quete en cours
       @tab_quete.each_key { |id_quete_party|
      # Si la quete est en cours
      if @tab_quete[id_quete_party][0] == 1
        # Vérifier si des objectifs sont liés à la chasse
        id_objectif = -1
        $data_quete.tab_def_quete[id_quete_party]["but"].each { |objectif|
    	  id_objectif += 1
    	  if objectif[0] == "Sconfiggere"
    	    if objectif[2] == id_monstre
    		  # ajouter 1 au compteur
    		  @tab_quete[id_quete_party][1][id_objectif] += 1 if objectif[1] != @tab_quete[id_quete_party][1][id_objectif]
    	    end
    	  end
        }
      end
       }
     end
    
    end
    #==============================================================================
    # ■ Sprite_Battler
    #------------------------------------------------------------------------------
    #  Surcharge de la méthode update pour gestion de chasse
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  12/09/2007    Tonyryu	   Création
    #
    #==============================================================================
    class Sprite_Battler
    
     #--------------------------------------------------------------------------
     # ● update (surcharge)
     #   permet de comptabiliser une créature tuée, objectif "CHASSER"
     #--------------------------------------------------------------------------
     alias quete_update update
     def update
       sav_battler_visible = @battler_visible
       quete_update()
       if @battler.is_a?(Game_Enemy) and sav_battler_visible and !@battler_visible
      # vérifier que l'id du monstre est recherché dans une quete en cours
      $game_party.quete_tuer_monstre(@battler.id)
       end
     
     end
    
    end
    
    #==============================================================================
    # ■ Window_Optionquete
    #------------------------------------------------------------------------------
    #  Fenêtre des option de quete
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  12/09/2007    Tonyryu	   Création
    #
    #==============================================================================
    class Window_Optionquete < Window_Selectable
    
    
     #--------------------------------------------------------------------------
     # ● initialize
     #--------------------------------------------------------------------------
     def initialize
       super(0, 0, 320, 120)
       self.contents = Bitmap.new(width - 32, height - 32)
       self.back_opacity = 0
       self.opacity = 0
       self.contents.font.name = $fontface
       self.contents.font.size = 18
       
       self.index = 0
       @item_max =3
       @column_max = 1
      
       refresh
     end
     #--------------------------------------------------------------------------
     # ● refresh
     #--------------------------------------------------------------------------
     def refresh
       self.contents.clear
       # Afficher le titre
       self.contents.font.color = Color.new(100,100,100,255)
       self.contents.font.size = 24
       self.contents.draw_text(0, -2, 320, 25, "Sommario",1)
      
       # Afficher le menu
       self.contents.font.size = 18
       self.contents.font.color = Color.new(0,0,0,255)
       self.contents.draw_text(30, 20, 200, 25, "- Missioni in corso di svolgimento")
       self.contents.draw_text(30, 40, 200, 25, "- Missioni portate a termine")
       self.contents.draw_text(30, 60, 200, 25, "- Missioni fallite")
      
       self.contents.fill_rect(30,84,260,1,Color.new(100,100,100,255))
      
     end
    
     #--------------------------------------------------------------------------
     # ● update_cursor_rect
     #    - Permet de modifier la position du rectangle de sélection à chaque cycle
     #--------------------------------------------------------------------------
     def update_cursor_rect
       # Si l'index de focus est inferieur à 0
       if @index < 0
      # Alors effacer le rectangle de sélection
      self.cursor_rect.empty
       else
      # Sinon afficher le rectangle à la position du focus
      self.cursor_rect.set(20, 22 + (20 * @index), 280, 20)
       end
     end
    end
    
    #==============================================================================
    # ■ Window_Listequete
    #------------------------------------------------------------------------------
    #  Fenêtre de la liste des quetes
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  12/09/2007    Tonyryu	   Création
    #
    #==============================================================================
    class Window_Listequete < Window_Selectable
    
    
     #--------------------------------------------------------------------------
     # ● initialize
     #--------------------------------------------------------------------------
     def initialize
       super(0, 120, 320, 360) #super(0, 120, 320, 360)
       self.contents = Bitmap.new(width - 32, height - 32)
       self.back_opacity = 0
       self.opacity = 0
       self.contents.font.name = $fontface
       self.contents.font.size = 20
      
       self.active = false
       self.index = -1
      
       @column_max = 1
      
      
      
       refresh
     end
    
     #--------------------------------------------------------------------------
     # ● refresh
     #--------------------------------------------------------------------------
     def refresh(etat_quete = 1)
       if self.contents != nil
      self.contents.dispose
      self.contents = nil
       end
      
       @tab_quete = []
      
       # Parcourir la liste des quete en cours
       $game_party.tab_quete.each_key { |id_quete_party|
     # Si la quete est en cours
      if $game_party.tab_quete[id_quete_party][0] == etat_quete
        #@tab_quete.push(id_quete_party)
        @tab_quete.insert(0,id_quete_party)
      end
       }
      
       @item_max = @tab_quete.size
      
       if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 20 -3)
      self.contents.font.name = $fontface
      self.contents.font.size = 18
      self.contents.font.color = Color.new(0,0,0,255)
     
      for i in 0...@tab_quete.size
        id_quete_party = @tab_quete[i]
        # Afficher le nom de la quete
       
        self.contents.draw_text(30, (i * 20) - 4, 250, 20, $data_quete.tab_def_quete[id_quete_party]["nom"])
      end
       end
      
     #--------------------------------------------------------------------------
     # ● nb_quete
     #--------------------------------------------------------------------------
       def nb_quete()
      return @tab_quete.size
       end
     #--------------------------------------------------------------------------
     # ● id_quete
     #--------------------------------------------------------------------------
       def id_quete()
      return @tab_quete[@index]
       end
      
     end
    
     #--------------------------------------------------------------------------
     # ● update_cursor_rect
     #    - Permet de modifier la position du rectangle de sélection à chaque cycle
     #--------------------------------------------------------------------------
     def update_cursor_rect
       # Si l'index de focus est inferieur à 0
       if @index < 0
      # Alors effacer le rectangle de sélection
      self.cursor_rect.empty
       else
      # Sinon afficher le rectangle à la position du focus
      self.cursor_rect.set(20, -4 + (20 * @index), 280, 20)
       end
     end
    end
    
    #==============================================================================
    # ■ Window_Detailquete
    #------------------------------------------------------------------------------
    #  Fenêtre de détail d'une quete
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  12/09/2007    Tonyryu	   Création
    #
    #==============================================================================
    class Window_Detailquete < Window_Base
     #--------------------------------------------------------------------------
     # ● initialize
     #--------------------------------------------------------------------------
     def initialize
       super(320, 0, 320, 480) #super(320, 0, 320, 480)
       self.contents = Bitmap.new(width - 32, height - 32)
       self.back_opacity = 0
       self.opacity = 0
       self.contents.font.name = $fontface
       self.contents.font.size = 20
       self.contents.font.color = Color.new(0,0,0,255)
      
       refresh
     end
    
     #--------------------------------------------------------------------------
     # ● refresh
     #--------------------------------------------------------------------------
     def refresh(id_quete = -1)
       self.contents.clear
      
       return if id_quete == -1
       ligne = 0
      
       # Afficher le descriptif de la quete ( max 8 lignes )
       self.contents.font.italic = false
       self.contents.font.size = 18
       self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Descrizione :" )
       self.contents.font.italic = false
       self.contents.font.size = 16
       $data_quete.tab_def_quete[id_quete]["desc"].each { |texte|
      ligne += 1
      texte[-1] = ""
      self.contents.draw_text(0, (ligne * 20) -2, 250, 20,texte )
      break if ligne == 8
       }
     
       # Afficher objectif
       ligne += 2
       self.contents.font.italic = false
       self.contents.font.size = 18
       self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Obiettivi :" )
       self.contents.font.italic = false
     self.contents.font.size = 16
       for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
      objectif = $data_quete.tab_def_quete[id_quete]["but"][i]
      fait = $game_party.tab_quete[id_quete][1][i]
      sur = objectif[1]
      ligne += 1
     
      if $game_party.quete_objectif_termine?(id_quete,i)
        self.contents.font.color = Color.new(100,100,100,255)
      end
       self.contents.font.size = 18
      if objectif[0] == "Sconfiggere"
    	 self.contents.font.size = 16
        type = "- Sconfiggere " + fait.to_s + "/" + sur.to_s + " " + $data_enemies[objectif[2]].name
        self.contents.draw_text(0, (ligne * 20) -2, 290, 20, type )
      end
     
      if ["TR_OBJ","TR_ARME","TR_ARMU"].include?(objectif[0])
        case objectif[0]
        when "TR_OBJ"
    	  item = $data_items[objectif[2]]
    	  fait = $game_party.item_number(objectif[2])
        when "TR_ARME"
    	  item = $data_weapons[objectif[2]]
    	  fait = $game_party.weapon_number(objectif[2])
        when "TR_ARMU"
    	  item = $data_armors[objectif[2]]
    	  fait = $game_party.armor_number(objectif[2])
        end
        fait = ( fait > sur ? sur : fait)
        bitmap = RPG::Cache.icon(item.icon_name)
        text = "- Trovare " + fait.to_s + "/" + sur.to_s
        self.contents.font.size = 16
        taille = self.contents.text_size(text).width
        self.contents.draw_text(0, (ligne * 20) -2, 290, 20, text)
        self.contents.blt(taille + 4, (ligne * 20) -6, bitmap, Rect.new(0, 0, 24, 24))
        self.contents.draw_text(taille + 30, (ligne * 20) -2, 290, 20, item.name)
        bitmap.dispose
      end
     
      if objectif[0] == "Parlare"
        self.contents.font.size = 16
        self.contents.draw_text(0, (ligne * 20) -2, 290, 20, "- Parlare a: " + objectif[2] )
     
      end
     
      self.contents.font.color = Color.new(0,0,0,255)
     
       end
      
       # Afficher Récompense
       ligne += 2
       self.contents.font.italic = false
       self.contents.font.size = 18
       self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Ricompensa :" )
       self.contents.font.italic = false
       self.contents.font.size = 16
       for i in 0...$data_quete.tab_def_quete[id_quete]["gain"].size
      gain = $data_quete.tab_def_quete[id_quete]["gain"][i]
      nbr = gain[1].to_s
      ligne += 1
     
      if gain[0] == "EXP"
        self.contents.draw_text(0, (ligne * 20) -2, 290, 20, "- Exp : " + nbr)
      end
     
      if ["OBJ","ARME","ARMU"].include?(gain[0])
        case gain[0]
        when "OBJ"
    	  item = $data_items[gain[2]]
        when "ARME"
    	  item = $data_weapons[gain[2]]
        when "ARMU"
    	  item = $data_armors[gain[2]]
        end
        bitmap = RPG::Cache.icon(item.icon_name)
        text = "- "
        taille = self.contents.text_size(text).width
        self.contents.draw_text(0, (ligne * 20) -2, 290, 20, text)
        self.contents.blt(taille + 4, (ligne * 20) -6, bitmap, Rect.new(0, 0, 24, 24))
        self.contents.draw_text(taille + 30, (ligne * 20) -2, 290, 20, item.name + " * " + nbr)
        bitmap.dispose
       
      end
     
      if gain[0] == "Tar"
    	 self.contents.draw_text(0, (ligne * 20) -2, 290, 20, "- " + $data_system.words.gold + " : " + nbr)
      end
     
       end
     end
    end
    #==============================================================================
    # ■ Scene_Quete
    #------------------------------------------------------------------------------
    #  Gérer les quetes
    #   Version   Date		  Auteur	    Commentaires
    #   1.00	  12/09/2007    Tonyryu	   Création
    #
    #==============================================================================
    class Scene_Quete
    
     #--------------------------------------------------------------------------
     # ● main
     #--------------------------------------------------------------------------
     def main
       # Création des fenêtres
       @optionquete_window = Window_Optionquete.new
       @listequete_window = Window_Listequete.new
       @detailquete_window = Window_Detailquete.new
       # Affichage image de fond
       @img_fond = Sprite.new
       @img_fond.bitmap = RPG::Cache.picture("grim1")
      
       # Effectuer la transition graphique
       Graphics.transition
       # Boucle
       loop do
      # Mettre à jour les graphique
      Graphics.update
      # Mettre à jour les entrés clavier
      Input.update
      # Appeler fonction update
      update
      # si la Scene n'est plus la même
      if $scene != self
        # Alors sortir de la boucle
        break
      end
       end
       Graphics.freeze
      
       # Détruire objets de classe
       @optionquete_window.dispose
       @listequete_window.dispose
       @detailquete_window.dispose
      
       # destruction de l'image de fond
       @img_fond.bitmap.dispose
       @img_fond.dispose
     end
    
     #--------------------------------------------------------------------------
     # ● update
     #--------------------------------------------------------------------------
     def update
       # Mettre à jour les fenêtres
       @optionquete_window.update
       @listequete_window.update
       @detailquete_window.update
      
       if @optionquete_window.active
      gerer_menu
       elsif @listequete_window .active
      gerer_liste
       end
      
     end
    
     #--------------------------------------------------------------------------
     # ● gerer_menu
     #--------------------------------------------------------------------------
     def gerer_menu
      
       # si la touche B est appuyée
       if Input.trigger?(Input::B)
      # Alors, jouer le son "cancel"
      $game_system.se_play($data_system.cancel_se)
      # Revenir sur l'écran de compte
      $scene = Scene_Menu.new
      return
       end
      
       # Si la fleche bas ou la fleche bas est appuyée
       if Input.trigger?(Input::DOWN) or Input.trigger?(Input::UP)
      @listequete_window.refresh(@optionquete_window.index + 1)
       end
      
       # si la touche C est appuyée
       if Input.trigger?(Input::C)
      # ne rien faire si il n'y a pas de quete
      return if @listequete_window.nb_quete() == 0
      # Alors, jouer le son "decision"
      $game_system.se_play($data_system.decision_se)
      # Parcourir la liste des quetes
      @optionquete_window.active = false
      @listequete_window.active = true
      @listequete_window.index = 0
      @detailquete_window.refresh(@listequete_window.id_quete)
       end
      
     end
     #--------------------------------------------------------------------------
     # ● gerer_liste
     #--------------------------------------------------------------------------
     def gerer_liste
       # Si la fleche bas ou la fleche bas est appuyée
       if Input.trigger?(Input::DOWN) or Input.trigger?(Input::UP)
      @detailquete_window.refresh(@listequete_window.id_quete)
       end
      
       # si la touche B est appuyée
       if Input.trigger?(Input::B)
      # Alors, jouer le son "cancel"
      $game_system.se_play($data_system.cancel_se)
      # Revenir sur le sommaire
      @listequete_window.active = false
      @optionquete_window.active = true
      @listequete_window.index = -1
      @detailquete_window.refresh
      return
       end
      
     end
     
    end
    
    

     

     

    Grazie in anticipo!

×
×
  • Create New...