nwdup :readme: est-il clair?

Répondre
Partager Rechercher
Quitte à mettre nwdup à jour, je me suis dit que j'allais rafraichir le readme aussi.
Il y aura un petit readme avec les infos de bases (donne une idée de ce que ça fait et comment l'utiliser). Dites moi si c'est clair (ah oui c'est une version optimiste):


Ce programme n'a pas d'autre version que pour Windows
Ce système est entièrement compatible avec les tlks custom de Bioware, ils peuvent être utilisés dans le même module au même moment. Il permet en plus de changer les entrées de dialog.tlk, et d'utiliser un tlk custom par hackpack. Ces derniers peuvent être utilisés dans les 2da, les scripts (il y a un truc, voir la démo), mais pas directement dans les blueprints du toolset.
Ce programme ne modifie aucun fichier de votre installation de NWN, pas même dialog.tlk.



////////////////////////
// INSTALLATION

Si l'installateur a été utilisé pour créer une archive autoextractible, il suffit de double cliquer dessus et de suivre les instructions, ce qui installera tout le contenu, et nwdup.exe si nécessaire. Le lien créé sur le bureau permettra de se connecter au serveur NWN ou de lancer NWN pour le module fourni.

Dans le cas ou il ne s'agit pas d'un lien de connexion à un serveur, il faudra ensuite lancer le module (ou l'une de ses parties sauvegardées) normalement dans NWN, que ce soit en SP ou MP, dans le cas du MP l'archive fournie sera probablement différente s'il s'agit de jouer en client ou serveur/client (module, voir plus bas).
NB: la démo est de ce type, double cliquez nwdupdemoF.exe, et continuez comme indiqué ci-dessus.



////////////////////////
// INSTALLATION MANUELLE ET UTILISATION DE LA GUI (interface graphique utilisateur):

Si vous avez une seule installation de NWN sur votre ordinateur, nwdup.exe peut aller n'importe où, dans le cas contraire, mettez le dans un sous répertoire immédiat de votre installation (par exemple \utils).
Lancez le programme une première fois. Ceci créera un répertoire \Dup sous votre installation de NWN. Mettez y les fichiers .yae et .dup pour le module.
Les autres fichiers vont dans les répertoires habituels de NWN. (Ceci est vrai des tlk depuis la version 1.33 de NWN 1.2.1 de ce programme).

Appuyez sur le bouton "scanner" dans l'interface de nwdup, le module que vous venez d'ajouter apparaîtra dans la liste. Sélectionnez le et lancez l'option qui convient (toolset, lancer NWN mode DM ou non)
Dans le cas ou vous souhaitez vous connecter à un serveur, cliquez sur "connexion directe" puis entrez l'IP ou DNS (éventuellement locale), le port et le mot de passe. Attention l'option DM de la première fenêtre est prise en compte. Vous pouvez sauvegarder ces informations dans vos favoris.

IMPORTANT: A chaque fois que voulez lancer un module, une partie sauvegardée ou vous connecter à un serveur utilisant ce type de tlk spéciaux, vous devez lancer NWN avec nwdup.exe. Rien de grave n'arrivera si vous ne le faîtes pas, mais le texte manquera. Lancer une partie sauvegardée est, du point de vue de nwdup, exactement la même chose que de lancer le module original, ce n'est qu'une fois dans NWN que vous aurez à choisir votre sauvegarde et non le module original.

CAS PARTICULIER: connexion par Gamespy ou par l'interface LAN de NWN. Si vous ne fournissez pas l'IP ou DNS du serveur à nwdup.exe, celui ci sera incapable de savoir quels fichiers tlks sont associés au module. Dans ce cas le concepteur devra donc vous avoir fourni une version très réduite (20ko) du module ou ces informations seront précisées. Il vous suffira alors d'utiliser nwdup comme si vous vouliez jouer en SP (cf plus haut), et une fois dans NWN de choisir le serveur par l'interface habituelle.


Pour l'instant il n'y a aucun support pour lancer un serveur seul en le redirigeant vers d’autres tlk. Il me semble que cela aurait peu d'intérêt. Je suppose que quelqu'un qui fait tourner un serveur autonome ne verra pas d'inconvénient à remplacer ses fichiers .tlk. Vous pouvez "installer" nwdup pour votre serveur en le mettant dans le répertoire \utils par exemple. L'option "Créer les fichiers uniquement" vous permettra de créer les fichiers nécessaire: les hackpacks ainsi que dup.tlk/dupF.tlk. Remplacez dialog.tlk et dialogF.tlk par dup.tlk et dupF.tlk, après avoir sauvegardé ces deux fichiers. Votre serveur est près à tourner, avec le texte ajouté.
Ben au moins tu sais ce qu'il devrait dire ...
Merci.
__________________
Citation :
The specified object is a mutex object that was not released by the thread that owned the mutex object before the owning thread terminated. Ownership of the mutex object is granted to the calling thread, and the mutex is set to nonsignaled.
Microsoft, Win32 API documentation
You don't say? I'm owned.
Citation :
Provient du message de Archamedes_Fr
mmm pour moi oui... Mais comme je l'utilise je ne suis peut-être pas le mieux placé pour répondre
+1
Le readme est très clair, mais comme ça fait déjà un moment que j’utilise le dup...
A propos, qqun a t il des info sur le custom.tlk de HoTU ?
http://ccg.dladventures.com/index.php/TalkTables
Après tout Georg lui-même cite mon truc comme référence, alors je vois pas pourquoi je ferais la fine bouche ( dommage qu'il y ait pas d'emoticon "tête qui enfle")
Par rapport au dup, gros avantages: c'est simple et propre ; et a priori on pourra utiliser les StrRef dans les blueprints du toolset, mais j'en suis pas certain et bien que Georg ait relu et complété mon truc il ne s'est pas engagé sur ce terrain.
Petits moins : un seul tlk, on peut pas modifier les chaînes de Dialog.tlk.

Sinon l'update est prête, il me manque juste le nom de la clé tlk dans nwn.ini (si elle existe)... et la possibilité de pouvoir la tester, j'enrage.

EDIT: "site"
pendant que j'y suis voilà de petits scripts conçus pour la démo de la prochaine version de nwup. Il permettent de récupérer les StrRefs, tlks par tlks, que ce soit pour dialog.tlk, le tlk custom façon Bioware, ou les tlks façon dup:
le module On load sur lequel repose le système:
Code:
//::///////////////////////////////////////////////
//:: Name Module Onload
//:: FileName : pp_m6.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Retrieve the base effective RefRef for each of the tlks, and store them as LocalInt on the module
    relies on the inclusion of a 2da in each of the .dup files (dup_test51.2da in test51.dup, etc)
    those 2da files are just this:
________________________________________
2DA V2.0

    CustStrRef_0
0   !0
________________________________________

    that's it...

*/
//:://////////////////////////////////////////////
//:: Created By: Le Proctophantasmiste
//:: Created On:
//:://////////////////////////////////////////////
void main()
{
     SetLocalInt(OBJECT_SELF, "StrRef0_1", StringToInt(Get2DAString("dup_test51","CustStrRef_0",0)));
     SetLocalInt(OBJECT_SELF, "StrRef0_2", StringToInt(Get2DAString("dup_test52","CustStrRef_0",0)));
     SetLocalInt(OBJECT_SELF, "StrRef0_3", StringToInt(Get2DAString("dup_test53","CustStrRef_0",0)));
     SetLocalInt(OBJECT_SELF, "StrRef0_4", StringToInt(Get2DAString("dup_test54","CustStrRef_0",0)));
     SetLocalInt(OBJECT_SELF, "StrRef0_5", StringToInt(Get2DAString("dup_test55","CustStrRef_0",0)));
}
Comme expliqué dans les commentaires il faut mettre un 2da dans chacun des .dup dont la seule fonction sera de récupérer l'index effectif de la première StrRef du tlk.

le fichier include pour récupérer les StrRefs:
Code:
//::///////////////////////////////////////////////
//:: Name pp_i_dup.nss
//:: FileName :
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*   Minimal include to handle RelRefs and new Bioware tlk system
     You should probably add wrapper functions for SpeakStringByStrRef, etc  .


*/
//:://////////////////////////////////////////////
//:: Created By: Le Proctophantasmiste
//:: Created On:
//:://////////////////////////////////////////////

const int TLK_BIOCUST = -1;
const int TLK_DIALOG = 0;
const int TLK_TEST51 = 1;
const int TLK_TEST52 = 2;
const int TLK_TEST53 = 3;
const int TLK_TEST54 = 4;
const int TLK_TEST55 = 5;

// from a RelRef and a tlk ID returns the corresponding effective StrRef.
// 0 for dialog.tlk, -1 for the Bioware custom tlk.
int RelRef(int nRelRef, int nTlk = 0 )
{
    switch(nTlk)
    {
        case TLK_DIALOG:
            break;
        case TLK_BIOCUST:
            nRelRef += 0x1000000;
            break;
        default:
            nRelRef += GetLocalInt(GetModule(), "StrRef0_" + IntToString(nTlk) );
    }
    return  nRelRef;
}
et pour l'exemple les patterns qui permettent de récupérer les StrRefs dans la démo:

OnSpawn:
Code:
//::///////////////////////////////////////////////
//:: On Spawn In
//:: pp_c_skilltest_9.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Determines the course of action to be taken
    after having just been spawned in
    patterns:
        testing skill rank
        leveling up (or down)
        retriveing custom StringRefs
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 25, 2001
//:://////////////////////////////////////////////
//#include "NW_O2_CONINCLUDE"
//#include "NW_I0_GENERIC"

void main()
{
    // skill rank: <skill> To see the number of ranks you have in <skill>: 
    SetListenPattern(OBJECT_SELF, "skill rank:*w*n", 10); 
    // level: <level> to gain/lose enough xp to be at the beginning of that level:
    SetListenPattern(OBJECT_SELF, "level:*w*n", 11);
    // StrRef: <tlk>, <RelRef> to say the StrRef:
    SetListenPattern(OBJECT_SELF, "StrRef:*w*n,*w*n", 12); 
    // StrRef: <tlk>, <RelRef> to say the StrRef, for "négative tlk":
    SetListenPattern(OBJECT_SELF, "StrRef:*w-*n,*w*n", 13); 
    SetListening(OBJECT_SELF, TRUE);


}
On Conversation:
Code:
//::///////////////////////////////////////////////
//:: Name On conversation
//:: FileName : pp_c_skilltest_4.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Determines the course of action to be taken after dialogue or a
    shout is initiated.
    patterns:
        testing skill rank
        leveling up (or down)
        retriveing custom StringRefs

*/
//:://////////////////////////////////////////////
//:: Created By: Le Proctophantasmiste
//:: Created On:
//:://////////////////////////////////////////////

//#include "NW_I0_GENERIC"
#include "pp_i_dup"

void main()
{
    int nMatch = GetListenPatternNumber();
    object oShouter = GetLastSpeaker();
    object oIntruder;
    int nParam;
    int nLevel;

    if (nMatch == -1 && GetCommandable(OBJECT_SELF))
    {
        ClearAllActions();
        BeginConversation();
    }
    switch(nMatch)
    {
        case 10:
            nParam = StringToInt(GetMatchedSubstring(2));
            nParam = GetSkillRank(nParam, oShouter);
            SendMessageToPC(oShouter, IntToString(nParam));
        break;
        case 11:
            nParam =  StringToInt(GetMatchedSubstring(2));
            if((nParam < 21)&&(nParam > 0))
            {
                nParam =  500 * (nParam - 1) * nParam;
                SetXP(oShouter, nParam);
            }
        break;
        case 12:
            // Get the tlk id:
            nParam = StringToInt(GetMatchedSubstring(2));
            /* indicate where the StrRef is from */
            switch(nParam)
            {
                case TLK_DIALOG:
                    SendMessageToPC(oShouter,"From dialog.tlk:");
                    break;
                case TLK_TEST51:
                    SendMessageToPC(oShouter,"From test51.tlk:");
                    break;
                case TLK_TEST52:
                    SendMessageToPC(oShouter,"From test52.tlk:");
                    break;
                case TLK_TEST53:
                    SendMessageToPC(oShouter,"From test53.tlk:");
                    break;
                case TLK_TEST54:
                    SendMessageToPC(oShouter,"From test54.tlk:");
                    break;
                case TLK_TEST55:
                    SendMessageToPC(oShouter,"From test55.tlk:");
                    break;
                default:
                    SendMessageToPC(oShouter,"From dialog.tlk (the tlk you asked for doesn't exist):");
            }
            // Get the effective StrRef from the tlk id and RelRef:
            nParam = RelRef(StringToInt(GetMatchedSubstring(5)), nParam);
            // speak it:
            AssignCommand(oShouter, SpeakStringByStrRef(nParam));
        break;
        case 13:
            // Get the tlk id, the "-" is in the the pattern (pp_c_skilltest_4.nss):
            nParam = -StringToInt(GetMatchedSubstring(3)); 
            switch(nParam)
            {
                case TLK_BIOCUST:
                    SendMessageToPC(oShouter,"From Bioware Custom tlk:");
                    break;
                default:
                    SendMessageToPC(oShouter,"From dialog.tlk (the tlk you asked for doesn't exist):");
            }
            // Get the effective StrRef from the tlk id and RelRef:
            nParam = RelRef(StringToInt(GetMatchedSubstring(6)), nParam);
            // speak it:
            AssignCommand(oShouter, SpeakStringByStrRef(nParam));
       //break;
    }
}
EDIT: oups...
J'ai mis ça là:
http://www.proctophantasmist.cjb.net/
Bio n'a pas prévu d'alias pour les tlks dans nwn.ini, donc ils devront aller dans \tlk.
Une possibilité cachée du programme, uniquement pour les lecteurs de Maskado: j'avais déjà inclus le code pour lire nwn.ini, résultat si vous rajoutez une clé
"TLK =<chemin>"
au fichier, nwdup l'utilisera pour trouver les tlks. Evidemment ça ne marchera pas pour les tlk bioware, donc ça sert à rien .
J'ai recompilé, je n'étais pas très sur de ne pas m'être planté quelque part dans mes paramètres de langage (ie Anglais/Français). J'ai profité de l'occasion pour réduire la taille des exe. Non que c'était véritablement nécessaire, m'enfin pour le principe...
Mon installateur est maintenant plus petit que celui de Bioware (nwcontinst.exe), na! - et en toute objectivité il est mieux .
EDIT: j'ai remplacé les fichiers en téléchargement
"Englais": les paramètres je sais pas, mais les langages eux-mêmes je commence à les mélanger sérieusement
Nouvelle version 2.1.1 :
http://mapage.noos.fr/le_proctophant...d/nwdup.fr.exe
Il s'agit de l'exe uniquement, je ferais une archive plus tard. J'ai compressé l'exe (UPX) résultat il est plus petit qu'un bon nombre de "Hello World" . Mais parfois cela crée des problèmes, enfin là ça à l'air de marcher. Ecrasez simplement l'ancienne version de nwdup avec celle là et ça marchera très bien (vous n'êtes même pas obligés de renommer le fichier en fait, supprimez simplement l'ancien).

Ce qu'il y a de nouveau:
J’ai modifié un peu le parser de fichier .yae.
Il est dorénavant possible de spécifier un son et une durée pour une StrRef:
Code:
DLG ENTRY = 60000
	DLG STRING = "
		Bogus 60000 \n
		M"
	DLGF STRING = "
		Bogus 60000 \n
		F"
	SOUND RESREF = vs_naribetf_414
PlaySoundByStrRef(60000) fera entendre vs_naribetf_414.waw

Note:
Code:
DLG ENTRY = 60000
	DLG STRING = "
		Bogus 60000 \n
		M"
	DLGF STRING = "
		Bogus 60000 \n
		F"
	SOUND RESREF = vs_naribetf_414
	SOUND DURATION = 0.0
est absolument équivalent


Code:
DLG ENTRY = 59998
	DLG STRING = "
		Bogus 59998 \n
		M"
	DLGF STRING = "
		Bogus 59998 \n
		F"
	SOUND RESREF = al_pl_combat1
	SOUND DURATION = 4.0
devrait jouer al_pl_combat1.waw pendant 4 secondes... sauf que cela ne marche pas. Je ne crois pas que ce soit de la faute du programme, l'entrée créée dans le tlk est correcte, c'est juste qu'il y a des finesses avec les sons et que j'ai pas vraiment cherché à comprendre.

Ah ouais maintenant quand on double clique sur un module ça lance NWN automatiquement. Une amélioration MAJEURE. Si, si, vraiment...
Répondre

Connectés sur ce fil

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