La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/06/2024 03:40:39


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
fld46
Voyageur
Inscrit le: 05 Juin 2005
Messages: 2
Répondre en citant
Posté le : 05/06/2005 16:12:32 Sujet du message : PB de script de verif

Salut

mon pb est le suivant :

Je stock une variable dans un objet qui est sur le PJ, jusque la, pas de pb, mais j'aimerai qu'il ne puisse plus refaire cette quette, et pour ca, l'option dans un dialogue ne doit pas apparaitre.

Je dois verifier le contenu de ma variable qui est sur l'objet du joueur!

voila, cela est constitué de deux script : testbookpers :
NWScript :
int Vquest (object oPC, string sQuete);
int Vquest (object oPC, string sQuete)
{
object oBD = GetItemPossessedBy(oPC, "journalpersonnnel");
int Tquest = GetLocalInt(oBD, sQuete);
return Tquest;

}
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.


et bien sur, le script de verif qui est placé au bon endroit :
NWScript :
#include "testbookpers"

int StartingConditional()
{
int bReponse = TRUE;
if ( Vquest(GetPCSpeaker(), "ADMILIO") == 1) bReponse = FALSE;

return bReponse;

}
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.


Malgrés tout cela, cela ne fonctionne pas!

Pourriez vous me dire les erreurs et si possible, me dire comment les corrigées.

Merci d'avance:)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 05/06/2005 18:51:05 Sujet du message :

Pourquoi tu ne stoke tu pas directement l'info sur le joueur plutôt que sur l'objet ?

Un petit TRUE mémorisé sous le nom de ta quête pour avoir une trace comme quoi la quête a été faite puis le tour est joué !

Et si tu veux que ça soit mémorisé au moment ou le joueur entre en possesion d'un objet précis , déclenche un script au moment ou le joueur entre en possesion de cet objet.

Quand a tes scripts , j'avoue que je ne les comprends pas mais bon.....!
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
fld46
Voyageur
Inscrit le: 05 Juin 2005
Messages: 2
Répondre en citant
Posté le : 05/06/2005 20:41:55 Sujet du message :

Je sais bien, mais je fait cela dans un but precis : que la quete soi persistante ( meme apres reboot du serveur ou plantage, et sans BDD)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 05/06/2005 22:16:07 Sujet du message :

bon , ben utilise des variables locales permanentes " GetCampaignInt " , et pas les temporaires comme " GetLocalInt ".

Comme ça les résultats seront conservées même aprés un reboot !

moi je fais ça pour mémoriser l'xp , l'or et la mort , et ça marche super !

Comme ça , même aprés un plantage du serveur , si les pj ont pas eu le temps de déco , l'xp , l'or et la mort sont sauvegardées et rendues au retour du pj si jamais il a eu des pertes a cause du plantage.

Mais bon , si tu vx pas utiliser la database ..... faudra remplir l'inventaire des pj de tas de trucs .... ! Sad Mais bon , c'est un choix ....
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PinMaster
Ecuyer
Inscrit le: 30 Sep 2004
Messages: 49
Localisation: Non loin de Marseille...
Répondre en citant
Posté le : 06/06/2005 16:35:56 Sujet du message :


Semcatala a écrit :
bon , ben utilise des variables locales permanentes " GetCampaignInt " , et pas les temporaires comme " GetLocalInt ".
Jamais vu de phrase pareil Very Happy.
Tu confond un peu tout je pense. "GetCampaign..." n'est pas une variable locale.
"GetLocal..." n'est pas tout à fait une variable temporaire. Si cette dernière est utilisé sur le PJ, elle n'est pas persistante donc perte après reboot. Si elle est utilisé sur un item de l'inventaire du PJ elle devient persistante. Ce procédé est à utiliser pour stockké certaines infos du PJ (comme l'état d'avancement des quetes...) et il est bien plus rapide d'accès que le "GetCampaign" qui lui récupère les infos sur le Disque Dur au lieu de le faire en RAM comme le "GetLocal".
L'utilisation de variables sur un Item évite d'avoir une multitude d'item pour chaque truc. Cela demande quand même une certaines cohérence dans le nom des variables pour éviter certain soucis.


@fld46 :
A première vu, ton script semble correcte même si je m'y serais pris autrement.
Je te conseilles de vérifier la casse et les noms exacts de toutes tes variables surtout le tag de ton item et le nom de ta quête.
Vérifie aussi que tu n'oublies pas de donner la valeur "1" à ta quête une fois finie. Au passage vérifie bien que c'est la bonne valeur que tu tests et que tu donnes.
_________________
Module en développement : Pandorn Nouvel Age
Système de Pandorn diffusé : Cliquez-ici
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 06/06/2005 17:42:57 Sujet du message :

PinMaster> Bon ... déja avant dire prétendre que je confonds tout et de dire que mes phrases ne veulent rien dire , essaye d'être un peu cohérent et de ne pas dire n'importe quoi , ce sera un bon début.

Par exemple , tu dis :

" GetLocal..." n'est pas tout à fait une variable temporaire. Si cette dernière est utilisé sur le PJ, elle n'est pas persistante donc perte après reboot. "

Donc tu nous dis qu'elle n'est pas temporaire mais en même temps tu nous explique que cette variable est perdue aprés un reboot et qy'elle n'est pas persistante non plus.
Si elle n'est ni temporaire ni persistante , cette variable elle est quoi ?! Faudrais choisir.

Une variable sauvegardée LOCALEMENT ( par exemple sur un perso ) qui est perdue au bout de X secondes ( par exemple aprés un reboot ) est une info temporaire.

Une variable qui est sauvegardée LOCALEMENT ( par exemple sur un perso ) et récupérable aprés un reboot est une variable PERMANENTE.

Mais bon , on n'a peut être pas le même dictionnaire pour la definition des mots ...

Quand au temps d'accés a la ram et au disque dur , excuse moi d'être aussi abrupte , mais force m'est d'avouer qu'on n'en a rien a carrer du temps d'accés.
Pour le joueur c'est completement transparent. mémoriser une info en 0,1 seconde ou en 0,001 seconde , ça changera pas la face du monde et en principe on ne passe pas notre temps a lire et enregistrer des données.

Quand a la solution d'utiliser des items spécifiques dans l'inventaire d'un joueur pour mémoriser des trucs c'est possible , mais contraignant pour lui. Là encore c'est un choix.
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PinMaster
Ecuyer
Inscrit le: 30 Sep 2004
Messages: 49
Localisation: Non loin de Marseille...
Répondre en citant
Posté le : 06/06/2005 22:55:24 Sujet du message :

Arf, prend pas la mouche...
Je manque parfois de tacte, donc toutes mes excuses.

-> Variable temporaire : variable dont la durée de vie est étroitement lié au temps dans 90% des cas. Les 10 autre % sont des cas où l'ont détruit la variable lorsque l'on en a plus besoin. Ce type de variable sous NWN est utilisé pour réinitialiser le contenu d'un coffre par exemple et il est souvent associé à un "DeleteLocal".

GetLocal et GetCampaign sont des procédures de stockkage une de manière locale sur un objet et l'autre de manière externe à l' "application". Depuis une certaine MaJ de NWN, il est possible de garder permanent des données locales au travers du fichier de sauvegarde du PJ mais celà ne s'applique que sur les items d'un inventaire.

Côté performance, c'était un exemple très grossier. Car les deux procédures sont bien différentes. GetLocal/SetLocal se contentent de lire et d'écrire des variables directement sur l'objet existant. GetCampaign/SetCampaign lisent et écrivent des variables dans un ensemble de fichier suivant un certain protocole, la base de données dédié Bioware (perso je préfère une vrai base de données. MySQL est bien plus rapide). Maintenant pour s'en rendre compte, il suffit de voir le comportement d'un petit BBS... parfois on doit attendre quelques secondes (5sec max quand la BD est pleine) pour le voir s'afficher.

Pour son cas, je pense que sont obtique est la meilleure car il n'aura pas de soucis à faire des tests d'identité et diverse vérification. Là l'item est au PJ et doit être indroptable par mesure de sécurité. Seul chose à faire gaf est le nom des variables.

Maintenant chacun son point de vue et son interprétation.
La mienne est la suivante pour NWN :
-> Variable temporaire : défini ci-dessus
-> Variable local : variable existante tant qu'il n'y a pas reboot, plantage, arrêt. Une variable local peut être une variable temporaire dans ce cas elle sera lié au temps ou à une procédure de destruction (aucun lien avec un reboot/plantage/arrêt même si le résultat semble être le même). elle est stocké sur un objet hors item d'un inventaire (donc PJ, placeable,...).
-> Variable persistente : variable existente quoiqu'il arrive sauf cas spécifique. elle peut être stocké dans une base de données (bioware, mysql) ou bien sur un item de l'inventaire d'un PJ. Pour ce qui est des cas spécifiques, on utilise une procédure de destruction. Il faut savoir une chose c'est que pour la BD de bioware, la suppression de la dite variable ne ce fait pas réellement et donc faud user de subtilité (ce qui peut être long en terme de durée de suppression). Alors que sur l'item, c'est simple comme bonjour. Et sur une BD MySQL, idem pour ceux qui connaissent le SQL. Maintenant, on ne peut pas tout faire avec une persistence sur item mais on peut l'utiliser en paralèlle des deux autres pour gagné en performance.

Là on c'est éloigné du sujet principal Very Happy
_________________
Module en développement : Pandorn Nouvel Age
Système de Pandorn diffusé : Cliquez-ici
 
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 25.834ms