Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Faire une pierre de rappel qui mĂ©morise l'endroit oĂč on l'utilise pour y revenir ?
Faire une pierre de rappel qui mĂ©morise l'endroit oĂč on l'utilise pour y revenir ?
Par Florine le 5/2/2003 Ă 12:36:29 (#3174740)
J'ai fait une petite baguette magique qui téléporte les personnes à divers points de passage. J'aimerais qu'il soit possible de revenir à l'endroit précédent.
Plus concrÚtement, il faut que le script qui me téléporte définisse une variable contenant ma position dans le jeu, juste avant la téléportation.
Comment je peux créer une telle variable que je puisse réutiliser ensuite ? Moi mes variables elles sont éphémÚres...
VoilĂ oĂč j'en suis... c'est un script appelĂ© lors du dialogue avec la baguette *colle son petit script* :
void main()
{
object oPlayer = GetLastSpeaker(); //Là je définis la personne qui sera téléportée lors du dialogue avec la baguette
object oTeleportTag2 = GetWaypointByTag("MAISON"); //Là je définis son lieu de destination
location backpoint = GetLocation(oPlayer);//Ca c'est la position avant la téléportation
SetLocalLocation(oPlayer, "pointretour",backpoint); //LĂ j'ai vainement essayĂ© de crĂ©er une variable de nom "pointretour" qui contient ma position avant la tĂ©lĂ©portation et qui puisse ĂȘtre rĂ©utilisĂ©e Ă la prochaine activation de la baguette.
{AssignCommand(oPlayertest, ActionJumpToObject(oTeleportTag2));}
}
[Edit par eM : N'hesite pas a Editer ce post pour regarder comment fonctionne les balises PHP ^^]
Par JedaĂŻ le 5/2/2003 Ă 13:04:34 (#3174943)
Sinon je peux te dire que ton assignation de variable s'est bien passé, la ligne est correcte.
Par contre il y a deux bizarrerie dans ton script :
l'utilisation de GetLastSpeaker() et pas GetPCSpeaker() ?:confus:
Le fait que tu fasse AssignCommand sur un objet qui s'appelle oPlayertest et pas oPlayer comme dans les autres fonctions ? :confus:
Par eMRaistlin le 5/2/2003 Ă 13:06:29 (#3174953)
Ceci etant, je confirme ce qu'a dis Jedai : a priori, ton playertest fais tout bugger :p
Par Florine le 5/2/2003 Ă 13:24:37 (#3175091)
Le "playertest" c'est parce que je faisais des tests, j'avais modifié tout les oPlayer en oPlayertest. J'ai oublié de remodifier celui-là ;)
Le "GetLastSpeaker" c'est la fonction utilisĂ©e pour les objets Emotewand, DMfx et DMHelper que vous connaissez peut-ĂȘtre, il fonctionne trĂšs bien *sourit*.
La téléportation fonctionnait bien c'est juste la variable "backpoint" (qui contient mes coordonnées/location avant la téléportation) que j'arrive pas à reprendre lorsque j'execute un autre script censé me ramener au backpoint justement.
Je voudrais faire un script qui fasse JumpToLocation(backpoint), comment repĂȘcher ce backpoint dĂ©finit dans le script ci-dessus ?
La fonction qui déclare une variable qui reste en mémoire une fois le script terminé c'est bien SetLocalLocation ?
La fonction pour la reprendre c'est GetLocalLocation ?
Merci pour votre aide !!!! :)
C'est déjà traité
Par Blam le 5/2/2003 Ă 13:25:33 (#3175100)
demain je te poste mon systĂšme de rappels avec retour d'oĂč on est mort et d'oĂč on s'est tĂ©lĂ©portĂ©. (Demain car la je suis au boulot jusqu'Ă 3h00 du mat !)
Voilou :)
Par Florine le 5/2/2003 Ă 13:30:38 (#3175162)
J'ai fait une recherche ici sur la fonction SetLocalLocation pour voir si c'est bien celle à utiliser pour déclarer ma variable, aucun résultat.
J'ai lu les tutoriaux d'Amaranthe et j'ai vaguement parcouru ceux de bioware et toujours rien...
J'attends avec impatience *sourit*
J'ai finalement réussi ! Plus qu'à compléter pour améliorer Merci et bon travail au pauvre qui travail jusqu'à 3h !!!
comme promis
Par Blam le 6/2/2003 Ă 12:53:32 (#3182857)
script retour d'ou on est mort
Script retour d'ou on s'est téléporté
tout
Par Florine le 6/2/2003 Ă 19:40:51 (#3185166)
J'ai encore un petit ennui en fait (si quelqu'un peut m'éclairer en message privé ou ici ce serait super gentil !!).
Lorsque mon script de retour se lance, je voulais qu'il vérifie si la personne s'était déjà téléportée auparavant.
Si c'est le cas alors le script doit téléporté la personne au point précédent (c'est le cas d'ailleurs, ça fonctionne).
Si c'est pas le cas, je voulais afficher un petit message "pas de point de retour possible".
Pour ça j'ai fait ce script de téléportation :void main()
{
//teleporte le joueur au point de passage de tag TAVERNE via le baton de
//teleportation
object oPlayer = GetLastSpeaker();
object oTeleportTag1 = GetWaypointByTag("TAVERNE");
location backpoint = GetLocation(oPlayer);
SetLocalLocation(oPlayer, "respawn",backpoint);
//lĂ je mets la valeur 1 dans la variable "teleportable", ce qui
//signifie que la personne s'est téléportée au moins une fois.
SetLocalInt(oPlayer,"teleportable",1);
{
AssignCommand(oPlayer, ActionJumpToObject(oTeleportTag1));
}
}
Et voilĂ mon script de retour :void main()
{
object oPlayer = GetLastSpeaker();
int iteleportation=GetLocalInt(oPlayer,"teleportable");
location lretour = GetLocalLocation(oPlayer,"respawn");
location lretour2=GetLocation(oPlayer);
//C'est là que je teste, si la valeur est 1, il téléporte. Si la valeur de iteleportation est différente de 1,
//alors il doit afficher le message. Mais rien ne s'affiche !! Mon test est incorrect ?
//Ou la fonction pour afficher le message ne convient pas ?
if (iteleportation==1)
{
SetLocalLocation(oPlayer,"respawn",lretour2);
{AssignCommand(oPlayer,ActionJumpToLocation(lretour));}
}
if (iteleportation!=1)
{
ActionSpeakString("Impossible, pas de point de retour",TALKVOLUME_TALK);
}
}
Florine
Par eMRaistlin le 7/2/2003 Ă 9:32:45 (#3188117)
Par caarheim le 7/2/2003 Ă 10:03:34 (#3188270)
Je sait pas ce qu il retourne si la location n existe pas lorsque le script de retour est lancé sans que le script de téléportation ne le soit avant :(
Sinon, c'est juste une ligne dans le Onenter du module il me semble
tout fonctionne :)
Par Florine le 7/2/2003 Ă 16:06:56 (#3190898)
En fait c'est pas vraiment comme une pierre de rappel, il ne téléporte pas à un seul endroit mais il offre une liste de destinations (là j'en ai mis qu'une dont le tag est "TAVERNE") donc rien besoin d'initialiser.
J'ai essayé de AssignCommand et ça fonctionne maintenant ! J'avais regardé le tutorial numéro 1 d'Amaranthe et elle n'avait pas eu besoin de mettre AssignCommand, alors je l'avais pas mis non plus.
Merci encore eMraistlin.
Par caarheim le 8/2/2003 Ă 14:24:36 (#3196533)
Florine
Par Blam le 8/2/2003 Ă 17:52:48 (#3197453)
et puis je suis curieux de voir ça
JOL Archives 1.0.1
@ JOL / JeuxOnLine