
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 02/05/2025 12:08: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 |
Ecuyer paumé Acolyte Messages: 27 |
Salut! Je bosse en ce moment sur un script qui permettrait d'effacer les objets plaçables en cours de jeu. Peut être que je me trompe, mais j'ai l'impression que en mode MD, n peut tout à loisir creer des objets, mais en revanche pas les enlever...ou alors j'ai raté un truc.Bref, mon idée et de faire un script lié à un item, ce qui permettrait d'enlever les plaçables dans une zone. Pour l'instant j'en suis là avec un tag d'Item "Nettoyeurdobjets" :
NWScript :
void main() { object oActivator = GetItemActivator(); object oItem = GetItemActivated(); string sTag = GetTag(oItem); location oLoc = GetItemActivatedTargetLocation(); object oObject = GetSpellTargetObject(); if (sTag == "Nettoyeurdobjets") { SetLocalLocation(oActivator,"ZONECIBLE",oLoc); AssignCommand(oActivator,DeleteLocalObject(oObject,"ZONECIBLE")); } } Le script se compile, mais en test, ça ne fonctionne pas...quelqu'un peut me dire ou je me suis trompé? Dernière édition par Ecuyer paumé le 19/11/2005 02:32:42; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() |
finipe Grand Sage du Conseil ![]() Messages: 519 Localisation: Nantes |
Avec DeleteLocalObject, tu ne détruis pas un objet du jeu, mais un objet mis en variable. Il faut tout simplement utiliser DestroyObject (et à condition que l'objet que tu souhaites détruire ne soit pas coché comme indestructible je crois).
_________________ » 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 | ![]() ![]() ![]() ![]() |
Ecuyer paumé Acolyte Messages: 27 |
J'avais déja tenté avec le destroyObject, ça ne fonctionne pas...o alors comme je suis un apprenti scripteur, j'ai du oublier un truc.
|
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Fais attention au type d'objet quand tu les manipules, dans ton script, tu stockes une location et tu essayes de detruire un objet, le type correspond pas, donc ça ne va pas marcher.
Si tu cibles une "location", trouve l'objet placeable le plus proche avec : 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. Si tu cibles un objet tu le définis par 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. et ensuite DestroyObject(oObjet); Attention, je suis pas sur qu'on puisse agir sur les objets "statiques", il faut vérifier. |
Revenir en haut | ![]() ![]() ![]() |
finipe Grand Sage du Conseil ![]() Messages: 519 Localisation: Nantes |
Oui, de toute manière ton script est plutôt bancal. Pour faire ce que tu veux faire, il faut mettre sur le onActivateItem du module :
NWScript :
void main() { object oItem = GetItemActivated(); object oCible = GetItemActivatedTarget(); if(GetTag(oItem) == "TAG_DE_TON_OBJET") { DestroyObject(oCible); } } Ici, GetItemActivatedTarget() définit l'objet ciblé. Si tu utilises GetItemActivatedTargetLocation(), tu auras la "location" ciblée (pour causer frangliche ^^). Edit : Sith Vicious 1 - finipe 0, il a été plus rapide ![]() _________________ » 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 | ![]() ![]() ![]() ![]() |
Ecuyer paumé Acolyte Messages: 27 |
okay, je vois donc ou etait le problème. Bon, et bien je vais mettre ça en application.
Merci du coup de main! ![]() |
Revenir en haut | ![]() ![]() ![]() |
Harmelyo Chevalier Messages: 84 |
si tu commences à scripter et que tu n'as pas encore de scripts dans ton onactivateitem, je te conseil plutot de ne pas utiliser ce script: je m'explique depuis je sais plus quelle version, il n'est plus necessaire de passer par la, ce qui t'évite un script qui a la longue devient très lourd, et pompe de la ressource pour pas grand chose...
Il suffit de créer un script possédant le même nom que le Tag de l'objet: pour faire un baton detruisant, tu crées ton objet, lui ajoute depuis le menu de création des objets-->propriété objet-->lancer un sort-->activer objet (longue portée) et tu double clik dessus pour choisir utilisation illimité puis tu valides en donnant comme nom de TAG: bagdestru Apres il ne te reste qu'à creer un script portant ce même nom, lorsque tu utilisera ton baton, le script se lancera tout seul. Tu feras pas la l'économie de la rafale de test (if) qu'engendre l'utilisation du onactivateitem et c'est bien plus simple pour s'y retrouver quand un script d'objet part en cacahuète. |
Revenir en haut | ![]() ![]() ![]() |
Ecuyer paumé Acolyte Messages: 27 |
Me revoila, avec le script définitif. Cette fois-ci ça fonctionne bien, plus de problèmes:D
Je ré-explique le fonctionnement: Pour les MDs qui créer des objets plaçables en cours de jeu, via le créateur, ce script permet d'effacer les objets plaçables mis en placent, car il n'existe pas de moyen direct pour cela (La plus part des objets creer étant en plus inutilisable et donc inataquable). Ce script est configuré pour être placé dans le onActivated du module, apres avoir creer un objet ayant un pouvoir longue portée : NWScript :
void main() { object oItem = GetItemActivated(); location oLoc =GetItemActivatedTargetLocation(); if(GetTag(oItem) == "Nettoyeurdobjets") { DestroyObject(GetNearestObjectToLocation(OBJECT_TYPE_PLACEABLE,oLoc)); } } Voila, merci encore du coup de main pour m'avoir aidé! |
Revenir en haut | ![]() ![]() ![]() |


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