La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 00:23:39


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Albator003
Invité


Répondre en citant
Posté le : 15/05/2004 12:39:35 Sujet du message : au sujet des drop de monstres

Bonjour a tous,

J'ai tester pas mal de script qui "nottoye les zones" et aucun ne ma vraimeent convaincu, soit ca ramasse que les drop des Pj soit ca rammasse certain drop de monstres... alors je prefere me lançer dans un script perso.
Mais j'ai un problème pour définir les drop des monstres : je m'explique

Alors ce que je veux faire c'est que quand un drop ou plus sont fais de la part de monstres ou PJ et que il n'y pas plus aucun Pj dans la zones celle ci est nettoyer le probleme c'est que je ne vois pas comment récuprer les drops des monstres alors j'ai regarder dans la palette et j'ai récuprer le tags d'un sac par exemple(identique a un drop) : par exemple le tag "LootBag1" hélas ceci ne fais rien car a mon avis le drop du monstre n'a pas le tag de l'objet "sac" dans la palette donc ma question est qu'elle est le tag d'un drop ? je pense qu'il doivent tous commencer par les meme lettre donc pour le script on peux detruire tout les tags commencant par les meme lettres
Sinon autre chose est-ce que le tag du drop ne change pas selon si on a mis un drop obligatoire sur un monstre?
Si quelqun pourrai m'aider ca serai sympa, pour ma part je retourne faire des test sur ce systeme JE VAIS Y ARRIVER !!! Laughing
 
Revenir en haut
 
Albator003
Invité


Répondre en citant
Posté le : 15/05/2004 14:18:18 Sujet du message :

J'ai trouvé mon bonheur Very Happy donc le tag des Reste c'est BodyBag mais j'ai pas bien plus avancer puisque mon script ne marche toujours pas alors je le met et si quelqun voit d'ou vien le pobleme ca serai bien gentil de sa part de me dire ou est le probleme

NWScript :

int GetIsPCInArea (object oArea)
{
object oObjet = GetFirstObjectInArea(oArea);
while(GetIsObjectValid(oObjet))
{
  return TRUE;
  oObjet = GetNextObjectInArea(oArea);
}
return FALSE;
}
void main()
{
object oArea = OBJECT_SELF;

if(!GetIsPCInArea(oArea))
{
    object oObjet = GetFirstObjectInArea(oArea);
    while(GetIsObjectValid(oObjet) && !GetIsPC(oObjet))
  {
  int nType = GetObjectType(oObjet);
    switch(nType)
  {
      case OBJECT_TYPE_PLACEABLE: // pour les drops

            if(GetTag(oObjet) == "BodyBag")
          {
          object oObjet = GetFirstObjectInArea(oArea);
          while(GetIsObjectValid(oObjet))
          {
          DestroyObject(oObjet);
          oObjet = GetNextObjectInArea(oArea);
          }
          }
          break;
          case OBJECT_TYPE_CREATURE: // pour les cratures

        if(GetIsEncounterCreature(oObjet))
      {
      DestroyObject(oObjet);
      }
          break;
  }
    oObjet = GetNextObjectInArea(oArea);
  }
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


franchement je vois pas d'ou vien le problème si y'a des idées je suis preneur Very Happy
j'ai deja fais au moins 20 test je suis pas a 10 test de plus lol

Merci.
 
Revenir en haut
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 15/05/2004 14:47:34 Sujet du message :

Heu... T sur que ton BodyBag, c'est un OBJECT_TYPE_PLACEABLE?
J'aurais bien mis OBJECT_TYPE_ITEM, chais pas... Embarassed

Heu... C tout ce que je vois pour l'instant, désolé... Confused
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Albator003
Invité


Répondre en citant
Posté le : 15/05/2004 15:35:47 Sujet du message :

un objet de type item ne peux ouvrir un inventaire en étant a terre la seul chose possible est de le prendre donc pour ne pas dir que j'en suis sur je dirai que a 99% l'objet droper est un placeable avec un inventaire Very Happy mais merci de ton idée y'a que comme ca que j'arriverai ou quon arrivera a finir ce script
 
Revenir en haut
 
Albator003
Invité


Répondre en citant
Posté le : 17/05/2004 00:47:05 Sujet du message :

J'ai allégé le script pour faire juste un DestoyObject sur les drops aparament le script marche mais le probleme c'est que il aime pas la boucle... car en cour de jeu un message apparait disant TOO MANY INSTRUCTION : TAG

Alors la je sais plus quoi faire ...Je me demande si un jour j'arriverai a faire ce script Rocket

Voila le script
NWScript :

void main()
{
object oArea = OBJECT_SELF;
  object oObjet1 = GetFirstObjectInArea(oArea);
      int nType = GetObjectType(oObjet1);
            while(GetIsObjectValid(oObjet1) && nType == OBJECT_TYPE_PLACEABLE)
            {


          object oObjet1 = GetFirstObjectInArea(oArea);
          while(GetIsObjectValid(oObjet1)&& GetTag(oObjet1) == "BodyBag")
                    {
          DestroyObject(oObjet1);
          oObjet1 = GetNextObjectInArea(oArea);

                    }
            oObjet1 = GetNextObjectInArea(oArea);
            }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Si quelqun comprend pourquoi il me dis TOO MANY..blabla ca m'aiderai beaucoup sachant que dans la zone je dois avoir environ 20 placeables (portes,arbre,etc..)
Lors de mon test j'ai fais un drop de 5 objets donc pas beaucoup et ... Ca bug ! Mad
 
Revenir en haut
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 17/05/2004 05:56:07 Sujet du message :

Je ne sais pas pourquoi ça foire, mais pourquoi as tu imbriqué deux boucle comme ça? Une seule aurais suffit non? En fait, c'est carement le test pour savoir si c'est un placeable qui sert à rien, là

NWScript :
void main()
{
object oArea = OBJECT_SELF;
  object oObjet1 = GetFirstObjectInArea(oArea);
      int nType = GetObjectType(oObjet1);

      while(((GetIsObjectValid(oObjet1))&&(nType == OBJECT_TYPE_PLACEABLE))
            ||(GetIsObjectValid(oObjet1)&&(GetTag(oObjet1) == "BodyBag")))
      {
      DestroyObject(oObjet1);

      oObjet1 = GetNextObjectInArea(oArea);
      }

}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Là, en théorie, ça te vire tous les placeable + les items de tag BodyBag... Embarassed
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Archéops
Ecuyer
Inscrit le: 03 Mai 2004
Messages: 55
Répondre en citant
Posté le : 17/05/2004 08:06:05 Sujet du message :

Salut ...

Pour ma part je créerai une boucle similaire à la votre mais comme ceci...

NWScript :
object oArea = OBJECT_SELF;
object oObjet1 = GetFirstObjectInArea(oArea);
int nType = GetObjectType(oObjet1);

while (GetIsObjectValid(oObjet1))
{
  if ((nType == OBJECT_TYPE_PLACEABLE)||(GetTag(oObjet1) == "BodyBag")))/* suspect parenthesis end found !*/


  {
  DestroyObject(oObjet1);
  }

oObjet1 = GetNextObjectInArea(oArea);
}


Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


J'ai fais comme cela car en général les conditions multiples sur while ça foire, dans mieux vaut mettre des if, c'est plus prudent..
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Albator003
Invité


Répondre en citant
Posté le : 17/05/2004 13:54:57 Sujet du message :


Citation :
mais pourquoi as tu imbriqué deux boucle comme ça?
La premiere boucle est pour faire defiler tout les objet et la seconde boucle pour detruire tout les objet de tag "BodyTag"
Je pense avoir compris en faite ma premiere boucle ne s'arrete jamais puisque elle trouve toujours des objet placeable...


Citation :
Là, en théorie, ça te vire tous les placeable + les items de tag BodyBag... Embarassed
Et ca j'ai deja essayer mais alors la bug total y'a tout qu iest supprimer(a savoir les WP, les trans, declancheur etc...) Laughing donc pas bonne solution en gros ca detruit la zone.

J'ai quand meme essayer vos script sauf que j'ai changer vos || en && sinon ca detruit tout les placeable.Et c'est sans suite toujours le meme probleme les drops sont toujours la.

J'ai donc re fais un test au j'ai laisser quelque drop a terre j'ai enregistrer la partie en cours de jeu et je suis retourner dans l'éditeur et j'ai ouvert la sauvegarde. Les tag des reste est bien BodyBag mais par contre les drops n'ont pas de resref...Reste a savoir si ca viens pas de la...

Je suis parti donc sur une autre idées que j'ai tester sur un trigger un script que j'ai placer sur le OnEnter. Le principe est un peu différent juste un script de test qui prend les item compris dans le drop..donc qui detruit le drop et ca sa marche *A le cerveau retourner*
NWScript :

void main()
{

object oPC = GetEnteringObject();

object oObjet1 = GetNearestObjectByTag("BodyBag",oPC);
object oObject = GetFirstItemInInventory(oObjet1);
  while(GetIsObjectValid(oObject)==TRUE)
        {
DestroyObject(oObject);
oObject = GetNextItemInInventory(oObjet1);
        }


}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Le probleme de maintenant c'est que il n'y a plus de boucle pour les et donc il prend le drops le plus proche et le vide (celui ci disparait)
 
Revenir en haut
 
olfleouf
Acolyte
Inscrit le: 21 Nov 2003
Messages: 35
Répondre en citant
Posté le : 17/05/2004 16:23:13 Sujet du message :

je ne suis pas sur d'avoir tout compris au problème mais veux-tu vraiment détruire les placeables de la zone? Si c'est non, ceci devrait suffire :

NWScript :

void main()
{
object oArea = OBJECT_SELF;
  //on va chercher le premier objet de la zone
  object oObjet1 = GetFirstObjectInArea(oArea);
            //tant que l'on n'a pas fait tout les objets
            while(GetIsObjectValid(oObjet1))
            {
          //si l'objet a le bon tag (condition suffisante sauf si tu utilises ce tag)
          if (GetTag(oObjet1) == "BodyBag")
                    {
          DestroyObject(oObjet1);
                    }
          oObjet1 = GetNextObjectInArea(oArea);
            }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
Arkanis, forum jeux de rôle dungeons et dragons 3.5
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Muad'Dib Maitre de Dune
Grand Chevalier
Inscrit le: 13 Jan 2004
Messages: 124
Localisation: Dans un petit trou de ver des sable a coté de nice
Répondre en citant
Posté le : 17/05/2004 17:59:56 Sujet du message :

Si c'est pour les drop de monstre ou pour tout object a terre, sa sa irait..
NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

A mettre sur le onHeartBeat d'un placeable non statique...
_________________
Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature*
Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Albator003
Invité


Répondre en citant
Posté le : 17/05/2004 22:05:07 Sujet du message :

J'aimerai vous dire que ca y est ca marche hélas non toujours pas j'ai tester to nscript olfleouf sans succes quand a ton script mouad'dib je connais ce systeme et ce n'est pas ce que je veux en plus il ramasse que les drop des joueur car il y a un OBJECT_TYPE_ITEM or le drop est un placeable je tenterai de modif to nscript pour faire ce que je veux mais avant tout je voulais limiter l'utilisation d'une creature pour detruire les drop.
En tout cas merci d'apporter vos idées et votre soutient
 
Revenir en haut
 
olfleouf
Acolyte
Inscrit le: 21 Nov 2003
Messages: 35
Répondre en citant
Posté le : 17/05/2004 23:04:34 Sujet du message :

Tu es bien sur que leur tag est BodyBag? Mon script ne fonctionne pas où fait des erreurs? (genre TOO many instruction) Si tu met ca :

NWScript :

void main()
{
object oTarget = OBJECT_SELF;
object oBody = GetNearestObjectByTag("BodyBag", oTarget);
string sName = GetName(oBody);
object oPC = GetFirstPC();
SendMessageToPC(oPC, sName);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Ca donne quoi? Et aussi tu l'as mit où mon script? (le premier), celui la est à mettre dans un oHB d'un objet de la zone)
_________________
Arkanis, forum jeux de rôle dungeons et dragons 3.5
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Mr-XXS
Ecuyer
Inscrit le: 15 Mar 2004
Messages: 49
Répondre en citant
Posté le : 18/05/2004 14:15:10 Sujet du message :

Les drops de monstres sont un peu particuliers...
Ils ont pour nom ... heu : "Restes" sans doute mais je suis pas sur, peu importe.
Pour tag : "BodyBag" la je confirme.
Pour resref : "" ... pas de resref quoi.

Ensuite, pour ce qui est du type d'objet, je ne sais pas trop ... sans doute est il considéré comme un placable mais un placable tres spécial.

En effet, chaque drop est lié a une créature. En fait, je pense que l'on peut dire qu'il s'agit de l'inventaire de la créature ou meme de la créature elle meme (je préfere quand meme penser qu'il s'agit de son inventaire.)
Et ces drops apparaissent tant que l'inventaire de la créature qu'ils représente n'est pas vide. S'il est vide, il disparaissent d'eux meme (sauf en cas de bug).

Par conséquent, un script dans ce genre peut fonctionner (a insérer dans un autre suivant a quel moment et sous quelles conditions on veut nettoyer la zone)

NWScript :

void VideInv(object oObj);

void main()
{
  object oArea = OBJECT_SELF;
  object oObj = GetFirstObjectInArea(oArea);
  while(oObj != OBJECT_INVALID) //On recherche tous les drops.
  {
    if(GetTag(oObj) == "BodyBag")
      VideInv(oObj);
    oObj = GetNextObjectInArea(oArea);
  }
}

void VideInv(object oObj)
{
  object oItem = GetFirstItemInInventory(oObj);
  while(oItem != OBJECT_INVALID) //On vide l'inventaire
  {
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oObj);
  }
  DestroyObject(oObj, 0.5);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Albator003
Invité


Répondre en citant
Posté le : 19/05/2004 14:45:12 Sujet du message :

Un gros merci !!! a tous ! plus particulièrement a Mr-XXS puisque son script est carement ce que je veux donc j'ai rien a modif enfin juste quelque ligne a ajouter et c'est bon je donne donc le script que j'ai finalement fais pour moi a l'aide des autres idées sachant que celui de Mr-XXS marche tres bien pour virer les drops(meme sur un delcancheur)

Donc voila le mien

NWScript :

int GetIsPCInArea (object oArea)
{
object oCreature = GetFirstObjectInArea(oArea);
while(GetIsPC(oCreature) == TRUE)
{
  return TRUE;
  oCreature = GetNextObjectInArea(oArea);
}
return FALSE;
}

void VideInv(object oObj);
void main()
{
object oArea = OBJECT_SELF;
if (!GetIsPCInArea (oArea))
{


  object oObj = GetFirstObjectInArea(oArea);
  while(oObj != OBJECT_INVALID) //On recherche tous les drops.
  {
    if(GetTag(oObj) == "BodyBag")
      VideInv(oObj);
    oObj = GetNextObjectInArea(oArea);
    if(GetObjectType(oObj)== OBJECT_TYPE_CREATURE)
      if(GetIsEncounterCreature(oObj))
            DestroyObject(oObj);
  }

}
}
void VideInv(object oObj)
{
  object oItem = GetFirstItemInInventory(oObj);
  while(oItem != OBJECT_INVALID) //On vide l'inventaire
  {
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oObj);
  }
  DestroyObject(oObj, 0.5);

}


Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


voila j'en dis pas plus c'est largement compréhensible Laughing
 
Revenir en haut
 
Cocasso
Ecuyer
Inscrit le: 24 Mai 2004
Messages: 41
Répondre en citant
Posté le : 03/06/2004 14:04:49 Sujet du message :

Merci pour ce script...^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 86.709ms