28-08-2012, 12:38 PM
(Modification du message : 28-08-2012, 12:40 PM par Angelblade.)
Le sujet a été abordé ici: Gestion Inventaire
Le but est d'être capable de sauvegarder les objets en possession d'un joueur. Sans parler du moyen technique d'y parvenir je vais présenter comment je vois les choses à travers du JavaScript.
Si on relie les objets au joueur comme ceci le problème suivante se pose:
Imaginons que le joueur utilise items[0] et qu'au même moment un autre cherche à lui voler items[0]. La base de donnée va supprimer items[0] puis voler items[0] qui seras devenu entre temps items[1];
Je ne peux donc pas dire à la BDD supprime items[0] puisque items[0] peut changer.
Je ne peux pas non plus demander à supprimer l'item d'id 12 puisque ici il y a deux fois l'id 12.
J'ai donc pensé qu'il faut créer un id représentant items[0]:
Si on veut agir sur items[0] on agit par l'id 27. De cette manière on est sur d'agir sur le bon objet.
Il est possible de regrouper les items ayant le même id:
Cependant dans un inventaire il est possible de modifier un objet, le rendant +ou- unique.
Si j'ai modifié mon épée pour qu'elle fassent des dégâts de feu. J'aimerais pouvoir écrire.
Que pensez vous de tout ça?
Le but est d'être capable de sauvegarder les objets en possession d'un joueur. Sans parler du moyen technique d'y parvenir je vais présenter comment je vois les choses à travers du JavaScript.
// ces deux variables représentent des objets tel qu'on pourrait les stocker en BDD
var potion = {id: 12, name: 'potion'};
var sword = {id:13, name:'sword'};
// player provient d'une autre table. Il possède trois items: deux potions (12) et une épée (13)
var player = {
name:'jean',
items: [12,13,12]
};
Si on relie les objets au joueur comme ceci le problème suivante se pose:
Imaginons que le joueur utilise items[0] et qu'au même moment un autre cherche à lui voler items[0]. La base de donnée va supprimer items[0] puis voler items[0] qui seras devenu entre temps items[1];
Je ne peux donc pas dire à la BDD supprime items[0] puisque items[0] peut changer.
Je ne peux pas non plus demander à supprimer l'item d'id 12 puisque ici il y a deux fois l'id 12.
J'ai donc pensé qu'il faut créer un id représentant items[0]:
player.items = [
{id: 27, itemId: 12},
{id: 30, itemId: 13},
{id: 31, itemId: 12},
]
Si on veut agir sur items[0] on agit par l'id 27. De cette manière on est sur d'agir sur le bon objet.
Il est possible de regrouper les items ayant le même id:
player.items = [{itemId:12, count:2}];
Quand j'utilise l'item 12, on diminue count.Cependant dans un inventaire il est possible de modifier un objet, le rendant +ou- unique.
Si j'ai modifié mon épée pour qu'elle fassent des dégâts de feu. J'aimerais pouvoir écrire.
players.items[1] = {id: 30, itemId:13, fireDamage:true'};
De cette manière items[1] pourras être calculer pour devenir l'objet sword avec une nouvelle propriété, fireDamage:true.Que pensez vous de tout ça?