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