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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Détruire tous les items portant un tag dans un inventaire

Par Kor-Skarn le 26/1/2003 à 15:26:42 (#3103656)

Bonjour,

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)

Merci beaucoup pour le correctif :)

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)

ben d'un point de vue de gars qui touche a la prog de bas niveau je me dis que ta théorie n'est pas bète du tout. Si j'avais eut a programmer la fonction GetNextItemInInventory, le fait de détruire l'objet n'aurais pas empecher de trouver l'objet suivant, mais il existe une multitude de facons de programmer, et les gars de bioware n'ont pas forcement fait comme je l'aurais fait (je dis pas que ma méthode est mieux, elle a des defaut aussi).

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)

Les 4 heures de sommeil par jour qui précédent les week-end tonitruant, je connais donc je compatis à plein rendement ;)

(pendant ce temps, moi je vais remettre un p'tit coup de :hardos: )

JOL Archives 1.0.1
@ JOL / JeuxOnLine