Login: Pass:
Mythyzyn
Modérateur


Inscrit le: 22 Mai 2005
Messages: 416
Localisation: Lyncya
Message Posté le: 24/09/2006 18:17 Sujet du message: Une histoire de location
Hello,

VOila je susi entrain d'essayer de faire une sauvegarde de localisation persistante en utilisant la BDD de NWN.

Voici ce que j'ai pour le moment :

Module Exit :

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);
}


Module Enter

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");
 }
}


Quand je reviens sur le module une fois sortie de l'accueil.

Je reste bloqué dans la zone temporaire et il m'affiche : JumpToLocation mais ne me téléporte pas :/

Si quelqu'un voit ce qui ne va pas je veux bien le savoir ^^
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Myrdhin



Inscrit le: 31 Mar 2006
Messages: 335
Message Posté le: 24/09/2006 18:51 Sujet du message:
Essaie de mettre un DelayCommand pour le JumpLocation. Genre trois secondes mini.
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Mythyzyn
Modérateur


Inscrit le: 22 Mai 2005
Messages: 416
Localisation: Lyncya
Message Posté le: 24/09/2006 19:48 Sujet du message:
Non plus :/
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Azouth



Inscrit le: 01 Sep 2006
Messages: 24
Localisation: Marseille
Message Posté le: 24/09/2006 21:11 Sujet du message:
Citation
object oArea = GetArea(oPC);


Essaie ca la place : object oArea = GetObjectByTag(GetArea(oPC));

Smile
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
MrXXS
Administrateur


Inscrit le: 11 Juin 2005
Messages: 488
Message Posté le: 24/09/2006 22:28 Sujet du message:

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... Twisted Evil ... 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.

Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Mythyzyn
Modérateur


Inscrit le: 22 Mai 2005
Messages: 416
Localisation: Lyncya
Message Posté le: 24/09/2006 22:47 Sujet du message:
Hum pas évident à deviner tout ça, merci MrXXS Wink

Azouth je n'ai pas eu le temps d'essayer ta solution mais vu ce que dit MrXXS j'ai peur que ça ne fonctionne pas.

Je vais essayer de sauvegarder la position de manière régulière mais à part un HeartBreath je ne vois pas trop comment faire bien qu'en variable locale ça devrait passer mais comment je la stocke de façon persistante du coup ? Parce que si je dois faire un setcampaign machin chose sur un HB j'ai peur que mon CPU flambe avec pas mal de joueurs :/
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
MrXXS
Administrateur


Inscrit le: 11 Juin 2005
Messages: 488
Message Posté le: 24/09/2006 23:21 Sujet du message:

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.

Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Mythyzyn
Modérateur


Inscrit le: 22 Mai 2005
Messages: 416
Localisation: Lyncya
Message Posté le: 25/09/2006 6:17 Sujet du message:
Oki donc sur le exit je prend la var loc du PJ et je la passe en var persistante.

Oki oki je vois de quoi tu veux parler, enfin je pense xD

J'essaie ça enrentrant du taff ce soir ^^

Merci Wink
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Mythyzyn
Modérateur


Inscrit le: 22 Mai 2005
Messages: 416
Localisation: Lyncya
Message Posté le: 25/09/2006 17:23 Sujet du message:
La technique de variable locale en variable persistante ne marche apparement pas ou bien je sais pas comment ils font . . .

En sauvegardant la position en persistant directmeent à l'entrée de chaque zone je peux remettre le PJ au milieu de la zone ou il était à l'arrêt du serveur . . . C'est pas top mais c'est deja ça ^^

Le jeu semble sauvegarder la position du joueur localement vue qu'en entrant sortant et revenant sur le serveur, il connait toujours la position exacte ou je suis.

Comment récupérer cette variable ? Peut être qu'avec elle on pourrait faire quelque chose.
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
MrXXS
Administrateur


Inscrit le: 11 Juin 2005
Messages: 488
Message Posté le: 25/09/2006 17:43 Sujet du message:

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).

Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Mythyzyn
Modérateur


Inscrit le: 22 Mai 2005
Messages: 416
Localisation: Lyncya
Message Posté le: 25/09/2006 17:51 Sujet du message:
C'est sans doute moi qui a fait une erreur . . .

Bah vivement NWNX4 Smile

Je poserais mes sytèmes la dessus . . .

Aurora me sool un peu à force lol . . .

Merci de votre aide en tout cas Wink
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
yi



Inscrit le: 09 Juil 2005
Messages: 73
Message Posté le: 27/09/2006 6:31 Sujet du message:
si tu lances le script dans l'evenement OnExit, le personnage n'existe plus et donc n'a plus de position.
Il faut en fait sauvegarder la position du personnage regulierement (toutes les minutes par exemple) à la reco il reviendra à la derniere position sauvegardé
(tu peux aussi sauvé sa position quand il dors)

voila

PS : a voir comment cela est gere dans NWN2
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   

Page 1 sur 1
Sauter vers:  

 

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum

Traduction par : phpBB-fr.com
Powered by phpBB © 2001, 2007 phpBB Group