La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 22:20:59
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
nemesis_rebirth Voyageur Messages: 3 |
Salut a tous!
Je me demandais si il était possible de ce que le serveur se "souvienne" de l'endroit ou un joueur a déco, et que quand celui ci se reconnecte, pouf il se retrouve a l'endroit ou il a déconnecté. Je me demandais aussi si il était possible d'utiliser a cette fin la BDD qui a été implementé dans NWN Citation : http://www.heaven-ly.net/news.php?newsid=5 : avec la version 1.30 du client neverwinter, on a acces a une base de données (a la maniere de nwnx/aps sauf que la, le gros avantage est de pouvoir stocker des objets dans la bdd).
merci d'avance |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Le serveur se souvient des endroits depuis lesquels les personnages des joueurs se sont déconnectés. Cela est conservé tant que le module est "en ligne" et est conservé également dans la sauvegarde. Si tu n'arrêtes pas ton serveur ou si tu le redémarres à partir d'une sauvegarde, alors le dernier endroit où se trouvait le personnage d'un joueur sera utilisé pour sa reconnexion.
Si au contraire, tu redémarres ton module en mode "standard" et non depuis une sauvegarde, ces emplacements seront perdus. Sauvegarder soi-même, par script, l'emplacement de déconnexion et le restaurer est un problème en soi. Tout d'abord, il faut savoir que lorsqu'un personnage se déconnecte, il déclenche un évènement, mais l'objet représentant le personnage est déjà considéré comme n'étant plus présent sur le serveur, il est donc impossible de lire sa position pour la sauvegarder. De la même façon, si tu arrives à sauvegarder une telle position (par le truchement de diverses bidouilles), se posera le problème de la restitution. Tout personnage ne s'étant jamais connecté sur un module (tel que c'est le cas lors de son premier démarrage ou lors d'une reprise sans sauvegarde) se verra alors envoyé au "point de départ" (la StartLocation). Cette projection au point de départ est incontournable. Même si on force le personnage à se rendre à un nouvel emplacement, ce "déplacement" n'empêchera pas le chargement de la zone de départ avant de placer le personnage au point voulu (si c'est une autre zone, un nouveau chargement de zone est automatiquement déclenché). Je passe sur les détails de ce problème épineux qui peut probablement être résolu à gros coup de scripts massifs et bidouilleurs. Essaie de voir si le fonctionnement standard te convient avant tout. _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
nawer Chevalier Messages: 93 |
perso j'utilise une micro zone fermée pour faire arriver les pj.
je place un delaycommand à la fin du script de l'evennement onClientEnter pour aller chercher en base les dernières coordonnées correspondant à ce perso, puis je lui applique un JumpToLocation. détail : je me suis rendu compte que les fonctions Set/GetCampaignLocation ne sont pas très fiables, si tu rajoutes des zones à ton module, ça ne marche plus. Donc je stocke le tag de la zone où se trouve le pj, ainsi que son vecteur et là ça fonctionne même si je change complètement les zones (sauf leurs tags bien entendu) |
Revenir en haut | |
fredboisselier Acolyte Messages: 23 Localisation: lyon/france |
je cherche la meme chose , mais pour les point de vie.... z'auriez qqch sous la main?
pour la position et la gestion de la mort , j utilise une base mysql avec une save sur le OHB, je sauve aussi les point de vie, mais bon, pas top, si le joueur deco avec 1 pv, il reviens avec les pv qu il avait la min d'avant...une sauvegarde des PV sur le onclientleave me permettrais de freiner certains joueurs profitant de cette faille... Pourquoi une base mysql ? je me suis apercu que les setcampaign ne resistent pas toujours a un reboot... enfin rarement dans mon cas, comme je suis en train de builder un mod... |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bonjour a vous, je cherche le meme genre de chose.
mon module n'est pas en persistant, mais j'aimerais faire une save des pv's des pj a la deco, car si deco reco, il retrouvent tous leurs pv, et comme on est pas toujours la pour les surveiller, je voudrais eviter cet abus. donc un script sur le onClientLeave et un sur le onClientEnter pour recharger ses pv serait ideal, mais si apres reboot ça ne fonctionne pas, c'est sans importance ! voilà, je suis sur que c'est pas si compliqué, mais je sais pas vraiment comment m'y prendre..merci d'avance pour vos propositions. _________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
Persistant ou pas, rien n'empêche d'utiliser les fonctions de campagne pour ce genre de truc non ??
Je peux ptet me planter mais bon... Sinon bah : Sur le OnClientExit : NWScript :
string sMaCampagne = "Module " + GetModuleName(); object oPC = GetExitingObject(); location lPClocation = GetLocation(oPC); SetCampaignLocation(sMaCampagne, "sPClocation", lPClocation, oPC); Pis sur le OnClientEnter : NWScript :
string sMaCampagne = "Module " + GetModuleName(); object oPC = GetEnteringObject(); location oLocation = GetCampaignLocation(sMaCampagne, "sPClocation", oPC); AssignCommand(oPC, ActionJumpToLocation(oLocation)); Pis vala... _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
Athanagorn Acolyte Messages: 38 |
Tu te plantes. location lPClocation = GetLocation(oPC); ne marchera pas. Voir les nombreuses infos à ce sujet, y compris dans ce post.
|
Revenir en haut | |
Athanor salamander Légende vivante Messages: 306 Localisation: Ecole du Script |
Ok le getlocation ne marche pas.
Par contre le GetPosition marche sur un joueur. J'en suis certain. Donc plutot de chercher une location, décomposons la location, sauvons la en plusieurs morceau pis recompose tout ensuite. _________________ Atha, Artisan Scripteur. meet the most beautiful woman in the world |
Revenir en haut | |
Kétil Dimzad Ecuyer Messages: 62 Localisation: Fijj'Bool City |
Dans la biliotheque nwn xi_io_position ( c pas la bonne synthaxe dsl ) il y a 2 fonctions tres utile pour ça.
StringToLocation() et LocationToString() Donc, en récupérant la location avec GetLocation, puis en la passant en string, on peut la sauvegarder soit en BDD sous forme de string, soit sur un item no drop dans l'inventaire du PJ. Et pour le retrouver pas de prob, c la marche inverse à faire. Apres, pour le QUAND sauvegarder la position du PJ.... Ca peut etre fait au repos, dans le OnHeartBeat, avec un script récurcif, au choix du PJ via un dialogue..... Ya plusieurs méthodes |
Revenir en haut | |
Athanagorn Acolyte Messages: 38 |
TTT...
Le problème n'est pas avec le GetLocation, le problème est avec le OnClientExit. Au moment ou le OnClientExit est déclenché, le joueur est déjà sorti. Donc, sa position est invalide. C'est expliqué dans le second post de ce sujet. Il y a une explication dans le lexicon sur comment contourner le problème. |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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