La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/06/2024 07:00:33


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Lisan Anthelus
Chevalier
Inscrit le: 31 Mai 2004
Messages: 73
Localisation: Lyon (FRANCE)
Répondre en citant
Posté le : 09/04/2005 00:46:42 Sujet du message : ActionJumpToLocation() suivi d'un effet de mort

[Problème posé sur conception de module persistant]

Bonjour,

après avoir pas mal cherché, j'ai enfin compris comment sauver et restituer une position et un état du PJ (sans aucun DelayCommand() !!!) à la connection du joueur.
En effet, les DelayCommand(), je les aient utilisés au début, jusqu'à ce que je comprenne que je ne codais pas correctement (code présent dans les mauvais scripts, accumulation de DelayCommand(), ...).
Aujourd'hui, je sauvegarde convenablement mes personnages en base et je les restitue presque convenablement.
J'ai dis presque, parce que mon problème se situe sur la fonction que j'appelle lorsqu'un joueur mort s'est déconnecté.
En effet, si le joueur est vivant, la sauvegarde du personnage se passe bien puisqu'à la reconnection (après reboot serveur), il récupère bien toutes les infos de ma base campagne.
De plus, il se téléporte parfaitement à l'endroit désigné de la base.
Le souci réside dans ceci:
NWScript :
ActionJumpToLocation(GetLocalLocation(oPC,"PCLocation"));
if(GetLocalInt(oPC,"PCDead"))
{
    SetLocalInt(oPC,"PCDeadLogin",TRUE);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDeath(FALSE, FALSE),oPC);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


En effet, si le PJ est mort, la fonction qui le tue invalide sa téléportation.

J'ai tout d'abord pensé que sa 'location' n'était pas bien sauvegardée en base ...
Que nini, sa 'location' est parfaitement valide puisque j'ai pu faire apparaitre un effet à l'endroit désigné de sa mort suivant la 'location' restituée par la même variable que celle fournie à ActionJumpToLocation().
Pour info, j'ai appelé l'effet juste avant ActionJumpToLocation(), donc les variables possèdent les bonnes données, même si le joueur est mort.

J'ai alors pensé que l'effet de mort avait une incidence sur la 'location' ...
Du pipeau, après avoir appelé le même effet visuel après l'effet de mort, il est bien apparu à l'endroit de la mort du personnage.

J'ai enfin pensé que cela venait peut-être du script "onPlayerDeath" et je l'ai donc customisé et même entièrement vidé ...
Rien n'y fait, le PJ ne peut se téléporter si on le tue derrière la téléportation (dans le script). Voyant ceci, j'ai foutu la ligne d'effet de mort en commentaire et là, nom de dieu, ca marche au détail près que le joueur est vivant.

J'ai donc pensé que c'était l'exécution de la fonction d'effet de mort qui annulait la téléportation ...
mais non, j'ai tenté de téléporter le PJ après l'effet de mort, que dalle.

J'ai finalement appliqué un DelayCommand() sur l'effet de mort. Cela fonctionne mais ce n'est absolument pas propre et ca m'énerve du coup (risque de croisements de traitements avec ces maudits DelayCommand() s'ils sont utilisés abusivement, déjà que je m'en sers pour les cutscenes, grrr).

Alors je me pose la question suivante:
La procédure ActionJumpToLocation() ne renvoyant donc rien et étant exécutée en parallèle(ouverture d'un autre thread je suppose), existe-t-il un moyen de capturer l'évênement de fin de téléportation, ou encore mieux, existe-il un moyen de téléporter un PJ mort ?
Merci d'avance.
_________________
Un cerveau... c'est fait pour agir.
La pensée n'est là que pour rendre plus efficace l'action
.

H. Laborit

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 09/04/2005 10:22:22 Sujet du message :

Idée peut-être faisable.


Et si tu creais un corps à l'endroit de la mort et mettais le PJ dans une zone où il peut demander à quelqu'un s'il préfère respawn, ou qu'il reste dans cette zone en attendant une rez.

Et quand quelqu'un lance une rez sur le corps, tu teleportes le PJ à la plae du corps et tu delete le corps.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lisan Anthelus
Chevalier
Inscrit le: 31 Mai 2004
Messages: 73
Localisation: Lyon (FRANCE)
Répondre en citant
Posté le : 12/04/2005 00:47:36 Sujet du message :

L'idée est sympa mais je suis un peu sadique, je tiens à ce qu'il se reconnecte mort.
En fait, je traine un peu sur les forums de bioware et il me semble que la seule grosse solution de gestion persistante passe par la customisation du .ini afin de rebooter le module sur des sauvegardes auto.
_________________
Un cerveau... c'est fait pour agir.
La pensée n'est là que pour rendre plus efficace l'action
.

H. Laborit

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 12/04/2005 08:42:53 Sujet du message :

C'est pas possible de téléporter un PJ mort même en bidouillant, il faut le téléporter avant de le tuer.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lisan Anthelus
Chevalier
Inscrit le: 31 Mai 2004
Messages: 73
Localisation: Lyon (FRANCE)
Répondre en citant
Posté le : 12/04/2005 19:17:33 Sujet du message :


Mars a écrit :
C'est pas possible de téléporter un PJ mort même en bidouillant, il faut le téléporter avant de le tuer.
oui je sais, c'est pour cela justement que j'expose mon problème Wink
_________________
Un cerveau... c'est fait pour agir.
La pensée n'est là que pour rendre plus efficace l'action
.

H. Laborit

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 13/04/2005 00:51:25 Sujet du message :

Tu le téléporte et tu le tue ensuite, il aura pas le temps de faire quoique se soit.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lisan Anthelus
Chevalier
Inscrit le: 31 Mai 2004
Messages: 73
Localisation: Lyon (FRANCE)
Répondre en citant
Posté le : 14/04/2005 01:40:46 Sujet du message :


Mars a écrit :
Tu le téléporte et tu le tue ensuite, il aura pas le temps de faire quoique se soit.
Nom de dieu, tu le fais exprès ou quoi ? Very Happy
Puisque j'ai déjà expliqué que j'arrive à le téléporter avant de le tuer MAIS que cela implique un "DelayCommand". Relis bien mon premier post, il y a deux questions en une seule.
Primo, y-a-il un moyen de détecter la fin d'évenement d'un JumpToLocation.
Secundo, existe-t-il un moyen de téléporter un PJ mort.

N'ayant pu réussir ni l'un, ni l'autre, je me doute bien que de prime abord, on ne peut pas.
Cependant, je pose quand même la question, au cas où quelqu'un aurait trouvé un moyen.
En d'autres termes, mes questions concernent d'éventuels scripteurs qui auraient réussi.

PS: Personnellement, je le trouve un peu trop basique le scripting nwn (comparé au scripting unreal par exemple), ca limite pas mal les possibilités et ca force un peu trop le bidouillage. A croire qu'Aurora est un produit loin d'être fini !
_________________
Un cerveau... c'est fait pour agir.
La pensée n'est là que pour rendre plus efficace l'action
.

H. Laborit

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 14/04/2005 11:09:33 Sujet du message :


Lisan Anthelus a écrit :
Secundo, existe-t-il un moyen de téléporter un PJ mort.
Pas a ma connaissance...


Lisan Anthelus a écrit :
PS: Personnellement, je le trouve un peu trop basique le scripting nwn (comparé au scripting unreal par exemple), ca limite pas mal les possibilités et ca force un peu trop le bidouillage. A croire qu'Aurora est un produit loin d'être fini !
Sa se compare pas, c'est pas le même style de jeu, déjà UT à moins d'évenement a gérer niveau script (ta pas plein de sort des dons etc), aussi UT c'est assez bidouille quand tu doit chercher les fichiers liers ^^.
A par ça c'est claire il a ces limites on fait avec ce qu'on a...
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 23.939ms