La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 21:22:22


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 22/01/2003 23:45:39 Sujet du message : [Bibliothèque]Customs tokens !

Voilà ce que j'ai à proposer :

Une bibliothèque de gestion des tokens, non des tokens dans l'inventaire, mais bien de ceux qu'on peut utiliser dans les dialogues pour obtenir le nom du PC par exemple. ( <FirstName>, <Sir/Madam>, etc...)

Les tokens proposés en standard par Bioware sont utiles mais un peu limité, surtout en français et surtout en grammaire française : il n'existe même pas de token permettant l'accord au féminin comme </e> !

Aussi Bioware a-t-il fourni un outil pour se créer ses propres tokens : les customs tokens, ils s'écrivent <CUSTOMn> (avec n un entier entre 1 et 99999 environ) et ont une valeur bien déterminée. Autrement dit, pour tout accord de genre ces tokens sont lourdement inadaptés puisqu'il faut pour les utiliser dans ce cas, créer un script qui change leur valeur en fonction du sexe du PC ET placer ce script dans toutes les conversations où on va utiliser ce token...

Tout cela devient franchement très lourd lorsqu'on doit gérer plusieurs tokens qu'on emploie fréquemment, d'autant plus que les tokens de Bioware souffrent d'une seconde limitation :
On ne peut pas les utiliser dans un script ! L'emploi des tokens (aussi bien standard que custom) est limité aux dialogues.
Alors d'accord un peu d'imagination permet de huiler les rouages et d'éviter d'avoir à personnaliser ses scripts en fonction du PC auquel on s'adresse (tâche la plupart du temps très lourde il faut bien l'avouer), mais n'est-il pas regrettable de se priver ainsi d'un monde ou les NPCs, soudain guéri de leur presbytie, s'adresse aux PCs selon leur apparence, leur réputation, leur sexe et leur race...
N'est-il pas regrettable que la plupart des taverniers elfes traitent les PCs nains comme des clients normaux alors qu'ils ne devraient leur adresser la parole que pour des injures pleines de fiel ?...

Pour pallier à tous ces inconvénients, je me propose de mettre à disposition ce que je considère comme l'aboutissement de mes efforts en ce domaine. C'est à dire une bibliothèque (inspirée par une idée fondatrice de Lendraste et par une fonction de Gloirin/Wololo) qui permet ce que je crois être la solution la plus souple et la plus puissante qui soit actuellement possible (tant que Bioware n'aura pas autorisé le dialog.tlk dans les haks, on ne trouvera pas mieux qui soit indépendant de la machine) : Une solution qui vous permet d'associer deux concepts intéressants, c'est à dire l'association d'un script à un type de token, et la personnalisation de ce type de token indépendamment du script. Je m'explique :

"<mf:cuisinier/cuisinière>", ce token est lié au script "tok_mf" qui renvoie 0 si la cible du token est masculine, 1 si elle est féminine. Ce script se présente ainsi :


Code :
#include "nwl_sti"

void main()
{
    object oTest = GetObjectTokTarget();
    int nChoice = -1;

    if (GetGender(oTest) == GENDER_FEMALE) nChoice = 1;
        else nChoice = 0;

    ReponseInt(nChoice);
}


Comme vous le voyez, ce script est totalement indépendant du contexte, sa mise en oeuvre est assuré par la bibliothèque centrale qui se chargera de le lancer automatiquement si le token est utilisé, de lui fournir les bonnes valeurs et de récolter le résultat, résultat qui sera utilisé pour obtenir un résultat final qui n'est pas explicité dans le script.
Ce script est bien évidemment l'un des plus utile : il permet d'utiliser des tokens comme : "<mf:/e>" (le fameux token d'accord dont je vous parlais) ou même :
"<mf:Viens te battre femmelette, on va voir ce que tu vaux !/Désolé m'dame, j'croyais qu'c'était quelqu'un d'autre [Il incline respectueusement son chapeau].>"

Ce concept est extensible à toute sorte de chose, en fait à tout ce que vous permet votre imagination : il vous suffit de rédiger une fois un script, vous n'êtes plus limité par une mise en place fastidieuse puisque c'est la bibliothèque qui s'en occupe à votre place.
Notez que ce token est utilisable aussi bien dans les scripts (ou il est possible de le "calculer" grâce à l'une des fonctions de la bibliothèque) que dans les dialogues. Pour ces derniers, une seule opération suffit à rendre le token disponible et dynamique :

Code :

AddCustomToken(666, "<mf:cuisinier/cuisinière>");



Suite à l'utilisation de cette fonction, ce token sera disponible sous l'appellation "<CUSTOM666>" dans tous les dialogues et ceci sans qu'il soit nécessaire de placer un quelconque script pour recalculer sa valeur : la bibliothèque s'en chargera toute seule !



Vous êtes encore là ?
Bon, si vous êtes intéressé ou désirez des précisions n'hésitez pas !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gorkk
Site Admin
Inscrit le: 12 Sep 2002
Messages: 1768
Localisation: Ici et ailleurs
Répondre en citant
Posté le : 23/01/2003 13:58:21 Sujet du message :

Je mets ce topic en persistant : c'est quelquechose d'incontournable que tu nous proposes là ! Cool




EDIT de Cassin : je le déstick parce qu'il commence à y avoir beaucoup de topics persistants sur ce forum, on ne s'y retrouve plus... J'ai mis un lien dans le topic "vos scripts" pour le retrouver Wink
_________________
Sacred - FR - La Bibliothèque de Neverwinter - Titan Quest - FR Cool
Bloqué dans SoU ? La solution n'est pas loin...
HotU vous pose des problèmes ? Une seule solution Wink
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 25/01/2003 13:56:36 Sujet du message :

Merci Embarassed

OK, je suis en phase finale, toute l'ancienne bibliothèque a été portée sous ce nouveau format, de plus quelques modifications ont été apportées : utilisation des accolades à la place des signes "<" et ">", ce qui permet d'utiliser facilement les tokens de couleur, intégration d'une partie "paramètre" dans les tokens, optimisation du code...

Pour ceux qui ne sauraient pas ce qu'est un token couleur, apprenez simplement qu'avec un simple token, et ceci est valable dans les scripts comme dans les dialogues, ils vont pouvoir changer la couleur de leur texte :
Code :

#include "nwl_tokcust"

void main()
{
    SpeakTokStr("{c(red:}Je dis ceci en rouge !");
    SpeakTokStr("{c(blue:}Et ceci en bleu !");
    SpeakTokStr("Et voici le drapeau {c(blue:}bleu{c(white:}-blanc-{c(red:}rouge {c(white:}!");
}

Ce script affichera :
Je dis ceci en rouge !
Et ceci en bleu !
Et voici le drapeau bleu-blanc-rouge !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 28/01/2003 00:00:03 Sujet du message :

Voilà, elle est disponible, manque un peu d'un tutoriel sur la création de script-token, mais c'est pas trop dur de toute façon. Je verrais à améliorer le tutorial quand j'aurais un peu de temps libre (tout de suite je suis un peu submergé... Sad ). L'utilisation est expliqué dans le readme.Smile

Vous la trouverez à ce lien.

En espérant que ça vous serve ! Razz
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 01/02/2003 14:12:32 Sujet du message :

Je rajoute que vous trouverez un exemple d'utilisation sur ce module de démonstration. Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Astrée
Acolyte
Inscrit le: 28 Jan 2003
Messages: 28
Répondre en citant
Posté le : 02/02/2003 11:49:38 Sujet du message :

Il doit être possible de créer un script qui définit le contenu d'un token, non ?

Est-il possible de redéfinir le contenu d'un custom token ?
_________________
Astrée
Les hommes, c'est pas des mecs bien Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 02/02/2003 16:53:09 Sujet du message :


Citation :
Il doit être possible de créer un script qui définit le contenu d'un token, non ?
Pour les tokens prédéfinis c'est impossible (pas la peine de chercher, moi-même j'ai mis longtemps à me persuader que Bioware avait oublié un truc pareil). Sad


Citation :
Est-il possible de redéfinir le contenu d'un custom token ?
Bien sûr, sinon quel intérêt ? A noter cependant qu'on ne peut absolument pas "accrocher" de script à un custom token sans ma bibliothèque : il faut le définir avant qu'il soit utilisé, dans un script quelconque. Sad

Ma bibliothèque est justement là pour combler à cette carence ! Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ronbond
Voyageur
Inscrit le: 01 Fév 2003
Messages: 2
Répondre en citant
Posté le : 02/02/2003 19:23:37 Sujet du message :

Bonjour,
Puisque ce sujet tourne autour des tokens je me permet de posser une question. Very Happy
Dites moi si je me trompe mais il n'y a pas de fonctions GetToken pour avoir sa valeur et pas de fonction DeleteToken pour le vider non? Surprised
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 02/02/2003 21:53:26 Sujet du message :

Non, on ne peut pas rappeller la valeur d'un token, pas en standard, mais si tu utilise pleinement ma bibliothèque, cela t'est possible. Very Happy

(De toute façon puisque c'est toi qui fixe la valeur du custom token il suffit de mémoriser cette valeur dans une variable locale en même temps)

Pour le DeleteToken(), c'est normalement inutile car un token prend assez peu de place en mémoire et on peut diminuer cette place en faisant : SetCustomToken(nNumToken, ""); après usage.

Dans ma bibliothèque par contre cette fonction prend un peu d'importance puisque les tokens dynamique prennent du temps pour être calculés (je pense que ce n'est sensible qu'à partir d'un très grand nombre, ma machine est très peu puissante et ça n'a jamais posé problème). Du coup j'ai introduit une fonction DeleteCustomToken(nNumToken, sValeurFinale) pour stopper le calcul d'un custom token dont on ne se sert plus. (Je répète que cette bibliothèque est très peu gourmande contrairement à des horreurs comme les HCR). Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Baldurien
L'homme qui chutait sur le macadam
Inscrit le: 12 Sep 2002
Messages: 14066
Localisation: Quadran Alpha
Répondre en citant
Posté le : 31/03/2003 09:50:52 Sujet du message :

Tiens, j'ai une question: avec ma vo, j'ai mis les fichiers tlk français, et l'éditeur de script me refuse (toujours) les accents. J'aimerai savoir si c'est normal car je suppose que pour utiliser une telle bibliothèque, les accents sont assez intéressant (ne serait-ce pour que pour écrire "Gwanaël" !! )
Bref?

Sinon pourrais-tu fournir une liste des méthodes (ou fonction) de ta bibliothèque ?

(pour un peu documenter ça surtout!)
_________________
#nwnights-fr @ irc.darkmyst.org TitanQuest-FR
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Jedaï
Chevalier
Inscrit le: 14 Nov 2002
Messages: 89
Localisation: Le Havre, ville pourrie
Répondre en citant
Posté le : 07/04/2003 20:29:50 Sujet du message :

Mmmm Ben toutes les fonctions sont documenté dans le script et je fournis un readme... Mais si tu insiste... Very Happy

Pour le problème des accents : même si l'éditeur de script ne semble pas les accepter, il n'as en fait rien contre un copier coller en comprenant, ce qui te permet de taper tes scripts à part et de les copier coller avec leurs accents. Smile

Néanmoins il y a plus simple : tu peux taper les accents dans la zone de "filtre" des fonctions en haut à droite de l'éditeur, il n'y a pas de problème, et tu peux ensuite les copier coller Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 31.593ms