teleportation d'un portailA vers un point B

Répondre
Partager Rechercher
Code PHP:

void main()
{
object oPc;        
string sTagDest;
sTagDest="Destination_B";

oPc GetEnteringObject();

AssignCommand(oPcActionJumpToObject(GetObjectByTag(sTagDest)));

j'aimerai copier ce script ds le onused du portailA, le script s'enregistre normalement, mais qd j'essai de me teleporter bah il teleporte pas
Tu as placé un Déclencheur générique ou un point de transition ?

Tu tests en DM ou en perso ? Parce que les DM n'active pas les Déclencheurs lorsqu'ils passent dessus. Mais peuvent les activer manuellement.

Tu dis avoir mis le script dans le OnUsed ? Mais il n'y a pas de OnUsed sur un trigger... il y a éventuellement OnClick...

Mais si tu mets ça: oPc = GetEnteringObject();
Ton script a plus sa place dans le OnEnter.

Si faut cliquer, il y a GetClickingObject() ou un truc dans le genre.
marche pas non plus...



je veux juste que qd je vais sur un teleporteur avec mon perso il me teleporte à un autre endroit...


donc si j utilise le portail (onused), il me teleporte.

je suis ds une salle avec un dragon d'argent, il garde le portail vers l'exterieur.


j'aimerai simplement qd je clique sur ce portail qu'il me tranferst sur une autre zone. j'utilise un portail taggué "Destination_A" et j'aimerai aller vers un object invissible taggué "Destination_B"

tout les teleporteurs teleportent, j'aimerai que le mien aussi
A priori, tes problèmes viennent du fait que tu n'as pas encore très bien compris l'importance du système d'évènement dans le NWScript, par exemple ici, tu utilises GetEnteringObject() (= Obtenir l'objet en train d'entrer) dans un évènement OnUsed (= Lorsqu'utilisé , sous entendu, lorsque l'objet sur lequel se trouve cet évènement est utilisé).
Rien qu'avec la traduction tu devrais voir que ça ne va pas...

Maintenant, pour trouver simplement la fonction qu'il te faut il te suffit de taper "use" dans le filtre de fonction (en haut à droite dans l'éditeur de script), ce qui t'affiche quelques fonctions dont la fonction qui va te ramener le bon objet : GetLastUsedBy() !!
Maintenant tu sélectionnes "GetEnteringObject" dans ton script, tu double-clique sur "GetLastUsedBy" dans la liste des fonctions et tu compiles. Oh miracle, ça marche (pourvu que ton tag soit exact évidemment) !
Code PHP:

void main()
{

string sTagDest;
sTagDest "VOTRE_TAG_DE_DESTINATION";

object oPc;
//oPc = GetEnteringObject(); //spawn directement
oPc GetLastUsedBy(); //utiliser un teleporteur
object oWP GetObjectByTag(sTagDest);
if(
GetIsObjectValid(oWP))
AssignCommand(oPcActionJumpToObject(oWP));
else
;

compilé et a mettre dans onused de votre portail....

voilà! cette fois ci ça marche tres bien.


quel galére! faut bien me comprendre ce n'est que mon 3 ieme jours de programation avec aurora...

j'ai qd meme tiré ça du script pour le spawn en fonction des alignement...


j'ai eu un autre probleme, plus mecanique je dirai.. qd j'utilisai le portail le perso avait du mal a aller dessu car y a trop d'objet autour...

bref ça marche!


autre petite question. si je désactive le portail par default et que je souhaite réactiver le portail qd je parle a un pnj.. je dois voir la fonction onactived?
Ca existe pas OnActived non ?

De toutes façon, tous les problèmes de ce genre se traite de la même façon : on utilise les variables locales à un objet.

Il s'agit de variables qu'on attache à un objet bien particulier grâce aux fonctions :
SetLocalInt(), SetLocalFloat(), SetLocalString(), SetLocalLocation() et SetLocalObject().
Ces 5 fonctions ont les mêmes paramètres : SetLocalTruc( objet auquel on attache la variable(object), nom de la variable (string), valeur de la variable(du type spécifié par Truc));

Exemple :
Code PHP:

//Ce code attache une variable entière au PC qui est 
//en train de parler, de nom "bFirstTalk" et de valeur 1

//il s'agit d'un script sur une "action conséquente" dans une discussion

void main() {
    
    
object oPC GetPCSpeaker();
    
    
SetLocalIntoPC"bFirstTalk");
    

Maintenant, il faut pouvoir récupérer ces variables à partir d'un autre script, ceci se fait avec les fonctions :
GetLocalInt(), GetLocalFloat(), GetLocalString(), GetLocalLocation() et GetLocalObject().

Ces 5 fonctions ont toutes les mêmes arguments : GetLocalTruc( objet auquel est attaché la variable à récupérer(object), nom de la variable à récupérer(string);

Elles renvoient la valeur de la variable du nom et du type spécifié attaché à l'objet spécifié. (Les fonctions SetLocal*() ne renvoient rien)

Exemple :
Code PHP:

//Ce code se trouve sur une autre branche de la discussion du
//script précédent, cette fois-ci il s'agit d'une "condition d'exécution"
//ce script va vérifier que le PJ a déjà parlé au moins une fois au PNJ

int StartingConditional() {
    
    
object oPC GetPCSpeaker();
    
    
//Attention, la casse du nom de variable est importante
    
return ( GetLocalIntoPC"bFirstTalk" ) );//n'oublions pas que 
    //toute valeur différente de 0 est considéré comme "VRAI" en NWScript
    


Avec ces renseignements, tu devrais être en mesure de faire ce que tu veux, sinon, demandes de l'aide.
Citation :
Provient du message de Jedaï
Ca existe pas OnActived non ?

De toutes façon, tous les problèmes de ce genre se traite de la même façon : on utilise les variables locales à un objet.

Il s'agit de variables qu'on attache à un objet bien particulier grâce aux fonctions :
SetLocalInt(), SetLocalFloat(), SetLocalString(), SetLocalLocation() et SetLocalObject().
Ces 5 fonctions ont les mêmes paramètres : SetLocalTruc( objet auquel on attache la variable(object), nom de la variable (string), valeur de la variable(du type spécifié par Truc));

Exemple :
Code PHP:

//Ce code attache une variable entière au PC qui est 
//en train de parler, de nom "bFirstTalk" et de valeur 1

//il s'agit d'un script sur une "action conséquente" dans une discussion

void main() {
    
    
object oPC GetPCSpeaker();
    
    
SetLocalIntoPC"bFirstTalk");
    

Maintenant, il faut pouvoir récupérer ces variables à partir d'un autre script, ceci se fait avec les fonctions :
GetLocalInt(), GetLocalFloat(), GetLocalString(), GetLocalLocation() et GetLocalObject().

Ces 5 fonctions ont toutes les mêmes arguments : GetLocalTruc( objet auquel est attaché la variable à récupérer(object), nom de la variable à récupérer(string);

Elles renvoient la valeur de la variable du nom et du type spécifié attaché à l'objet spécifié. (Les fonctions SetLocal*() ne renvoient rien)

Exemple :
Code PHP:

//Ce code se trouve sur une autre branche de la discussion du
//script précédent, cette fois-ci il s'agit d'une "condition d'exécution"
//ce script va vérifier que le PJ a déjà parlé au moins une fois au PNJ

int StartingConditional() {
    
    
object oPC GetPCSpeaker();
    
    
//Attention, la casse du nom de variable est importante
    
return ( GetLocalIntoPC"bFirstTalk" ) );//n'oublions pas que 
    //toute valeur différente de 0 est considéré comme "VRAI" en NWScript
    


Avec ces renseignements, tu devrais être en mesure de faire ce que tu veux, sinon, demandes de l'aide.


je crois que l'aide a mon stade est plus qu'indispensable. j'arrive pas trop a mis faire a ce code

Mais bon, j'arrive dejà a reperer ce qui m'interresse et a purger le reste ds un script.

Pis bon, y a dejà pas mal de possibilité avec l'editeur lui meme. J'ai du mal a comprendre faut script sur les dialogues par exemple. Car pratiquement tout est dans l'editeur...

en 1 semaine, je suis arrivé à

utiliser completement un dialogue , mise a jour de journal et de quetes. Avec tous ce que ça comporte, gain xp, d'objet etc..
imposser des conditions etc...

j'ai toutes les possibilités de spawn, respawn etc

bref, tous ce qu'a fais bioware pour le mode solo, je pourrais le refaire.. y a tous sur ce forum! il est génial

j'ai besoin plus que 2 choses pour module:

1) une gestion de score en de clan (alignement mauvais / bon)

2) la perte ou le gain de d'alignement suivant certains actes...
Répondre

Connectés sur ce fil

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