Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrĂŽle

Recherche | Retour aux forums

JOL Archives

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)

Coucou !!! *sourit*

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)

Mets donc des balises [ PHP ] (sans les espaces) autour de tes scripts, ça en améliorera la lisibilité.:)

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)

une autre chose : pour utiliser ta variable, il faudra que ton dialogue avec ta baguette contienne GetLocalLocation(oPlayer, "pointretour");

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)

Désolée, je savais comment fonctionnaient les balises (j'en avais utilisé d'ailleurs) mais j'ignorais qu'il en existait exprÚs pour ces codes.

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)

Dans les scripts, mais je ne sais pas ou, en conséquence:

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 cherché je vous promets, mais j'ai pas trouvé :(

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)

Dialogue du portail de rappel
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)

Merci bien, j'avais réussi à trouver seule finalement, mais je vais voir si vos scripts apportent des améliorations *sourit*.

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)

Tu n'as pas mis de AssignCommand, sur ton speakstring... je pense que ca vient de la.

Par caarheim le 7/2/2003 Ă  10:03:34 (#3188270)

Est ce que tu as pensez a initialisé ta location respawn quand le joueur se connecte ??
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)

Caarheim, quand le perso se connecte la valeur de iteleportation n'est pas égale à 1, donc, dans mon script est censé afficher un message "impossible" au lieu d'essayer de téléporter le joueur vers un point qui n'existe pas.

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)

Dsl :( je savai pas si le language gerait les variable non déclaré ! aparement oui alor, et il renvoie 0 pour une variable inconu donc! C'est bon a savoir :)

Florine

Par Blam le 8/2/2003 Ă  17:52:48 (#3197453)

Pourrais tu poster ton travail fini, de façon a ce que d'autres le trouve :)
et puis je suis curieux de voir ça

JOL Archives 1.0.1
@ JOL / JeuxOnLine