Code: |
void main() { object oPC = GetExitingObject(); object oArea = GetArea(oPC); vector vPosition = GetPosition(oPC); float fOrientation = GetFacing(oPC); location lLoc = Location(oArea, vPosition, fOrientation); SetCampaignLocation("location", "ilocation", lLoc, oPC); } |
Code: |
void main() { object oPC = GetEnteringObject(); object oTarget = GetWaypointByTag ("mod_accueil"); int iAccueil = GetCampaignInt("accueil","iaccueil",oPC); location lLoc = GetCampaignLocation("location","ilocation",oPC); if (iAccueil != 1) { SetCampaignInt("accueil","iaccueil",1,oPC); AssignCommand(oPC, JumpToObject(oTarget)); SendMessageToPC(oPC,"JumpToObject"); } else { AssignCommand(oPC, JumpToLocation(lLoc)); SendMessageToPC(oPC,"JumpToLocation"); } } |
Utilise plutôt GetLocation(oPC); pour récupérer la "position exacte". Ceci dit, si je ne m'abuse et si ma mémoire est bonne, les scripts executés à la déconnexion d'un joueur sont souvent foireux du fait qu'a la déconnexion, justement, le joueur n'existe plus.
Après avoir exhumé Aurora et après quelques experiences frankensteinesques... ... je confirme la phrase précédente. Pour récupérer la "Location" d'un joueur avant qu'il se déconnecte, je m'arrangeais pour l'enregistrer de manière régulière dans une variable locale sur le personnage du joueur. Apparement les variables locales sont encore accessibles alors que les autres informations comme la position, la clef cd et compagnie disparaissent avant même que le script de déconnexion ne s'execute.
Lors de l'arrivée du joueur, tu fais lances une fonction qui va enregistrer la position du joueur dans une variable locale, puis avec un DelayCommand, se relancer quelques secondes/minutes plus tard.
Lors de la déconnexion, comme je le disais, les variables locales sont toujours accessibles, tu peux faire donc une sauvegarde persistante à ce moment la.
Si tu ne redemarres pas le serveur, c'est normal de rester au même endroit. Pour ce qui est de la variable locale, je peux certifier qu'elle fonctionne (du moins elle a fonctionné, je n'ai pas testé sur les dernières version).