07-08-2008, 12:58 AM
Personnellement, je suis contre le principe d'utiliser une table pour enregistrer ces informations mais toi tu me fais la totale !
Tu me parles d'inventaire, moi ce que je ferais...
Comme la plupart des jeux on imagine des cases dans un inventaire correspondant au nombre de place qu'il peut contenir.
Chaque case doit se démarquer des autres, les objets ont soit un niveau de vie/casse (armure, épee, sabre laser...) soit une quantité (pièce d'or, unités de métal...).
Pour que la bdd puisse gérer cela facilement, j'y réfléchis et je me dis: "Tiens mais je n'ai aps besoin de faire de recherche sur cela, l'ID du joueur me suffit pour récupérer son inventaire..." alors pourquoi ne pas faire un champs inventaire contenant TOUT l'inventaire.
Pour cela, je vais revenir sur un point dont j'ai parlé précédemment, à chaque objet correspond un ID voir une variable(généralement présente et davantage utilisée). Par exemple, le joueur vient de s'acheter une Grosse épée de la mort qui tue, dans ta bdd, tu n'auras jamais marquer "Grosse épée de la mort qui tue" mais un nom de variable ou bien un ID, un numéro qui lui serait propre et qui lui permettrait d'être plus facilement manipulable et plus léger. Surtout que tu ne sais pas vraiment combien en a le joueur, mais tu t'en fiche un peu, toi ce que tu veux, c'est avoir la liste de ce qu'il possède tout en pouvant les compter(osef un peu...).
Tu peux donc avoir un champs TEXT inventaire pour chaque joueur(ou chaque entité) qui pourrait etre de la forme OBJECTID,NUMBER;
Avec OBJECTID l'ID de l'objet, NUMBER la quantité de l'objet ou son état(en pourcentage par exemple).
Ainsi, je viens de m'acheter ma belle Epée(ID: 21) neuve(100% de sa "vie") et il me reste 155 pièces d'or(ID: 1), je pourrais avoir un champs TEXT inventaire contenant: "21,100;1,155;".
A coups de concaténation et d'explode c'est extrêmement facile à utiliser. Avec des tableaux, tu peux faire des correspondance de variable et de langage. ET le stockage de ces données te prend quoi...? 13 octets ! et le nombre n'a pas vraiment d'importance, il n'est qu'une donnée en plus.
Voici un petit script te montrant comment passer ces données en un tableau PHP.
Tu me parles d'inventaire, moi ce que je ferais...
Comme la plupart des jeux on imagine des cases dans un inventaire correspondant au nombre de place qu'il peut contenir.
Chaque case doit se démarquer des autres, les objets ont soit un niveau de vie/casse (armure, épee, sabre laser...) soit une quantité (pièce d'or, unités de métal...).
Pour que la bdd puisse gérer cela facilement, j'y réfléchis et je me dis: "Tiens mais je n'ai aps besoin de faire de recherche sur cela, l'ID du joueur me suffit pour récupérer son inventaire..." alors pourquoi ne pas faire un champs inventaire contenant TOUT l'inventaire.
Pour cela, je vais revenir sur un point dont j'ai parlé précédemment, à chaque objet correspond un ID voir une variable(généralement présente et davantage utilisée). Par exemple, le joueur vient de s'acheter une Grosse épée de la mort qui tue, dans ta bdd, tu n'auras jamais marquer "Grosse épée de la mort qui tue" mais un nom de variable ou bien un ID, un numéro qui lui serait propre et qui lui permettrait d'être plus facilement manipulable et plus léger. Surtout que tu ne sais pas vraiment combien en a le joueur, mais tu t'en fiche un peu, toi ce que tu veux, c'est avoir la liste de ce qu'il possède tout en pouvant les compter(osef un peu...).
Tu peux donc avoir un champs TEXT inventaire pour chaque joueur(ou chaque entité) qui pourrait etre de la forme OBJECTID,NUMBER;
Avec OBJECTID l'ID de l'objet, NUMBER la quantité de l'objet ou son état(en pourcentage par exemple).
Ainsi, je viens de m'acheter ma belle Epée(ID: 21) neuve(100% de sa "vie") et il me reste 155 pièces d'or(ID: 1), je pourrais avoir un champs TEXT inventaire contenant: "21,100;1,155;".
A coups de concaténation et d'explode c'est extrêmement facile à utiliser. Avec des tableaux, tu peux faire des correspondance de variable et de langage. ET le stockage de ces données te prend quoi...? 13 octets ! et le nombre n'a pas vraiment d'importance, il n'est qu'une donnée en plus.
Voici un petit script te montrant comment passer ces données en un tableau PHP.
Code PHP :
<?php
//$User contientles données de l'utilisateur tel que l'inventaire.
$inventaire = array(); //on initialise l'inventaire
$ObjectList = explode(';', $User['inventaire'], -1);
foreach( $ObjectList as $ObjectStr) {
List($ObjectID, $Nb) = explode(',', $ObjectStr);
$inventaire[$ObjectID] = $Nb;
}
?>
Voilà ce que je ferais...et sans aucune autre table cependant tu peux toujours enregistrer la liste des objets dans une table et/ou ajouter d'autres informations dans cette chaîne.