Petit problem sur un script

Répondre
Partager Rechercher
Voilla, j'utilise le script ci-dessous pour vérifier si le PJ possède les objects requis dans son inventaire pour lui donner la récompence :


#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(!HasItem(GetPCSpeaker(), "peaudeloup"))
return FALSE;
if(!HasItem(GetPCSpeaker(), "peauderat"))
return FALSE;
if(!HasItem(GetPCSpeaker(), "peaudours"))
return FALSE;

return TRUE;
}



Bien je voudrais modifier ce script pour qu'il vérifi qu'il y est 10 peaux de chaque et non une seul voilla =)

un petit coup de main serait bienvenu
Bah, si mes faibles capacités de scriptage ne m'abusent, tu devrais écrire ceci :
Code PHP:

#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(!HasItem(GetPCSpeaker(), "peaudeloup"),10)
return 
FALSE;
if(!
HasItem(GetPCSpeaker(), "peauderat"),10)
return 
FALSE;
if(!
HasItem(GetPCSpeaker(), "peaudours"),10)
return 
FALSE;

return 
TRUE;

__________________
http://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flying_Spaghetti_Monster_bumper_sticker.svg/200px-Flying_Spaghetti_Monster_bumper_sticker.svg.png
« Dieu est un névrosé narcissique : il a créé les hommes tout spécialement pour se faire adorer. »

Votre signature va être effacée par Dieu. N'hésitez pas à le/la contacter pour obtenir de plus amples informations.

Negatif, cela ne fonctionnera pas : la fonction HasItem ne prend que object oPossesseur et string sTag en entrée...


Pour changer ca, utilise simplement
Code PHP:

if (GetNumItems(GetPCSpeaker(), "peaudeloup") > 10
au lieu de HasItem
Ha là, je me permets de te corriger, Raistlin...

Si il veut controler pour 10 peaux, il doit écrire :

Code PHP:

if (GetNumItems(GetPCSpeaker(), "peaudeloup") > 9

Je me trompe ???
__________________
http://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Flying_Spaghetti_Monster_bumper_sticker.svg/200px-Flying_Spaghetti_Monster_bumper_sticker.svg.png
« Dieu est un névrosé narcissique : il a créé les hommes tout spécialement pour se faire adorer. »

Votre signature va être effacée par Dieu. N'hésitez pas à le/la contacter pour obtenir de plus amples informations.

en fait, on se trompe tout les deux ^^

C'est bien entendu 9 si l'on considere une comparaison stricte (bien vu ), mais vu que ca va remplacer une condition de return false, il faut mettre
Code PHP:

if (GetNumItems(GetPCSpeaker(), "peaudeloup") < 10)
return 
FALSE
Voila, en esperant avoir clarifié ^^

(desole)
Donc, si j'ai bien compris, il pourrait aussi faire son script ainsi :

Code PHP:

#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(GetNumItems(GetPCSpeaker(), "peaudeloup")>9)
if(
GetNumItems(GetPCSpeaker(), "peauderat")>9)
if(
GetNumItems(GetPCSpeaker(), "peaudours")>9)

return 
TRUE;

return 
FALSE;

En plus, ça me paraît plus propre et plus léger...


P.S.: Excusez moi la basicité de mes scripts et de mes remarques, j'apprends quoi...
Y'a de l'idée.

mais la, tu ne verifie que :

si il a 10 peaux de loup,
si il a 10 peaux de rat
si il a 10 peaux d'ours
alors je retourne VRAI
Sinon, je retourne faux.

Je te conseille de ne pas trop epurer tes scripts au debut, tu apprendra bien assez vite a optimiser tes script pour ne pas avoir a t'embeter a relire un script optimisé au debut

Code PHP:

#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(GetNumItems(GetPCSpeaker(), "peaudeloup")>9)
{return 
TRUE;}
if(
GetNumItems(GetPCSpeaker(), "peauderat")>9)
{return 
TRUE;}
if(
GetNumItems(GetPCSpeaker(), "peaudours")>9)
{return 
TRUE;}
else return 
FALSE;

Citation :
Provient du message de eMRaistlin
Y'a de l'idée.

mais la, tu ne verifie que :

si il a 10 peaux de loup,
si il a 10 peaux de rat
si il a 10 peaux d'ours
alors je retourne VRAI
Sinon, je retourne faux.

Je te conseille de ne pas trop epurer tes scripts au debut, tu apprendra bien assez vite a optimiser tes script pour ne pas avoir a t'embeter a relire un script optimisé au debut

Code PHP:

#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(GetNumItems(GetPCSpeaker(), "peaudeloup")>9)
{return 
TRUE;}
if(
GetNumItems(GetPCSpeaker(), "peauderat")>9)
{return 
TRUE;}
if(
GetNumItems(GetPCSpeaker(), "peaudours")>9)
{return 
TRUE;}
else return 
FALSE;


Je n'avais même pas fais gaffe!! Qui veut me faire la peau ?? sniff...
Arf si il touche a Notre RAT c'est a lui qu'on va faire la peau, non mais sans blague.
eM, sisi on t'a vu l'aiguiller sur le moyen de faire ça, y'a des preuves partout dans le poste

Jaha Effect
Citation :
Provient du message de eMRaistlin
Y'a de l'idée.

mais la, tu ne verifie que :

si il a 10 peaux de loup,
si il a 10 peaux de rat
si il a 10 peaux d'ours
alors je retourne VRAI
Sinon, je retourne faux.

Bah, je m'en était rendu compte seulement au poste de Tzarman, j'avais cru comprendre que c'est ce qu'il voulait faire...
Y a encore un petit problème apparemment .....

Quant je tente de compiler, il me met une erreur sur cette ligne :

if(GetNumItems(GetPCSpeaker(), "peaudeloup")>9)

Donc l'erreur : NO RIGHT BRACKET ON EXPRESSION
Citation :
Provient du message de Jaha Effect
Arf si il touche a Notre RAT c'est a lui qu'on va faire la peau, non mais sans blague.
eM, sisi on t'a vu l'aiguiller sur le moyen de faire ça, y'a des preuves partout dans le poste

Jaha Effect
Merci Jaha pour ma défense !!! oufff je suis sauvé . En fait si eM a aidé comme ça, c'est qu'il était obligé on l'a torturé pour qu'on essaye de me tuer ....
*mode exagération 100%*
Ben c'est le script de eMrais plus haut

#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(GetNumItems(GetPCSpeaker(), "peaudeloup")>9)
{return TRUE;}
if(GetNumItems(GetPCSpeaker(), "peauderat")>9)
{return TRUE;}
if(GetNumItems(GetPCSpeaker(), "peaudours")>9)
{return TRUE;}
else return FALSE;
}
g pas trouvé de getNumItems
par contre, si les items s'empilent :

Code PHP:

#include "nw_i0_tool"

int StartingConditional()
{

// Vérifier que le PJ qui parle possède ces objets dans son inventaire
if(GetNumStackedItems(GetItemPossessedBy(GetPCSpeaker(), "peaudeloup"))>9)
{return 
TRUE;}
if(
GetNumStackedItems(GetItemPossessedBy(GetPCSpeaker(), "peauderat"))>9)
{return 
TRUE;}
if(
GetNumStackedItems(GetItemPossessedBy(GetPCSpeaker(), "peaudours"))>9)
{return 
TRUE;}
else return 
FALSE;

ou alors c le mauvais include

si ca s'empile pas, faut les compter dans une boucle nan ?
Je n'ai pas trop le temps de chercher là , je dois partir prendre mon rer

Mais voilà, un code vite fait, si vous ne trouvez pas la fonction adéquate ou plus rapide. Comme je disais à un collègue de mon boulot ou à Jaha , les scripteurs sont là aussi pour bidouiller

Voilà, le code, il se compile mais je ne sais pas si c'est ce que tu veux


Code PHP:

int StartingConditional()
{
int i,i1,i2;
object oPC=GetPCSpeaker();
object oitem=GetFirstItemInInventory(oPC);
while (
GetIsObjectValid(oitem))
{
  if (
GetTag(oitem)=="peaudeloup")
   
i++;
  if (
GetTag(oitem)=="peauderat")
   
i1++;
  if (
GetTag(oitem)=="peaudours")
   
i2++;

oitem=GetNextItemInInventory(oPC);
}

if (
i>9)
return 
TRUE;
if (
i1>9)
return 
TRUE;
if (
i2>9)
return 
TRUE;

return 
FALSE;


a plus
Et bien merci Rat, ton script marche parfaitement

Mais j'aurais un " dernier " petit service à demander :
Voila maintenant que le Pnj a vérifié les peau, il faut qu'il les reprenne, le script par défaut ne marche pas des masse :

Code PHP:

void main()
{
    
// Donner de l'or à la personne qui parle
    
GiveGoldToCreature(GetPCSpeaker(), 200);

    
// Donner des PX à la personne qui parle
    
GiveXPToCreature(GetPCSpeaker(), 300);

    
// Donner les objets à la personne qui parle
    
CreateItemOnObject("attestationdecom"GetPCSpeaker(), 1);


    
// Enlever des objets de l’inventaire du joueur
    
object oItemToTake;
    
oItemToTake GetItemPossessedBy(GetPCSpeaker(), "peauderat");
    if(
GetIsObjectValid(oItemToTake) != 0)
        
DestroyObject(oItemToTake);
    
oItemToTake GetItemPossessedBy(GetPCSpeaker(), "peaudours");
    if(
GetIsObjectValid(oItemToTake) != 0)
        
DestroyObject(oItemToTake);
    
oItemToTake GetItemPossessedBy(GetPCSpeaker(), "peaudeloup");
    if(
GetIsObjectValid(oItemToTake) != 0)
        
DestroyObject(oItemToTake);
    
oItemToTake GetItemPossessedBy(GetPCSpeaker(), "simple_compagnon");
    if(
GetIsObjectValid(oItemToTake) != 0)
        
DestroyObject(oItemToTake);

Une petite idée ?
Ba dans le même principe, tu peux essayer de faire cela

Code PHP:

void main()
{
    
// Donner de l'or à la personne qui parle
    
GiveGoldToCreature(GetPCSpeaker(), 200);

    
// Donner des PX à la personne qui parle
    
GiveXPToCreature(GetPCSpeaker(), 300);

    
// Donner les objets à la personne qui parle
    
CreateItemOnObject("attestationdecom"GetPCSpeaker(), 1);


    
// Enlever des objets de l’inventaire du joueur
object oPC=GetPCSpeaker();
object oitem=GetFirstItemInInventory(oPC);
while (
GetIsObjectValid(oitem))
{
  if (
GetTag(oitem)=="peaudeloup")
   
DestroyObject(oitem);
  if (
GetTag(oitem)=="peauderat")
   
DestroyObject(oitem);
  if (
GetTag(oitem)=="peaudours")
   
DestroyObject(oitem);

oitem=GetNextItemInInventory(oPC);
}




et voilà , je suis à mon boulot, donc je ne peux pas savoir si cela se compile ou si ca marche

tu peux le faire plus simple comme ca aussi

Code PHP:

void main()
{
    
// Donner de l'or à la personne qui parle
    
GiveGoldToCreature(GetPCSpeaker(), 200);

    
// Donner des PX à la personne qui parle
    
GiveXPToCreature(GetPCSpeaker(), 300);

    
// Donner les objets à la personne qui parle
    
CreateItemOnObject("attestationdecom"GetPCSpeaker(), 1);


    
// Enlever des objets de l’inventaire du joueur
object oPC=GetPCSpeaker();
object oitem=GetFirstItemInInventory(oPC);
while (
GetIsObjectValid(oitem))
{
  if ( (
GetTag(oitem)=="peaudeloup") || (GetTag(oitem)=="peauderat") || (GetTag(oitem)=="peaudours"))
   
DestroyObject(oitem);
  

oitem=GetNextItemInInventory(oPC);
}




Na normalement il devrait faire comme il passe en boucle tout l'inventaire du pc et qu'à chaque fois qu'il repere ce tag, il supprime l'objet.

Donc normalement, cela va bien retirer tous les objets portant ces tags là qu'il soit tout seul ou plusieurs

Mais c'est à vérifier: )
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés