JeuxOnLineForumsPlusConnectés : 576 (sites) | 1157 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Vider un inventaire de tout les objets ayant un tag précis RSS
   
Répondre
Partager Outils Rechercher
Florine
Empereur / Impératrice
 
Question

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

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
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
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 ^^
Lien direct vers le message - Vieux
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
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...
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
^^

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 ^^)
Lien direct vers le message - Vieux
Florine
Empereur / Impératrice
 
Merci beaucoup pour votre aide, ça fonctionne bien maintenant !
Merci merci !!
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Vider un inventaire de tout les objets ayant un tag précis
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 11h29.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite