La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 18:32:39


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 16/08/2004 18:21:40 Sujet du message : personnaliser les montées de nivaux des henchmens

Bonjour, je me demandais comment pourrait-on faire pour qu'un henchman évolue selon la volonté du module builder (pas le joueur, mais le créateur du module, en l'occurence, moi!)

Ex : Jean : guerrier niv 1
quand il monte de niveau, je voudrais qu'il prennent 1 niv de paladin, en choisissant la compétence x et y, et le don z, et un point en dextérité...
Comment pourrais je faire cela????

merci de vos réponses!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Jaheira 007
Seigneur
Inscrit le: 24 Juin 2004
Messages: 223
Répondre en citant
Posté le : 16/08/2004 21:54:11 Sujet du message :

Ca c'est pour moi! J'ai déjà 4 henchen dans mon module qui évoluent du niveau 1 à 10 ( pour l'instant ).

Je t'explique l'astuce.
1) D'abord tu a crée ton pnj "Jean", admettons que son TAG est "Jean", son ResRef est "jean001", donc c'est un guerrier niv1 tout ce qui a de plus banal.

Ensuite pour ce pnj, il faut faire un dialogue avec la possibilité de lui demander de changer de niveau. C'est simple, on va dire qu'il peut passer au niv2 à condition que le pj soit de niv2 minimum. Jusque la je ne t'apprends rien encore.

2) Maintenant que ton pnj est fini, fait ceci: dans la palette des créatures pesonnalisé, fait un clique droit sur "Jean" et fait un "Editer et copier". Dans l'onglet classe tu laisse son niv1 de guerrier et tu lui met 1 niveau de paladin pour sa seconde classe. Ensuite tu lui attribut ses nouvelles compétences, dons, pv ect. Quant tu auras finis, ton nouveau pnj aura toujours le TAG "Jean" mais par contre il aura un nouveau ResRef: "jean002".

3) Retourne dans le dialogue de ton "jean001" à la ligne où il est sensé évoluer. Et met le script suivant dans "condition d'execution":

NWScript :
void ActionCreate(string sCreature, location lLoc)
{
    CreateObject(OBJECT_TYPE_CREATURE, sCreature, lLoc);
}
void main()
{
  object oCreature = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
  if (GetIsObjectValid(oCreature) == TRUE && GetDistanceToObject(oCreature) < 10.0)
  {
    effect eMind = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);
    string sCreature = "jean002";
    location lLoc = GetLocation(OBJECT_SELF);
    DelayCommand(0.3, ActionCreate(sCreature, lLoc));
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMind, GetLocation(OBJECT_SELF));
    SetPlotFlag(OBJECT_SELF, FALSE);
    DestroyObject(OBJECT_SELF, 0.5);
  }
}
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.


Voila! Le "jean001" ( guerrier niv1 ) disparait dans un cercle de lumière pour laisser la place à "jean002" ( guerrier niv1/paladin niv1).

En fait, il faut créer une créature par niveau. Et aprés tu fait ce que tu veux, tu peux lui changer son équipement aussi!

Ah dernier truc: pour ne pas m'embrouiller j'ai crée un dialogue pour chaque niv du henchmen, un script de levelup pour chaque niv également.
Donc dans mon cas, mon perso evolue du niv1 à 10, j'ai 10 dialogue différents et 10 script levelup aussi.

J'ai terminé, j'espère que j'ai été assez claire. Sinon si tu as d'autres questions à ce sujet n'ésite pas. Ou encore si tu veux une démo je peux te passer des .erf de mes henchmen ou alors un module de test.

PS: Pour le script, je l'ai volé! A l'origine c'est le script qui spawn un guerrier squelette quant on s'approche d'un tas de crane dans la campagne NWN.
_________________
La nature reprendra ses droits ici, aprés notre passage.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 17/08/2004 11:24:04 Sujet du message :

Merci pour ta réponse et oui je vois ce que tu veux dire, c'est le système des henchmen de la version originale (sans les add-ons)

Dans HoTU, les henchmen montent de niveau automatiquement, et il y a des fichiers spéciaux qui leur dictent comment monter de niveau, un peu comme les package que tu peux choisir à la création de ton perso. Le problème c'est que ces packages sont plutot limités, et ne sont personnalisables.

Cepepdant pour ton script, j'ai pensé qu'au lieu d'une conversation, pourquoi ne pas le mettre dans les OnLevelUp de ton module?
Ex :
1- test si le perso qui vient de monter de niveau est un PJ
2- si oui, lancer ton script

Comme ca plus besoin de parler à ton henchman pour lui dire d'augmenter de niveau...
Je pourrais utiliser aussi un truc comme ca remarque, par contre il faut que je rajoute un bout de script qui récupère le contenu de l'inventaire de jean001 pour le transmettre à jean002... Very Happy, et puis il faut dire à jean002 de rejoindre ton groupe une fois qu'il est créé aussi...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Jaheira 007
Seigneur
Inscrit le: 24 Juin 2004
Messages: 223
Répondre en citant
Posté le : 18/08/2004 18:05:10 Sujet du message :

Hum ne peut-on pas insérer quelques lignes dans ce script pour que la nouvelle créature rejoigne le groupe juste aprés avoir été crée?
Si oui j'aimerai bien savoir comment faire.

Un truc en passant: tu peux remplacer l'effet VFX_FNF_SUMMON_UNDEAD par celui ci: VFX_FNF_STRIKE_HOLY, c'est beaucoup plus estétique.
_________________
La nature reprendra ses droits ici, aprés notre passage.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
SiDi_Revolucion
Ecuyer
Inscrit le: 18 Aoû 2004
Messages: 48
Localisation: Mince, un trou de mémoire! C'est bien en Espagne la Bretagne?
Répondre en citant
Posté le : 19/08/2004 08:54:14 Sujet du message :

Hum, c'est très intéressant tout ca!!

Tu sais pour l'inventaire de jen, si c'est un compagnon d'arme comme dans lacampagne officielle, fais lui un équipement non modifiable par les PJ, et améliore le un peu à chaque niveau.
_________________
SiDi_Revolucion
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 19/08/2004 10:02:40 Sujet du message :


Jaheira 007 a écrit :
Hum ne peut-on pas insérer quelques lignes dans ce script pour que la nouvelle créature rejoigne le groupe juste aprés avoir été crée?
AddToParty(oHench, oPartyLeader);
(à toi de remplacer oHench et oPartyLeader par ce qu'il faut Wink )

sinon, y'a aussi :
HireHenchman(oPJ);
avec, au début du script, un :
#include "x0_i0_henchman"
Very Happy
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 19/08/2004 18:59:06 Sujet du message :

Ben moi j'aimerais bien pouvoir accéder à l'inventaire de mes henchmen... Déjà que je peux pas les contrôler directement, si en plus je peux pas leur donner de bonnes armes... Confused

Finalement ce système (faire disparaître son ancien henchman et le remplacer par son alter-égo plus puissant), c'est bien parce qu'il n'existe pas de package de montée de niveau pour les classes de prestiges personnalisées : psionniste, etc...

Enfin je pourrais engager des psionniste dans mon groupe! Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 19/08/2004 20:59:43 Sujet du message :

Bon, voila voilà, mon script est fini, mais il marche pas!!! Agglll!!!!!!
Je le poste au cas où une bonne ame aurait le temps et l'amabilité de trouver l'erreur... Moi j'ai bien fait attention, normalement tout devrait marcher!

NWScript :

void creernouveauhench (object oHench)
{
//on cree le nouveau henchman
string sTemplate = GetLocalString (oHench, "nexthench");
location lLoc = GetLocation (oHench);
CreateObject (OBJECT_TYPE_CREATURE, sTemplate, lLoc, FALSE, "");
DestroyObject (oHench, 1.0);
}



//---------------------------- ------------------------------ --------------------
void transfertinventaire (object oHench, object oNextHench)
{
//on transfere les objets de l'ancien au nouveau
object oItem = GetFirstItemInInventory (oHench);
while (GetIsObjectValid(oItem) == TRUE)
    {
    ActionGiveItem(oItem, oNextHench);
    oItem = GetNextItemInInventory (oHench);
    }
}


//---------------------------- ------------------------------ --------------------
void main()
{
object oPC = GetPCLevellingUp ();
object oHench = GetFirstFactionMember (oPC, FALSE);
while (GetIsObjectValid(oHench) == TRUE)
    {
    if (GetIsPC (oHench) == FALSE)
      {
      creernouveauhench (oHench);
      object oNextHench = GetObjectByTag (GetLocalString (oHench, "nexthench"));
      transfertinventaire (oHench, oNextHench);
      oHench = GetNextFactionMember(oPC, FALSE);
      DelayCommand (1.5, AddHenchman (oPC, oNextHench));
      }
    }
}
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.


disons que j'ai nommmé ce script "henchman_lvlup",
j'ajoute cette ligne dans le OnPCLevelUp de mon module :
NWScript :
ExecuteScript ("henchman_lvlup", oPC);
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.


Ensuite j'ai mis sur mon henchman une variable "nexthench" contenant un string "henchman02", sachant que c'est le resref et le tag de sa version en plus fort... chais pas si vous avez tout suivi! lol

En bref, quand j'augmente de niveau, le script "henchman_lvlup" s'execute, il prend mon premier henchman, il cherche le resref de son alter-ego dans ses variables, puis le crée, puis copie tous les objets que portait l'ancien dans le nouveau, puis supprime l'ancien, puis ajoute le nouveau dans le groupe.
Comme j'ai plusieure henchmen, il va refaire la même opération jusqu'à ce qu'il n'y en ait plus!

Malheureusement ca marche pas, et j'ai un message d'erreur me disant qu'il y avait trop d'instructions ou je sais pas quoi!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 20/08/2004 07:58:07 Sujet du message :

Tu es sur que ton
object oHench = GetFirstFactionMember (oPC, FALSE);
renvoit les Henchmen???

Parce que je crois qu'il y a une fonction pour ça :
int nNth=1;
object oHench = GetHenchman(oPC, nNth);

avec int nNth=1 désignant le numéro du hench que tu veux,
c'est à dire 1, le premier hench engagé, 2 le second,
3 le troisieme etc...

Surprised
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 20/08/2004 11:14:51 Sujet du message :

Je connaissais pas cette fonction, par contre il y a pas de problème pour celle que j'ai utilisée, car je l'ai déjà fait pour d'autres scripts (un script d'auras pour augmenter la force de tout le groupe comme dans diablo2 Very Happy)...et ça marche, donc le problème ne vient pas de là...
Le message d'erreur qu'il me renvoie c'est ERREUR : TOO MANY INSTRUCTIONS (le jeu continue quand même)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 44.745ms