Et bien en fait, ton effet a été déclaré, mais pas appliqué. Il faut pour cela utiliser la fonction "ApplyEffectAtLocation()". Ensuite je te conseille de faire une vérification du Tag de l'item, car un script placé dans l'évènement "OnItemActivated" fonctionne de manière générique (il se lance quelque soit l'item activé)
Qui plus est, il y a une manière d'appliquer un effet d'invocation. Le support du script DOIT être le maître de l'invocation. Pour ce faire, il va falloir créer un script indépendant (que j'ai appelé ici "invoc_dede2"), qui sera lancé sur le joueur activant l'item, et permettant l'invocation
Script placé dans l'évènement "OnItemActivated" :
void main()
{
// Désigne le dernier joueur qui a activé un objet
object oPC = GetItemActivator();
// Désigne le dernier item qui a été activé,
object oItem = GetItemActivated();
// Désigne la cible de l'effet, sans utilité ici, excepté si
// un item activable doit désigner une cible.
//object oTarget = GetItemActivatedTarget();
// Designe l'endroit d'activation, sans utilité ici, excepté si
// un item activable doit désigner un endroit.
//location lLoc = GetItemActivatedTargetLocation()
// Vérification du Tag de l'item. Dans ce cas, si le tag est
// "dede2", alors on invoque le chatounet.
if(GetTag(oItem)=="dede2")
{
// La ligne suivante me sert à contrôler si tout se passe bien.
// je l'ai commentée, à toi de la dé-commenter pour vérifier.
//SendMessageToPC(oPC,"Activation de l'item 'dede2'.");
// Dans le cas d'une invocation, le maître de l'invocation
// DOIT être le "support" du script. Pour ce faire, on lance
// le script d'invocation sur le joueur.
ExecuteScript("invoc_dede2",oPC);
}
}
Et le script d'invocation "invoc_dede2" :
void main()
{
// La ligne suivante me sert à contrôler si tout se passe bien.
// je l'ai commentée, à toi de la dé-commenter pour vérifier.
//SendMessageToPC(OBJECT_SELF,"Lancement du script 'invoc_dede2'.");
// Déclaration de l'effet
// Dans ce cas, si les deux paramètres de fin correspondent
// aux paramètres par défaut, il est inutile de les préciser.
effect eSummon = EffectSummonCreature("test_dede2");
// On définit un endroit d'invocation. Ici, le plus approprié
// est l'endroit où se trouve le joueur.
// Ici, le joueur sera "OBJECT_SELF", vu que c'est sur lui
// que le script aura été lancé.
location lLocation = GetLocation(OBJECT_SELF);
// Application de l'effet.
// * Nécessite un type de durée
// * Nécessite une durée dans le cas où le type de durée est "temporaire".
// Ici, j'ai appliqué l'effet de manière temporaire, et pour 60 secondes.
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eSummon,lLocation,60.0);
}