JeuxOnLineForumsPlusConnectés : 758 (sites) | 1371 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Disparition de montre... RSS
   
Répondre
Partager Outils Rechercher
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 

Disparition de montre...

Maintenant comment puis je faire pour faire disparaitre un montre après qu'il ai di un dialogue ?
Lien direct vers le message - Vieux
Avatar de Zunzun
Zunzun
Alpha & Oméga
 
Avatar de Zunzun
 
DestroyObject ou bien ActionJumpToObject/Location
Lien direct vers le message - Vieux
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 
Si c'étai possible d'y aller plus en détail ... ca me serai bien plus utile .... Merci quand même .
Lien direct vers le message - Vieux
Avatar de Zunzun
Zunzun
Alpha & Oméga
 
Avatar de Zunzun
 
Je pense pas, justement je te donne les noms des fonctions, l'idéal serait que tu essayes de te débrouiller un peu toi-meme. Pour info, en détail, avec DestroyObject le script doit donner :

Code PHP:
void main()
{
    
DestroyObject(OBJECT_SELF);

Lien direct vers le message - Vieux
Avatar de sojkowski
sojkowski
Dauphin
 
Avatar de sojkowski
 
moi ce qui m'aide le plus c'est qu'on me donne le script ou une partie, je l'analyse et hop du coup j'apprend bc plus vite

j'ai que 2 semaines de prog, j'ai encore du chemain devant moi avant de me taper un jeu d'echec
Lien direct vers le message - Vieux
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 
je comprend pas !
Je veux que mo monstre soit détruit, j'ai mis :

Code PHP:
DestroyObject("Tag de la créature"); 
Voila ça ca ne marche pas !
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
c'est normal : essaye ca :

Code PHP:
DestroyObject(GetObjectByTag("TAG")); 
Ca devrait etre mieux.
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
Telecharge le Lexicon mis a jour si tu l as pas c super utile

Sinon, le fonction DestroyObject est tres explicite ( principe du langage objet en général ) et demande un objet.

Si tu lui rentre un Tag, elle va pas être contente. Il est donc logique de lui donner l objet associé au Tag

Pour ca tu utilise la fonction GetObjectByTag
__________________
http://ctprofiles.net/303223 [img]http://******************/caarheim/PA.gif[/img][img]http://******************/caarheim/buff.gif[/img] @2.29 de vitesse ... PAN PAN dans le ...
Lien direct vers le message - Vieux
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 
La j'ai mis ça :

Code PHP:
//::///////////////////////////////////////////////
//:: NW_O2_SKELETON.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
   Turns the placeable into a skeleton
   if a player comes near enough.
*/
//:://////////////////////////////////////////////
//:: Created By:   Brent
//:: Created On:   January 17, 2002
//:://////////////////////////////////////////////
void ActionCreate(string sCreaturelocation lLoc)
{
    
CreateObject(OBJECT_TYPE_CREATUREsCreaturelLoc);
}
void main()
{
   
object oCreature GetNearestCreature(CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PC);
   if (
GetIsObjectValid(oCreature) == TRUE && GetDistanceToObject(oCreature) < 10.0)
   {
    
effect eMind EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);
    
string sCreature "Tag créature créer";
    
location lLoc GetLocation(OBJECT_SELF);
    
DelayCommand(0.3ActionCreate(sCreaturelLoc));
    
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeMindGetLocation(OBJECT_SELF));
    
SetPlotFlag(OBJECT_SELFFALSE);
    
DestroyObject(OBJECT_SELF0.5);
    
DestroyObject(GetObjectByTag("Tag créature a faire disparaitre"));
   }

Quand le Pj touche un objet, il disparai et créer un monstre, je veu de plus qu'il fasse disparaitre un autre monstre que j'ai placé, c'est pourquoi j'ai rajouté la dernière ligne.
Et cela ne marche pas la créature n eveu pas disparaitre.
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Code PHP:
string sCreature "Tag créature créer"
Quand tu creer ce n'est pas le Tag a mettre met le ResRef ==> VOIR LEXICON
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Il faut bien regarder ce que fait chaque fonction. L'éditeur de script d'aurora permet de retrouver facilement une fonction et donne l'utilisation.

Tapez "destroy" dans le filtre en haut à droite.
Code PHP:
// Destroy oObject (irrevocably).
// This will not work on modules and areas.
void DestroyObject(object oDestroyfloat fDelay=0.0f
Cela montre bien que la fonction s'applique sur une variable object et non une variable string comme un TAG.

Il faut donc trouver une autre fonction capable de retrouver la variable object qui renvera le monstre. Le TAG est en fait une bonne solution mais ce n'est pô la seule mais essayons tout de même.


Tapez "TAG" dans le filtre.
Nous avons ainsi GetTag mais cette fonction va nous donner la variable string du TAG d'un object. Le TAG nous l'avons déjà, c'est la fonction inverse qu'il nous faut.
Code PHP:
// Get the nNth object with the specified tag.
// - sTag
// - nNth: the nth object with this tag may be requested
// * Returns OBJECT_INVALID if the object cannot be found.
// Note: The module cannot be retrieved by GetObjectByTag(), use GetModule() instead.
object GetObjectByTag(string sTagint nNth=0
GetObjectByTag semble être la meilleure solution car nous recherchons bel et bien un object, nous voyons bien d'ailleurs la déclaration au début de la ligne:
object GetObjectByTag(string sTag, int nNth=0)


Dans chacune de ces deux fonctions (DestroyObject et GetObjectByTag), nous pouvons nous permettre de ne pas renseigner les variables float fDelay et int nNth, respectivement pour DestroyObject et GetObjectByTag.

Pourquoi? Nous pouvons voir dans la définition de chaque fonction que ces variables sont suivies de "=valeurquelconque", ce qui veut dire qu'elles ont une valeur par défaut.
Si on n'a pas besoin de ces variables dans nos fonctions, il suffit de taper notre script comme si ces variables float fDelay et int nNth n'existaient pas.
Code PHP:
DestroyObject(object oDestroy

Les fonctions présentées dans la description comporte toujours le type de variable demandée.
Par exemple dans la fonction GetObjectByTag:
string sTag

Nous n'avez pas à mettre "string" dans la fonction quand vous taper votre script, cela sert seulement à déclarer la variable mais cela est inutile car la fonction sait déjà quel type de variable elle a besoin.


Le filtre permet certe de retrouver la description d'une fonction mais une fois que vous avez rentré la fonction dans votre script, vous pouvez faire un double-clic directement dans votre script pour en avoir la description, ainsi on est pô obligé de passer par le filtre.


Pas à pas:
Pour construire la ligne de script, on rentre la fonction DestroyObject (ne mettez pas void au début). Le plus pratique est de double-cliquer sur la fonction dans la colonne de droite:
Code PHP:
DestroyObject 
Ensuite on met la parenthèse bien entendu et comme je l'ai dit, ne mettez pas object, la fonction sait qu'elle a besoin d'un object et par la même nous aussi:
Code PHP:
DestroyObject
Notre variable object sera donc la fonction GetObjectByTag:
Code PHP:
DestroyObject(GetObjectByTag 
Nous reste à mettre une parenthèse puis le TAG entre guillemets. Sans les guillemets, le script chercherait une variable appelée TAG. Il nous faut donc mettre les guillemets pour indiquer que c'est une valeur directe et non une variable:
Code PHP:
DestroyObject(GetObjectByTag("TAG" 
Nous fermons la parenthèse pour GetObjectByTag, une autre pour DestroyObject. Bien entendu, en fermant directement les fonctions à ce moment, nous n'utiliserons pas les variables float fDelay et int nNth qui nous sont inutiles:
Code PHP:
DestroyObject(GetObjectByTag("TAG")) 
Et enfin et surtout, surtout, pensez bien à mettre ";" pour indiquer que le ligne est terminée. Si vous ne mettez pas ça, le script ne va pas compiler et vous allez très souvent chercher l'erreur ailleurs en vain, ne pensant pas que ça puisse venir d'aussi peu de chose en réalité
Code PHP:
DestroyObject(GetObjectByTag("TAG")); 

Dans un certaine mesure, nous pouvons faire la même chose sur plusieurs lignes:
Code PHP:
string sTagMonstre "TAG";
object oMonstre GetObjectByTag(sTagMonstre);
DestroyObject(oMonstre); 

Voilà, c'était un petit tut qui n'est pô vraiment un tutorial script mais plutôt un toturial pour montrer comment utiliser l'éditeur de script d'aurora à son avantage et comprendre la nuance qu'il y a entre la définition de la fonction et son utilisation dans un script.
Cela dit en passant Ambrosis, je conçois très bien que la plupart des choses dites dans ce tut te soient acquises (comme les double-cliques, t'as surement déjà du t'en rendre compte).
C'est juste au cas où une personne plus mauvaise que nous verait ce sujet, ça pourrait lui être utile

Bon script à tous
Lien direct vers le message - Vieux
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 
Je te remercie bien Skanko, donc si j'ai bien compris mon cript est censé être bon... donc il devrai marché, ce qui n'est pas le cas...
La créature ne disparait pas !!
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Vérifie si le Tag de la creature a detruire est bien le Tag car tu a l'air de confondre tag et resref

sinon essaye ca
Code PHP:
//::///////////////////////////////////////////////
//:: NW_O2_SKELETON.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
   Turns the placeable into a skeleton
   if a player comes near enough.
*/
//:://////////////////////////////////////////////
//:: Created By:   Brent
//:: Created On:   January 17, 2002
//:://////////////////////////////////////////////
void ActionCreate(string sCreaturelocation lLoc)
{
    
CreateObject(OBJECT_TYPE_CREATUREsCreaturelLoc);
}
void main()
{
   
object oCreature GetNearestCreature(CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PC);
   if (
GetIsObjectValid(oCreature) == TRUE && GetDistanceToObject(oCreature) < 10.0)
   {
    
effect eMind EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);
    
string sCreature "resref créature créer";
    
location lLoc GetLocation(OBJECT_SELF);
    
DelayCommand(0.3ActionCreate(sCreaturelLoc));
    
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeMindGetLocation(OBJECT_SELF));
    
SetPlotFlag(OBJECT_SELFFALSE);
    
DestroyObject(OBJECT_SELF0.5);
    
DestroyObject(GetNearestObjectByTag("Tag créature a faire disparaitre"));
   }

Lien direct vers le message - Vieux
Avatar de Ambrosis
Ambrosis
Roi
 
Avatar de Ambrosis
 
Bon je donne d'autre info car c peu etre a cause du fait que la créature a faire disparaitre ai un script pour quelle reste en jeu en tant que créature morte.
Car ca ne marche toujour pas.
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Alors la je pige plus
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Disparition de montre...
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 17h12.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite