Problème pour fixer une quête
Bonjour,

Il y a pas mal de quête boguée en Outreterre et donc je m'y attaque pour les fixer.

Le problème est que (par exemple) pour la quête suivante : http://fr.wowhead.com/quest=9391 je dois allumer les trois balises. Sauf que je ne peux pas cliquer dessus.

Du coup j'ai modifié le flag dans la DB (de base 4 (Untargetable)) par 32 (No despawn (never despawn, typically for doors, they just change state). Le problème est que le gameobject est directement activé sans tester les pré-requis et j'aimerais savoir s'il est possible de "lier" un script au moment où on clique sur ce gameobject pour tester les pré-requis + dans le cas de cette quête faire aggro les créatures autour du gameobject.

Merci,
Sgt Fatality
je connais pas très bien la structure d'arcemu mais c'est possible de faire des check à chaque "spell"(pré-requis) non ?
(14-05-2011 14:18)SgT-Fatality a écrit :  ....et j'aimerais savoir s'il est possible de "lier" un script au moment où on clique sur ce gameobject pour tester les pré-requis.....
Oui sur Ascent (Arcemu je sais pas)
Hello, merci pour vos réponses !

(14-05-2011 14:34)Kaios a écrit :  je connais pas très bien la structure d'arcemu mais c'est possible de faire des check à chaque "spell"(pré-requis) non ?

Oui certainement, il faut que je regarde comment fonctionne les gameobjects de type "10" (Goober).

(15-05-2011 00:24)Branruz a écrit :  
(14-05-2011 14:18)SgT-Fatality a écrit :  ....et j'aimerais savoir s'il est possible de "lier" un script au moment où on clique sur ce gameobject pour tester les pré-requis.....
Oui sur Ascent (Arcemu je sais pas)

D'accord, je sais qu'on peut lier un script via ScriptMgr mais si le gameobject est "activable" (donc clique droite dessus => fonction "OnActivate"), mais dans mon cas c'est un spell qui active le gameobject. Où dois-je regarder dans ce cas là ?

Merci !
Sgt Fatality


EDIT : Pour une meilleure compréhension, c'est peut-être plus simple si je pose la question, comment fixer cette quête : http://fr.wowhead.com/quest=9391 ? On ne peut pas utiliser l'item sur le gameobject, le curseur ne devient pas "bleu" pour appliquer le spell.
Sgt Fatality a écrit :D'accord, je sais qu'on peut lier un script via ScriptMgr mais si le gameobject est "activable" (donc clique droite dessus => fonction "OnActivate"), mais dans mon cas c'est un spell qui active le gameobject. Où dois-je regarder dans ce cas là ?
Lorsque tu click sur l'item, il lance le spell 29384 (Allumer balise)
Effet #1 Open Object : Echoue car le cas n'est pas géré sur Ascent (ArcEmu, je sais pas)

Effet #2 Apply Aura: [Dummy], Script du côté serveur
Sur Ascent, le DummySpell associé n'est pas codé, surement pareil sur ArcEmu vu que ca marche pas,
En fait, il faut plutôt scripter le spell.
Hello,

Merci pour ta réponse, je vais regarder pour les spell de type "Open Object" si je trouve un bout de code. Mais pour la quête, je ne peux même pas "target", sélectionner le gameobject. Le gameobject a actuellement le flag : 4 est-ce incorrecte ?

D'après les flags sur le wiki d'UDB ( http://udbwiki.no-ip.org/index.php/Gameo...late#flags ), j'ai essayé de changer le flag à 32 et dans ce cas je peux le target (même faire un clique droite comme pour activer un gameobject) mais l'objectif de la quête est directement validé (sans caster les spells et sans vérification) !

Finalement j'ai essayé avec le flag à 34 (comme me l'avait conseillé Sadikum) mais cela ne fonctionne pas non plus, j'obtiens le message "L'object est vérouillé".

Pas si simple de bien comprendre le fonctionnement de ces quêtes... Hihi

Merci et bonne journée,
Sgt Fatality
(16-05-2011 07:14)SgT-Fatality a écrit :  D'après les flags sur le wiki d'UDB ( http://udbwiki.no-ip.org/index.php/Gameo...late#flags ), j'ai essayé de changer le flag à 32 et dans ce cas je peux le target (même faire un clique droite comme pour activer un gameobject) mais l'objectif de la quête est directement validé (sans caster les spells et sans vérification) !
Tu as 2 solutions, (je pense)

Soit le player click sur l'item et tu dois completer avec le type qui va bien dans
le LOCK_TYPE (via spellEffect Open_Lock), à la limite, vu que le dummyspell
est spécifique, tu peux "inventer" ton propre type de GO.
(mais faut coder sa gestion Clin )

Soit tu rend l'objet "clickable" pour valider ta quete mais tu dois scripter le GO
pour verifier que le player possede bien l'item lorsqu'il click dessus.
(et lancer le spell de l'item pour avoir l'effet visuel sur le GO, ou peut etre
simplement activer le GO)

Tu devrais jouer avec le GO via les commandes GMs, c'est fait pour ca.

NB: Flag 34, pourquoi pas, mais faut scripter le GO pour verifier si le player possede l'item ( c'est l'item qui possede le spell, pas le player Clin )
2 = Makes chests/doors locked (requiring a key, spell, event to open)
32 = No despawn (never despawn, typically for doors, they just change state)
Merci pour ta réponse !
Je vais scripter le gameobject et faire un test ce soir, mais j'ai peur que ça ne fonctionne pas car quand tu cliques sur le Go l'objectif et directement validé du coup peut-être qu'ajouter un script ne changera rien.

Je te tiens au courant ! Clin
J'ai fais ce code très rapidement :

[code=cpp] case 0:
{
if (i_caster == NULL)
return;

if (gameObjTarget != NULL && gameObjTarget->GetType() == GAMEOBJECT_TYPE_GOOBER)
{
Lock * lock = dbcLock.LookupEntryForced( gameObjTarget->SpellFocus );
if (lock == NULL)
return;

for (uint8 j = 0; j < LOCK_NUM_CASES; j++)
{
if (lock->locktype[j] == 1 && lock->lockmisc[j] == i_caster->GetEntry())
{
sQuestMgr.OnGameObjectActivate( p_caster, gameObjTarget );
}
}
}
}
break;
[/code]

A mettre dans SpellEffects.cpp, dans le switch de SpellEffectOpenLock.
Je n'ai pas testé (ni compilation, ni ingame) mais ça peut être une piste, après il faut trouver le flag pour qui va bien pour le GO, je pense qu'essayer avec un flag à 4 pour commencer est une bonne idée.
Dans le Switch(LockType):

Le OnActivate du GO est géré dans le Default pour un type Goober ou Button
Tu as aussi le OnActivateQuestGiver et le OnGameObjectActivate du QuestMgr
Du coup tu peux scripter la quete aussi finalement.
('fin tjs sur Ascent, surement pareil sur ArcEmu...)

Le code de Sadikum est necessaire si l'appel des scripts n'est
pas codé dans le "Default" ( Le "case 0", c'est un LOCKTYPE_NONE genre)

Retourner en haut Accueil