?
| Nos forums | NwN2.fr | Lyncya | Notre channel IRC |
La Bibliothéque de Neverwinter Nights
La Bibliothéque de Neverwinter Nights
 
 
 
 
 
Bienvenue, connectez vous ou créez votre compte. Changer d'interface
 
Se connecter:
Login:

Password:


 
Neverwinter Nights 2
  Compendium NWN/NWN2
Classe, Warlock
Classes de Base
Classes de Prestige
Forum Joueur NWN2
Forum Concepteur NWN2
Bestiaire (Créatures)
Races
Tests
 - Collector Chaotique Mauvais (bbnwn, 4 nov 2006)
 - Mask of the Betrayer
 - Storm of Zehir
 - Mysteries of Westgate
Mondes
 - Les Artisans du Mitan
 - Les Légendes de Luiren
 - LanceDragon
 - La Bataille pour Cormanthor
 - Man O'War
 - Sendarie Nouvel Âge
Preview
 - 29 Mars 2006 (BBNWN)
 - 2 mai 2006 (Gamespot)
 - 17 Mai 2006 (WarCry)
 - 19 Mai 2006 (NWVault)
 - Designer Diary #1 (Gamespot, 1er Juin 2006)
Interview
 - Dorian Richard (20/02/2006)
 - Ferret Baudoin (22/02/2006)
 - Feargus Urquhart (2 mai 2006)
 - La Lettre Ouverte de Papermonk
 - Chris Avellone (Total Video Games)
Logs IRC
 - Warcry (27/01/2006)
 - NWVault / NWC (3 Juin 2006)
 - NWN2News.net (30 Juin 2006)
Faciliter la diffusion et l'installation de vos créations

 
Communauté
  Forums
Channel #nwnights-fr
Guide IRC
Liens
CEP

 
Fichier
  Tileset
Module
Hakpak
Objets
Portraits
Créatures
Scripts
Tutoriaux
Autres
Wallpapers

 
Editeur
  Tutorial Editeur
Cinématiques
Musiques
Textures
Tutoriaux NWScripts
Scripts

 
Le jeu
  Solution
Sorts
Classes
Dons (feat)
Aptitudes (skill)
Bestiaire
Règles 3e Edition
Jouer en multiplayer

 
Hordes of the Underdark
  Informations Générales
Solution [forum]

 
Shadows of Undrentide
  Preview
Informations générales
Classes de Prestige
'Lisez Moi.txt' de la Démo
FAQ
Nouveaux tilesets
Solution [forum]

 
Divers
  Traductions Logs Irc
Guides divers

 
Présentation
  Généralités
Configuration minimale
Serveur Dédié
Traduction FAQ
Historique (nwn et bioware)
Contrats de Bioware (vf)

 
Site
  Copyrights
Webmasters

 
     
 
Dîtes non aux inutiles protections contre la copie dans les jeux (SecuROM, StarForce, etc) !!
HADOPI - Le Net en France : black-out

Scripting Tutorial: Defining An Object
Tutorial de Script : Définir un Objet
par David Gailer

Cet article est un peu plus compliqué... mais je me suis trouvé assez souvent devant cet obstacle avant d'arriver à faire quelque chose.

La plupart des actions ont besoins d'un objet comme cible. La façon la plus facile de décrire un objet et d'avoir son Tag a portée de main... ce qui serait bien c'est que vous sachiez ou va la cible de l'objet. Mais quand on ne sait pas? Comment trouver le PJ le plus proche... lequel est ce que cela pourrait être? Que faire si vous voulez cibler la créature la plus proche? Comment vous faites pour vérifier a quelle distance et quelque chose au loin?

Il y a plusieurs façons de vérifier de telles choses... Ici , je vais me concentrer sur trois d'entre elles : GetNearestCreature, GetNearestObject et GetDistanceBetween.

GetNearestCreature
Cette commande vous permet de trier des créatures en fonctions de leur proximité par rapport a l'objet en fonction de 3 paramètres. Notez que la cible n'est pas obligatoirement la première du type trouvé... c'est simplement le résultat par défaut. Si vous vouliez localiser le rogue humain PNJ le deuxième plus proche par exemple, c'est la commande que vous utiliseriez.

La syntaxe est de ce type :

object GetNearestCreature (int nFirstCreatureType, int nFirstParameter, object oTarget=OBJECT_SELF, int nNth=1, int nSecondCreatureType = -1, int nSecondParameter = -1, int nThirdCreatureType = -1, int nThirdParameter = -1 )

C'est peut être un peu confus, mais regardons pas a pas.

nFirstCreatureType et nFirstParameter sont les critères initiaux que vous cherchez. Imaginons que vous cherchiez seulement l'Humain le plus proche... nFirstCreatureType serait l'attribut CREATURE_TYPE_ RACIAL_TYPE, et nFirstParameter serait RACIAL_TYPE_HUMAN.

Comprenez vous? Vous avez trois critères pour affiner votre recherche... chacun requièrt un attribut et un paramètre.

L'objet oTarget est, bien sûr, ce que la créature recherche de plus proche. Cela peut être OBJECT_SELF (et c'est le cas par défaut) pour cherchez à proximité de celui qui utilise le script. Vous pourriez aussi faire quelque chose de génial en vérifiant la créature la plus proche du PJ le plus proche... mais je ne veux même pas l'écrire.

L'entier nNth est ce que vous employez pour déterminer si vous employez le premier plus proche ou un autre. Par défaut, c'est le plus proche... mais tout nombre que vous indiquerez ici déterminera le nombre de créatures, les plus proches, qui seront recherchées. Noter que n'importe qu'elle fonction peut être employée ici, à condition qu'elle renvoie un nombre entier... vous pouvez mettre d4(), par exemple, si vous voulez déterminer aléatoirement entre le premier et le quatrième proche.

Voici donc une liste de type de créature que vous pouvez assortir:

  • CREATURE_TYPE_CLASS = classe de monstre ou de joueur
  • CREATURE_TYPE_DOES_ NOT_HAVE_SPELL_EFFECT = si vous cherchez une créature spécifique qui n'a pas de sort sur lui (référencé par la constante SPELL_*)... J'imagine que ça ne doit pas arriver souvent.
  • CREATURE_TYPE_SPELL_EFFECT = l'opposé du précèdent, bien sûr... cherche une créature avec un sort particulier sur lui. Notez que tout les effet des sorts ne sont considérés en tant que tels.
  • CREATURE_TYPE_IS_ALIVE = explicite, si vous voulez éliminer les morts.
  • CREATURE_TYPE_PERCEPTION = ce n'est pas techniquement un attribut de la créature mais plutôt de le nature de la perception par rapport à l'objet visé... comme s'il pouvaient être vu ou entendus.
  • CREATURE_TYPE_PLAYER_CHAR = ceci détermine si la créature est un joueur ou non.
  • CREATURE_TYPE_RACIAL_TYPE = race de la créature
  • CREATURE_TYPE_REPUTATION = classement d'après le niveau de réputation de la faction de la cible.

Je ne passerai pas en revue toutes les classes, races et effets particuliers qui peuvent être employés puisqu'ils sont assez évidents. Par contre, d'autres le sont moins.

CREATURE_TYPE_IS_ALIVE :

  • TRUE ou FALSE (facile)

CREATURE_TYPE_PERCEPTION :

  • PERCEPTION_HEARD
  • PERCEPTION_HEARD_AND_NOT_SEEN
  • PERCEPTION_NOT_HEARD
  • PERCEPTION_NOT_SEEN
  • PERCEPTION_NOT_SEEN_ AND_NOT_HEARD
  • PERCEPTION_SEEN
  • PERCEPTION_SEEN_AND_HEARD
  • PERCEPTION_SEEN_ AND_NOT_HEARD

CREATURE_TYPE_PLAYER_CHAR :

  • PLAYER_CHAR_IS_PC
  • PLAYER_CHAR_NOT_PC

CREATURE_TYPE_REPUTATION :

  • REPUTATION_TYPE_ENEMY
  • REPUTATION_TYPE_FRIEND
  • REPUTATION_TYPE_NEUTRAL



Donc... comment je trouve le PJ le plus proche de moi?

GetNearestCreature( CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC );

Le magicien ennemi le plus proche?

GetNearestCreature( CREATURE_TYPE_ REPUTATION, REPUTATION_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_CLASS, CLASS_TYPE_WIZARD );

L'ennemi en vie le plus proche de l'allié de mon PJ?

GetNearestCreature( CREATURE_TYPE_ REPUTATION, REPUTATION_ENEMY, GetNearestCreature( CREATURE_TYPE_ PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, CREATURE_TYPE_ REPUTATION, REPUTATION_FRIENDLY ), 1, CREATURE_TYPE_ IS_ALIVE, TRUE );

Le plus proche que je puisse voir?

GetNearestCreature( CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_NOT_PC, OBJECT_SELF, 1, CREATURE_TYPE_ PERCEPTION, PERCEPTION_TYPE_ SEEN );

GetNearestObject
Ceci est beaucoup moins compliqué parce que vous pouvez seulement associer des objets par leur type... vous n'avez pas les caractères multiples des créatures. Autrement cela fonctionne plus ou moins de la même manière.

object GetNearestObject (int nObjectType=OBJECT_TYPE_ALL, object oTarget=OBJECT_SELF, int nNth=1)

nObjectType est, évidemment, le type d'objet que vous recherchez. Si vous n'indiquez rien ce sera l'objet de n'importe qu'elle sorte le plus proche.

nNth est l'entier qui vous permet d'aller au dela du plu proche... un nNth de 3 chercera le troisième plus proche par exemple.

Les types d'objets sont :

  • OBJECT_TYPE_ALL
  • OBJECT_TYPE_AREA_OF_EFFECT
  • OBJECT_TYPE_CREATURE
  • OBJECT_TYPE_DOOR
  • OBJECT_TYPE_INVALID
  • OBJECT_TYPE_ITEM
  • OBJECT_TYPE_PLACEABLE
  • OBJECT_TYPE_STORE
  • OBJECT_TYPE_TRIGGER
  • OBJECT_TYPE_WAYPOINT



GetDistanceBetween
Ceci rapporte la distance (en mètres) entre deux objets valides. Il est important que les deux objets soient valides, sinon la distance reçue sera 0.

float GetDistanceBetween( object oObjectA, object oObjectB)

(Qu'est ce qu'un float, d'ailleurs? Un float, comme un integer, est juste un nombre... mais un float a toujours des décimales. '50' sera un integer (entier)... '50.0' sera un float. Si vous en avez besoin, vous pouvez utiliser la commande int FloatToInt( float fFloat ) pour convertir un float en entier; [nota: un float est un réel , un entier est un entier cf Cours de Maths) .

Si vous vérifiez simplement à quelle distance est quelque chose de la créature ou de l'objet qui lance le script, il est plus facile d'utiliser cette commande :

float GetDistanceToObject( object oObject )

De cette façon vous ne devez pas indiquer constamment OBJECT_SELF dans la commande GetDistanceBetween.




Traduit en Francais par Jawrill de la guilde des Highlands.
Consulter ce tutorial en version originale.

 
 
Revenir à la page d'accueil du site Ajouter la Bibliothéque de Neverwinter dans vos favoris Afficher une version imprimable de la page
  NeverList - Liste ...
Lyncya 3 - La Gue ...
Sarmates!
Le dernier des fi ...
Bonne année
Joyeux Noël 2010
The Witcher 2 en ...

Archives
Rechercher
 
 
Le Site



NwN 2 - Support des Modules Solos


Groupes
Archives
 

:: design by ghaxir :: coding by baldurien :: la bibliothèque de neverwinter :: tous droits réservés ::