Extend Database
{Script RGSS3 pour Ace}
Bon, personnellement, je trouve que la base de données de RPGMaker est un peu ennuyante car on ne peut pas l'étendre. Donc je suis obligé de rester dans le bien contraignant système de base, et pour avoir des choses plus cools (et plus spécifiques) je suis obligé d'abuser du champ commentaire/note de la base de données (et pourquoi pas compléter avec le script Typed Entities, qui n'est pas adapté à ce genre de choses... JE TROUVE !)
Donc j'ai plagié Avygeil qui avait déjà été plagié par Grim en recodant une base de données de RM.
Principe !
L'idée repose sur le même concept que celui utilisé par Grim dans son "Expressive Database", sauf que c'est un peu mieux (et intelligemment) codé. Donc on va d'abord, dans un script vierge au-dessus du main, créer des tables. Pour cela il suffit de faire :
Code (Ruby): class Epees < Database::Table
# Ici on définira les champs de notre table
end
Pour mettre des champs, qui caractérisent notre table il faut indiquer son type et son nom.
Les types que le script admet sont :
-:string - Correspond à une chaîne de caractères
-:integer - Correspond à un entier
-:float - Correspond à un nombre à virgule
-:boolean - Correspond à true ou false (un interrupteur)
-:polymorphic - Correspond à n'importe quel type de données RM
Voici un exemple avec des épées et des Pokémon :
Code (Ruby): class Epees < Database::Table
integer :id
string :name
string :description
float :cost
integer :power
end
class Pokemons < Database::Table
integer :id
string :name
string :description
string :type
integer :power
end
L'objectif est de décrire toutes les caractéristiques de nos tables. Bien sûr, ces exemples sont assez "naïfs" et non finis.
Remplir notre base de données
Il existe deux manières de "remplir" notre base de données.
La première est la plus économique, il s'agit, après nos définitions de champs, d'utiliser la commande "insert" et lui passer des arguments. Si les arguments ne sont pas du bon type le script essaiera de les convertir sinon il mettra une valeur par défaut en référence au type. Voici un exemple de remplissage :
Code (Ruby): class Epees < Database::Table
# Design de la table
integer :id
string :name
string :description
float :cost
integer :power
# Remplissage
insert 0, "Excalibur", "Une épée rare", 150.50, 120
insert 1, "Durendal", "Une épée très rare", 200.20, 200
insert 2, "Dard", "Epée de Bilbon puis de Frodon", 30.0, 50
end
class Pokemons < Database::Table
# Design de la table
integer :id
string :name
string :description
string :type
integer :power
# Remplissage
insert 0, "Pikachu", "Atroce souris verte", "Foudre", 10
insert 1, "Pichu", "Le même qu'au-dessus", "Foudre", 5
insert 2, "Doraemon", "truc", "Feu", 100
insert 3, "Sangoku", "Pokémon légendaire", "Rare", 1000
end
Sinon il est possible d'instancier des objets de cette manière :
Code (Ruby): Pokemons.new(id: 4, name: "Mew", description: "Singe bleu", type: "Herbe", power: 999)
Pokemons.new(id: 5, name: "Magicalichigo", description: "Ressemble a un Evoli", type: "Psy", power: 1)
Personnellement, je préfère cette manière qui me permet de séparer mon "design" de mon remplissage. Mais il est possible de mélanger les manières.
Accéder à une table
Il suffit de faire :
Database.tables[:Nom_de_la_Table] ou
Database.Nom_de_la_Table.
Par exemple :
Database.Pokemons ou
Database.tables[:Pokemons].
Ensuite
Database.Pokemons[0] retournera le premier enregistrement (Pikachu), mais comme les champs sont rangés dans un tableau, il est possible d'utiliser toutes les méthodes relatives aux tableaux. Cependant cette partie s'adresse aux scripteurs, un peu comme tout ce script en fait
Traiter la base de données de RPGMaker
Comme ce script est moderne et cool, il permet aussi de manipuler la base de données de RPG Maker avec les mêmes primitives.
Par exemple, pour accéder à la table des acteurs de la base de données, il faudra faire :
Database.VXACE_Actors, qui retourne le tableau de tous les acteurs de la base de données.
Les tables accessibles :
-VXACE_Actors
-VXACE_Classes
-VXACE_Skills
-VXACE_Items
-VXACE_Weapons
-VXACE_Armors
-VXACE_Enemies
-VXACE_States
-VXACE_Animations
-VXACE_Tilesets
-VXACE_CommonEvents
-VXACE_MapInfos
Cet ajout permet de manipuler les données de la base de données de manière transparente avec le script.
Binding avec l'Event Extender
Si l'Event Extender est déjà installé, il faut placer ce script en-dessous, pour que cette base de données écrase celle de l'Event Extender.
Le Design/Remplissage fonctionne pareil qu'expliqué plus haut.
Pour les accès à la base de données, ça fonctionne comme au-dessus ou comme documenté dans l'Event Extender. (Par exemple T[:Pokemons] ou T[:VXACE_Actors]).
Merci à Hiino pour sa relecture !
Code
Spoiler (cliquer pour afficher) [code=ruby][/code]
Lien permanent
Si je mets le script à jour, ce sera généralement sur cette page :
Lien vers la page GitHub
J'ai ce script avec l'event Extender mais je n'arrive pas accéder aux tables, comment faire, j'ai fais un événement, appeler un script, noter les lignes
" Database.tables[:Pokemons]
Database.Pokemons[0] "
Et quand je vais en jeux, impossible d'accéder a quoi que ce soit.. Posté le : 25/08/2015 à 01h54