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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[scripts] comment vérifier un NOMBRE d'objets dans l'inventaire.

Par Amand Xiloseth le 13/11/2002 à 18:49:27 (#2554540)

Bonjour tlm,
j'ai une question.
Je n'arrive pas a faire une condition dans le dialogue d'un PNJ pour qu'il dise ce qu'il faut seulement si on a tous les objets nécessaire.
J'ai rechercher dans l'éditeur Inventory, mais aucun ne permet de rentrer un nombre.
Svp, aidez moi.


PS:pour une recherche sur les forums, y avait trop de mondes.

Re: [scripts] comment vérifier un NOMBRE d'objets dans l'inventaire.

Par Morethil le 13/11/2002 à 19:23:47 (#2554876)

Provient du message de Amand Xiloseth
Bonjour tlm,
j'ai une question.
Je n'arrive pas a faire une condition dans le dialogue d'un PNJ pour qu'il dise ce qu'il faut seulement si on a tous les objets nécessaire.
J'ai rechercher dans l'éditeur Inventory, mais aucun ne permet de rentrer un nombre.
Svp, aidez moi.


PS:pour une recherche sur les forums, y avait trop de mondes.


Tu ne peux pas verifier un nombre d'objet dans l'inventaire, tu doit fonctionner par Tag, ou LocalInt.

Donc 2 choix :
1) soit tu met dans le starting conditional de ta conversation une suite d'objet que le PJ doit avoir, en definissant les tags de chaque objet.
2) Tu met un LocalInt sur le PJ (ou le module, ou là ou tu a envie) a chaque fois que le PJ recupère un de tes objets. Et dans le starting conditional de ta conversation, tu met un if (GetLocalInt ("nTonLocalInt" >= x) -avec x comme valeur minimum pour que ton PNJ cause -

Je ne te fait pas les codes, je n'ai pas aurora ouvet, et je pense que c'est pas trop dur.
A mon avis la deuxième option est la plus simple, si tu a plus d'objet trouvable que le nombre qu'il faut pour que le PNJ parle.

Avec un peu de recherche tu doit pouvoir trouver un moyen de réajuster ta variable a chaque fois qu'un objet est trouvé en lui assignant une valeur de LocalInt = à n+1 ou n est la valeure precedante.

Dans le cas ou c'est x objet fixe, et que le PJ doit les avoir tous, alors la solution des tags est la plus simple.

Heu, y a plus simple !

Par Frolo Xeres le 13/11/2002 à 19:47:18 (#2555172)

Si t'as qu'un objet de chaque y a quand même plus simple :


#include "nw_i0_tool"
void main() {
object oPC = GetPCSpeaker();
if( !CheckPartyForItem( oPC, "Tag_Objet_Un")
|| !CheckPartyForItem( oPC, "Tag_Objet_Deux")
|| ... )
return FALSE;
return TRUE;
}

Ce test validera ta conversation si le PC a tous les objets dont le tag est précisé !

Par Jedaï le 13/11/2002 à 20:02:43 (#2555333)

Et encore plus simple : :D
Tu ouvre le script wizard de l'onglet "condition" de ta phrase et tu coche le choix "item dans l'inventaire", ensuite tu spécifie le tag du premier objet-->"Add", tu spécifie le tag du second objet-->"Add".... Tu valide et tu lui met un nom explicite !:rolleyes:

Si tu veux vérifier la quantité d'objet d'un seul type dans l'inventaire de ton PC, il faut mettre ce script :


int StartingConditional()
{
object oPC = GetPCSpeaker();
object oItem = GetFirstItemInInventory(oPC);
int n=0;

while (GetIsObjectValid(oItem))
{
//place ici le tag de ton item.
if (GetTag(oItem) == "Tag_De_Ton_Item")
n+=GetNumStackedItems(oItem);

oItem = GetNextItemInInventory(oPC);
}

//remplace 666 par le nombre d'items que tu veux que le
//joueur ait au minimum.
return (n >= 666);
}


Tu peux bien sûr l'adapter pour vérifier les quantités de plusieurs types d'objet.:cool:

Par Amaranthe le 15/11/2002 à 9:20:25 (#2566329)

Avec un petit bémol conditionnel...

Il ne me semble pas que ce scripte compte les objets situés dans des sacs, coffres, boites ou autres...

Me trompes je ?

Par Frolo Xeres le 15/11/2002 à 18:59:25 (#2570306)

Provient du message de Jedaï
Et encore plus simple

*Fait la moue*
Mais heu ! Trouve toujours plus simple...

Par Jedaï le 15/11/2002 à 21:44:46 (#2571407)

Avec un petit bémol conditionnel...

Il ne me semble pas que ce scripte compte les objets situés dans des sacs, coffres, boites ou autres...

Me trompes je ?


Ben... ça dépend de ce que tu veux dire:doute:
Si tu veux dire par là que ce script n'est pas applicable aux placeables, alors je t'assure que si moyennant une minime modification dans l'affectation initiale.

Si tu veux dire que ce script ne vérifie pas l'intérieur des sacs/conteneurs dans l'inventaire du PC, j'avoue mon ignorance, bien que je ne croie pas que cela ait une importance fondamentale. Néanmoins si tu pouvais donner une solution, je serai heureux de la reprendre dans tous mes scripts.

Par Kemay le 15/11/2002 à 21:51:09 (#2571440)

Provient du message de Jedaï
Si tu veux dire que ce script ne vérifie pas l'intérieur des sacs/conteneurs dans l'inventaire du PC, j'avoue mon ignorance, bien que je ne croie pas que cela ait une importance fondamentale. Néanmoins si tu pouvais donner une solution, je serai heureux de la reprendre dans tous mes scripts.

Avant les modifications apportées aux objets de type container (boîte, sacs etc...) le "scan" de l'inventaire d'un jouer passait aussi en revue l'inventaire des containers dans son inventaire mais pas l'inventaire d'un container placé dans un container (oula j'sais pas si c'est très clair). Cela dit, je n'ai pas testé depuis la correction des bugs des fonction GetFirst/NextItemInInventory and Create/DestroyItemOnObject lorsqu'elles étaient utilisées sur des containers donc ça a peut être changé.

JOL Archives 1.0.1
@ JOL / JeuxOnLine