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 23/11/2024 20:43:40
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 |
Harpie Acolyte Messages: 22 |
Bonjour,
Bon, je débute dans le scripting nwn, et j'ai une question à laquelle je n'ai trouvée la réponse ni dans la liste des fonctions d'Aurora, ni dans la recherche sur ce forum alors j'espère que l'un de vous pourra m'aider , ce dont je ne doute pas réellement. Voilà, je suis en train de faire le tutorial d'Amaranthe (vous devez connaître ?), l'exercice des deux leviers qui font apparaître un portail. Jusque là, ça va (facile quand le code est fourni dans le tuto..). Le problème est que je désire que le portail disparaisse lorsque je désactive l'un des deux leviers. Alors, premièrement, les leviers, activés ou non, ils sont toujours dans la même position. Quel serait la façon de les faire bouger un peu pour indiquer l'activation/désactivation de ces leviers ? Deuxièmement, pour faire disparaître le portail, j'ai essayé toute sorte de fonctions, aucune d'elles n'a donner les résultats escomptés. J'ai bien réussi à le désactivé, mais pas à le faire disparaître... Help! Merci pour le temps que vous prendrez à me répondre ! _________________ Life's tough. It's tougher if you're stupid. |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Je ne connais pas le tutorial en question, mais essaye avec ça :
NWScript :
object oCible = GetWaypointByTag("WP_cible_portail"); object oPC = GetLastUsedBy(); void main() { if(GetLocalInt(OBJECT_SELF, "var_portail") == FALSE) { PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); object oPortail = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_portal", GetLocation(oCible)); SetLocalInt(OBJECT_SELF, "var_portail", TRUE); } else { PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); DestroyObject(GetNearestObjectByTag("Portal")); SetLocalInt(OBJECT_SELF, "var_portail", FALSE); } } Normalement ça marche, c'est ce que j'utilise par défaut pour ce genre de script. Par contre, deux détails : - Ton levier doit être mis au départ sur la position "désactivée" (propriétés, onglet "avancées") car par défaut il est en l'état activé, et du coup la première animation du plaçable sera double. - Dans cet exemple, j'ai employé le plaçable de portail à resref "plc_portal", qui est non utilisable. Je te conseille de créer ton portail comme un objet plaçable de la palette personnalisée, avec resref et tag uniques, tu auras moins de soucis. Voili voilou _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Harpie Acolyte Messages: 22 |
Le PlayAnimation fonctionne très bien sur les leviers, merci !
Par contre, mon portail ne disparait toujours pas. Je te montre le code que j'utilise : NWScript :
void main() { int nUsed1 = GetLocalInt(OBJECT_SELF, "ETAT_LEVIER") ; int nUsed2 ; if (nUsed1 == 1) { // Si le levier est a " On " alors le placer a " Off " SetLocalInt(OBJECT_SELF, "ETAT_LEVIER", 0); PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); DestroyObject(GetNearestObjectByTag("plc_portal"), 0.0); SetLocalInt(GetObjectByTag("PORTTRIG"), "READY", 0); } else { // Si le levier est a " Off " alors le placer a " On " PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); SetLocalInt(OBJECT_SELF, "ETAT_LEVIER", 1); nUsed1 = GetLocalInt(GetObjectByTag("LEVIER1"), "ETAT_LEVIER"); nUsed2 = GetLocalInt(GetObjectByTag("LEVIER2"), "ETAT_LEVIER"); if ((nUsed1==1) && (nUsed2==1)) // Est ce que les deux leviers sont a " On " ? { object oPortalSpot=GetWaypointByTag("TM_INWP"); CreateObject(OBJECT_TYPE_PLACEABLE,"plc_portal",GetLocation(oPortalSpot), TRUE); SetLocalInt(GetObjectByTag("PORTTRIG"), "READY", 1); } } } Note qu'il y a deux leviers, un trigger et deux waypoints. _________________ Life's tough. It's tougher if you're stupid. |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Ah ok donc si j'ai bien compris, tu veux que quand on active 2 leviers, un portail apparaisse, si et seulement si les deux leviers sont activés...
Dans ce cas je te propose une autre solution utilisant un seul et même script sur les deux leviers. Le principe serait d'utiliser une variable locale stockée sur le module dont la valeur pourrait être 0, 1 ou 2 en fonction du nombre de leviers activés, et deux autres variables locales (une par levier) stockées sur les leviers eux-mêmes pour déterminer s'ils sont ON ou OFF. Ca donnerait quelque chose dans ce goût-là : NWScript :
object oCible = GetWaypointByTag("WP_cible_portail"); object oPC = GetLastUsedBy(); int i = GetLocalInt(GetModule(), "VAR_PORTAIL"); void main() { // Levier OFF --> ON if(GetLocalInt(OBJECT_SELF, "ETAT_LEVIER") == 0) { PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); SetLocalInt(OBJECT_SELF, "ETAT_LEVIER", 1); i = i + 1; SetLocalInt(GetModule(), "VAR_PORTAIL", i); // Si les 2 leviers sont ON if (i == 2) { CreateObject(OBJECT_TYPE_PLACEABLE, "plc_portal", GetLocation(oCible)); } } // Levier ON --> OFF else { PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); SetLocalInt(OBJECT_SELF, "ETAT_LEVIER", 0); i = i - 1; SetLocalInt(GetModule(), "VAR_PORTAIL", i); // Si plus qu'un levier ON, alors juste avant le portail existait : on le detruit if (i == 1) { DestroyObject(GetNearestObjectByTag("Portal")); } } } Script non testé mais ça devrait marcher je pense, à une ou deux erreurs de syntaxe près peut-être Edit : maintenant que je revois ton script je remarque que tu t'es trompé dans ta commande DestroyObject() : tu as mis un resref pour définir l'objet à détruire, alors que c'est un tag que tu dois utiliser. _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Harpie Acolyte Messages: 22 |
Wow ! Ça fonctionne ! Du premier coup en plus ! Merci beaucoup !!
_________________ Life's tough. It's tougher if you're stupid. |
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