La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2025 12:16:47


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 17/11/2005 23:03:58 Sujet du message : Effacé des objets plaçables [Résolu]

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"));
}
}
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 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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 17/11/2005 23:13:36 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 17/11/2005 23:31:31 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 17/11/2005 23:41:54 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 17/11/2005 23:46:28 Sujet du message :

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);
  }
}
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.


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 Laughing
_________________
» 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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 18/11/2005 00:00:13 Sujet du message :

okay, je vois donc ou etait le problème. Bon, et bien je vais mettre ça en application.
Merci du coup de main! Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 18/11/2005 01:01:04 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ecuyer paumé
Acolyte
Inscrit le: 15 Nov 2005
Messages: 27
Répondre en citant
Posté le : 19/11/2005 01:06:55 Sujet du message :

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 :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, merci encore du coup de main pour m'avoir aidé!
 
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 33.159ms