Je vais devoir passer par le même travail. Donc avec une table d'objets et une table d'inventaire
Mais pour moi ce sera simple : chaque objet à son entrée dans la table d'inventaire, + un nombre permettant pour certains de former des "tas". Eventuellement un mécanisme en jeu permettra de réunir/diviser ces tas, mais en tout état de cause ils seront présentés comme un objet indivisible en jeu.
Donc si mon personnage à 3 casques sur lui (qui sait ce qu'on trouve dans les poubelles d'un forgeron ?) ça fera trois entrée dans la table inventaire
id_player, id_item, nb
457 , 37 ,1
457, 37, 1
457, 37, 1
Un peu de gâchis pour l'utilisation de l'espace. Mais si tu n'as pas besoin du tout de différencier ces items, alors le plus simple reste pour toi de faire une fonction d'éclatement pour intéragir.
Tu fais un select sur la table inventaire avec WHERE id_player = $id et tu récupère N entrées du type id_object, nb_object. A toi de faire des boucles for sur nb_objects pour afficher 3 object par ex, en équiper un, etc. Si tu as unet able d'objets équipés tu mettras celui qu'il faut et selon le cas:
- soustraira à nb_objets au groupe d'objets du même genre s'il était > 1
- détruira la ligne de l'objet dans la table inventaire.
et l'inverse quand un objet arriuve dans l'inventaire : création d'une ligne ou modification du nombre selon le cas.
EDIT : sephi est passé avant... mais je te propose les deux alternatives ^^
Mais pour moi ce sera simple : chaque objet à son entrée dans la table d'inventaire, + un nombre permettant pour certains de former des "tas". Eventuellement un mécanisme en jeu permettra de réunir/diviser ces tas, mais en tout état de cause ils seront présentés comme un objet indivisible en jeu.
Donc si mon personnage à 3 casques sur lui (qui sait ce qu'on trouve dans les poubelles d'un forgeron ?) ça fera trois entrée dans la table inventaire
id_player, id_item, nb
457 , 37 ,1
457, 37, 1
457, 37, 1
Un peu de gâchis pour l'utilisation de l'espace. Mais si tu n'as pas besoin du tout de différencier ces items, alors le plus simple reste pour toi de faire une fonction d'éclatement pour intéragir.
Tu fais un select sur la table inventaire avec WHERE id_player = $id et tu récupère N entrées du type id_object, nb_object. A toi de faire des boucles for sur nb_objects pour afficher 3 object par ex, en équiper un, etc. Si tu as unet able d'objets équipés tu mettras celui qu'il faut et selon le cas:
- soustraira à nb_objets au groupe d'objets du même genre s'il était > 1
- détruira la ligne de l'objet dans la table inventaire.
et l'inverse quand un objet arriuve dans l'inventaire : création d'une ligne ou modification du nombre selon le cas.
EDIT : sephi est passé avant... mais je te propose les deux alternatives ^^