Necrosis - Mod démoniste

Fil fermé
Partager Rechercher
je sais pas si afficher tous les timers est utile mais si on pouvait afficher les timers de CC (fear (?), charm et banish surtout donc), ça serait un bon plus. Et vu qu'on ne peux avoir qu'un seul sort de chaque à la fois, ça simplifie les choses.
No prob de toute facon si ca vous tente, on fera un gros check up finale, pour que tout fonctionne sur la meme version autant conjuger les effort vers le meme truc )

enfin c'est comme vous le sentez

( mdr en fait la moitie des personne qui lisait le truc on lacher l'affaire a la page 6, tellement y'a des lignes de codes partout. dsl si c'est pas passionnant j'up la new version la ).

http://membres.lycos.fr/Tilienna/WOW/ => NecroServ.rar

j'ai tout mis dans le meme .rar
Juste un super outil de travail si vous connaissiez pas ... (je suppose que tout le monde connaît vu ce que vous arrivez à faire ....)

http://www.cosmosui.org/texts/BlizzardCommands.xml

Edit: J'ai trouvé ce que je cherchais:

UnitName(string)
Returns:

Example:target = UnitName("target");
Description:Returns the name of the unit referred to by the local naming schema

UnitLevel(target);
Returns: Number
Example:UnitLevel("pet");
Description:Returns the level of the targetted unit.
yep, il est en bookmark celui la mais je m'en sers jamais vu que je fais que de la traduction et du debug, aucun dev sur les mods =)

autre bug : si on recharge l'UI on perd le timer de la pierre de rez. Faut faire comme le shardtracker, parser les items dans les sacs jusqu'à tomber sur la pierre de rez et récupérer son timer. Si on a pas de pierre de rez dans le sac, on affiche rien.
Vaut mieux faire un check de la pierre de rez sinon gerer un fichier c'est lourd :/

Et pui sde toute facon le check de l'inventaire il le fait obligatoirement pour trouver les shard, autant inserer un controle qui cherche la pierre de rez et recup son timer s'il y a

je commence par les petites poupouilles, fenetre deplacable, compactage des fenetre, correction du timer de rez, vu que vous semblez avoir un truc en tete pour les timer de sorts.

Je regarde aussi pour degager TOUT les check par textures, en theorie peu de chance de doublon, mais par nom c'est bien plus precis et fiable ( peut etre l'auteur l'a t il fait dans la 1.16 je n'ai pas encore regarde ).
il faut gérer le lancement du sort + la présence de la pierre de rez.

Le lancement du sort initialise le timer.
La présence de la pierre de rez sert justement en cas de rechargement de l'interface étant donné que le timer n'est plus valide. Le seul endroit où on peut trouver ce timer c'est soit sur la cible du rez (bof), soit sur la pierre de rez si elle se trouve dans le sac.
sur la cible du rez ca me semble difficile? on peut "enregistrer" une cible pour y revenir plus tard? bien qu'a la limite ca sois un membre du grp, donc verifier le grp. Mais si 2 joueur on une pierre de rez car 2 demo dans le grp?? ca me parait difficile a mettre ne place.

ouais sur la pierre c'est bien plus simple ^^

EDIT: autre probleme a tout ca, si la cible meurs avant les 30 min et utilise le rez donc ... comment peut on faire savoir a necrosis que le timer n'existe plus?
oui, oui, ça n'est pas du tout faisable =)

Tenez une autre idée : pourquoi ne pas rendre un aspect graphique au timer ? Je verrai bien un cercle de plus autour du cercle correspondant aux fragments, divisé en 30 cases et se vidant peu à peu au fur et à mesure du timer de rez ? Un cercle bleu ciel ferait bien je pense =)
Et puis pour ceux qui veulent un timer à la seconde, on peut toujours leur mettre dans la tooltip...
Message supprimé par son auteur.
c'est des malaaaades ! c'est des malaaaades !
félicitations pour votre travail tous, c'est un vrai bonheur de voir ça se construire presque en temps réel encore bravo !
Citation :
Publié par Nanji
Y a des bonnes idées mais ca sent trop la bidouille faites un truc propre dès le départ sinon c'est vite le bordel après : /
Non, la base est relativement bonne, le problème c'est que certaines idées ont mal été gérées, comme le timer des sorts ou bien l'analyse par texture plutôt que par nom.
Message supprimé par son auteur.
J'ai le code sous les yeux il a rien corrigé ...

Code:
			while UnitDebuff("target", index) do
 				local texture = UnitDebuff("target", index);
 				for spell=1, table.getn(Spell.Name), 1 do
 		    		if (string.find(texture, Spell.Texture[spell])) then
 		    		    table.insert(addSpell.Name, Spell.Name[spell]);
 		    		    table.insert(addSpell.Length, Spell.Length[spell]);
 		    		    table.insert(addSpell.Type, 2);
 						break;
 					end
 				end
 				index = index+1;
 			end
C'est toujours la même fonction ...
Message supprimé par son auteur.
Bon j'ai modifié le code pour que seuls nos cast soient enregistrés et pour l'insant ça marche .

Seul problème: en fait les instant cast, je me sert de cet évènement :

Code:
  	if (event == "SPELLCAST_START") then
  		TargetName = UnitName("target");
  		SpellCastName = arg1;
  	end
et apparemment les instant cast genre corrosion ne sont pas considérés comme SPELLCAST_START, voila peut-être le pourquoi de l'utilisation des textures ... ^^

Si quelqu'un a une idée génial je suis preneur, sinon pour ce qui est de l'affichage j'affiche par mobs en fait tous les sorts dots ou autre que vous avez lancé vous, donc plus de drain mana avec le drain du prêtre ou 50 corrosion immolation ... etc si vous jouez dans une team de démos.
joli bon j'ai presque fini la reorganisation des 2 fenetre, mode ultra slim, la je peut gagner guere plus.

Me reste 2 3 elements a regler mais la suis naze on verra la suite demain

j'ai vire toutes les fonction du pet cette fois aussi bien dans les options que dans le code

PS: si y'a ptet une solution derivee pour les instant cast ( a la limite y'en a pas des masses ), c'est d'utiliser le log de combat ^^ au moins dedans c'est ecrit clairement qui cast quoi donc... pas de confusion possible. Enfin si ca peut depanner juste pour ces 2 la ( corruption / agonie je suppose ).

event
CHAT_MSG_COMBAT_LOG_SELF => Called when the player's character performs an action
Merci je vais voir ce que je peux faire ...

Sinon la je suis en séance débug, je comprend pas pourquoi j'ai même prévu les cas, je peux ajouter autant de fois que je veux le même sort sur le même mob dans la liste ...

Code:
function Necrosis_SpellsOnTarget(action, type, CastedSpell , target)
     	
     	if (action == "ADD") then
     			local addSpellName = nil;
     			addSpellLength = nil;
     			addSpellType = nil;
     			spellPosition= nil;
     			
 				for spell=1, table.getn(Spell.Name), 1 do
 		 		if (string.find(CastedSpell, Spell.Name[spell])) then
 		 			addSpellName= Spell.Name[spell];
 		 		 addSpellLength=Spell.Length[spell];
 		 			addSpellType= 2;
 						break;
     					end
     				end
     				
     				local found = false;
 				for spell=1, table.getn(SpellTimer.Name), 1 do
 		 		if ( spell == SpellTimer.Name[spell]) then
 		 			spellPosition= spell;
 						found = true;
 						break;
     					end
     				end
     				
     				
     				
     				if (found) then
    			  SpellTimer.TimeMax[spellPosition]= addSpellLength;
     				else
 		 		table.insert(SpellTimer.Target, target)
 		 		table.insert(SpellTimer.Name, addSpellName);
 		 		table.insert(SpellTimer.Time, addSpellLength);
 		 		table.insert(SpellTimer.TimeMax, addSpellLength);
 		 		table.insert(SpellTimer.Type, addSpellType);
     					
     				end
     				
     			
     	elseif (action == "CLEAR" and type == 2) then
     		for index=1, table.getn(SpellTimer.Name), 1 do
     			if (SpellTimer.Type[index] == 2) then
 				table.remove(SpellTimer.Target, index)
 				table.remove(SpellTimer.Name, index);
 				table.remove(SpellTimer.Time, index);
 				table.remove(SpellTimer.TimeMax, index);
 				table.remove(SpellTimer.Type, index);
     			end
     		end
     	else
     		
     	
     	end
     end
Je comprend vraiment pas d'où ça vient mais en général quand c'est comme ça c'est que c'est tellement con que je le vois pas ...

Edit: Ah lol effectivement je prenait spell cad le numéro du sort ... quel con !
ReEdit: ReLol j'ai aussi interchangé TimeMax et Time voila pourquoi ça remarchait pas ... Pour ce qui est du log je vais étudier la question ... (mais ça me parait être une bonne solution !)

Edit: Bon il me reste à régler le multi-ciblage (faudra que j'aille dans une zone bas lvl mais là je suis crevé ...) et à rebaser le système sur le log de combat ...
Bon là c'est plus la peine je comprends plus ce que je tape donc voila la version que j'ai commencé à modifier est la :

http://www.wow-sdo.com/perso/kschn/addons/

Il m'a renvoyé une erreur une comparaison avec un nil j'ai pas tout saisit ... Bon alors par contre tout ce qui est instant et sort canalisé ne marche pas ! Il va falloir que je récupère le tout via le log de combat ... C'est faisable mais pas ce soir !

Bon voila si des gens pouvaient tester et dire ce qu'ils en pensent ...

Ah oui encore un truc si l'un des mobs qui est cursed par vos soins vient à mourir ... ben le décompte continuera :'( faut que je règle tout ça !

Bon aller dodo et demain patch ! (avec un peu de chance yaura pas de retards et on pourra continuer d'améliorer ce super mod !)

@Tilienna: je te laisserais le soin de fusionner nos 2 versions si tu juge ma modif utile (enfin si tu la moins modifié que moi vaudrais peut-être mieux que ça soit le contraire ...)

Edit: Tient ya encore un pb il efface plus les anciennes malédictions et dot sur les cibles finie ... il cache les timers et au prochain ciblage il les réaffiche ... bizarre !
Bon ben en fait pour l'instant si vous tapez un mob du meme nom ca remet les timers au maximum ça l'affiche pas 2 fois pour le même mob et tout compte fait je vois pas comment c'est possible de faire autrement, il n'y a pas de moyen de distinguer 2 mobs ...

Juste encore une précision ça devrait marcher aussi sur les joueurs mais j'ai pas testé ya plus personne à cette heure si sur les servers ... Quelqu'un peut tester ?
En fait je me demande si on part dans la bonne direction ^^

la fonction SpellsOnTarget ne fait que verifier au changement de cibles les eflets negatifs qu'elle a sur elle pour les comparer a la base Spell[Name] ca ok.

Donc ca veut dire qu'elle n'affiche QUE les sorts de Demoniste sur la cible, mais pas seulement les notre. ca ok aussi.

Le probleme est que l'auteur fait une comparaison par texture et c'est la ou ca merde ^^, pour ca qu'on retrouve par exemple un sort de pretre qu'il considere tdrain de vie.

Vu qu'on ne peut pas coller un ID precises sur une cible ( enfin si ca on peut ), mais surtout qu'on a aucun moyen apres changement de cible de la retrouver, et de verifier les sorts...

=>
ne vaudrais t il pas mieux laisser le script verifier les sorts a chaque changement de cible, quitte a avoir les sorts des autres demonistes ( de toute facon on est limite a 8 debuff sur une cible ), mais non plus avec la texture mais LEUR noms

ex:
Citation :
ServitudeTooltip:SetUnitDebuff(unit, index);
local debuffName = ServitudeTooltipTextLeft1:GetText();
Au pire on a les sorts des demonsite mais QUE de demoniste. Parce que la on pars dans un truc vraiment vraiment complique, et limite realisable du fait de lne pas pouvoir identifier un mob precisement et mettre ses sorts en memoire?

en gros son script ne fait "que" chercher dans une liste de sort, affichier ces sorts et leur timer s'il y a, et rebelote a chaque changement de cible.

de toute facon quand la cible est morte on s'en fous, on peut pu la cibler, les sorts tombe, changement de cible, table reset et on recommence.

reste a voir comment il gere la duree j'ai aps regarder encore.

deja a mon avis virer le check par texture, ca pose trop de probleme de confusion, par exemple ( code au dessus ) servitude utilise le nom dans la tooltip ( tjrs en francais lui ), et ca marche treeeeees bien

enfin je sais pas si jai ete tres clair, je me suis depeche je m'absente un moment

EDIT: ha j'avais oublie la duree des sorts est stockee dans un tableau cree au depart... je n'ai trouve aucune fonction permettant de recup le timer d'un debuff, seulement les buff sur le joueur ( ce qui ne me surprends pas ) donc c'est mort y'aura tjrs un probleme qque part :/
Citation :
Publié par Tilienna Thorondor
EDIT: ha j'avais oublie la duree des sorts est stockee dans un tableau cree au depart... je n'ai trouve aucune fonction permettant de recup le timer d'un debuff, seulement les buff sur le joueur ( ce qui ne me surprends pas ) donc c'est mort y'aura tjrs un probleme qque part :/
Ben oui y'a aucun moyen de récupérer la durée des sorts c'est à nous de le calculer nous même ... Sinon je pense que c'est tout à fait gérable avec le log de combat ... A coup d'expressions régulières ça devrait passer ... Je continue ma version où je laisse tomber ?

Edit: Pour l'idée j'ai modifié son tableau de départ et j'ai stocké le nom du mob avec:

Code:
		 		table.insert(SpellTimer.Target, target)
 		 		table.insert(SpellTimer.Name, addSpellName);
 		 		table.insert(SpellTimer.Time, addSpellLength);
 		 		table.insert(SpellTimer.TimeMax, addSpellLength);
 		 		table.insert(SpellTimer.Type, addSpellType);
Ensuite pour l'affichage je le trie au fur et à mesure et j'affiche les debuffs par mobs ... En modifiant le système pour qu'il épluche le log de combat on pourrais ajouter tous les sorts qui n'ont pas de cooldown et ceux qui sont canalysés ... Sinon ça s'effacerait de ListSpells soit quand tous les timers arrivent à 0 soit quand la cible meurt soit quand le regen reprend (combat terminé ...)
Citation :
Publié par Nanji
Y a des bonnes idées mais ca sent trop la bidouille faites un truc propre dès le départ sinon c'est vite le bordel après : /
Je suis un peu d'accord, sauf que je mettrais pas le mot "bidouille" quand même

J'aime quand c'est simple et sans fioriture

Et quand on commence à rajouter des trucs, déjà ça devient plus lourd à programmer, et ensuite il faut penser "Est-ce que cela en vaut vraiment la peine ?"

En voyant tout ce que vous voulez rajouter, je me pose un peu la question

Mais comme c'est pas moi qui programme du moment que ça marche
Fil fermé

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés