Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Détruire tous les items portant un tag dans un inventaire
Détruire tous les items portant un tag dans un inventaire
Par Kor-Skarn le 26/1/2003 Ã 15:26:42 (#3103656)
Je cherche à détruire toutes les potions d'un type quand un joueur entre dans une zone particulière mais j'ai un problème avec mon script. Pourriez vous me dire svp comment je peux remédier à l'erreur suivante : ERROR: MISMATCHED TYPES.void main
{
object oPC=GetEnteringObject(); //Je prend le PC qui entre
object oRemove=GetFirstItemInInventory(oPC); //Je prend le premier objet du PC
while(GetIsObjectValid(oRemove)) //Je teste si l'objet existe
{
if (oRemove="NW_IT_MPOTION012") //Test si l'objet est bien ce que je veux detruire
{
DestroyObject(oRemove); //Hop je le detruit
GiveGoldToCreature(oPC, 500); //Je le dedommage de 500po
}
oRemove=GetNextItemInInventory(oPC); //Je passe a l'objet suivant dans l'inventaire
}
}
Le compilateur me donne l'erreur à la ligne suivante :if (oRemove="NW_IT_MPOTION012") //Test si l'objet est bien ce que je veux detruire
Merci d'avance pour votre aide.
Kor-Skarn
Par Azrael07 le 26/1/2003 Ã 18:42:15 (#3105026)
if (oRemove="NW_IT_MPOTION012") //Test si l'objet est bien ce que je veux detruire
vi mais la tu compare un object (qui est un pointeur, donc une valeur hexadecimale) avec une chaine de caractère, du coup il te dis que le type de comparaison est incompatible.
Pour obtenir un objet a partir d'un tag il faut utiliser la fonction
GetObjectByTag("TONTAG");
de plus, lors d'une comparaison fo utiliser la double égalité ==
ta ligne au final doit donner ca :
if (oRemove == GetObjectByTag("NW_IT_MPOTION012")) //Test si l'objet est bien ce que je veux detruire
Par Kor-Skarn le 26/1/2003 Ã 19:18:05 (#3105301)
Mais j'ai un autre problème, au premier objet retiré il s'arrête et je ne comprend pas pourquoi :(
Kor-Skarn
Par Skanzo Sylan le 26/1/2003 Ã 21:28:42 (#3106443)
au premier objet retiré il s'arrête
Ben d'un point de vue purement logique, quand je voie la fonction GetNextItemInInventory, je me dit qu'il y a un truc qu'est pô normal.
On demande au script d'aller chercher l'item qui suit la potion (GetNext...), comment fait-il alors si la potion n'existe plus?
Je me demande si détruire un item ne met pô en vrac l'historique GetFirst/GetNext... :confus:
Par Azrael07 le 26/1/2003 Ã 22:44:44 (#3107020)
Donc ben oui c'est possible, mais je ne pense pas, il me semble bien que j'avais fait dans le passé une fonction DestroyAllObjectInArea qui marchait...
euh un petit détail quand meme, t'as un peu beaucoup oublié ta double égalité
void main
{
object oPC=GetEnteringObject(); //Je prend le PC qui entre
object oRemove==GetFirstItemInInventory(oPC); //Je prend le premier objet du PC
while(GetIsObjectValid(oRemove)) //Je teste si l'objet existe
{
if (oRemove=="NW_IT_MPOTION012") //Test si l'objet est bien ce que je veux detruire
{
DestroyObject(oRemove); //Hop je le detruit
GiveGoldToCreature(oPC, 500); //Je le dedommage de 500po
}
oRemove=GetNextItemInInventory(oPC); //Je passe a l'objet suivant dans l'inventaire
}
}
j'ai deja fait la remarque a quelqu'un aujourd'hui, ct pas a toi par hasard ?????????
:enerve: :enerve: :enerve: pas bien mdr
ben vi c comme ca faut deux signes = quand tu compare
Par Skanzo Sylan le 26/1/2003 Ã 23:00:53 (#3107140)
j'ai deja fait la remarque a quelqu'un aujourd'hui, ct pas a toi par hasard ?????????
Relis le sujet Azra :)
Ben vi, ya des fins de week-end un peu dur comme ça :p
Par Azrael07 le 26/1/2003 Ã 23:16:13 (#3107257)
.....................................................................................................
.....................................................................................................
/me prend une corde
vi ben c le résultat d'une semaine de bac blanc, de 4heures de sommeil par jour et d'un weekend 100% prog.:hardos: :hardos: :hardos:
bon ben écoutez c plus de 23h je crois que je vais aller faire un grooooooooooooooooooooooooooos dodo :baille: :baille:
/me hésite
(si j'edite mon message personne ne le vera.......)
ralala ben j'espère que gt pas comme ca tout le weekend sinon je vais pouvoir passer du temp a les débugger les scripts de la journée mdr
Je sais pas si j'oserais encore mettre les pieds dans ce forum
(ptete si je change de nom et d'avatar personne ne me reconnaitra) :eureka:
ben bonne nuit all, pi m'en voulez pas trop surtout, j'ai kd meme pas mérité la pénitence.
Par Skanzo Sylan le 27/1/2003 Ã 0:14:13 (#3107680)
(pendant ce temps, moi je vais remettre un p'tit coup de :hardos: )
JOL Archives 1.0.1
@ JOL / JeuxOnLine