J'ai changé quelques { et } et quelques "if" et "else if"
... et mis la pagaille totale
As-tu attribué la propriété "Lancer un sort / Pouvoir unique" à l'objet à activer et non pas "Lancer un sort / Pouvoir unique sur soi seulement" ?
Sinon, ça ne peut pas fonctionner (il faut pouvoir déterminer un endroit où l'invocation apparaîtra et donc utiliser le curseur-viseur).
void main()
{
object oItem = GetItemActivated();
string sItem = GetTag( oItem );
object oPlayer = GetItemActivator();
if ( sItem == "teleporteur" )
{
if ( GetLocalInt( oItem, "dejacree" ) != 1 )
{
effect eEffect = EffectVisualEffect(VFX_FNF_TIME_STOP );
location lPortail = GetLocation( oPlayer );
CreateObject( OBJECT_TYPE_PLACEABLE, "portailteleport", lPortail, FALSE, "portailteleport" );
ApplyEffectAtLocation( DURATION_TYPE_INSTANT, eEffect, lPortail, 0.0 );
SetLocalInt( oItem, "dejacree", 1);
}
else
{
object oPortail = GetObjectByTag( "portailteleport" );
effect eEffect = EffectVisualEffect( VFX_FNF_WORD );
location lPlayer = GetLocation( oPlayer );
location lPortail = GetLocation( oPortail );
ApplyEffectAtLocation( DURATION_TYPE_INSTANT, eEffect, lPlayer, 0.0 );
AssignCommand( oPlayer, JumpToObject( oPortail ) );
ApplyEffectAtLocation( DURATION_TYPE_INSTANT, eEffect, lPortail, 0.0 );
DestroyObject( oPortail, 4.0 );
SetLocalInt( oItem, "dejacree", 0 );
}
}
// ce script est à intégrer au OnActivateItem du module
// c'est pour cela qu'il y a la condidition ci-dessous
if (sItem == "InvocateurdesespritsdAthelLoren")
{
if (!GetIsPC(oPlayer)) return;
// Limitation d'usage aux seuls joueurs, y compris MD. Pas grand intérêt, mais demandé.
//Définition de toutes les variables
location lLoc = GetItemActivatedTargetLocation();
int JetDe = d100(1)+1; //Attention: variation de 0 a 99, on ajoute donc 1
string ResRefCre15 = "farfadetdelaband"; //resref de la creature level 15
string ResRefCre35 = "creature029"; //resref de la creature level 35
string ResRefCre37 = "farfadetdelahord"; //resref de la creature level 37
string ResRefCre39 = "creature028"; //resref de la creature level 39
string ResRefCre40 = "creature027"; //resref de la creature level 40
string ResRefCre60 = "creature026"; //resref de la creature level 60
string ResRef;
// ces créatures doivent bien sur être définies avant et munies des scripts adéquats
if (JetDe <= 11) // 11%
{
ResRef = ResRefCre15;
}
else if ((JetDe > 11) && (JetDe <= 32)) // 21%
{
ResRef = ResRefCre35;
}
else if ((JetDe > 32) && (JetDe <= 53)) // 21%
{
ResRef = ResRefCre37;
}
else if ((JetDe > 53) && (JetDe <= 74)) // 21%
{
ResRef = ResRefCre39;
}
else if ((JetDe > 74) && (JetDe <= 95)) // 21%
{
ResRef = ResRefCre40;
}
else if (JetDe > 95) // 5%
{
ResRef = ResRefCre60;
}
// Tout est prêt pour créer l'effet, alors allons-y
effect eSum = EffectSummonCreature(ResRef, VFX_FNF_SUMMON_MONSTER_3, 0.5, 1); // 0.5 seconde de délai pour montrer le caractère irascible des farfadets
// Création de la créature pour 60 secondes
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSum, lLoc, 60.0);
}
}
Voici le listing fusionné et corrigé (pas testé, par contre, je n'ai pas créé les objets ni les créatures). Le seul doute que j'ai est sur l'attribution de la créature au manipulateur de l'objet, mais en principe, ça devrait être bon.
Tu seras sympa de laisser les indentations que je mets dans le code. Elles me permettent de ne pas attraper la migraine quand je dévermine. Merci.