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 01/11/2024 01:13:33
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 |
fld46 Voyageur Messages: 2 |
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 :
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; } 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 | |
Semcatala Grand Sage du Conseil Messages: 951 |
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 | |
fld46 Voyageur Messages: 2 |
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 | |
Semcatala Grand Sage du Conseil Messages: 951 |
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 .... ! 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 | |
PinMaster Ecuyer Messages: 49 Localisation: Non loin de Marseille... |
Semcatala a écrit : bon , ben utilise des variables locales permanentes " GetCampaignInt " , et pas les temporaires comme " GetLocalInt ". Jamais vu de phrase pareil .
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 | |
Semcatala Grand Sage du Conseil Messages: 951 |
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 | |
PinMaster Ecuyer Messages: 49 Localisation: Non loin de Marseille... |
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 _________________ Module en développement : Pandorn Nouvel Age Système de Pandorn diffusé : Cliquez-ici |
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