Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Histoire de pile
Histoire de pile
Par Taern le 30/12/2002 à 4:23:42 (#2905904)
D'ou la nécessité de "manipuler" ces piles d'objets. Premier réflexe, une fonction très simple :void ModifierStack(object oObjet, int nModif)
{
int nPile = GetNumStackedItems(oObjet);
string sRef = GetResRef(oObjet);
object oPC = GetItemPossessor(oObjet);
DestroyObject(oObjet);
SendMessageToPC(oPC, "Quantite : "+IntToString(nPile+nModif)); //Ligne de debug : la quantité calculée est bonne
CreateItemOnObject(sRef, oPC, nPile+nModif);
}
Je crée ensuite un blueprint d'objet avec utilisation illimitée. Dans le OnActivateItem et pour cet objet précis j'appelle la fonction comme ceci :ModifierStack(GetItemActivated(), -1);
1ere utilisation : parfait, le nombres d'éléments empilés baisse de 1.
2e utilisation : heu, il vient pas de m'en bouffer un de trop là ?
3e utilisation : hop là, 4 objets qui partent en fumée, soit 3 objets de trop
etc.
Première réaction : gnééééé :doute:
Deuxième réaction (beaucoup plus tardive) : quand j'utilise ma pile d'objets, plus le nombre d'objet qu'elle contient est petit, plus il y en a de supprimés.
C'est assez étrange, RAT se fera un plaisir de le confirmer ;) mais je suis convaincu que la fonction CreateItemOnObject() se comporte de manière anomale dans cette histoire. D'autant plus que quand j'affiche la quantité calculée, j'obtiens exactement ce à quoi je m'attend.
En bref, voilà, je donne ma langue au chat. Si certains avaient une fonction toute faite, ou tout simplement si quelqu'un pouvait me dire que Bioware a déjà fait cette fonction dans sa ribambelle de fichiers à inclure, ça m'aiderait beaucoup beaucoup :ange:
Merci :merci:
Par Jedaï le 30/12/2002 à 19:53:37 (#2911100)
Par Taern le 31/12/2002 à 0:24:53 (#2912723)
Il a suffit de mettre un délai au CreateItemOnObject de 0.1 seconde pour que tout rentre dans l'ordre.
Merci Jedaï ;)
JOL Archives 1.0.1
@ JOL / JeuxOnLine