-
Posts
1,364 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by Zosimos
-
-
Ragazzi, i voti si possono recuperare sulla distanza, manca ancora quasi un mese.
Preoccupatevi di lavorare per bene sulla promozione all'estero e - consiglio - preparate una release anche in italiano per il pubblico locale.
-
Più che altro le critiche che scaglia contro il BELLISSIMO Crimson Story - che a mio parere è nella top 10 del concorso - denunciano la sua inabilità.
In ogni caso, dà visibilità ed è quello che conta.
-
Vabbè ragazzi, questa è una tizia tremenda che in metà dei giochi che prova dichiara di "non aver capito come si gioca".
Il suo canale è però utile per farsi un'idea dei titoli in gara, considerando che ne prova tipo VENTI al giorno.
-
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
-
Il bello è che Crimson funziona benissimo anche come gioco, cosa che non accade con un sacco di concorrenti blasonati come I Need More e altri.
-
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.
-
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.
-
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.
-
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.
-
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!"
-
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.
-
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!
-
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.
-
Ragazzi, nella vostra pagina dell'Indie Game Contest quando cliccate sul link per twitter vi riporta al canale di YT. Forse avere fatto un errore nel copia-incolla.
-
-
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.
-
L'achievement è DELIZIOSO. Bravissimo.
Ah, sulla pagina tuìtter mettete uno screen o una parte di screen come header. E' fondamentale che si capisca esattamente che cosa state presentando.
E aggiungete la descrizione del gioco nelle informazioni, che altrimenti non si capisce.
...
Cavolo quell'achievement XD
-
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). -
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.
-
Chrome trova falso positivo perché è uno Zip con dentro un exe.
Avvisate l'utenza di impostare l'"ignora avviso", e dite che è un problema di Chrome.
-
Ragazzi, rientro al volo nonostante il periodo (ormai annuale) di pura cacca che sto passando.
Bravissimi. Immaginavo che qualcuno del forum avrebbe tentato il colpaccio all'indie contest, ma non pensavo con una cosa COSI'.
Avete posta privata, c'è gente che vorrebbe conoscervi.
-
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!
-
Concordo, bell'approccio.
Buon lavoro, si attendono risultati.
-
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 endGrazie in anticipo!

Pocket Quest!
in Progetti 2K/2K3
Posted
E bravo Testamentuccio...