Sujet: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 14:30
Auteur : moi-même, Miraino Hikari Version 2.01 : Miraino Hikari également ^_^
Utilité : générer des titre de livres aléatoires ou défini pour une grande bibliothèque.
Utilisation : dans un fenêtre de message, inséré \L[X], L![X], LL[X], LL![X] ou LE[X], X étant un entier entre 0 et l'infini (soit 9999 pour VX). Si X=0, ce sera un livre aléatoire, sinon, ce sera un livre précis selon vos valeurs (donc vous devrez tester des valeurs).
\L[X] donne une description courte du livre \L![X] donne une description courte du livre avec extrait \LL[X] donne une description longue du livre \LL![X] donne une description longue du livre avec extrait \LE[X] ne donne pas de description, mais affiche un extrait
Captures : Notez que le héro est au même endroit. Désolé pour les noms utilisé, j'ai pris les 2 premiers exemples que le jeu m'a donner, ce n'est en rien volontaire, c'est juste deux exemples.
(C'est images ne correspondent plus à la nouvelle démo, mais le principe est le même.)
Démo : http://www.megaupload.com/?d=1VBOH2QW (le lien fonctionnait quand je l'ai testé) EDIT: la démo est la version 2.00, il y a un bug à l'intérieur. Veuillez prendre le code afficher ci-dessous pour le code le plus à jour.
script :
Code:
module Gen_Hikari #version 2.01 MY_RNDMZR = 253 #nombre servant pour obtenir un livre aléatoire peut être modifier pour une valeur de 5 à 9999 #============================================================================== # Name_Generator # Par Miraino Hikari # rpg-maker-vx.bactif.com #------------------------------------------------------------------------------ # Génère un nom complet de personne (Prénom, Surnom, Nom de Famille) # La valeur retourné sera un string correspondant à ce qu'on veut # Soit 0 Nom complet (P-S-N) # 1 Nom abrégé (P-N) # 2 Sans nom de famille (P-S) # 3 Sans Prénom (S-N) # 4 Prénom seulement # 5 Surnom seulement # 6 Nom seulement # autre Anonyme #============================================================================== class Name_Generator attr_accessor :prenom, :surnom, :nom, :anonyme
ANON = ["celui qui est sans nom", "quelqu'un qui avait trop honte pour inscrire son nom", "celui qui restera inconnu", "l'auteur anonyme", "l'homme invisible", "on s'en fout. Qui se préocupe des auteurs..?"]
def rand_name(type) case type when 0 #nom complet (PSN) return "#{@prenom} \"#{@surnom}\" #{@nom}" when 1 #nom abrégé (PN) return "#{@prenom} #{@nom}" when 2 #sans nom de famille (PS) return "#{@prenom} \"#{@surnom}\"" when 3 #sans prénom (SN) return "\"#{@surnom}\" #{@nom}" when 4 #Prénom seulement return "#{@prenom}" when 5 #Surnom seulement "\"#{@surnom}\"" when 6 #Nom de famille seulement "#{@nom}" else #Citation comique anonyme "#{@anonyme}" end end end
#============================================================================== # Subject_Maker # Par Miraino Hikari # rpg-maker-vx.bactif.com #------------------------------------------------------------------------------ # Génère un titre et un extrait de contenu d'un documents # (type, titre, extrait) # peu être généré aléatoirement ou selon un type # Ici, une attention particulière doit être apporté si on modifie le script # classez vos titres par catgorie en faisant bien attention aux # correspondance des crochets [] #============================================================================== class Subject_Maker attr_accessor :titre, :extrait TITRE = [ ["de sorts", "de soins magique"], #magie ["d'herbologie","de soins magique","guériseurs connus"], #soins ["de grande gastronomie","de recettes pouvant sauver des vies","des recettes communes"], #nourriture ["d'élevage des dragons", "sur les phoenix", "sur les animaux fantastiques"], #animaux ["de math","de français","de l'essentiel scientifique","des théorèmes mathématique","de cartographie universelle"], #études ["sans titre","de titre inconnu","dont le titre n'est plus lisible"] #autre ] EXTRAIT = [ ["Des sorts pour tous les éléments sont traités.","Ce sont de vieux sorts.","Cette magie est incompréhensible.","Ô grimmoire! Que de puissantes magies!","Ces sorts sont proscrits","Le niveau est trop élevé."], ["Des exemples de la vie courrante sont illustré.","Efficacité des techniques.","Soins classés par guérisseurs.","Soins classés par efficacité."], ["Les meilleurs recettes de la régions.", "Hmmmm, ces recettes semble délicieuse", "Yeurk!! Ces recettes semblent dégoutantes", "De belles et bonne recettes sont illustrés", "La présentation de votre recette est la clé!"], ["Guide de soins.", "Comment bien entretenir votre créature.", "Comment se faire un ami.", "Aimé votre animal."], ["Oh... Ça semble compliqué.","C'est très technique.","C'est très détaillé.","Cet ouvrage est très ancien.","Ce n'est pas le temps d'étudier.","J'ai mal à la tête. Mieux vaut le ranger."], ["Plein de figure et de symbole étrange sont dessiné.","Ce document est codé","Plein d'extrait sont effacé par le temps.","Des extraits ont été retiré volontairement.","Il manque des bouts de pages.", "Rien est écrit."] ] def initialize @titre = "Sans Titre\x00" @extrait = "Rien n'est écrit.\x00" end
def rand_title(type, id) case type when (0...TITRE.size) return "#{TITRE[type][id%(TITRE[type].size)]}\x00" else new_type = type%(TITRE.size) return "#{TITRE[new_type][id%(TITRE[new_type].size)]}\x00" end end
def rand_summary(type, id) case type when (0...EXTRAIT.size) return "#{EXTRAIT[type][id%(EXTRAIT[type].size)]}\x00" else new_type = type%(EXTRAIT.size) return "#{EXTRAIT[new_type][id%(EXTRAIT[new_type].size)]}\x00" end end end
#============================================================================== # Book_Materials # Par Miraino Hikari # rpg-maker-vx.bactif.com #------------------------------------------------------------------------------ # Génère les caractéristique visible du livre # (couverture, papier, reliure, locket, encre) # doit être utilisé avec # Ici, une attention particulière doit être apporté si on modifie le script # classez vos titres par catgorie en faisant bien attention aux # correspondance des crochets [] #============================================================================== class Book_Materials attr_accessor :couvert, :papier, :reliure, :fermeture, :encre
COVER = ["en métal", "en bois", "en cuir", "en tissu", "en carton épais", "en papier", "dans un matériau inconnu", "inexistante", "fortement endommagée"]
BIND = ["attachées avec de la ficelle", "reliées par des anneaux de métal", "retenues par des disques de bois gravés", "sans reliure, classé soigneusement", "sans reliure, les pages pêle-mêle", "et sont collées", "reliées simplement avec une spirale"]
PAPER = ["en parchemin", "en papier fin", "en écorce", "en papier de riz"]
INK = ["noire de bonne qualité", "blue, provenant d'une plante locale", "rouge, d'origine inconnue", "multicolore partiellement effacée", "verte, surment végétale", "gravée au laser"]
CLOSE = ["retenu par un ruban de tissu et une boucle", "fermé par magie", "un cadenas empêche l'ouverture", "sans locquet"]
def initialize(type, id) case type when 0 #parchemin @couvert = "le porte-rouleau est #{COVER[(id%COVER.size)]}\x00" @reliure = "" @fermeture = "" @encre = "l'encre est #{INK[(id%INK.size)]}\x00" when 1 #manuscrit @couvert = "la couverture est #{COVER[(id%COVER.size)]}\x00" @reliure = "#{BIND[(id%BIND.size)]}\x00" @fermeture = "" @encre = "l'encre est #{INK[(id%INK.size)]}\x00" else #autres livres @couvert = "la couverture est #{COVER[(id%COVER.size)]}\x00" @reliure = "#{BIND[(id%BIND.size)]}\x00" @fermeture = "#{CLOSE[(id%CLOSE.size)]}\x00" @encre = "" end @papier = "les pages sont #{PAPER[(id%PAPER.size)]}\x00" end
#============================================================================ # Valeurs possibles pour la génération # # Vous pouvez modifier ces valeur librement. Ce seront les valeurs # utilisées pour fabriquer vos livres. Plus vous en mettez, moins il y # de chance que vous tombiez sur 2 livres identiques. # # TYPE : le type de documents (livre, manuelle, manuscrit, parchemin, etc.) # TAILLE : phrase utilisable pour définir la taille du livre # # La taille du livre et son nombre de pages sont générés automatiquement # selon la valeur utilisée pour la création. # #============================================================================
TYPE = [ ["Parchemin", "Rouleau de parchemin", "Rouleau"], #parchemin ou ouvrage pouvant être roulé ["Manuscrit", "Essaie"], #ouvrage sans couverture ou reliure rustique ["Livre", "Livret", "Guide", "Manuel"], #livres normaux ["Tôme", "Collection", "Encyclopédie"] #livres appartenant à une collexion (encyclopédie) ] TAILLE = ["ses dimensions sont","la taille est de", "mesurant"]
def initialize(id = -1) if id == -1 id = rand(MY_RNDMZR) end
@taille = "#{TAILLE[id%TAILLE.size]} #{10+(id%20)} x #{20+(id%20)} cm\x00" case my_type when 0 #parchemin @pages = "de #{((id%10)+1).to_i} pages‚\x00" when 1,2 #manuscrit ou livre @pages = "environ #{(20+(id%30)*(id%20)).to_i} pages\x00" when 3 #collection @pages = "d'une collection de #{((id%60) +2).to_i} volume\x00d'environ #{(200+(id%101)*(id%101)).to_i} pages\x00" else #autre @pages = "contient #{(20+(id%30)*(id%30)).to_i} pages\x00" end
end
def desc_book(type = 1) case type when 0 #complet return "#{@titre} par #{@auteur}.\x00#{@couvert} #{@fermeture} #{@papier} #{@reliure} #{@encre} #{@taille} #{@pages}" when 1 #titre auteur et dimension return "#{@titre} par #{@auteur}.\x00#{@taille} #{@pages}" else return "C'est un livre comme les autres..." end end
def read_book return @extrait end
def full_book(type = 1) return "#{desc_book(type)}#{read_book}" end
end
end
#=========================================================================== # Surcharge de Window_Message pour afficher un livre dans le texte #=========================================================================== # \L[X] génère un livre # \LL[X] génère une decription longue # \LE[X] affiche un extrait du livre choisi # \L![X] génère un livre et affiche son extrait # \LL![X] génère une decription longue avec extrait # # X est un entier # si X = 0, le livre sera aléatoire, # si X >= 1, un livre particulier sera généré #=========================================================================== class Window_Message < Window_Selectable
alias books_convert_special_characters convert_special_characters def convert_special_characters books_convert_special_characters
#ajouté par Hikari pour la gestion des livres @text.gsub!(/\\L\[(\d+)\]/i) { "#{Gen_Hikari::Book_Generator.new(((($1.to_i)-1)).to_i).desc_book(1)}"} @text.gsub!(/\\L!\[(\d+)\]/i) { "#{Gen_Hikari::Book_Generator.new(((($1.to_i)-1)).to_i).full_book(1)}"} @text.gsub!(/\\LL\[(\d+)\]/i) { "#{Gen_Hikari::Book_Generator.new(((($1.to_i)-1)).to_i).desc_book(0)}"} @text.gsub!(/\\LL!\[(\d+)\]/i) { "#{Gen_Hikari::Book_Generator.new(((($1.to_i)-1)).to_i).full_book(0)}"} @text.gsub!(/\\LE\[(\d+)\]/i) { "#{Gen_Hikari::Book_Generator.new(((($1.to_i)-1)).to_i).read_book}"} end
end
Dernière édition par MirainoHikari le Lun 25 Mai 2009 - 16:14, édité 13 fois
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 14:38
Eeeeeeuh, ça fait très bizarre de ne voir aucun bout de phrase attaché Oo
(Ah, au fait, on dit encre et non ancre dans ce cas ^^')
Sinon, ça peut toujours être sympa, merci à toi
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 14:41
Oui c'est vrai pour encre. Merci Gothor, j'avais pas vu passer cette coquille. Je viens de corrigé.
Matsuo Kaito
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 14:46
Innexistante => Inexistante
Endomagée => Endommagée
Des disque => des disques
[...]
Il existe une nuée de petites fautes dans ton script ^^" Sinon, c'est une bonne idée, merci pour le partage ( et la création ).
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 14:49
Ahah, le fourbe à rajouter Gothor dans la liste de noms XD
Je voulais savoir à propos de ce script, faut-il toujours qu'il y ait six propositions différentes? Peut-on en mettre plus? en mettre moins? Doit-il y avoir autant d'élément dans chaque catégorie?
Peut-on enlever certaines catégories?
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 14:53
Non, c'est un super calcul aléatoire de chaque catégorie qui tiens compte du nombre d'éléments. Tu peux en mettre comme tu veux de 1 à l'infini (sérieusement, je ne connais pas la limite supérieure que VX va supporter). Et non, chaque catégorie n'a pas à avoir le même nombre d'élément. Moi, j'ai fait une version rapide pour le forum qui a été un paquet de copier coller et j'ai changer les éléments, mais ce n'est pas une obligation qu'ils soient tous identiques. La preuve, certains n'en ont que 4. Aussi, si vous ne voulez pas qu'il affiche toutes les informations, ou si vous voulez en ajouter, vous n'avez qu'à vous baser sur la partie de la surcharge de Windows_Message. Les \x00 sont des sauts de lignes. Donc effacer ce que vous ne voulez pas et ajouter ce que vous voulez.
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 15:18
Eh, on peut même mettre comme valeur celle d'une variable:
\L[\V[1]] ça c'est bien
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 15:24
Bien tiens. C'était pas prévu pour ça, mais tsé, un code bien fait, c'est un code bien fait
Azeroth
Illusionniste Lv.12
Age : 28 Inscrit le : 29/03/2008 Messages : 673
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 15:34
Ah ouais ! J'ai testé sa le fait ! Je vais l'utiliser pour mon projet ! ! !
La Meche
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
Sujet: Re: [VX] Générateur de bibliothèque Jeu 21 Mai 2009 - 15:57
Elysia => Elezia plutôt Merci pour mon nom <3 Bref c'est un beau petit script =) J'aurais jamais pensé à faire ça x] Dommage...
Elezia
Roi des Lapinous
Age : 34 Inscrit le : 11/10/2008 Messages : 2292
Sujet: Re: [VX] Générateur de bibliothèque Ven 22 Mai 2009 - 10:10
La Meche a écrit:
Elysia => Elezia plutôt
Oui j'ai vu ça ^^ Tant pis XD Mais sinon le script est vraiment sympa et pratique =)
vincentmhd
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
Sujet: Re: [VX] Générateur de bibliothèque Ven 22 Mai 2009 - 10:33
L'idée de ce script est géniale!
Mes bibliothèques vont tout de suite prendre de la substance...
Par contre, Mega up load fait encore des siennes, on arrive sur "World of Kahors". Il y a deux fois "COVER"dans le script.
Je pense que je vais garder l'idée et que je vais l'adapter à mes besoins... Il peut être amélioré, car pour éviter les incohérences, on est obligé de rester assez vague.
Dernière édition par vincentmhd le Ven 22 Mai 2009 - 11:53, édité 1 fois
subdigital
Illusionniste Lv.12
Age : 30 Inscrit le : 30/11/2008 Messages : 660
Sujet: Re: [VX] Générateur de bibliothèque Ven 22 Mai 2009 - 11:27
Très ingénieux ce petit bijoux =)
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 15:19
Je suis en train de corriger le lien Megaupload et les correctifs d'orthographe et du doublon ont été corrigé. Merci à tous... Comme je disais, c'est un exemple de quelque chose qui ne viens pas de VX et que j'ai rapidement adapter pour le forum. Modifiez-le comme bon vous semble.
EDIT: Suite à une demande de vincentmhd, une version 2 plus complète et dont l'aléatoire sera mieux "contrôlé" (plus de parchemin avec une couverture en métal) sera disponible la semaine prochaine. Donc le MegaUpload sera corrigé avec la nouvelle version de la bibliothèque
EDIT: Version 2 disponible. Elle remplace la version 1. J'ai mis à jour le code et le megaupload. Je n'ai pas rééditer avec des valeurs pour le forum, désolé. Ne cherchez plus la version 1, elle n'existe plus.
Luciole
Mage Lv.11
Age : 28 Inscrit le : 13/07/2008 Messages : 587
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 15:31
Bonjour, j'ai une demande. Quand on voit les infos, il y a comme une fenêtre comme si il y avait un autre message en préparation mais... il n'y en a pas ^^"" Donc c'est un bug de ma part ou ce serai possible de bidouiller le script? Mici d'avance!
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 15:48
Oui, j'ai vu aussi ce truc, je suis en train de vérifier... C'est un bug récent... Je publie la correction sous peu.
Azeroth
Illusionniste Lv.12
Age : 28 Inscrit le : 29/03/2008 Messages : 673
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 15:49
La version améliorée est mieux ^^ Bravo Miraino ^^
Luciole
Mage Lv.11
Age : 28 Inscrit le : 13/07/2008 Messages : 587
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 15:54
Alerte alerte! Bug à l'horizon ^_^ Ligne 302 Et puis vraiment par souci du détail (:p) est-ce que c'est possible de ne pas avoir les retours à la ligne?
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 15:59
Version améliorée intéressante, bravo à toi
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 16:00
Pour enlevez des retours à la ligne, enlève des \x00. Mais si tu le fais, attends-toi à ce que certains trucs sortent du cadre...
Voilà, pour le bug de l'extrait qui affiche un message de plus, c'est règlé.
Et il n'y a pas de bug potentiel à la ligne 302 à moins que tu aies déjà un module qui utilise \L \LL \LE \L! ou \LL! J'ai fait une surcharge tout ce qu'il y a de plus légale. Teste, tu verras bien. Ça n'entrera jamais en conflit avec tes autres scripts sauf s'ils utilisent les même lettres, tout ce que ça fait, c'est ajouter des commandes.
Si jamais les lettres sont les même, changes les... mets \BS \BL \BS! \BL! et \RB où n'importe quoi qui te passera par l'esprit et qui n'est pas déjà utilisé.
Luciole
Mage Lv.11
Age : 28 Inscrit le : 13/07/2008 Messages : 587
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 16:07
Alors là je pige pas. Sintax Error ligne 306 Je regarde et la ligne 306 bah... c'est la ligne où il y a écrit "end" =_=""
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: [VX] Générateur de bibliothèque Lun 25 Mai 2009 - 16:09