La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/06/2024 21:57:10


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Zanon-blood
Acolyte
Inscrit le: 25 Jan 2005
Messages: 38
Répondre en citant
Posté le : 18/01/2006 23:02:53 Sujet du message : drop objet

Bonjour ou bonsoir

petit problemme de scripte j'ai crée un scripte qui donne des objet aleatoir Very Happy le problemme c'est q'il marche pas Mad

Dans le OnDeath du monstre
void main()
{
object oTarget = ACTION_DROPITEM();
CreateItemOnObject("wswmsc003",oTarget);
CreateItemOnObject("wswmsc011",oTarget);
CreateItemOnObject("wswmsc012",oTarget);
CreateItemOnObject("wswmsc002",oTarget);
}

un peut d'aide svp je suis pas tres fore en scripte.Embarassed
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 19/01/2006 00:02:21 Sujet du message :

Salut, alors avec ce script tu vas créer 4 items. En effet, le script va s'éxécuter ligne après ligne jusqu'à la fin, et comme tu n'as pas placé de condition, toutes les commandees vont s'effecuer.
De plus, tu n'as pas bien défini la cible (target), car tu as mis une constante ACTION, pour un objet, ce qui n'est pas compatible.

Voilà le script corrigé, et pleinement commenté:

NWScript :
/* Script a ajouter dans le OnDeath de la creature */

void main()
{
// oCreature = la creature tuee
// nType = le type d'objet cree: un item
// lLieu = l'endroit ou est mort la creature
object oCreature = OBJECT_SELF;
int nType = OBJECT_TYPE_ITEM;
location lLieu = GetLocation(oCreature);

            // n est une valeur alatoire entre 0 et 3,
            // donc n=0, ou n=1, ou n=2, ou n=3 selon le resultat du Random(4)
            // switch correspond a une imbrication de "si"
            // si n=0 on cree l'item qui a pour Blueprint "wswmsc003" en lLieu
            // si n=1 on cree l'item qui a pour Blueprint "wswmsc011" en lLieu
            // si n=2 on cree l'item qui a pour Blueprint "wswmsc012" en lLieu
            // si n=3 on cree l'item qui a pour Blueprint "wswmsc002" en lLieu
            int n = Random(4);
            switch (n)
          {
            case 0: CreateObject(nType, "wswmsc003", lLieu); break;
            case 1: CreateObject(nType, "wswmsc011", lLieu); break;
            case 2: CreateObject(nType, "wswmsc012", lLieu); break;
            case 3: CreateObject(nType, "wswmsc002", lLieu);
          }
}
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.

Je ne sais pas, s'il existe un moyen de ne pas toucher au OnDeath, pour placer ce script sur la creature, dans le OnUserDefined.
Si quelqu'un le sait, il peut nous en faire part, de même, si vous pensez qu'on peut améliorer ce script, n'hésitez pas à poster vos remarques.
Merci !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 19/01/2006 00:23:16 Sujet du message :

En orthographe non plus d'ailleurs...
Bonjour quand même,

Il y a un problème dans la définition de ton oTarget, déjà tu mets des parentheses à une constante alors qu'il ne faut pas, ensuite tu met une constante d'action pour définir un objet, pourquoi? Si je comprend bien tu veus juste créer un item aléatoire dans la créature qui meurs pour qu'elle le drop dans ce cas tu met plutôt ceci dans le OnDeath
NWScript :

void main()
{
object oKiller = GetLastKiller();
string sRes;
switch(d4())
{
case 1:sRes="wswmsc003";break;
case 2:sRes="wswmsc011";break;
case 3:sRes="wswmsc012";break;
case 4:sRes="wswmsc002";break;
}
object oItem=CreateItemOnObject(sRes,OBJECT_SELF);
SetDroppableFlag(oItem, TRUE);
}
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.


Voilà mais je ne sais plus si ça marche dans le OnDeath j'avais eu des problèmes avec. Si ça marche pas tu rajoutes juste les lignes à la fin du script dans le OnDamage avec
NWScript :
if(GetCurrentHP(OBJECT_SELF)<0){
//Les lignes qui sont au dessus
}
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.


Penses à enregistrer le script du OnDamage sous un autre nom après.

Eh bien pendant que j'écrivais ma réponse l'Erudit m'a précédé.
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
Dernière édition par BenGorre le 19/01/2006 00:27:46; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 19/01/2006 00:26:16 Sujet du message :

trop tard.. post à supprimé s'il vous plait
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 19/01/2006 06:16:40 Sujet du message :

Et bien, on diriat que j'ai devancé deux compagnons Laughing !

Néanmoins, ton script m'a l'air mieux que le mien BenGorre, c'est pourquoi je le recommande, avant le mien.

Enfin, savez vous s'il y a moyen de ne pas toucher au OnDeath, mais de mettre tout cela dans un OnUserDefined, en faisant quelques manipulations supplémentaires?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Zanon-blood
Acolyte
Inscrit le: 25 Jan 2005
Messages: 38
Répondre en citant
Posté le : 19/01/2006 10:46:12 Sujet du message :

Déja merci de vos reponce Very Happy mait sa marche pas aucun ne marche j'ai essaye de trouve le problemme mait sa marche toujour pas Mad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 19/01/2006 11:27:10 Sujet du message :


L'Erudit a écrit :

Enfin, savez vous s'il y a moyen de ne pas toucher au OnDeath, mais de mettre tout cela dans un OnUserDefined, en faisant quelques manipulations supplémentaires?
Oui c'est l'event 1007 pour le OnDeath, il faut comme pour les autres l'activer dans le OnSpawn. Me semble que à droite dans l'éditeur de script il y a un exemple de OnUserDefined avec tous les event commenté(disant quel num d'event correspond à tel ou tel event).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Zanon-blood
Acolyte
Inscrit le: 25 Jan 2005
Messages: 38
Répondre en citant
Posté le : 19/01/2006 18:33:42 Sujet du message :

merci pour ta reponce

mait sa marche toujour pas déja esque c'est possible de faire des objet aleatoir?.Embarassed
 
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 : 19/01/2006 19:25:15 Sujet du message :


BenGorre a écrit :
Voilà mais je ne sais plus si ça marche dans le OnDeath j'avais eu des problèmes avec.
Y a encore plus simple (à mon avis) c'est de créer les items sur le PNJ lors du spawn (methode de Bioware d'ailleurs).
Si le drop dépend pas de celui qui tue, c'est la plus meilleure solution.

==> L'erudit : d'après Bioware c'est un peu risquouille d'utiliser l'event 1007, il se déclanche pas à chaque fois.

==>Zanon : peut-être que tu ferais mieux de faire un peu d'orthographe avant de faire des scripts... J'dis ça j'dis rien.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 20/01/2006 00:12:07 Sujet du message :

C'est une bonne idée Sith. Ensuite, si j'ai bien compris, il suffit juste d'activer la case: corps détroussable, et le tour est joué...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 20/01/2006 17:14:27 Sujet du message :

Bonjour bonjour,

Si tu met corp détroussable cela laissera le corps à terre à la mort au lieu d'un petit sac.

Pour que l'objet soit laissé à la mort il faut faire:
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.


Cette fonction active ou désactive (TRUE ou FALSE) l'option Droppable de l'objet, si elle est activée l'objet sera laché à la mort.
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 20/01/2006 18:23:42 Sujet du message :

D'accord, merci pour les précisions, j'y vois plus clair à présent.
 
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 29.947ms