JeuxOnLineForumsPlusConnectés : 858 (sites) | 1378 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [BD Bioware] Sauvegarde de Location d'un PJ RSS
   
Répondre
Partager Outils Rechercher
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Post

[BD Bioware] Sauvegarde de Location d'un PJ

Voilà encore deux petites fonctions tirée du forum de la beta (Post original de Makabey) chargé de sauvegarder et récupérer la location d'un pj quand il déco avec une seule limitation, chaque Area doit avoir un tag unique.
Code PHP:
//use:
// SetCampaignString("DB_Name", "VarName", LocationToString(GetLocation(GetFirstPC())));
// location lLoc = StringToLocation(GetCampaignString("DB_Name", "VarName"));
string LocationToString(location lLocation)
  {
    
/*
       Composes a string from a Location.
       Used mainly to Save a player's position..
    */
    
object oArea GetAreaFromLocation(lLocation);
    
vector vPosition GetPositionFromLocation(lLocation);
    
float fAngle GetFacingFromLocation(lLocation);
    
float fTemp vPosition.100;
    
string sRetour;
    
sRetour GetTag(oArea) + "¤";
    
sRetour += IntToString(FloatToInt(vPosition.100)) + "¤";
    
sRetour += IntToString(FloatToInt(vPosition.100)) + "¤";
    
sRetour += IntToString(FloatToInt(vPosition.100)) + "¤";
    
sRetour += IntToString(FloatToInt(fAngle 100));
    return 
sRetour;
  }

location StringToLocation(string sLocation)
  {
   
/*
      Builds a location object from sLocation, if any part is invalid,
      returns de starting position of the module...
   */
   
int nPos 0;
   
object oArea;
   
vector vPosition;
   
float fAngle;
   
float fX;
   
float fY;
   
float fZ;
   
location lLocation;
   
string sTmp;
   
nPos FindSubString(sLocation"¤");
   if(
nPos == -1) return GetStartingLocation();
   
// Retrouver l'Area
   
sTmp GetSubString(sLocation0nPos);
   
oArea GetObjectByTag(sTmp);
   if(!
GetIsObjectValid(oArea)) {return GetStartingLocation();}
   
sTmp GetStringRight(sLocationGetStringLength(sLocation) - (nPos 1));
   
nPos FindSubString(sTmp"¤");
   if(
nPos == -1) return GetStartingLocation();
   
// Retrouver le 'X'
   
sLocation GetSubString(sTmp0nPos);
   
fX StringToFloat(sLocation) / 100;
   if(
fX 0.1) {return GetStartingLocation();}
   
sLocation GetStringRight(sTmpGetStringLength(sTmp) - (nPos 1));
   
nPos FindSubString(sLocation"¤");
   if(
nPos == -1) return GetStartingLocation();
   
// Retrouver le 'Y'
   
sTmp GetSubString(sLocation0nPos);
   
fY StringToFloat(sTmp) / 100;
   if(
fY 0.1) {return GetStartingLocation();}
   
sTmp GetStringRight(sLocationGetStringLength(sLocation) - (nPos 1));
   
nPos FindSubString(sTmp"¤");
   if(
nPos == -1) return GetStartingLocation();
   
// Retrouver le 'Z'
   
sLocation GetSubString(sTmp0nPos);
   
fZ StringToFloat(sLocation) / 100;
   if(
fZ 0.0) {fZ 0.0;}
   
sLocation GetStringRight(sTmpGetStringLength(sTmp) - (nPos 1));
   
fAngle StringToFloat(sLocation) / 100;
   if(
fAngle 360.0fAngle -= 360.0;
   
vPosition Vector(fXfYfZ);
   
lLocation Location(oAreavPositionfAngle);
   return 
lLocation;
  } 
Jaha Effect
Lien direct vers le message - Vieux
Avatar de Ormus
Ormus
Roi
 
Avatar de Ormus
 
Euh je vois pas l'intérêt de passer par une string, ça serait pas mieux avec plusieurs int ? (il n'y aurait pas tous ces calculs)
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
je suppose que c'est pour stocker 3 chiffre dans une seule position de la BDD, et que ca gere pas les arrays...
Lien direct vers le message - Vieux
Avatar de Iridian
Iridian
Roi
 
Avatar de Iridian
 
Question sans doute stupide :
Dans la prochaine version on pourra récupérer ce genre d'information à coup sur lors de la déconnection du joueur ?
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Non, il n'y a aucun intérêt à passer par une telle formule du point de vue stockage, puisque la DB permet de stocker des locations, dans un seul 'bloc' et sans problème....
Mais je pense que l'intérêt de la méthode de Jaha, c'est le contrôle de la validité et de l'existence de la location.... Je me trompe ?

En effet, je me souviens d'un post où l'on avait pu vérifier que faire un GetLocalLocation( object, "nom de location qui n'est pas enregistré), arrêtait l'exécution du script sans avertissement, ce qui peut-être dommageable....(un local string erroné ne renvoie qu'une chaîne vide)
Si c'est pas pour ça, je vois pas ?
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Je ne vois pas trop non plus
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Citation:
Provient du message de Jedaï
Mais je pense que l'intérêt de la méthode de Jaha, c'est le contrôle de la validité et de l'existence de la location.... Je me trompe ?

En effet, je me souviens d'un post où l'on avait pu vérifier que faire un GetLocalLocation( object, "nom de location qui n'est pas enregistré), arrêtait l'exécution du script sans avertissement, ce qui peut-être dommageable....(un local string erroné ne renvoie qu'une chaîne vide)
C'est exactement ça.

Jaha Effect
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Citation:
Provient du message de Iridian
Question sans doute stupide :
Dans la prochaine version on pourra récupérer ce genre d'information à coup sur lors de la déconnection du joueur ?
Cf. ce topic de Zunder

Apparemment il est possible de récupérer les variables à la sortie du joueur, à condition de faire une petite manip car GetName(oPJ) renvoie une chaîne vide sur le OnClientLeave.

Donc optimistes soyons, optimistes restons
Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Citation:
Provient du message de Taern
Apparemment il est possible de récupérer les variables à la sortie du joueur, à condition de faire une petite manip car GetName(oPJ) renvoie une chaîne vide sur le OnClientLeave.

Donc optimistes soyons, optimistes restons
Etrange, moi j'y ai vu aucune vrai solution dans ce post.

Jaha Effect
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
hannnn !!!

Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
Arf eM qui flood maintenant, on aura tout vu

Jaha Effect
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
On parle de la même chose au moins ?
La question est : comment est-il possible de récupérer des variables sur un PJ quittant le module.
La réponse, qui semble confirmée par Zunder, est d'utiliser un identifiant (assigné sur le PJ à l'entrée sur le module) sous forme de variable locale, identifiant qui sera utilisé à la place du nom du PJ (puisque GetName n'est pas utilisable sur cet event).

Pour moi, c'est une solution Que je n'ai pas testée personnellement certes, mais c'est une solution.
Lien direct vers le message - Vieux
Mercius
Roi
 
Oui, surtout que sur le onleave, le pj est un OBJECT_INVALID. Personnellement j'utilise nwnx 2 pour l'instant, et j'arrive très bien à sauvegarder sa location lors de sa deco, et à la récuperer lors de sa reco, après un reboot.
Lien direct vers le message - Vieux
Avatar de Zakyrel
Zakyrel
Roi
 
Avatar de Zakyrel
 
la seule restriction du system de Jaha est que les tag des zones doivent etre unique... mais moi je voit pas comment une zone pourrai avoir deux tag moi...
Lien direct vers le message - Vieux
Avatar de Elmo
Elmo
Alpha & Oméga
 
Avatar de Elmo
 
ptet qu'il voulait dire que deux zone peuvent pas avoir le meme tag...
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [BD Bioware] Sauvegarde de Location d'un PJ
   

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 19h02.
   

© 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