Changement de table - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Changement de table (/showthread.php?tid=2970) |
Changement de table - phenix - 27-08-2008 Bonjour à tous, Voila j'explique mon problème: Je possède une table "serviteur_inventaire" qui contient l'id d'un serviteur, sont quartier, sa ville, sa position et l'id d'un objet (Un serviteur étant une créature que le joueur traîne derrière lui) . Quand un serviteur meurt, les objets qu'il porte doivent tomber sur le sol donc, je dois passer, l'id de l'objet, le quartier, la ville, la position et l'id des objet qu'il porte dans la table objet_sol. Je voudrais savoir si la seul solution est de faire un SELECT, une boucle pour les insérer dans objet_sol et ensuite les DELETE de l'inventaire. Sa me parait lourd et je suspect une astuce. Amicalement RE: Changement de table - Kassak - 27-08-2008 Pour mon jeu, j'ai une table inventaire, et une table objet_sol. Quand je souhaite transférer des objets du joueur par terre, après quelques vérifications comme par exemple s'il choisit de déposer tout ce qu'il a => delete de la ligne de l'inventaire, s'il n'y en a pas déjà au sol => insert, sinon un update de chaque coté. Je ne pense pas que se soit une solution lourde, il y a juste 2 requêtes à chaque fois. RE: Changement de table - phenix - 28-08-2008 Citation :Quand je souhaite transférer des objets du joueur par terre, après quelques vérifications comme par exemple s'il choisit de déposer tout ce qu'il a => delete de la ligne de l'inventaire, s'il n'y en a pas déjà au sol => insert, sinon un update de chaque coté. Oui, mais dans le cas ou j'ai 10 objets a changer de table d'un coup ? Citation :Je pense que le plus adapté c'est d'avoir tout dans la même table. Je suis pas vraiment chaud pour sa étant donnée que mon jeu contient beaucoup d'objet et que les inventaires sont grand, j'ai préférer les séparer. Y a vraiment pas une requête/instruction prévue pour les transferts entre 2 tables ? C'est quand même dommage RE: Changement de table - keke - 28-08-2008 Oxman +1. Ta notion de "beaucoup d'objets" est très faible face à un moteur de BDD. Lui gère plusieurs millions de champs sans que ca lui pose de problème. Sur magdales, j'ai une règle qui dit qu'un objet est soit dans un équipement (id_equipement != 0) soit qu'il est rattaché à une position (id_position != 0). Tout autre cas serait dans mon jeu une abhération ... Les joueurs, monstres, pnj, ville, coffre fort, batiment sont des conteneurs à équipement. Je t'encourage à faire un système en accord avec ta SGBD ... Je suis en train de revoir un point délicat car j'avais mal pensé mon schéma ... Bilan, ca va être au moins une 40 heures de "je détruits et je reconstruit mon code". Mon erreur (qui peut servir aux autres) est d'avoir considéré les joueurs et les monstres dans 2 tables différentes ... là j'essaye d'en faire 3 : Information propre aux joueurs Information propre à l'IA du monstre Information propre au personnage (joueur ou monstre) Kéké RE: Changement de table - Ter Rowan - 28-08-2008 +1 aussi la position des objets (j entends 1 objet = 1 épée dans le jeu pas un type d objet : les épées en général) est identifiée par les champs d'une même table id lieu (donc "au sol" si rempli) id personnage ( donc "pas au sol" si rempli) id conteneur (dans quel sac/coffre, qu'il soit au sol ou sur un personnage) la seule nuance, c'est que je ne sais pas encore si je continue sur ce point pour l'équipement : ce que le personnage utilise le pull qu'il porte, pas la chemise qui est dans le sac à dos) en effet ce qu'on équipe permet d'obtenir des bonus (armure, résistance, ...) , c'est toute cette mécaniquesur laquelle je ne me suis pas encore penchée qui ne me permet pas de conclure définitivement, même si sur ce point aussi, je pense dans la même table a priori RE: Changement de table - Kassak - 28-08-2008 Ter Rowan, tu rajoutes simplement un champ port (1=port, 0="pas port") RE: Changement de table - Anthor - 28-08-2008 Pour transférer, tu peux utiliser une requête de ce style : Code PHP :
Le delete doit fonctionner en l'ajoutant à la suite. Code PHP :
Ce qui ne te donnera qu'une requête à envoyer. Je n'ai pas restesté, mais j'en avais déjà écrite. RE: Changement de table - Ludvig - 29-08-2008 Ah, c'est comme ça qu'on fais le "bug qui duplique les objets" ^^ moi j'ai une table "objets" et si "pos" vaut quelque chose c'est que c'est l'ID du personnage qui le porte, sinon il est au sol (x,y,...) comme ça il n'y a pas d'états non valides, ce qui fais qu'il peut y avoir bug mais pas un gros bug (duplication). RE: Changement de table - Ter Rowan - 29-08-2008 Kassak a écrit :Ter Rowan, tu rajoutes simplement un champ port (1=port, 0="pas port") merci kassak mais ce n'était pas ma difficulté ^^, je pourrais même mettre cette information dans le champ conteneur directement (genre 0 = porté car mes id conteneurs sont > 0) ma réflexion porte plutôt sur les requêtes qui utiliseront l'équipement porté comme je n'ai pas encore réfléchi à ce sujet je ne peux pas l'exposer |