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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Téléportation retardée

Par Draconyss le 25/8/2002 à 19:08:17 (#2024623)

Hello !
Klk'un connait un script pour faire téléporté tout un groupe de PC se trouvant dans cette endroit au bon moment après un certain temps d'attente ?

Genre : veuillez patientez ... téléportation ici dans 15 minutes :D

Celà me serait utile pour mon module . Merci :merci:

bonne question

Par Blam le 26/8/2002 à 0:06:07 (#2026610)

Pas tres utile pour tout le monde, mais m'interesse prodigieusement car utilisable dans des situations marrantes :)

Par Azharial del'Amrhyn le 26/8/2002 à 3:11:12 (#2027329)

Je rentre de vacances (3 semaines) donc j'ai un peu perdu au niveau de la manipulation du Toolset mais je decouperais se problème avec les étapes suivantes :
- Detection du PC entrant dans la zone : utilise un trigger pour ca.
- Pour chacun des PCs / Compagnons / Invocations (utilise le meme genre de script pour tous les trouver que celui utilisé dans la campagne pour soigner tous les compagnons au Temple).
- Utilise DelayCommand avec comme action un JumpToLocation sur chacune des créatures détectées.

Le gros problème que je vois est que si dans un script ultérieur (entre le moment de l'activation et le moment de la téléportation) tu vides la queue des actions avec un ClearAllActions, et bien ca ne fonctionnera pas... Donc à utiliser très prudemment quand meme.

* Est pas très clair à cette heure-ci * :p.

No problemo

Par Jedaï le 26/8/2002 à 19:55:04 (#2032193)

Pour éviter le problème tu pourrais tenter de "prendre l'heure actuelle" puis "rajouter le délai" (là faire gaffe au options temporelles du module : peut-être utiliser HoursToSeconds pour changer en fonction de la longueur réelle des heures du jeu) et mettre tout ça dans la variable locale d'un objet invisible dont le OnHeartBeat lancera la téléportation à l'heure dite (test admettant une erreur de 6 secondes réelles).

Par Draconyss le 26/8/2002 à 20:32:28 (#2032478)

Ca donne quoi en script "véritable" ? :doute:

Par Gargantuel le 26/8/2002 à 21:01:23 (#2032686)

J'ai pas le toolset sous la main et je rentre aussi de vacances alors faudra probablement debugger un peu ...

On va faire simple : Un trigger téléporte tout personnage (joueur ou pas) qui passe dessus au bout de 15mn.

Tu crées un trigger sur lequel devront marcher tes joueurs puis un waypoint appelé "wt_Target" dans cet exemple.

Sur le OnEnter de ton trigger :


void main()
{
DelayCommand(900, ExecuteScript("teleport", GetEnteringObject()));
}

Et tu crées un script qui s'appelle teleport :

void main()
{
JumpToObject(GetWaypointByTag("wt_Target"));
SpeakString("Vous avez été téléporté !");
}


Et voilà.

Re: No problemo

Par Azharial del'Amrhyn le 26/8/2002 à 21:39:12 (#2032998)

Provient du message de Jedaï
Pour éviter le problème tu pourrais tenter de "prendre l'heure actuelle" puis "rajouter le délai" (là faire gaffe au options temporelles du module : peut-être utiliser HoursToSeconds pour changer en fonction de la longueur réelle des heures du jeu) et mettre tout ça dans la variable locale d'un objet invisible dont le OnHeartBeat lancera la téléportation à l'heure dite (test admettant une erreur de 6 secondes réelles).


Ta solution parait interessante mais je vois deux soucis :
- L'utilisation d'OnHeartBeat peut ralentir drastiquement un serveur.
- Si tu colles ca sur un objet invisible situé dans une Area alors il me semble que son OnHeartBeat ne sera pas declenché si le PC est sorti de l'Area où est l'objet, à l'heure dite. Peut-être faudrait-il placer tout ca au niveau du module, d'où a priori encore ralentissement...

Garg, le problème du DelayCommand est que si un ClearAllActions est rencontré, pouf la téléportation est annulée... bref, des solutions existent mais elles semblent avoir quelques defauts.

Re: Re: No problemo

Par Gargantuel le 26/8/2002 à 21:44:03 (#2033043)

Provient du message de Azharial del'Amrhyn

Garg, le problème du DelayCommand est que si un ClearAllActions est rencontré, pouf la téléportation est annulée... bref, des solutions existent mais elles semblent avoir quelques defauts.


Je crois que le DelayCommand s'executera dans la queue du trigger et pas du joueur. Du coup, y a quand meme peu de chance qu'un ClearAllActions() soit lancé sur le trigger lui-meme ;)
Mais bon j'ai pas testé, je peux me gourer :confus:

Re: Re: Re: No problemo

Par Azharial del'Amrhyn le 26/8/2002 à 21:48:26 (#2033079)

Provient du message de Gargantuel
Je crois que le DelayCommand s'executera dans la queue du trigger et pas du joueur. Du coup, y a quand meme peu de chance qu'un ClearAllActions() soit lancé sur le trigger lui-meme


Oui tu dois avoir raison, mais qu'en est-il si le PC quitte l'Area ? Je ne sais pas du tout si les commandes en attente peuvent s'executer s'il n'y a plus personne dans la zone...

Re: Re: Re: Re: No problemo

Par Gargantuel le 26/8/2002 à 21:53:04 (#2033103)

Provient du message de Azharial del'Amrhyn


Oui tu dois avoir raison, mais qu'en est-il si le PC quitte l'Area ? Je ne sais pas du tout si les commandes en attente peuvent s'executer s'il n'y a plus personne dans la zone...


L'eternelle confusion entre la queue des actions et celle des commandes. Pas simple :(
Dans le cas du DelayCommand() je crois que ce sera considéré comme une commande (je n'ai pas utilisé de ActionWait() )
Donc pas de problème avec les histoires de zones et d'actions qui se gelent.

J'ai utilisé un systeme similaire avec des DelayCommand(ExecuteScript()) sur des objets d'une zone externe et ca fonctionnait bien.

Par Azharial del'Amrhyn le 26/8/2002 à 21:58:51 (#2033139)

OK OK, le problème me titille je vais donc tester ca de suite pour effectivement confirmer si la queue des commandes est active meme hors-zone.

* Revient dans quelques minutes *

...

* Retour *

Quel crétin je fais, j'utilise OnUsed avec GetEnteringObject, ca risquait pas de fonctionner, bon ca va quand même mieux avec GetLastUsedBy :p. Ton script tourne donc très bien et ce quelque soit la zone, bien, c'est une bonne chose à savoir :).

* Se dit que les vacances ont quand même un effet sur l'efficacité * :p.

Par Gargantuel le 26/8/2002 à 22:39:21 (#2033515)

good news.
Merci pour le retour :)

Heu ...

Par Draconyss le 27/8/2002 à 0:59:55 (#2034658)

Excusez-moi de vous dérangés ... (hum hum!) ...Et çà donne quoi en concret tout çà.Quel est donc le bon script et la bonne manip à utiliser.Je suis encore du niveau "quiche" moi pour tout celà:(

Parce que là , je suis vraiment perdu ... comme d'autres peut-être d'ailleurs.;)
Une description détaillée s'impose je crois ... (comment faire quoi et ou ?)

Merci

JOL Archives 1.0.1
@ JOL / JeuxOnLine