La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2024 02:35:56


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
KaG
Légende vivante
Inscrit le: 30 Sep 2002
Messages: 445
Localisation: Rodez (12)
Répondre en citant
Posté le : 28/12/2002 13:38:32 Sujet du message : souçaille de script conditionnel

KIKOOOOOO

Voilà, je me suis basé sur le script de Sergai pour faire ce qui suit :

1) je mets de la poudre dans une barrique, une fois fait ceci, les gars autour se cassent plus loin vers un abri, et 2 variables (j'en ai rajouté une pour mes tests) passent à 1.
Voici ce que j'ai mis dans le "onclose" de la barrique
Code :
void main()
{
   //On n'a besoin de créer l'objet qu'une seule fois
   if(GetLocalInt(GetModule(),"created")==1)
      return;

   int hasitem1 = GetLocalInt(GetModule(),"hasitem1");
   object inventory = GetFirstItemInInventory();

   //On s'assure que l'objet est dans l'inventaire
   while(inventory != OBJECT_INVALID && hasitem1 == 0){
      /*Si on trouve l'objet on met la variable a 1 et on peux arrêter la vérification*/
      if(GetTag(inventory) == "ef1_poudre")
           hasitem1 = 1;
      /*Si on a parcouru tout l'inventaire sans trouver l'objet on met la variable à 0*/
      if(inventory == OBJECT_INVALID)
          hasitem1 = 0;

      inventory = GetNextItemInInventory();
   }

   /*Une fois la vérification faite on affecte les variables globales (pour que l'autre conteneur sache ci celui ci contient l'objet), et si l'autre conteneur a l'objet on effectue la création du nouvel objet*/
   if(hasitem1 == 1)
   {
  SetLocalInt(GetPCSpeaker(), "ef1_vpoudre", 1);
  object oabri = GetObjectByTag("ef1_abri");
  object ofuy1 = GetObjectByTag("ef1_gardseb12");
  object ofuy2 = GetObjectByTag("ef1_gardseb13");
  object ofuy3 = GetObjectByTag("ef1_gardseb14");
  object ofuy4 = GetObjectByTag("ef1_loupg");
  object ofuy5 = GetObjectByTag("ef1_glarin");
  object ofuy6 = GetObjectByTag("ef1_meline");
  AssignCommand(ofuy1, ActionForceMoveToObject(oabri));
  AssignCommand(ofuy2, ActionForceMoveToObject(oabri));
  AssignCommand(ofuy3, ActionForceMoveToObject(oabri));
  AssignCommand(ofuy4, ActionForceMoveToObject(oabri));
  AssignCommand(ofuy5, ActionForceMoveToObject(oabri));
  AssignCommand(ofuy6, ActionForceMoveToObject(oabri));
   }
   else SetLocalInt(GetModule(),"hasitem1",0);
}



Ca se passe bien, les NPC s'en vont (j'aurais préféré qu'ils courrent, mais bon)

2)Ensuite, le PC doit se rendre lui aussi à l'abri avant que ca ne pète. Lorsqu'il s'y rend, il passe sur un trigger qui
-doit déclencher 2 sons (un boum et des rochers qui tombent)
-envoie un message au PC (pour l'instant "test"
-détruit les rochers portant tous les même tag
-s'autodétruit

Code :
int StartingConditional()
{
object oPC = GetEnteringObject();
string sSoundName = "as_cv_boomdist1";
string sSoundName2 = "as_cv_bldgcrumb3";
    if(!(GetLocalInt(GetPCSpeaker(), "ef1_vpoudr1") == 1))
        return FALSE;

    return TRUE;
  SendMessageToPC(oPC,"test debug");
  AssignCommand(oPC,PlaySound(sSoundName));
  AssignCommand(oPC,PlaySound(sSoundName2));
  object oroc = GetObjectByTag("ef1_ca");
  DestroyObject (oroc,0.5);
  DestroyObject(GetObjectByTag ("ef1_boum"));
}


Le souci est que ca ne marchait pas, et en changeant les conditions, je me trouve avec des erreurs de syntaxe Confused
J'suis vraiment une quiche, mais ayant du mal à comprendre les "int startconditional" et les "void main", je vois pas ce que je dois modifier.

Quelqu'un peut il m'aider svp?
_________________
Mon antre (et son module NWN) :ici!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Serguai
Grand Chevalier
Inscrit le: 07 Déc 2002
Messages: 104
Répondre en citant
Posté le : 28/12/2002 14:19:22 Sujet du message : A cause du return

Il y'a un problème de portée.
Le code que tu as ajouté après le return TRUE ne s'exécutera jamais puisque que le return fini la fonction.
Du coup ton message d'erreur est peut être un truc du style "Instruction jamais atteinte ...".
De toutes façons, je ne pense pas que ce code devrait aller dans un script conditionnel ...

"int StartingConditional" renvoie un entier. C'est utilisé dans les conversations pour savoir si tel texte doit s'afficher plûtot que tel autre.
"void main" ne renvoie rien (ou alors renvoie qq chose de vide), et c'est là que tu dois exécuter toutes tes actions

donc tu devrais faire un truc dans le genre:
Code :

void main()
{
   object oPC = GetEnteringObject();
   string sSoundName = "as_cv_boomdist1";
   string sSoundName2 = "as_cv_bldgcrumb3";
   if(GetLocalInt(GetModule(), "ef1_vpoudr1") == 1)
   {
      SendMessageToPC(oPC,"test debug");
      AssignCommand(oPC,PlaySound(sSoundName));
      AssignCommand(oPC,PlaySound(sSoundName2));
      object oroc = GetObjectByTag("ef1_ca");
      DestroyObject (oroc,0.5);
      DestroyObject(GetObjectByTag ("ef1_boum"));
   }


Remarque que j'ai remplacé GetPCSpeaker par GetModule, parce qu'en fait tu n'es pas dans le cadre d'une conversation, donc GetPCSpeaker te renverrai un OBJECT_INVALID je pense.
Donc dans ton premier code, pense à changer le GetPCSpeaker en GetModule également.

Bon courage Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Numéro ICQ Ignorer l'utilisateur
 
KaG
Légende vivante
Inscrit le: 30 Sep 2002
Messages: 445
Localisation: Rodez (12)
Répondre en citant
Posté le : 28/12/2002 16:16:38 Sujet du message :

yahou, ca marche presque, thanks!
Ca fait bien le boum, mais le destroy ne détruit rien...

Exactement le même problème que j'ai ailleurs... sur un autre module

En tout cas merci, ca avance :>
_________________
Mon antre (et son module NWN) :ici!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 28/12/2002 16:24:05 Sujet du message :

Improbable que ça ne détruise rien... Tu as bien vérifier tes Tags (mieux vaut plutôt 2 fois qu'1!)?? Very Happy

Wink
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
KaG
Légende vivante
Inscrit le: 30 Sep 2002
Messages: 445
Localisation: Rodez (12)
Répondre en citant
Posté le : 28/12/2002 16:51:42 Sujet du message :

bah vi... C'est la première chose que je fais, et je fais même des copier/coller pour être sur...
Là, j'avais mis plusieurs trucs avec le même tag, et c'est en ce moment en train de recompiler en mettant des tags différents.

J'ai eu le même problème (voir post vieux de quelques jours) avec des effets lumineux qui sont jamais détruits, et même en vérifiant bien les tags et tout
_________________
Mon antre (et son module NWN) :ici!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 28/12/2002 16:56:02 Sujet du message :

Huummm... je vais essayé de voir ça de mon côté, k! Wink
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
KaG
Légende vivante
Inscrit le: 30 Sep 2002
Messages: 445
Localisation: Rodez (12)
Répondre en citant
Posté le : 28/12/2002 17:39:55 Sujet du message :

CA MAAAAAAAAAAAAAAAAAAAARCHE!

Alors j'ai mis un tag différent pour chaque rocher et j'ai décoché "statique", et figurez vous que si c'est coché et bien on ne peut pas détruire l'objet!
J'ai testé sur mes effets lumineux pour l'autre module (morteprune) et c'est pareil!

Merci de m'avoir faite creuser mes méninges Razz
_________________
Mon antre (et son module NWN) :ici!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
coolstar
Grand Chevalier
Inscrit le: 16 Oct 2002
Messages: 148
Localisation: Les Mondes - Chambre 270997
Répondre en citant
Posté le : 28/12/2002 20:58:05 Sujet du message :

Statistique??? Heeuuu... de rien! Embarassed

Wink
_________________
Very Happy Ca c'est Envoyé!

Docteur Cool! Honorable Canard Cool
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 42.158ms