Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 30/05/12 16:46 Sujet du message:
Il faut simplement définir les besoins et le cahier des charges.
- est t'il possible qu'une unité possède de nombreux buffs simultanément (je dirais non à priori)
- mieux, quel est le réel intérêt de ceci, je veux dire que cela ne doit pas servir souvent de loop sur tous les buffs d'une unité.
Rien ne t'empêche d'essayer d'avoir la complexité algorithmique la plus simple, mais ca ne me semble pas être la priorité ici.
Le code le plus "important" est appliqué périodiquement, et à priori on n'aura pas souvent besoin de lister tous les buffs d'une unité.
Pour les buffs non stackables je procéderais ainsi :
Application du buff le plus haut niveau, et quand il expire application du buff au niveau le plus haut "en cours de validité", et ainsi de suite, ça doit pouvoir se faire "facilement" avec des Timer, et les fonctions natives associées, tel que TimerGetRemainingTime (ou quelque chose du style).
Pour les buff stackables faut juste ajouter/retirer les effets en temps voulu, avec un seuil éventuel.
Si tu es en manque d'idée tu peux t'inspirer de ressources existantes, ou les utiliser hein.
EDIT :
J'ai essayé pour le fun d'écrire un code vJass mais ce n'est pas aussi évident que cela puisse paraitre au premier abord, m'enfin si je le voulais vraiment j'y arriverais.
Je ne voudrais pas gacher ton plaisir, donc si vraiment tu veux que je le fasse, fais le moi savoir, c'est intéressant à concevoir. _________________
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
Posté le: 23/02/13 17:35 Sujet du message:
Je me permets de remonter ce sujet .
Je rerencontre ce problème en revoulant faire un système de buff ^^.
Citation:
Pour les buffs non stackables je procéderais ainsi :
Application du buff le plus haut niveau, et quand il expire application du buff au niveau le plus haut "en cours de validité", et ainsi de suite, ça doit pouvoir se faire "facilement" avec des Timer, et les fonctions natives associées, tel que TimerGetRemainingTime (ou quelque chose du style).
C'est ce que je compte faire, mais j'ai quelques questions :
• Ca passerait par une liste chaînée, non? Dans ce cas, tu classerais les buffs du plus haut au plus bas niveau dans la liste plutôt que de chercher lequel est de plus haut niveau à chaque expiration de buff?
• J'aimerais qu'il y ait une fonction onApply et onRemove qui soient appelées pour permettre des ajouts d'armure ou autre. Et là, il y a un gros problème. Imaginons un buff non stackable, qu'on applique une fois niveau 2 à une unité, puis niveau 1. Le buff niveau 1 est dans la "liste d'attente", et le buff niveau 2 ajoute 10 d'armure. Puis le buff niveau 2 expire. Faut-il appeler la fonction onRemove, puis la fonction onApply, pour le buff niveau 1? Ce serait illogique, mais en même temps indispensable : il faut retirer les 10 d'armure conférés par le buff niveau 2, et ajouter l'armure (5 par exemple) du buff niveau 1. Dans mon ancien système j'avais fait deux fonctions onApply, et deux fonctions onRemove : une onApply lorsque le buff est réellement appliqué, et une autre lorsqu'il est réappliqué, une onRemove lorsqu'il est vraiment retiré, et une autre lorsqu'il est retiré, mais réappliqué. Ça résolvait le problème, mais c'est pas top à utiliser : /.
J'attends vos idées .
Edit : Sinon j'ai vu que des gens utilisaient UnitAddAbility, suivi d'un MakeAbilityPermanant pour ajouter des buffs. Ça fait quoi exactement (flemme de test :p)? _________________
Toutes les heures sont au format GMT + 1 Heure Aller à la page Précédente1, 2
Page 2 sur 2
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum