Création d’objets.
object CreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, int nStackSize = 1)
|
Cette commande crée un
objet (avec le tag « sItemTemplate ») dans l’inventaire de l’objet « oTarget ».
On l’utilise souvent quand des objets sont « donnez » à un PC…ou si un NPC est
supposé avoir un objet seulement pendant un certains temps. Si je suis dans un
dialogue et que le NPC recompense le PC avec qui il parle avec une épée longue
non magique, je mettrais un script avec la commande ci dessous dans « Action Taken
» :
CreateItemOnObject ("NW_WSWLS001", GetPCSpeaker());
|
Si je veux mettre 12 flêches normales dans un coffre qui a le tag "CHEST05":
CreateItemOnObject ("NW_WAMAR001", GetObjectByTag ("CHEST05"), 12);
|
(NOTE:
Si vous utilisez ActionGivenItem pour qu’un NPC donne
à un PC un objet dans son inventaire, cet objet doit déjà exister dans l’inventaire
du NPC pour que l’action soit complétée. ActionGivenItem
transfert l’objet de l’inventaire du NPC à celui du PC…CreateItemOnObject
crée un nouvel objet dans celui ci.)
(2ème NOTE: Je rajoute que le « sItemTemplate
» utilisé dans cette commande est le tag de l’objet…C’est vrai UNIQUEMENT avec
les objet standard inclus dans le jeu. Désolé, c’est tout ce que j’ai l’habitude
d’utiliser avec cette commande. Si vous essayez d’utiliser cette commande avec
des objets personnalisés (custom items), vous devez utiliser le blueprint resref
de l’objet… et non le tag.)
La commande « CreateObject » est un petit peu différente.
Elle crée un objet sur la map. Elle est souvent référencée comme « spawning ».
L’ « objet » peut être une créature ou un objet (inerte). Sa structure est la
suivante :
object CreateObject (int nObjectType, string sTemplate, location lLoc, int bUseAppearAnimation = FALSE)
|
'nObjectType' est une constante qui défini quel type d’objet va être crée.
Par exemple, OBJECT_TYPE_CREATURE ou OBJECT_TYPE_ITEM. Elle viens de la liste
des constantes «Constants» du script editor.
La string 'sTemplate' est son 'blueprint resref'.
Oui, je sais…quasiment toutes les autres commandes utilisent le tag de l’objet.
Celle ci se réfère au resref, trouvé habituellement sous l’onglet « Advance »
de l’objet.
NOTE: cette particularité est très souvent source d’erreur !
Si vous utilisez le tag à la place du resref, ca ne marchera pas !
Un emplacement(location) consiste en une zone (area),
et des coordonnées xyz sur la carte (qui sont chacune connue en tant que vecteur)
et d’une orientation. Il est plus facile d’utiliser la commande
location GetLocation(object oObject)
|
pour obtenir toutes ces informations à partir d’un waypoint ou d’un autre objet
(si vous utilisez un objet comme une créature, l’apparition se fera à l’endroit
« valide » le plus proche.) Si nécessaire, vous pouvez aussi construire un emplacement
en utilisant
Location(object oArea, vector vPosition, float fOrientation)
|
Par défault, l’animation standart de l’apparition n’est pas utilisée… si vous
voulez qu’elle le soit, spécifiez TRUE après « bUbeAppearAnimation
»
Donc…pour créer un hobgobelin sur un waypoint déjà placé et qui a le tag "WAYPOINT1":
location spawn1 = GetLocation (GetWaypointByTag ("WAYPOINT1"));
CreateObject (OBJECT_TYPE_CREATURE, "NW_BUGBEARA", spawn1);
|
Pour faire apparaître un magicien (avec le tag "wizard01")
avec l’effet activé, à côté du PC le plus proche…
void main() { object oWay = GetWaypointByTag("WAYPOINT1");
vector vPos = GetPosition(oWay); vector vPC = GetNearestCreatureToLocation(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, vPos); location lPos = Location(GetArea(oWay), vPos, SetFacingPoint(vPC)); CreateObject(OBJECT_TYPE_CREATURE, "wizard01", lPos, TRUE); }
|
UNE DERNIERE CHOSE A PROPOS DES TAGS: Rappelez vous qu’ils font
la différence entre les majuscules et les minuscules ! Si le tag de votre créature
est "wizard01", ne l’appelez pas dans votre
script "WIZARD01" ou même "Wizard01"…Vous
verrez alors apparaître à la place un blaireau (badger). Pourquoi un blaireau
? Par ce que c’est simplement la créature convoquée par défault et donc utilisée
quand l’objet qui doit apparaître est invalide.
__________________
Théranthil, Mage Elfe prêtre de Mystra Membre des GdE
Parti Elmotiste pour un parler jowilien: Ministre
supérieur de la corruption
"Les langues vont toujours bon train. Les pieds ont du mal à suivre."
(les bourses aussi NdT )
Mespert de la porte de Baldur