La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 21:57:41
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Blackblood Chevalier Messages: 80 Localisation: France |
Bonjour,
Comme j'ai un peu de mal avec l'anglais et que j'essaie de comprendre ce que dit le Lexicon, j'ai besoin de votre aide pour choisir la bonne fonction. Je voudrais trouver la fonction qui retourne le tag d'un objet quelconque de l'inventaire. Je ne comprend pas comment est organisé l'inventaire, les objets qui sont ramassés ont-ils un numéro attribué ? attention je parle de l'inventaire et non des items équipés (slot). merci |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
[http]
Si tu veux l'inventaire n'est plus ni moins qu'une liste d'objets ordonnée par ordre d'arrivée. Tu peux pas savoir quel est le dernier objet (encore que, si on utilise la fonction GetNextItemInInventory jusqu'à la fin on devrait bien avoir le dernier). _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Blackblood a écrit : Je voudrais trouver la fonction qui retourne le tag d'un objet quelconque de l'inventaire. Un objet quelconque de l'inventaire ?... Autant prendre le premier non ?
Voila une manière de faire : NWScript :
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. Citation : Je ne comprend pas comment est organisé l'inventaire, les objets qui sont ramassés ont-ils un numéro attribué ? attention je parle de l'inventaire et non des items équipés (slot). Mal. Il est mal organisé dans le sens ou la structure de données ne reflète pas la présentation visuelle des inventaires...
On a absolument pas la main sur les emplacements exact des objets d'inventaires. Ils ont probablement une position fixe puisqu'on les retrouve toujours à l'emplacement où on les a mis en terme de page d'inventaire et de position, mais cela est une gestion interne au moteur du jeu. Les seules instructions qui nous permettent de retrouver les objets d'inventaires sont GetFirstItemInInventory et GetNextItemInInventory lesquelles restitue la structure de donnée appelée la liste linéaire chaînée. En gros, la première fonction nous donne le premier membre de la liste, et la seconde nous donne la suivante de la courante. Après avoir placé la première commande, le premier objet de la liste devient l'objet courant. En utilisant la seconde commande l'objet suivant devient l'objet courant, et ainsi de suite. Mais la construction de cette structure, c'est du "made in Bioware land". Je soupçonne toutefois de ne pas réorganiser spécialement la liste. Partant d'un inventaire vide, le premier objet placé dans l'inventaire (quel que soit sa page) doit être le premier élément de la liste. Le second objet placé devient le second, etc. Si on enlève un objet d'un inventaire, si celui-ci est au milieu de la liste, on enlève l'élément et raccorde les deux bout de la liste (si c'est le premier qu'on enlève, c'est le second qui devient le premier). S'il est replacé dans l'inventaire, même immédiatement après, il sera ajouté à la fin de la liste. Bien entendu, on pourrait vérifier ces suppositions mais je doute que ça soit d'une grande utilité. _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
Blackblood Chevalier Messages: 80 Localisation: France |
Pour tout expliquer, je voudrais connaitre le script permettant de voler un objet.
Les roublards volent un objet aléatoire, j'aurais voulu mettre ce script sur une créature. Mais afin de me permettre de bien comprendre les scripts j'aurais aimé le faire moi-même. Ca permet de trouver le bug d'un script, c'est un avantage lorsque l'on développe un module. Je sais je suis ambitieux et je pars de loin. J'ai commencé en utilisant le script generator mais on s'aperçoit qu'il est limité à certaines fonctions (pas de tirage aléatoire, pas de boucle, etc...). Effectivement, j'avais bien vu ce petit script permettant de compter le nombre total d'objet dans l'inventaire. Je pense ensuite faire un tirage aléatoire d'un chiffre dont le maximum est le nombre total d'objets. De récupérer ensuite le tag de l'objet puis de le voler. Mais si je récupère le script de vole, certes je n'aurais pas à le faire mais je pourrais comprendre les subtilités du script. Merci de vos conseils |
Revenir en haut | |
Baldurien L'homme qui chutait sur le macadam Messages: 14066 Localisation: Quadran Alpha |
Tu peux toujours utiliser les fonctions de base et bricoler :
NWScript :
// Prend un objet au hasard dans la liste des objets de oSource, et tente de le voler s'il n'est pas trop lourd, object StealObject( object oSource, object oThief ); object StealObject( object oSource, object oThief ) { object oItem = GetFirstItemInInventory(oSource); object oSteal = OBJECT_INVALID; int iThrow, iWeight; while (GetIsObjectValid(oItem) == TRUE) { iWeight = GetWeight( oItem ); iThrow = Random( iWeight ); if ( ( iThrow / iWeight ) < 0.75 ) { iThrow = d20(); if ( !( d20() % 3 ) ) { AssignCommand( oSource, ActionAttack( oThief ) ); return OBJECT_INVALID; } else { SetStolenFlag( oItem, TRUE ); AssignCommand( oThief, ActionTakeItem( oItem, oSource ) ); return oItem; } } oItem = GetNextItemInInventory(oSource); } return OBJECT_INVALID; } Ce truc n'est peut être pas très D&D3 mais ça devrait marcher. Je sais pas où le mettre ceci dit _________________ #nwnights-fr @ irc.darkmyst.org TitanQuest-FR |
Revenir en haut | |
Blackblood Chevalier Messages: 80 Localisation: France |
Houlà, ça commence à me faire mal à la tête.
Merci en tout cas je vais y réfléchir posément. En tout cas j'ai commencé mon script, pour le moment il est très simple et cela peut suffire, le PNJ vole bien les objet dans l'inventaire. Ce que je peux affirmer c'est qu'en utilisant la fonction GetFirstItemInInventory() le PNJ vole le dernier item placé dans l'inventaire. En fait j'avais vider l'inventaire sur le sol puis tout replacer un à un. Le voleur a pris le dernier item placé dans l'inventaire. C'est bon à savoir. Trève de blabla voici mon script : NWScript :
// placer dans OnPerception void main() { object oPC = GetLastPerceived(); if (!GetIsPC(oPC)) return; if (!GetLastPerceptionSeen()) return; /// trouvez le premier objet de l'inventaire et le prendre object oItem = GetFirstItemInInventory(oPC); ActionTakeItem(oItem, oPC); } Voilà, je vous fait part de mes premier travaux et vous donnerais le script final (si j'y arrive ) |
Revenir en haut | |
Konrad Grand Maître Chanteur du Conseil Messages: 1258 Localisation: Empire d'Halöven |
Baldurien a écrit : Je sais pas où le mettre ceci dit C'est simple, après tu appelle la fonction
NWScript :
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. dans un main que tu mets soit dans un dialogue auquel cas ça devient : NWScript :
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. Ou alors dans le OnPerception comme à fait Blackblood NWScript : 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. _________________ Le site du Module Dragon Noir Le groupe du Module L5A - L'ombre et la Lumière Crimson Skies |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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