[système]DiaSe v2.0

Répondre
Partager Rechercher
Pour ce qui avait suivis il y a quelques temps j'avais sortis un système, le SelIt, qui permetait de passer en revue l'inventaire d'une cible pour afficher son contenu dans un dialogue en rendant chaques items séléctionnable (en listant éventuellement les items par leurs tags et/ou leurs types)

ce système était d'une grande utilité pour l'artisanat entre autres, pour séléctionner la matière première a utiliser pour la confection d'un item, mais aussi pour quelques autres trucs interessant, comme la gestion de l'inventaire d'un npc, ou l'achats/vente d'items avec possibilité de personnalisation du prix en fonction du charsime et n'importe quel autre facteur.

Seulement voila, le système était telement génial (nanananan je ne suis pas un vantard, pas DU TOUT !!! ^^) qu'en l'utilisant je me suis rapidement retrouvé limité par le principe même du système : on ne peut lister que des items, pourquoi pas autre chose >_<

j'ai donc repris le système a la base pour permettre d'y lister n'importe quoi.

On aboutis donc a un système permettant la selection de dialogues personnalisés et entièrement customisable par script, et dynamiquement s'il vous plait !!! ^^

des exemple de l'utilisation:
- Selection par dialogue d'un pj membre du groupe
- Selection par dialogye d'un type de créature, d'un type d'item, etc... (en gros la selection de n'importe quel élément d'un champ d'un fichier .2da grace a notre toute nouvelle Get2DAString
- Le selit est bien sur toujours inclus, donc selection d'items d'un inventaire par dialogues
- Le selnum, un autre système compris, permet de selectionner un nombre par dialogue, en entrant succéssivement chaques décimales du nombre voulus. C'est quand même plus pratique qu'un parttern... ^^

Bon, les applications de ce trucs sont bien plus nombreuses, ce n'est qu'un petit exemple.

c'est donc dispo ICI :
http://www.le4eage.com/download/DiaSe v2.0 Alpha.zip

Pour ceux qui veulent en savoir un peu plus, voici le readme:

Citation :
DiaSe, version Alpha 2.0
Créé par Azrael07 pour le module Le 4e Age
http://4age.role-expert.com

---------------
Présentation:
---------------

Le système DiaSe permet de créer des dialogues sans passer par l'éditeur de dialogues et en permettant une personalisation facile des réponces possible.
Par exemple, le système DiaSe peut être utilisé pour lister dans des entrées séléctionnable par un joueur le contenu d'un inventaire, ou encore permettre la selection d'une classe ou race sans devoir entrer chacuns des noms manuellement dans l'éditeur de dialogues

-------------
Historique:
-------------


Historique:

Version 2.0, le 9 aout 2003:

- Passage du système SelIt (Selection d'item par dialogues) au système DiaSe, qui permet une selection de n'importe quel élément et pas uniquement des items.
- Renom des fonctions en conséquence
- Adaptation du SelIt au nouveau système

version 1.2, le 24/04/2003 :

- Ajout du paramettre sMessage à la fonction StartItemListing, permettant de personnaliser le message d'invite du dialogue
- Supression des paramètres de relancement automatique de dialogues
- Ajout d'une fonction de lancement automatique d'un script à la terminaison de la selection d'items


version 1.1, le 22/04/2003 :

- Renommement de tout les fichiers de scripts et du fichier de dialogue, à des fins de clareté
- Ajout des paramètres oPC, oSpeaker et sConversation à la fonction StartItemListing
- Ajout du paramètre oTarget à la fonction StartItemListing, permettant de passer en revue l'inventaire d'un objet autre que le joueur.


version 1.0, le 13/03/2003 :

- Mise en place du système


---------------
Installation:
---------------

1) Importer le fichier "DiaSevalpha20.erf" dans votre module (commande fichier->importer)
2) Il suffit d'ajouter la ligne de code:
#include "diase_lib"
à chacuns des scripts utilisants le DiaSe


---------------
Utilisation:
---------------


*** Le système DiaSe ***

* Initialisation des entrées de la selection par dialogue:

Dans un premier temp pour lancer une selection, vous devez initialiser les entrées.
Pour cela on utilise la fonction:

void DiaSe_AddEnterToSelection(sCaption, oPC);
sCaption représente le texte à entrer, oPC représente le joueur conserné par le dialogue

Le nombre d'entrées possible est illimité, si les entrées dépassent la disaine, le système les répartira automatiquement sur plusieurs pages


* Lancement de la selection par dialogue:

une fois toutes vos entrées initialisées, vous pouvez lancer la séléction par dialogue grace à la fonction

DiaSe_StartDialogSelection(sScript, oPC, oSpeaker, sMessage);
- sScript est le script qui sera automatiquement lancé à la fin de la selection par dialogue
- oPC est le joueur conserné par la séléction
- oSpeaker est l'interlocuteur du joueur au moment de la séléction (par défaut le joueur lui même)
- sMessage est le message d'invite de la séléction (par defaut le message "Entrez votre choix:" )

La conversation sera alors automatiquement lancée, une fois celle-çi terminée le script indiqué en sScript sera automatiquement lancé


* Récupéré la séléction

la fonction
DiaSe_GetSelection();
renvoie le numero de la selection choisie (la première entrée de la liste à pour numero le 1, la onzième le 11, etc...), qui vous permettra de retrouver les informations choisies par l'utilisateur.

NOTE: en cas de selection "retour" du joueur pendant la selection, le script sScript sera également lancé, et la valeur renvoyée par DiaSe_GetSelection sera 0. Veillez donc à prendre en compte la possibilité de retour.

ATTENTIOn: l'utilisation de la fonction DiaSe_GetSelection détruit les dernières variables locales propres à la séléction par dialogue. Vous ne pouvez donc appeler cette fonction qu'une seule fois, après quoi elle ne renvera qu'une valeur invalide.



*** Le SelIt ***

Le SelIt est un système dérivé du DiaSe qui permet de lancer un dialogue permetant d'afficher et de séléctionner les items de l'inventaire d'un objet quelconque.


* Lancement du dialogue de selection:

Lorsque la selection doit avoir lieux, lancer la fonction StartItemListing();
qui provoquera l'apparition du dialogue de selection.

SelIt_StartItemListing(sScript, sListing, oPC, oTarget, sMessage = "Choisissez un objet", sFalseMessage = "Vous n'avez aucun item qui correspond à la sélection requise", string sNoItemMessage = "Vous n'avez aucun item dans votre inventaire")
- sScript est le nom du fichier script lancé automatiquement à la fin de la selection d'item
- sListing permet un listing des items selectionnés, par type d'item ou par tag (voir ci-dessous pour plus de détails). ("" par défaut)
- oPC est le joueur conserné par la selection d'item. (OBJECT_INVALID selectionnera automatiquement le joueur raporté par l'appel de la fonction "GetPCSpeaker") (OBJECT_INVALID par défaut)
- oTarget est l'objet dont l'inventaire sera listé par la selection d'item (OBJECT_INVALID selectionnera automatiquement le joueur entré dans le paramètre "oPC") (OBJECT_INVALID par défaut)
- sMessage définit le message d'invite qui sera affiché lors de la selection d'items ("Choisissez un objet" par défaut)
- sFalseMessage définit le message d'invite qui sera affiché lors de la selection d'items si le listing définit dans sListing ne permet l'affichage d'aucun objet de l'inventaire de la cible (si une chaine vide est entrée, le message sMessage sera affiché à la place) ("Vous n'avez aucun item qui correspond à la sélection requise" par défaut)
- sNoItemMessage définit le message d'invite qui sera affiché lors de la selection d'items si la cible ne possède aucun item dans son inventaire (si une chaine vide est entrée, le message sFalseMessage sera affiché à la place) ("Vous n'avez aucun item dans votre inventaire" par défaut)

* Fin du dialogue de selection:

La fin de se dialogue(par selection d'un item ou par annulation) executera le script de nom indiqué par le paramètre "sScript" lors de l'appel de la fonction StartItemListing.

La récupération de l'item séléctionné se fait par la fonction
GetItemSelected();
NOTE : Si aucun item n'a été séléctionné, la fonction renverra un objet invalide

ATTENTION : la fonction GetItemSelected ne peut être appelée que dans le script lancé automatiquement après la selection d'items, après quoi elle est inutilisable.


* Conseil dans la création du fichier script lancé à la fin de la selection :

ce script doit être utilisé principalement dans le but de mettre en variable fixe l'entrée séléctonné, et éventuellement de relancer une conversation après cela.
Voir le fichier "test_selit_disp" dans le module de test pour un exemple précit d'utilisation de ce script


* Lister les items séléctionnables:

La fonction StartItemListing admet un argument, sListing, qui à pour effet de lister les items apparaissants dans le menu de selection.

- Listing par type d'item:

La première partie de la chaine permet de lister les objets par les constantes "BASE_ITEM_TYPE_*"
Comparez les type d'items que vous voulez afficher à la liste présenté dans l'annexe (les numeros utilisés correspondent à la valeur de la constante présentée dans le fichier nwscripts.nss).
Ces numeros devront alors être placés les uns à la suite des autres, sans aucuns autre caractères autres, et devront prendre impérativement deux caractères (pour les nombres de 0 à 9 n'en necessitant qu'un, ajouter un 0 devant le nombre)


ex: si vous ne voulez afficher que les épées courtes, votre chaine prendra pour valeur "00" (BASE_ITEM_SHORTSWORD = 0)

si vous voulez afficher les épées courtes et les épées longues, votre chaine prendre pour valeur "0001" (BASE_ITEM_LONGSWORD = 1)

- Listing par tag:

Après avoir procédé au listing par items, vous pouvez lister les objets par tags.
Il suffit pour cela de mettre la partie du tag qui doit être trouvé dans l'item pour que celui ci soit affiché entre le caractère ":"
ex: pour afficher tout les items ayant _WEAPON_ dans leurs tag, la chaine aura pour valeur ":_WEAPON_:"

plusieurs listing sont possibles de cette facon
ex: ":_WEAPON_:_ARMOR_:" est valide


bien sur, ces deux systèmes sont cumulatifs, par exemple pour afficher toutes les armures, et tout les objets de tag "_WEAPON_", la valeur sera: "16:_WEAPON_:"


-----------
Contacts:
-----------

mail: Azrael07.free.fr
Aim: AzraelAnarazel
icq: 201229362
msn: AzraelAnarzael@hotmail.com
irc: #4eage@nwinter.servegame.com
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés