La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 18:24:46


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Lilly
Acolyte
Inscrit le: 16 Déc 2005
Messages: 24
Répondre en citant
Posté le : 25/03/2006 23:05:06 Sujet du message : Problème avec DestroyObject

Bonjour bonjour!

Voilà j'ai un petit (et surtout bête) problème avec un script.
C'est mis sur le "OnUse" d'un placeable qui s'allume et engendre des effets (le cristal lumineux et qui flotte du CEP pour ceux qui connaissent).

Alors le problème est que je voulais enlever les colonnes générées lors de l'activation au moment où on désactive le cristal... mais pas très douée je n'obtiens comme résultat que le fait qu'il détruise ma colonne avant même de la créer... Je ne m'en sors pas Embarassed

Si vous pouviez m'aider eh bien... ^^

Je mets le script complet ici :

NWScript :
void main()
{
    string sSound1 = GetLocalString(OBJECT_SELF, "CEP_L_SOUND1");
    string sSound2 = GetLocalString(OBJECT_SELF, "CEP_L_SOUND2");

////////////////////////////// /

    if (GetLocalInt(OBJECT_SELF,"CEP_L_AMION") == 0)
    {
        object oSelf = OBJECT_SELF;
        PlaySound(sSound1);
        DelayCommand(0.1, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
        SetLocalInt(OBJECT_SELF,"CEP_L_AMION",1);

        object oPC = GetLastUsedBy();

if (!GetIsPC(oPC)) return;

object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("colonne1");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne1", lTarget);

oTarget = oSpawn;

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetWaypointByTag("colonne2");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne2", lTarget);

oTarget = oSpawn;

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetWaypointByTag("colonne3");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne3", lTarget);

oTarget = oSpawn;

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetWaypointByTag("colonne4");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne4", lTarget);

oTarget = oSpawn;

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetObjectByTag("tentacules");

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));

nInt = GetObjectType(oTarget);

effect eEffect;
eEffect = EffectVisualEffect(VFX_FNF_WEIRD);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

nInt = GetObjectType(oTarget);

eEffect = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(2.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

oTarget = GetObjectByTag("cristal");

nInt = GetObjectType(oTarget);

eEffect = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(3.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(3.9, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

oTarget = GetObjectByTag("tentacules");

nInt = GetObjectType(oTarget);

eEffect = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(4.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

SetLocalInt(OBJECT_SELF,"CEP_L_AMION",2);

    }
////////////////////////////// //////////////////
    else
    {
        object oSelf = OBJECT_SELF;
        PlaySound(sSound2);
        DelayCommand(0.1, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
        SetLocalInt(OBJECT_SELF,"CEP_L_AMION",0);
    }
}
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 26/03/2006 10:40:23 Sujet du message :

Bon pas tester car pas le temps de créer sous aurora tout les élements.
POur le Destroy object, c'est simple tu lui donne un tag, une tempo et il te detruit tout.
Par contre ça marche si les objets créer n'ont pas la propriété "Static" de cochée.
Donc on remarque dans ton script que le resref de tes items c'est colonne1, colonne2, ect, donc ils sont dans la palette, tu peux donc aisement verifier cette condition.

Voici le script modifié :
NWScript :
void main()
{
    string sSound1 = GetLocalString(OBJECT_SELF, "CEP_L_SOUND1");
    string sSound2 = GetLocalString(OBJECT_SELF, "CEP_L_SOUND2");

////////////////////////////// /

    if (GetLocalInt(OBJECT_SELF,"CEP_L_AMION") == 0)
    {
        object oSelf = OBJECT_SELF;
        PlaySound(sSound1);
        DelayCommand(0.1, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
        SetLocalInt(OBJECT_SELF,"CEP_L_AMION",1);

        object oPC = GetLastUsedBy();

if (!GetIsPC(oPC)) return;

object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("colonne1");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne1", lTarget,FALSE,"Col1"); //l'objet creer a le tag Col1

oTarget = oSpawn;

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetWaypointByTag("colonne2");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne2", lTarget,FALSE,"Col2"); //l'objet creer a le tag Col2

oTarget = oSpawn;

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetWaypointByTag("colonne3");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne3", lTarget,FALSE,"Col3"); //l'objet creer a le tag Col3

oTarget = oSpawn;

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetWaypointByTag("colonne4");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "colonne4", lTarget,FALSE,"Col4"); //l'objet creer a le tag Col

oTarget = oSpawn;

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), GetLocation(oTarget)));

oTarget = GetObjectByTag("tentacules");

nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));

nInt = GetObjectType(oTarget);

effect eEffect;
eEffect = EffectVisualEffect(VFX_FNF_WEIRD);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

nInt = GetObjectType(oTarget);

eEffect = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(2.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

oTarget = GetObjectByTag("cristal");

nInt = GetObjectType(oTarget);

eEffect = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(3.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(3.9, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

oTarget = GetObjectByTag("tentacules");

nInt = GetObjectType(oTarget);

eEffect = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);

if (nInt != OBJECT_TYPE_WAYPOINT)
  DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oTarget));
else
  DelayCommand(4.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oTarget)));

SetLocalInt(OBJECT_SELF,"CEP_L_AMION",2);

    }
////////////////////////////// //////////////////
    else
    {
        object oSelf = OBJECT_SELF;
        PlaySound(sSound2);
        DelayCommand(0.1, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
        SetLocalInt(OBJECT_SELF,"CEP_L_AMION",0);
        DestroyObject(GetNearestObjectByTag("Col1"),0.3); //on detruit l'objet le plus proche avec le tag choisi
        DestroyObject(GetNearestObjectByTag("Col2"),0.5);
        DestroyObject(GetNearestObjectByTag("Col3"),0.7);
        DestroyObject(GetNearestObjectByTag("Col4"),0.9);
    }
}
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.

_________________
De Tenebris Lumen Fulget.......
 
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 78.686ms