Feat déclenchant un script instantanemant.

Répondre
Partager Rechercher
Dans nwn on avait une petit colonne très pratique RequAction qui permettait de déclencher un script instantanément des que l'on cliquait dessus dans la barre de racourci. De plus le script n'était pas sujet à la regle 1 action par round. J'ai realisé quelques modification qui permette de realiser ceci pour nwn2.

Tout d'abord pour que cela fonctionne le don doit avoir isActive à 1
et ToggleMode à 11.

Hotbar.xml
hotbar.xml
characterscreen.xml
characterscreen.xml

gui_war_on_drop_feat.nss

Code PHP:

void main(string sFeat)
{
    
SetLocalGUIVariable(OBJECT_SELF,"SCREEN_HOTBAR",5,sFeat);



gui_war_update_hotbar.nss

Code PHP:

void mainstring sLastReceived,string sLastDrop)
{
    if ( 
sLastReceived == "-1")
        return;
    
SetLocalInt(OBJECT_SELF"nShortcut" sLastReceivedStringToInt(sLastDrop));


gui_war_click_hotbar.nss
Code PHP:

void main(string sButton)
{
    
int nFeat GetLocalInt(OBJECT_SELF,"nShortcut" sButton);
    
//string sFile=  <le nom d'un fichier 2DA contenant 2 colonne 1 le numero de feat et l'autre le nom du script à executer>
    //ExecuteScript(Get2DAString(sFile,"SCRIPT",nFeat),OBJECT_SELF);

Pour ceux qui n'aurraient pas compris l'utilité de l'engin cela permet de creer son propre systeme de jeux pour nwn2.
Fichiers attachés
characterscreen.txt (57,2 Ko, 51 affichages)
hotbar.txt (3,1 Ko, 53 affichages)
Nouvelle version
Cette version permet de déplacer les boutton sur la barre de raccourci sans perdre les informations :

Et n'oubliez pas de mettre Toggle mode à 11

Hotbar.xml
hotbar.xml
characterscreen.xml
characterscreen.xml

gui_war_on_drop_feat.nss
Code PHP:

                            void main(string sFeat)
{
    
SetLocalGUIVariable(OBJECT_SELF,"SCREEN_HOTBAR",5,sFeat);



gui_war_update_hotbar.nss

Code PHP:

void mainstring sLastReceived,string sLastDrop)
{
SetLocalInt(OBJECT_SELF"nShortcut" sLastReceivedStringToInt(sLastDrop));

gui_war_click_hotbar.nss
Code PHP:

void main(string sButton)
{
    
int nFeat GetLocalInt(OBJECT_SELF,"nShortcut" sButton);
    
//string sFile=  <le nom d'un fichier 2DA contenant 2 colonne 1 le numero de feat et l'autre le nom du script à executer>
    //ExecuteScript(Get2DAString(sFile,"SCRIPT",nFeat),OBJECT_SELF);

gui_war_clear_hotbar.nss
Code PHP:

void main()
{
    
SetLocalGUIVariable(OBJECT_SELF,"SCREEN_HOTBAR",5,"0");

gui_war_drop_hotbar.nss
Code PHP:

void main(string sButton)
{
    
int nFeat GetLocalInt(OBJECT_SELF,"nShortcut" sButton);
    
SetLocalInt(OBJECT_SELF,"nShortcut" sButton,0);
    
SetLocalGUIVariable(OBJECT_SELF,"SCREEN_HOTBAR",5,IntToString(nFeat));


De rien, et si tu veux que ton feat puisse cibler quelque chose rajoute dans le onleftclick de hotbar.xml

UIObject_Input_ActionTargetScript("sValidTargetTypes",nValidCursor,nInvalidCursor,nSpellTargetIndex,bUseHostile,"sScriptName", script parameter list...
j'en ai pas besoin pour l'instant mais il se peut que je vois ça plus tard.
En plus ce qui est bien c'est que l'on peut remplacer sValidTargetTypes, nvalidCUrsor, etc.. par local:x, une variable et non pas forcement un texte en dur.

Tu peux meme faire des boutons de "concentration" à la Dragon ball Z, en mettant repeatcallback à true. Le joueur garde le bouton "appuyé" et une barre à l'écran se remplit.
Bon, problème : je suis un novice ( ça vous n'y pouvez rien) et je ne comprends pas comment utiliser ce système. Pour l'instant j'ai créé un "feat" ( ce qui m'a déjà pris une plombe car j'utilisais des lignes réservées par MoTB visiblement), j'ai mis les deux fichiers ( hotbar.xml et characterscreen.xml) dans le dossier override ( de mes documents) et j'ai créé un fichier .2DA ( dans le dossier override) nommé "SkillTest" que j'ai référencé dans le script gui_war_click_hotbar.nss comme "SkillTest.2DA". Dans ce fichier j'ai fait une colonne "FEAT" avec le FEATID et une colonne "SCRIPT" avec le nom du script "sk_run" en l'occurence ( pour dire qu'il n'y a pas de ".nss").



Merci d'avance
Le fichier 2DA dans le script gui_war_click_hotbar.nss il faut l'écrire sans l'extension. (.2DA)
Exemple :
Code PHP:

string sFile="test"


Renome le fichier suivant en test.2DA
test.txt

J'ai créée un feat FEAT_POWER_ATTACK à la ligne 129 de mon fichier feat.2DA. A la ligne 129 du fichier test.2DA ci dessus j'ai ajouté le label(facultatif) et à droite le nom du script.

Il te suffit d'aggrandir ton fichier test.2DA selon tes besoin à l'aide de tlkedit par exemple. Si tu a créée un don à la ligne 1169 de ton fichir feat.2DA et bien il faut que tu ais la ligne equivalente dans ton fichier test.2DA

ENfin ça me fait plaisir que quelqun fasse un module ou le guerrier peut faire des choix tactique lors des combat, plutot que d'attentre que le mage, druide, pretre s'en occupe. A pardon c'est vrai dans d&d la tactique c'est commen eviter les combat (ironique).
J'en profite pour signaler un petit problème : si je prends le "Feat" avec un personnage secondaire et que je le mets dans mon barre de raccourci, le script sera lancé ( et donc s'appliquera) sur le personnage principal. De plus, une fois que c'est fait, tous les autres raccourcis lancent le script également.

Je n'ai pas besoin de la correction dans l'immédiat mais si jamais t'as le temps de revoir ça, je suis preneur .
Répondre

Connectés sur ce fil

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