Vider un inventaire de tout les objets ayant un tag précis

Répondre
Partager Rechercher
Coucou !

J'ai écrit un petit script qui est censé vider le sac d'un joueur de tout les objets ayant un tag spécifique ("CLEFPRISON" dans mon cas).

Mais mon script bug, il se compile mais dans le jeu il tourne en boucle pendant un moment (= gros lag) puis ça écrit "Too much instruction" et ça détruit la clef.

Voilà le script, l'erreur doit être vers le while et sais pas comment la corriger (j'ai vu un script pour vider l'inventaire de tout les objets et j'ai pas réussi à adapter puisque ça bug).

Code PHP:

void main()
{
object oActivator=GetLastSpeaker();
object oTargetGetLocalObject(oActivator"gardeswandtarget");
object oItem=GetItemPossessedBy(oTarget"CLEFPRISON");
int nbkeys;




 while(
oItem!= OBJECT_INVALID)
 {
  
int nbkeys=nbkeys+1;
  
DestroyObject(oItem);
  
oItem=GetItemPossessedBy(oTarget"CLEFPRISON");
 }

  
string cles=IntToString(nbkeys);
  if (
nbkeys!=0)
  {
  
AssignCommand(oActivator,ActionSpeakString("La personne avait" "cles" "clefs de la prison sur elle"));
  }
  else
  {
  
AssignCommand(oActivator,ActionSpeakString("La personne ne porte rien de suspect"));
  }


Je pourrais faire tourner le script 5 fois par exemple par incrémentation mais le but c'était qu'il tourne tant que l'inventaire du joueur contient encore une clef de tag "CLEFPRISON".

Merci d'y jeter un oeil et de me livrer la formule magique

Florine
Le script est bon, mais le destroy object s'effectue apres la resolution du script, je crois.

Resultat, il retrouve le tag de la clef a chaque fois.

Essaye plutot ca :

Code PHP:

int nInvNum 18;
object oItem;
object oPC GetTonPCCommeTuVeux

while (nInvNum 0)
    {
    
oItem GetItemInSlot(nInvNum,oPC);
    if (
GetTag(oItem)=="destroy_me")
        {
        
DestroyObject(oItem);
        }
    
nInvNum--;
    }
oItem GetFirstItemInInventory(oPC);
while (
GetIsObjectValid(oItem))
    {
    if (
GetTag(oItem)=="destroy_me")
        {
        
DestroyObject(oItem);
        }
    
oItem GetNextItemInInventory(oPC);
    } 

Ca devrait marcher mieux ^^
Tu dois avoir un pb avec ta fonction destroy object... Elle s'effectue pas au bon moment, si ça se trouve, donc il effectue Destroy object tout le temps, qu'il trouve la clef ou pas, il est persuadé de la trouver en quelque sorte et la détruit...

EDIT // pff... doublé par eM avec 10 minutes d'avance et sans scripts... M'apprendra à vouloir aider...
^^

Copier / coller : j'etais sur mon mod, et comme j'utilise des items pour simuler des sorts, ca me sert bien, ce truc la ^^
(bien pratique pour faire des marteaux magique de priest, ou des armures speciales, ou la lame noire de destruction ^^)
Répondre

Connectés sur ce fil

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