La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 28/12/2024 09:59:01
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
KaG Légende vivante Messages: 445 Localisation: Rodez (12) |
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 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 | |
Serguai Grand Chevalier Messages: 104 |
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 |
Revenir en haut | |
KaG Légende vivante Messages: 445 Localisation: Rodez (12) |
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 | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Improbable que ça ne détruise rien... Tu as bien vérifier tes Tags (mieux vaut plutôt 2 fois qu'1!)??
_________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
KaG Légende vivante Messages: 445 Localisation: Rodez (12) |
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 | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
Huummm... je vais essayé de voir ça de mon côté, k!
_________________ Ca c'est Envoyé! Docteur Cool! Honorable Canard |
Revenir en haut | |
KaG Légende vivante Messages: 445 Localisation: Rodez (12) |
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 _________________ Mon antre (et son module NWN) :ici! |
Revenir en haut | |
coolstar Grand Chevalier Messages: 148 Localisation: Les Mondes - Chambre 270997 |
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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