Parchemin de téléportation

Répondre
Partager Rechercher
C'est faisable et pas vraiment difficile.

1) Tu crée un parchemin, avec un pouvoir unique sur soi.
2) Tu crée le script de ce pouvoir de sorte que lorsque le parchemin est utilisé, il ouvre une conversation.
3) Tu crée ta conversation dans le genre :
"Ou voulez vous aller ?
-- A tel endroit
-- A tel autre
-- Etc."

Et dans l'action conséquente du choix de l'endroit, tu mets un scripte qui envois la personne vers un WP que tu aura placé préalablement dans ton module.

L'inconvéniant de cette methode c'est que ca ouvre un conversation, donc ce n'est pas utilisable en combat.

Tu peux aussi directement dans ton script d'objet mettre une destination unique.
Et une fois a cette destination, le personnage teleporté choisit sa destination finale en prenant le portail approprié. En faisant comme ca, l'objet devient utilisable en combat.

Enfin, dernière option, tu crée 1 parchemin différent par destination, tu garde le meme script, mais au lieu de mettre

GetWaypoinByTag("TonTag") comme destination, tu mets :
GetWaypointByTag(sTag) et tu définit sTag sur le parchemin avec un GatLocalString(OBJECT_SELF,"DESTINATION")
Tu peux même faire un item qui, comme les sorts de "Marque" et "Téléportation" de Daggerfall, te permet d'ouvrir un dialogue :

--> "Mémoriser le lieu" : La localisation du joueur est mémorisée sur l'item.

--> "Se téléporter" : Le joueur se téléporte à la localisation mémorisée.

C'est très faisable, et je dois avoir ça dans mes scripts de brouillon... Il faut juste modifier ou créer un script dans le "OnActivateItem" qui lance une discussion entre le joueur et lui-même, et créer deux scripts pour la mémorisation et la téléportation.
arf le parcho ne communique pas avec le dialogue
Voila ce que j'ai fais , vous aurez peux etre la reponse
j'ai crée un parcho de Téléportation
Nom de l'objet : Téléportation
Tag : tlportation
Lancer un sort : pouvoir unique , sur soi uniquement
Utilisable que par mage

Ensuite pour le Dial :

Destinations :
Caltys ------> (dans action conséquente)

void main ()
{
object oPC = GetLastUsedBy(); // GetLastUsedBy défini la derniere personne qui a utilisé l'objet
if (GetIsPC(oPC)) // On vérifie que la personne est bien Le PC (personnage joueur=
{
object oTarget = GetWaypointByTag ("WP_Caltys"); // On défini la destination de la téléportation qui est un Waypoint avec le Tag wp_destination (vous pouvez changer le nom)

AssignCommand( oPC, JumpToObject( oTarget)); // On assigne la commande au Joueur de se téléporter à la destination
}
}

Etc... pour 4 autres villes
Merci de votre aide
Je sais pas si le script est bon, mais ca devrait être ca.

Il ne te reste plus qu'a crée un script pour que quand le mage utilise le parchemin, il active une conversation avec lui meme.

La fonction pour lancer une conversation c'est :
ActionStartConversation

Regarde le script "x2_it_exemple" pour t'aider. Tu placera ton bout de script dans la section OnItemActivated.
il y a une fonction GetClikingposition(si mes souvenir son bon) qui reprendr la position d'un clik avec le curseur..
j'avait essayer en vain mais c'est possible je pense de s'en servir pour pouvoir se téléporter de visu a un endroit donner !
"GetLastUsedBy()" s'utilise avec les plaçables utilisables. Dans ton cas, il faut utiliser l'évènement OnActivateItem du module, et utiliser la fonction "GetItemActivator()" pour retrouver le possesseur de l'item.
Code PHP:

void main ()
{
    
// GetItemActivator définit la derniere personne qui a activé l'objet
    
object oPC GetItemActivator();

    
// 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));
    }

Euh j'ai un petit probleme j'ai deja un script dans OnActivateItem et j'arrive pas a l'activé avec l'autre sa me dit erreur ?

Code PHP:

void main()

{
   
object oItem=GetItemActivated();
   
object oActivator=GetItemActivator();

if(
GetTag(oItem)=="Sceptrededelaprison")
 {
object oprison GetWaypointByTag ("priso");
object oTarget GetItemActivatedTarget();
object oa1=GetItemPossessedBy(oTarget,"mal");
object oa2=GetItemPossessedBy(oTarget,"a_malmor");
object oa3=GetItemPossessedBy(oTarget,"a_neutre");
if(
GetIsObjectValid(oTarget))
{
AssignCommandoTargetJumpToObject(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;
}



{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();

if (
GetTag(GetItemActivated()) == "RebootModule")
 {
  
StartNewModule("Exile");
  return;
 }
}
{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();

if (
GetTag(GetItemActivated()) == "10Rations")
 {
  
ExecuteScript("10rations"oActivator);
DelayCommand(1.0DestroyObjectoItem ));
return;


}
}

{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();

if (
GetTag(GetItemActivated()) == "10ph")
 {
  
ExecuteScript("10ph"oActivator);
DelayCommand(1.0DestroyObjectoItem ));
return;


}
}


{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();
if (
GetTag(GetItemActivated()) == "ej_pierre_rappel")
{
int nHD GetHitDice(oActivator);
if (
nHD >4)
{
int nGoldToTake FloatToInt(0.13 GetGold(oActivator));
// * a cap of 10 000gp taken from you
if (nGoldToTake 100)
{
nGoldToTake 100;
}
DelayCommand(4.8FloatingTextStrRefOnCreature(58300oActivatorFALSE));
AssignCommand(oActivatorTakeGoldFromCreature(nGoldToTakeoActivatorTRUE));
}
}
{
object omal GetItemPossessedBy(oActivator"mal");
if (
GetIsObjectValid(omal) == TRUE)
ExecuteScript("ej_mal"oActivator);

}
{
object oa_malmor GetItemPossessedBy(oActivator"a_malmor");
if (
GetIsObjectValid(oa_malmor) == TRUE)
ExecuteScript("ej_bon"oActivator);

}

{
object oa_neutre GetItemPossessedBy(oActivator"a_neutre");
if (
GetIsObjectValid(oa_neutre) == TRUE)
ExecuteScript("ej_neutre"oActivator);
}
}
 {
object oa_neutre GetItemPossessedBy(oActivator"save_position");
if (
GetIsObjectValid(oa_neutre) == TRUE)
ExecuteScript("av_herat_beat"oActivator);



  }
}


void main () 

    
// GetItemActivator définit la derniere personne qui a activé l'objet 
    
object oPC GetItemActivator(); 

    
// 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)); 
    } 


Merci de votre aide
Il faut juste rajouter ce qu'il y a dans le "void main()". Car deux déclarations de ce type ne seront pas supportées. ^^

Ce n'est pas la peine de déclarer plusieurs fois "GetItemActivated()" & "GetItemActivator()", une fois suffit, au début du script.

Et pis un peu de mise en page, que diable !
Code PHP:

void main()
{
    
object oItem GetItemActivated();
    
object oActivator GetItemActivator();

    
string sTag GetTag(oItem);

    
// J'ai placé le script de téléportation ici. C'est à toi de définir le tag de l'item !
    
if(sTag=="Tag_de_l'item_de_téléportation")
    {
        
// On définit 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));
    }

    else if(
sTag=="Sceptrededelaprison")
    {
        
object oprison GetWaypointByTag ("priso");
        
object oTarget GetItemActivatedTarget();
        
object oa1=GetItemPossessedBy(oTarget,"mal");
        
object oa2=GetItemPossessedBy(oTarget,"a_malmor");
        
object oa3=GetItemPossessedBy(oTarget,"a_neutre");
        if(
GetIsObjectValid(oTarget))
        {
            
AssignCommandoTargetJumpToObject(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;
    }

    else if(
sTag=="RebootModule")
    {
        
StartNewModule("Exile");
        return;
    }

    else if(
sTag=="10Rations")
    {
        
ExecuteScript("10rations",oActivator);

        
// Pas besoin de "DelayCommand()", un paramètre de "DestroyObject()"
        // permet déjà de définir un délai avant la destruction.
        
DestroyObject(oItem,1.0);
        return;
    }

    else if(
sTag=="10ph")
    {
        
ExecuteScript("10ph"oActivator);
        
DestroyObject(oItem,1.0);
        return;
    }

    else if(
sTag=="ej_pierre_rappel")
    {
        
int nHD GetHitDice(oActivator);
        if(
nHD>4)
        {
            
int nGoldToTake FloatToInt(0.13*GetGold(oActivator));
            
// Un maximum de 100 Po sera retiré
            
if(nGoldToTake>100)
                
nGoldToTake 100;

            
DelayCommand(4.8,FloatingTextStrRefOnCreature(58300,oActivator,FALSE));
            
AssignCommand(oActivator,TakeGoldFromCreature(nGoldToTake,oActivator,TRUE));
        }
    }

    
object omal GetItemPossessedBy(oActivator,"mal");
    if(
omal!=OBJECT_INVALID)
        
ExecuteScript("ej_mal",oActivator);

    
object oa_malmor GetItemPossessedBy(oActivator,"a_malmor");
    if(
oa_malmor!=OBJECT_INVALID)
        
ExecuteScript("ej_bon",oActivator);

    
object oa_neutre GetItemPossessedBy(oActivator,"a_neutre");
    if(
oa_neutre!=OBJECT_INVALID)
        
ExecuteScript("ej_neutre"oActivator);

    
object oa_neutre GetItemPossessedBy(oActivator,"save_position");
    if(
oa_neutre!=OBJECT_INVALID)
        
ExecuteScript("av_herat_beat",oActivator);


Par contre j'ai du mal à comprendre cette partie de ton script (j'ai allégé au dessus, mais cela fera la même chose) :
Code PHP:

object omal GetItemPossessedBy(oActivator"mal");
if (
GetIsObjectValid(omal) == TRUE)
ExecuteScript("ej_mal"oActivator);

}
{
object oa_malmor GetItemPossessedBy(oActivator"a_malmor");
if (
GetIsObjectValid(oa_malmor) == TRUE)
ExecuteScript("ej_bon"oActivator);

}

{
object oa_neutre GetItemPossessedBy(oActivator"a_neutre");
if (
GetIsObjectValid(oa_neutre) == TRUE)
ExecuteScript("ej_neutre"oActivator);
}
}
{
object oa_neutre GetItemPossessedBy(oActivator"save_position");
if (
GetIsObjectValid(oa_neutre) == TRUE)
ExecuteScript("av_herat_beat"oActivator); 
Visiblement au moins un script sera invariablement lancé si le joueur possède l'un de ces quatre item, et ce s'il active n'importe quel item dans le jeu... Ce sont des items activables ?
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 :
Code PHP:

// * 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
Code PHP:

Sceptrededelaprison 

et cette partie va ressembler a ca :
Code PHP:

// * 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))
         {
         
AssignCommandoTargetJumpToObject(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 :
Code PHP:

// * 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/
Attention cependant avec le système TagBased. Les noms des fichiers de scripts ne pouvant pas dépasser les 16 caractères, il faudra impérativement que le nombre de caractère des Tags de tes items ne dépassent pas ces valeurs.

J'ai également apporté des petites modifications au système TagBased, le tout étant décrit ICI du début jusqu'à la fin.
J'ai fais une petite modif mais tjr rien le parcho ne s'active pas

void main()

{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();
string sTag = GetTag(oItem);

// J'ai placé le script de téléportation ici. C'est à toi de définir le tag de l'item !
if(sTag=="Tlportation")
{
// On définit 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");
object oTarget = GetWaypointByTag("WP_Malmorne");
object oTarget = GetWaypointByTag("WP_Nathorn");
object oTarget = GetWaypointByTag("WP_Uz");
object oTarget = GetWaypointByTag("WP_Yldure");
// On assigne la commande au Joueur de se téléporter à la destination
AssignCommand(oPC,JumpToObject(oTarget));
JumpToLocation(GetLocation(GetObjectByTag("Tlportation")))));
}

if(GetTag(oItem)=="Sceptrededelaprison")
{
object oprison = GetWaypointByTag ("priso");
object oTarget = GetItemActivatedTarget();
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;
}



{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();

if (GetTag(GetItemActivated()) == "RebootModule")
{
StartNewModule("Exile");
return;
}
}
{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();

if (GetTag(GetItemActivated()) == "10Rations")
{
ExecuteScript("10rations", oActivator);
DelayCommand(1.0, DestroyObject( oItem ));
return;


}
}

{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();

if (GetTag(GetItemActivated()) == "10ph")
{
ExecuteScript("10ph", oActivator);
DelayCommand(1.0, DestroyObject( oItem ));
return;


}
}


{
object oItem=GetItemActivated();
object oActivator=GetItemActivator();
if (GetTag(GetItemActivated()) == "ej_pierre_rappel")
{
int nHD = GetHitDice(oActivator);
if (nHD >4)
{
int nGoldToTake = FloatToInt(0.13 * GetGold(oActivator));
// * a cap of 10 000gp taken from you
if (nGoldToTake > 100)
{
nGoldToTake = 100;
}
DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oActivator, FALSE));
AssignCommand(oActivator, TakeGoldFromCreature(nGoldToTake, oActivator, TRUE));
}
}
{
object omal = GetItemPossessedBy(oActivator, "mal");
if (GetIsObjectValid(omal) == TRUE)
ExecuteScript("ej_mal", oActivator);

}
{
object oa_malmor = GetItemPossessedBy(oActivator, "a_malmor");
if (GetIsObjectValid(oa_malmor) == TRUE)
ExecuteScript("ej_bon", oActivator);

}

{
object oa_neutre = GetItemPossessedBy(oActivator, "a_neutre");
if (GetIsObjectValid(oa_neutre) == TRUE)
ExecuteScript("ej_neutre", oActivator);
}
}
{
object oa_neutre = GetItemPossessedBy(oActivator, "save_position");
if (GetIsObjectValid(oa_neutre) == TRUE)
ExecuteScript("av_herat_beat", oActivator);



}
}
Il faut que tu fasses les tutos de base sans ca on va tous perdre du temps à t'expliquer des choses que tu ne comprend pas ou a te refaire une leçon de base sur les script.

Donc, comme en general on est impatient quand on a un script a finir, je te mets ici où est ton erreur, mais fait les tutoriels de base dès que ca marche.

Dans un script, à chaque fois que tu définit un objet avec une ligne du genre :
object oTarget = GetWaypointByTag("WP_Caltys");
tu assigne un nom unique a l'objet. Si tu reprend le meme nom pour désigner d'autres objets, tu annule le 1er.
donc tout ca :
object oTarget = GetWaypointByTag("WP_Malmorne");
object oTarget = GetWaypointByTag("WP_Nathorn");
object oTarget = GetWaypointByTag("WP_Uz");
object oTarget = GetWaypointByTag("WP_Yldure");

est a enlever.

Sinon, pour la mise en page sur le forum, pense a mettre [*php] et [*/php] (sans les étoiles)
C'est à croire que tu n'as pas lu mon post, Kragg. J'y ai énoncé des erreurs que tu remets dans ton dernier message... Lis au moins toutes les réponses, pas seulement la dernière en date.
Ce n'est pas un débat, c'est une tentative de script que tu as avortée.

On va essayer de reprendre à la base.
Pour créer un parchemin de téléportation, il faut:

  1. avoir des destinations (une "location" ou un "object" -> noms anglais) pour pouvoir appliquer une des deux fonctions JumpToLocation ou JumpToObject
  2. avoir un objet permettant de téléporter par activation ou utilisation. Ici, ce serait le parchemin.

Pour valider une utilisation d'un objet, il faut procéder comme suit:
  • créer l'objet dans la palette (skin parchemin) avec un tag unique et spécifique. Par exemple: "parcho_teleport" ET avec une seule propriété: "Pouvoir sur soi uniquement"(il faut définir le nombre de charges ou mettre "pouvoir unique sur soi" dans les propriétés de l'objet)
  • créer un script du même nom où l'on mettra le code de téléportation, OU BIEN inclure le code de gestion de la téléportation dans le script générique du module (qu'on trouve dans les propriétés du module, évènements, OnActivateItem)

Tu en es où avec tout ça ?
Nom de l'objet : Téléportation
Tag : Tlportation
Resref Blueprint : tlportation
Lancer un sort unique sur sois, restriction (mage)

Code PHP:

void main()
{
  
DelayCommand (0.5AssignCommand(GetItemActivator(),
 
JumpToLocation(GetLocation(GetObjectByTag("Tlportation")))));

Code PHP:

void main() 

    
object oItem GetItemActivated(); 
    
object oActivator GetItemActivator(); 

    
string sTag GetTag(oItem); 

    
// J'ai placé le script de téléportation ici. C'est à toi de définir le tag de l'item ! 
    
if(sTag=="Tag_de_l'item_de_téléportation"
    { 
        
// On définit 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)); 
    } 

    else if(
sTag=="Sceptrededelaprison"
    { 
        
object oprison GetWaypointByTag ("priso"); 
        
object oTarget GetItemActivatedTarget(); 
        
object oa1=GetItemPossessedBy(oTarget,"mal"); 
        
object oa2=GetItemPossessedBy(oTarget,"a_malmor"); 
        
object oa3=GetItemPossessedBy(oTarget,"a_neutre"); 
        if(
GetIsObjectValid(oTarget)) 
        { 
            
AssignCommandoTargetJumpToObject(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; 
    } 

    else if(
sTag=="RebootModule"
    { 
        
StartNewModule("Exile"); 
        return; 
    } 

    else if(
sTag=="10Rations"
    { 
        
ExecuteScript("10rations",oActivator); 

        
// Pas besoin de "DelayCommand()", un paramètre de "DestroyObject()" 
        // permet déjà de définir un délai avant la destruction. 
        
DestroyObject(oItem,1.0); 
        return; 
    } 

    else if(
sTag=="10ph"
    { 
        
ExecuteScript("10ph"oActivator); 
        
DestroyObject(oItem,1.0); 
        return; 
    } 

    else if(
sTag=="ej_pierre_rappel"
    { 
        
int nHD GetHitDice(oActivator); 
        if(
nHD>4
        { 
            
int nGoldToTake FloatToInt(0.13*GetGold(oActivator)); 
            
// Un maximum de 100 Po sera retiré 
            
if(nGoldToTake>100
                
nGoldToTake 100

            
DelayCommand(4.8,FloatingTextStrRefOnCreature(58300,oActivator,FALSE)); 
            
AssignCommand(oActivator,TakeGoldFromCreature(nGoldToTake,oActivator,TRUE)); 
        } 
    } 

    
object omal GetItemPossessedBy(oActivator,"mal"); 
    if(
omal!=OBJECT_INVALID
        
ExecuteScript("ej_mal",oActivator); 

    
object oa_malmor GetItemPossessedBy(oActivator,"a_malmor"); 
    if(
oa_malmor!=OBJECT_INVALID
        
ExecuteScript("ej_bon",oActivator); 

    
object oa_neutre GetItemPossessedBy(oActivator,"a_neutre"); 
    if(
oa_neutre!=OBJECT_INVALID
        
ExecuteScript("ej_neutre"oActivator); 

    
object oa_neutre GetItemPossessedBy(oActivator,"save_position"); 
    if(
oa_neutre!=OBJECT_INVALID
        
ExecuteScript("av_herat_beat",oActivator); 

Par contre y a plusieur choix possible de teleportation (Caltys,Nathorn,Orpola,Malmorne)
Remplace oPC qui n'a pas été déclaré par oActivator.

Mais tu ne réponds pas aux questions avant d'en poser d'autres. Tu peux faire autant de Waypoints que tu veux, ça ne résoudra rien. Il faudra quand même fixer une façon de choisir celui où doit se rendre le "téléporté".
Répondre

Connectés sur ce fil

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