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