Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Donner un objet de l'inventaire

Par Cassin le 3/7/2002 à 19:57:25 (#1752590)

J'ai petit problème :

pour mon module, un PNJ à besoin d'un diamant. Ce diamant, c'est un autre PNJ qui l'a.
- On peut lui demander gentiment, auquel cas il nous le donne (oui, il est gentil ;) )
- On peut y aller bourrin et buter le PNJ pour le récupérer dans son inventaire
- Ou alors le lui voler, toujours dans son inventaire.

Le hic : si le joueur demande le diamant au PJ et qu'il le tue ou le vole APRES, il retrouve un deuxième diamant dans l'inventaire du PNJ !

Comment faire pour qu'une fois le diamant donné, il disparaisse de l'inventaire ? Et, inversement, comment ne pas le donner s'il a déjà été volé ?

J'entrevois 2 façons de faire :
AVANT de donner le diamant (avec le Wizard de "Action Taken" et "Give Rewards"), vérifier qu'il est encore dans l'inventaire et l'effacer ensuite

OU s'il y avait une fonction qui permette de donner le diamant spécifiquement dans l'inventaire, et pas un autre !

alors

Par Shelzard le 3/7/2002 à 20:40:59 (#1752894)

Dans le actions taken des rewards, il doit y avoir un machin du genre :
CreateItemOnObject("tag_du_diamant", GetPCSpeaker(), 1);

Tu change cette ligne par :

ActionGiveItem("tag_du_diamant_de_l_inventaire", GetPCSpeaker());

Voilà, ça donnera l'objet de son inventaire, pense à faire une condition avant (pour voir si il a bien le diamant), et apres pour vérif si le diamant est bien valide.

Shelzard

Re: alors

Par Lumina le 3/7/2002 à 21:09:58 (#1753060)

Provient du message de Shelzard
ActionGiveItem("tag_du_diamant_de_l_inventaire", GetPCSpeaker());
Non, ta syntaxe est incorrecte, mais c'était presque ça :). Il faut un objet comme argument, pas un tag. Pour retrouver l'objet, on fait ainsi :

object oDiamant = GetFirstItemInInventory(OBJECT_SELF);
while (GetIsObjectValid(oDiamant) && (GetTag(oDiamant) != "sTag_du_diamant"))
oDiamant == GetNextItemInInventory(OBJECT_SELF);
if (GetIsObjectValid(oDiamant))
ActionGiveItem(oDiamant, GetPCSpeaker());
else
ActionSpeakString("Malheur ! Je n'ai plus le diamant !");

Par Cassin le 3/7/2002 à 23:16:32 (#1753548)

OK, merci !

Je testerais ça dès demain !

JOL Archives 1.0.1
@ JOL / JeuxOnLine