Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=34a23ff1c7d2041d0f8359d1807997c7Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Buff
Aller à la page Précédente  1, 2
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Troll-Brain
Ri1kamoua


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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 30/05/12 16:46    Sujet du message: Citer

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.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 23/02/13 17:35    Sujet du message: Citer

Je me permets de remonter ce sujet Rolling Eyes.
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 Smile.

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)?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre Toutes les heures sont au format GMT + 1 Heure
Aller à la page Précédente  1, 2
Page 2 sur 2

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com