JeuxOnLineForumsPlusCréer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Je cherche a connaitre la position du pj lors de sa deconnexion RSS
   
Répondre
Partager Outils Rechercher
Dalfy De Cayley
Roi
 

Je cherche a connaitre la position du pj lors de sa deconnexion

Bonjour,
je cherche depuis quelques temps a sauvegarder la position d'un joueur avant sa déconnexion. L'un d'entre vous pourrais il m'expliquer pourquoi l'objet que l'on récupère dans l'évènement onClientLeave du module, n'est plus a proprement parler dans le jeu, et encore moins un pj. D'apres mes tests c'est effectivement un objet de type personnage, mais rien de plus.

PS je récupère cet objet par la fonction GetExitingObject()

Merci d'avance.
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
C'est toujours le meme principe : un evenement ne peut pas etre declenché avant de s'etre reellement produit.

Hors, tant que le Pj a une position, il est en jeu. S'il quitte le jeu, il n'y est plus, il n'a donc plus de position.

Il parait toutefois que certains arrivenet a avoir le script qui s'execute si rapidmeent que l'Objet est encore en jeu (RAT et acha, a priori). Personellement, je n'y arrive pas...
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Vivi j'avoue que j'y arrive bien, et c'est en compilant le module entièrement

*3h00 de compil sur le module officiel :/*

Et en utilisant une fonction du PUMA que je mets dans le Onleave.

Comme le fait de bloquer un pnj qui meurt et qui décide de se déco/reco, mais bon ça tout le monde y arrive enfin je crois lol.
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
c'est le fait de compiler entièrement le module qui permet cela O_o

un peu étrange comme explication.
Je ne me suis jamais penché sur le sujet, mais ce serait pas mal de trouver exatctement ce qui permet ou non l'utilisation de la fonction GetLastExitingObject

Citation:
Et en utilisant une fonction du PUMA que je mets dans le Onleave.
quelle fonction ? tu peux mettre le corp, s'il n'est pas trop long ?

J'avoue que j'aimerais vraiment réussir à cerner le sujet, l'utilisation d'un OnClientLeave qui marche simplifirait infiniment de nombreux scripts...
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Ouais moi j'ai beau me battre ça marche pas

Jaha Effect
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Selon moi, la question n'est pas seulement que "ca marche" ou que "ca marche pas", mais de savoir pourquoi.

Immaginez la scène : un gros module persistant remplis de scripts bien complexes (ben... 4eage a tout hasard ^^), utilisant le GetLastExitingObject dans le OnClientLeave. Tout marche bien, c'est parfait, la vie est belle. Puis on fait une petite mise a jour du module, et la d'un coup sa marche plus o_o alors que toute la gestion des pj est basée sur leurs entrées/sorties dans le module. Je n'ose même pas immaginer la merde que sa peux provoquer, et je ne me lancerais jamais la dedant sans savoir avec PRECISION quel est le phénomène qui rend possible (ou impossible) l'utilisation du GetLastExitingObject.

vala, donc si quelqu'un à quelque chose à ajouter sur le sujet, moi je suis pret à m'investir un peu pour en savoir plus (d'ailleur, je vous laisse, je file faire des essais ^^)
Lien direct vers le message - Vieux
Dalfy De Cayley
Roi
 
Citation:
Provient du message de RAT
Vivi j'avoue que j'y arrive bien, et c'est en compilant le module entièrement

*3h00 de compil sur le module officiel :/*
Qu'est ce que tu appelles compiler entièrement le module exactement ?
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Bon, j'ai trouvé quelques trucs, qui tout téféchis sont des évidences.

Après testes avec GetLastExitingObject dans le OnClientLeave, il s'est avéré que :

- Le script est lancé APRES que le joueur ai déconnecté, mais AVANT que l'objet pj soit détruit.

DONC : (avec oCreature = GetLastExitingObject() )
- GetIsPC(oCreature) = FALSE
- GetObjectType(oCreature) = 1 (soit OBJECT_TYPE_CREATURE)
- GetLocation(oCreature) = location invalide
- GetArea(oCreature) = Area invalide
- Toutes les informations en variables locales sur la creature sont conservées

voila, je pense que j'ai dit le principal

ATTENTION !!!!!
Ces testes ne marchent QU'EN MULTIJOUEUR !!! si vous lancez un module en solo, j'ai l'impression que le OnClientLeave n'est même pas executé. Si vous voulez tester vos scripts, vous pouvez facilement lancer un server dédié et y jouer en LAN sur la même machine

bon, bien si vous avez des trucs a ajouter, allez y

Citation:
Qu'est ce que tu appelles compiler entièrement le module exactement ?
dans outil, ca doit s'appeller "compiler le module" ou un truc comme ca. Il vérifie toutes les liens entre les blueprints, les zones, et compile tout les scripts. Indipensable avant tout lancement d'un module
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Citation:
Provient du message de Azrael07
DONC : (avec oCreature = GetLastExitingObject() )
- GetIsPC(oCreature) = FALSE
- GetObjectType(oCreature) = 1 (soit OBJECT_TYPE_CREATURE)
- GetLocation(oCreature) = location invalide
- GetArea(oCreature) = Area invalide
- Toutes les informations en variables locales sur la creature sont conservées

voila, je pense que j'ai dit le principal
Donc un Set/GetLocalLocation devrait fonctionner?

Jaha Effect
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Bien...... j'ai testé les LocalInt qui marchaient, y'a pas de raison que les LocalLocation marchent pas
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Citation:
Donc un Set/GetLocalLocation devrait fonctionner?
Oui, MAIS :

le probleme n'est pas dans le GetLocalLocation, mais le GetLocation, pour pouvoir le Set apres

En effet : s'il declenche le OnClientLeave, il a au prealable declenché le OnAreaExit, car il a quitté l'area.

Or, il ne va pas dans une nouvelle area : il n'est donc plus dans une area. Donc la location de l'objet est invalid : ce n'est plus qu'une reference objet, auxquelles sont attachées les variable, mais qui n'as plus de position, ni d'inventaire (ce qui m'epate, vu que l'objet est toujours la, mais bon).

Le plus embetant, dans l'affaire, c'est le GetIsPC() qui rammene non. Ca, c'est nul... Ca m'a d'ailleurs géné longtemps, avant que je Set une local Int dans le OnEnterClient qui dise : GetLocalInt(oPC,"PC")==TRUE. Du coup, tu peux faire un Get sur le OnClientLeave, qui verifie si c'est un PC.

Bricole' powaaa, mais bon, quand il faut, il faut...


PS : a noter que l'objet est bien conserve quelque part, vu que si tu cree, par exemple un PJ avec le nom X, que tu le deplace dans le serveur, puis que tu quitte, que tu recree un Pj avec le même nom STRICTEMENT, tu va effectuer ta premiere connexion avec ce nouveau PC à l'endroit ou avait quitté l'ancien : il a associé ca avec le nom du PC, et l'a conservé pendant la cession... Etonant... non ?
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Citation:
Le plus embetant, dans l'affaire, c'est le GetIsPC() qui rammene non.
O_o

i don't understand la... si le script ce déclanche, c'est forcement un pc de toutes facons non ? (aie non, c'est vrai, ca peut être un dm :/ vi en effet c'est un problème de taille)

Citation:
PS : a noter que l'objet est bien conserve quelque part, vu que si tu cree, par exemple un PJ avec le nom X, que tu le deplace dans le serveur, puis que tu quitte, que tu recree un Pj avec le même nom STRICTEMENT, tu va effectuer ta premiere connexion avec ce nouveau PC à l'endroit ou avait quitté l'ancien : il a associé ca avec le nom du PC, et l'a conservé pendant la cession... Etonant... non ?
bien... essaye de mettre de coté l'objet du joueur, puis de voir s'il existe toujours si celui ci n'est plus la.
Tu peux aussi essayer d'enregistrer l'objet, deco/reco, et voir si c'est toujours le même.

Bon, moi j'ai passé mon aprem a des tests en tout genre, donc je ferais pas ca today ^^
Lien direct vers le message - Vieux
Dalfy De Cayley
Roi
 
Deja je tiens a vous remercier pour votre aide abondante. Ca me rassure de voir que je suis pas le seul a avoir le problème. J'ai moi aussi fait pas mal de test avant de poser la question en ce lieu. J'ai remarque que le onExiting sur les area ne permet pas non plus de disposer de la position du joueur. et que le dit joueur est lui aussi plus vraiment un joueur. Ca correspond bien au fait que le joueur ne soit plus en jeu. Puisque le serveur sauve la position du PJ avant sa déconnexion. Il doit être possible de récupérer cela.

Savez vous comment je pourrais faire pour connaitre la liste des variables associer a un objet ?
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Citation:
Savez vous comment je pourrais faire pour connaitre la liste des variables associer a un objet ?
aahhhhhhhhhhhhh si c'était possible...... vous immaginez un peu, avoir accet a TOUTES les variables d'un objet.....

bon, on arrete de réver et on reste réaliste : c'est malheureusement pas possible, tu n'as accet qu'aux variables auquelles les fonction te donnent accet, et celle que tu as crées toi même avec du SetLocal*

Citation:
Deja je tiens a vous remercier pour votre aide abondante
ouarf, bientot je vais passer pour un saint. Est ce que j'ai la tête d'un saint moi

Gniarf gniarf, preend pas tout pour toi, c'était un sujet qui n'avait pas été abordé vraiment dans le fond (a ma connaissance), et nous somme X a avoir après quelque chose sur le sujet, ou X est égal au nombre de visiteur du forum - ceux qui connaissais déjà le truc (au moins je prend pas trop de risque mdr)
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Je cherche a connaitre la position du pj lors de sa deconnexion
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 03h20.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite