C'est bien ce que je craignais, ton système est assez compliqué :|
Bon alors peut-être que des gens plus expérimentés que moi vont te donner une solution simple, mais pour moi il va falloir que tu listes toutes les classes, tous les métiers et toutes les actions qu'ils rendent possibles. Ou au moins les types d'action (ainsi que les types d'action susceptibles d'être implémentés dans le futur).
C'est uniquement après avoir fait ce travail que tu vas pouvoir dégager des mécanismes communs entre les actions, avec de nouvelles entités et relations que tu pourras inclure dans ton schéma de BDD.
D'ailleurs même si tu n'arrives pas à lister toutes les actions possibles, tu peux toujours commencer par essayer d'intégrer celles auxquelles tu as pensé dans ton schéma, puis quand tu penseras à d'autres, soit tu peux les intégrer à ta BDD si elles ne demandent pas de modification trop importante, soit tu traites ça en PHP.
Ce que je dis s'applique d'ailleurs bien aux exemples que tu donnes : un guerrier qui a de plus en plus d'attaques en fonction de son niveau et un mage de plus en plus de sorts. Les 2 se caractérisent par un nombre max et un nombre restant, comme tu l'as dit. Ça peut alors valoir le coup de créer une table ressemblant à ça :
Le nombre max est mis à jour lors du passage de niveau, le nombre restant lorsqu'une action est utilisée or lorsque le compteur est réinitialisé.
Encore une fois ton problème n'est pas simple, il est donc difficile de te donner une solution toute faite.
Bon alors peut-être que des gens plus expérimentés que moi vont te donner une solution simple, mais pour moi il va falloir que tu listes toutes les classes, tous les métiers et toutes les actions qu'ils rendent possibles. Ou au moins les types d'action (ainsi que les types d'action susceptibles d'être implémentés dans le futur).
C'est uniquement après avoir fait ce travail que tu vas pouvoir dégager des mécanismes communs entre les actions, avec de nouvelles entités et relations que tu pourras inclure dans ton schéma de BDD.
D'ailleurs même si tu n'arrives pas à lister toutes les actions possibles, tu peux toujours commencer par essayer d'intégrer celles auxquelles tu as pensé dans ton schéma, puis quand tu penseras à d'autres, soit tu peux les intégrer à ta BDD si elles ne demandent pas de modification trop importante, soit tu traites ça en PHP.
Ce que je dis s'applique d'ailleurs bien aux exemples que tu donnes : un guerrier qui a de plus en plus d'attaques en fonction de son niveau et un mage de plus en plus de sorts. Les 2 se caractérisent par un nombre max et un nombre restant, comme tu l'as dit. Ça peut alors valoir le coup de créer une table ressemblant à ça :
Code :
CREATE TABLE `actions_multiples_persos` {
`id_action` INT,
`id_perso` INT,
`nb_max` INT,
`nb_restant` INT,
CONSTRAINT PRIMARY_KEY(`id_action`,`id_joueur`)
}
Le nombre max est mis à jour lors du passage de niveau, le nombre restant lorsqu'une action est utilisée or lorsque le compteur est réinitialisé.
Encore une fois ton problème n'est pas simple, il est donc difficile de te donner une solution toute faite.