Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Pour un monde persistant, question.

Par Dja le 13/10/2002 à 2:11:03 (#2325930)

Bonjour à tous,

J'ai fait un petit module que j'essai d'agrandir tant bien que mal, et pour une plus grande cohérence je voulais que certaine quete ou action que le Pj ai fait soit irrevocable et q'uil ne puisse refaire des quetes ou autres. Donc j'utilise des variables propres au pj mais voilà le problème c'est que lors d'un reboot du module celle ci sont supprimées. Alors le pj peut refaire ce qu'il a fait precedement... :o(

Alors voilà je voulais savoir si vous connaissiez un moyen de les sauvegarder ?

Une autre question :

J'ai aussi cru voir quelques part que les variables propres à un objet etait limité, est ce vrai ?
Et si oui, a combien ceux limites t-elle ?

Voilà si vous pouvais m'éclairer ce serais vraiment un plaisir.

Par Tyn' le 13/10/2002 à 3:14:11 (#2326052)

Pour la sauvegarde des variables, je te conseille PWUM couplé avec mon gestionnaire de flags.

PWUM : http://nwvault.ign.com/Files/other/data/1027036112510.shtml
Gestionnaire de flags : http://forums.jeuxonline.info/showthread.php?s=&threadid=120150

Et en prime gratuite exclusive : le parser web PHP pour PWUM !<?php
//:://////////////////////////////////////////////
//:: Scanneur de log PHP pour Neverwinter Nights
//:: pwum.php
//:://////////////////////////////////////////////
/*
Ce script décrit les variables enregistrées
par le système PWUM sur une page web.
*/
//:: Créé par : Tynril
//:: Créé le : 01/10/2002
//:://////////////////////////////////////////////

//Vous devez ici entrer l'adresse WEB ou FTP de vos logs serveurs.
//Ceux-ci doivent donc évidemment être partagés sur Internet!
//Vous pouvez néanmoins les proteger via HTACCESS,
//mais vous devrez alors ajouter votre nom d'utilisateur et
//mot de passe dans l'adresse (http://username:pass@www.monadresse.com/meslogs.txt)
$NeverWinterNightsLogsPath = "http://www.monsite.com/nwn/meslogs.txt";

function DrawHeader($title){
echo "\n";
echo " \n";
echo " $title\n";
echo " \n";
echo " \n";
}

function DrawFooter(){
echo "\n \n";
echo ";
}

function DrawTitle($title){
echo "\n$title";
}

function DrawSourceHeader(){
echo "\n//::///////////////////////////////////////////////\n
//:: Variables préenregistrées PWUM\n
//:: pwum.nss\n
//:: Copyright (c) Althea 2002\n
//:://////////////////////////////////////////////\n
/*\n
Ce script a été généré par le parser PWUM-Web\n
programmé par Tynril.\n
*/\n
//:://////////////////////////////////////////////\n
//:: Créé par : PWUM-Web Parser\n
//:: Créé le : ";
echo date("d/m/Y à H:i:s");
echo "\n
//:://////////////////////////////////////////////\n
#include \"inc_alt_generic\"\n
\n
void main()\n
{\n
object oUMArea;\n
vector vUMVector;\n
location lUMLoc;\n\n";
}

function DrawSourceFooter(){
echo "}";
}

DrawHeader("Parser PHP pour PWUM");
DrawTitle("Code source généré");
DrawSourceHeader();

$fp = fopen($NeverWinterNightsLogsPath,"r");

$Result = ";

while(!feof($fp)){
$line = fgets($fp,4096);
if(ereg(",$line))
{
//Cette ligne contient une valeur PWUM
//On efface la date et le sigle PWUM
$temp = ";
for($i = 0;$i < 4; $i++){
$temp = ";
for($j = 0; $j < strpos($line," ") + 1; $j++){
$temp .= $line[$j];
}
$line = str_replace($temp,",$line);
}
$line = str_replace(",",$line);



//On récupère le type de variable
$type = ";
for($i = 0;$i < strpos($line,"#");$i++){
$type .= $line[$i];
$line[$i] = ";
}
$line[$i] = ";

//On récupère son nom
$name = ";
for($i = 0;$i < strpos($line,"#");$i++){
$name .= $line[$i];
$line[$i] = ";
}
$line[$i] = ";

//On récupère sa valeur
$value = ";
for($i = 0;$i < strpos($line,"#");$i++){
$value .= $line[$i];
$line[$i] = ";
}
$line[$i] = ";

//On recupere son expiration
$expire = ";
for($i = 0;$i < strpos($line,"#");$i++){
$expire .= $line[$i];
$line[$i] = ";
}
$line[$i] = ";

//On recupere son Token
$token = ";
for($i = 0;$i < strpos($line,"#");$i++){
$token .= $line[$i];
$line[$i] = ";
}
$line[$i] = ";

//On recupere son extend
$extend = ";
for($i = 0;$i < strpos($line,"#");$i++){
$extend .= $line[$i];
$line[$i] = ";
}
$line[$i] = ";

//echo $line;
//On test si la variable a déjà été enregistrée
if($type == "INT"){
if($VarTable[$name] != "){
$OldCodeLine = "SetPWUMInt(\".$name."\",".$VarTable[$name].",".$expire.",".$token.",".$extend.");";
}
$CodeLine = " SetPWUMInt(\".$name."\",".$value.",".$expire.",".$token.",".$extend.");";
}elseif($type == "STR"){
if($VarTable[$name] != "){
$OldCodeLine = "SetPWUMString(\".$name."\",\".$VarTable[$name]."\",".$expire.",".$token.",".$extend.");";
}
$CodeLine = " SetPWUMString(\".$name."\",\".$value."\",".$expire.",".$token.",".$extend.");";
}elseif($type == "FLT"){
if($VarTable[$name] != "){
$OldCodeLine = "SetPWUMFloat(\".$name."\",".$VarTable[$name].",".$expire.",".$token.",".$extend.");";
}
$CodeLine = " SetPWUMFloat(\".$name."\",".$value.",".$expire.",".$token.",".$extend.");";
}elseif($type == "LOC"){
if($VarTable[$name] != "){
$OldCodeLine = "SetPWUMInt(\".$name."\",".$VarTable[$name].",".$expire.",".$token.",".$extend.");";
}
$CodeLine = "SetPWUMInt(\".$name."\",".$value.",".$expire.",".$token.",".$extend.");";
}

if($VarTable[$name] != "){
$Result = str_replace($OldCodeLine,$CodeLine,$Result);
$VarTable[$name] = $value;
}else{
$Result .= $CodeLine.";
$VarTable[$name] = $value;
}
}
}
echo $Result;
DrawSourceFooter();
DrawFooter();
?>

Par Dja le 13/10/2002 à 3:51:14 (#2326139)

Merci pour l'interet que tu me porte, c'est sympa ;)

Pas contre tu me balance ca, j'ai essayé le test present avec le pwu mais il enregistre pas la variables, mais ca viens certainement de moi.

En plus le readme et en Anglais et c'est pas trop mon pot ;)

Pourrais tu m'expliquer le fonctionnement s'il te plait ?

Par Tyn' le 13/10/2002 à 4:33:45 (#2326189)

En gros, tu dois importer les différents ERF du système PWUM, coller mon script (celui des flags) dans un fichier genre "inc_flags" que tu inclueras (#include "inc_flags") dans chaque script où tu as besoin d'enregistrer/lire une variable liée à un joueur, et pour ça tu utiliseras les fonctions SetFlagInt, SetFlagFloat, SetFlagString et SetFlagLocation, ou encore GetFlagInt, GetFlagFloat, GetFlagString ou GetFlagLocation.

Une fois ton module lancé, les variables sont stockées dans le log de ton serveur (c:\neverwinternights\nwn\logs.0\nwserverLogs.txt par défaut). Quand le serveur plante, tu ouvres à l'aide du parser PWUM fourni avec (le EXE) ton fichier de logs, et lui te pond un fichier pwum.nss, que tu ouvres avec le bloc-note, et copie/colle dans l'ancien script pwum de ton module.

Et hop :p

Piou....

Par Dja le 13/10/2002 à 4:37:36 (#2326193)

Je crois avoir compris. Merci

Allez J'vais tester ca.

Par Dja le 13/10/2002 à 6:43:03 (#2326296)

Apparamanet il y a quelque chose que je ne saisit pas.

Je fais :

1 - importer tout les fichier Pwum , ca c'est ok
2 - je fais un pnj test qui assigne 1 la variable TEST:


#include "inc_flags"

void main()
{
object oPlayer = (GetPCSpeaker());
string sFlag = ("TEST");
int nValue = (1);
SetFlagInt(oPlayer,sFlag,nValue);
}


Que je met sur un dialogue dans l'action consequente.

3 - Je deco, et j'arrete le serveur.

et la quand j'ouvre le fichier nwclientLog1.txt il y a rien d'ecrit dedans c'est normal ?

Apres ce que j'ai compris c'est que si je veut recuperer mes variables antérieur, il faut executer le fichier exe dans le meme reperoire que nwclientLog1.txt il me fait un fichier puwm.nss.
Je prend ce fichier et je le remplace dans le temp0.

Enfin bon ca reste encore assez flou, si vous pouviez m'eclairir plus précisement ce serait gentil, sinon bin tant pis pour moi.

Par Tyn' le 13/10/2002 à 15:07:21 (#2327910)

Ce n'est pas nwclientLog1.txt, mais nwserverLog1.txt dans le dossier logs.0 ;)

Par Dja le 13/10/2002 à 16:27:35 (#2328367)

Bonjour à toi *a mal dormi avec cette histoire ;)*

Donc nwserverLog1.txt il y a bien quelque chose dedans, mais qd j'utilise le nwn_pw_log_parser.exe il me cré un fichier nommé
Parse, mais voilà ce qu'il contient :

ERROR: Could not find log file to parse: nwclientlog1.txt

Voilà pourquoi je l'utilisé avec nwclientlog1.txt.

Donc je suis toujours bloqué ;)

Par Tyn' le 13/10/2002 à 16:46:28 (#2328453)

:doute:

Etonnant. Ca doit être une particularité du nouveau parser... J'essaye, je répond après.

Edit : Ok, c'est un nouveau parser sous DOS/Linux.

1° Tu dois mettre le programme nwn_pw_log_parser.exe dans le répertoire logs.0.
2° Tu peux ensuite executer le parsing par deux façon :
--> Créer un racourcit dans le même répertoire qui pointe vers le logiciel nwn_pw_log_parser.exe nwserverLog1.txt
--> Y accéder via la console (cmd dans Executer) et le lancer avec le nom de ton fichier de log comme argument.

JOL Archives 1.0.1
@ JOL / JeuxOnLine