Depuis HoU, si tu l'a, tu as un système qui s'appel "Tagbased" pour lancer les effets des objets.
Dans ta case OnItemActivates (de propriété du mod, evenements) place le script de bioware suivant : x2_mod_def_act
Ce script fait en sorte que quand un objet est activé, il lance la partie "objet activée" du script qui a le meme nom que le tag de l'objet.
Ensuite tu ouvre le script x2_it_example et tu l'enregistre avec le meme nom que le tag de l'objet que tu veux activer (moins de 17 caractère si possible) Dans la partie :
// * This code runs when the Unique Power property of the item is used
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{
oPC = GetItemActivator();
oItem = GetItemActivated();
}
Tu place en dessous de oItem... l'effet qui se produit quand l'objet est activé en precisant si tu as besoin le oTarget (si oTarget est différent de oPC donc).
Par exemple pour ton sceptre de la prison, tu aura enregistré ton script sous le nom
et cette partie va ressembler a ca :
// * This code runs when the Unique Power property of the item is used
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{
oPC = GetItemActivator();
oItem = GetItemActivated();
object oTarget = GetItemActivatedTarget();
object oprison = GetWaypointByTag ("priso");
object oa1=GetItemPossessedBy(oTarget,"mal");
object oa2=GetItemPossessedBy(oTarget,"a_malmor");
object oa3=GetItemPossessedBy(oTarget,"a_neutre");
if(GetIsObjectValid(oTarget))
{
AssignCommand( oTarget, JumpToObject(oprison));
SendMessageToPC(oTarget,"Allez ! Vous mediterez sur notre sort en Prison !");
}
if(oa1!=OBJECT_INVALID)
{
DestroyObject(oa1);
}
if(oa2!=OBJECT_INVALID)
{
DestroyObject(oa2);
}
if(oa3!=OBJECT_INVALID)
{
DestroyObject(oa3);
}
return;
}
Et tu fais pareil pour tous tes objets. D'ailleurs je te conseille d'enregistrer tes scripts d'objet avec un préfixe commun, du genre it_ ou ob_
Pour le script que t'a donné Dayonara, ton script "it_TPscroll" ressemblera à ca :
// * This code runs when the Unique Power property of the item is used
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{
oPC = GetItemActivator();
oItem = GetItemActivated();
// On vérifie que la personne est bien Le PC (personnage joueur),
// et qu'il a au moins un niveau de magicien.
if(GetIsPC(oPC) && GetLevelByClass(CLASS_TYPE_WIZARD,oPC)>0)
{
// On défini la destination de la téléportation qui est un Waypoint
// avec le Tag wp_destination (vous pouvez changer le nom)
object oTarget = GetWaypointByTag("WP_Caltys");
// On assigne la commande au Joueur de se téléporter à la destination
AssignCommand(oPC,JumpToObject(oTarget));
}
}
Si tu tien absolument a garder ton script "a l'ancienne" donc sans le TagBase, il faut que tu l'intègre sans le void main en precisant que cet effet ne s'active QUE si le tag du dernier objet activé correspond a celui de ton scroll, avec un :
If(GetTag(oItem) == "it_TPscroll")...
Je te donne un titorial que tu devrais suivre pour comprendre non seulement ca, mais plein d'elements de base. Il se fait en 2 jours facile :
http://nwn.chez.tiscali.fr/