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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
decad7
Acolyte
Inscrit le: 27 Avr 2004
Messages: 22
Répondre en citant
Posté le : 08/05/2004 03:38:03 Sujet du message : Comment supprimer un effet a une location

Bonsoir,

Voila j'ai a nouveau un problème, j'aimerais savoir comment faire pour supprimer un effet a une location.
Voila ce que je souhaite faire, au moment ou un joueur marche sur un déclencheur d'empreinte un grand mur d'épée apparait. (l'effet est permanent).

Plus tard par la suite le joueur trouvera la possibilité de supprimer ce mur d'épée.
cependant pour le moment c'est impossible... Very Happy

voila le script qui se trouve dans le onEnter du déclencheur d'empreinte (donc celui qui va déclencher le mur d'épée (Celui ci fonctionne, y a pas de problème).

NWScript :

void main()
{
if (GetIsPC(GetEnteringObject()))
    {
        //DECLARATION DES OBJECTS
        object oEPEE1 = GetWaypointByTag("EPEE1");
        object oEPEE2 = GetWaypointByTag("EPEE2");
        object oEPEE3 = GetWaypointByTag("EPEE3");
        object oEPEE4 = GetWaypointByTag("EPEE4");

        //DECLARATION DES LOCATIONS
        location lEP1 = GetLocation(oEPEE1);
        location lEP2 = GetLocation(oEPEE2);
        location lEP3 = GetLocation(oEPEE3);
        location lEP4 = GetLocation(oEPEE4);

        //DECLARATION DE L'EFFET MUR D'EPEE
        effect eBlade = EffectAreaOfEffect(AOE_PER_WALLBLADE);

        //APPLICATION DES EFFETS AU LOCATION SOUHAITE
        ApplyEffectAtLocation(DURATION_TYPE_PERMANENT,eBlade,lEP1);
        ApplyEffectAtLocation(DURATION_TYPE_PERMANENT,eBlade,lEP2);
        ApplyEffectAtLocation(DURATION_TYPE_PERMANENT,eBlade,lEP3);
        ApplyEffectAtLocation(DURATION_TYPE_PERMANENT,eBlade,lEP4);

        //VARIABLE UTILISE PAR LA SUITE DANS LE MODULE
        SetLocalInt(OBJECT_SELF,"BLADE",1);
    }
}
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 voici le script que j'utilise actuellement pour faire supprimer les effets d'épées. (mais celui ci ne marche pas)

NWScript :

void main()
{
//DECLARATION DES OBJECTS
object oEPEE1 = GetWaypointByTag("EPEE1");
object oEPEE2 = GetWaypointByTag("EPEE2");
object oEPEE3 = GetWaypointByTag("EPEE3");
object oEPEE4 = GetWaypointByTag("EPEE4");

//SUPPRESSION DES EFFETS SUR L'OBJET EN QUESTION
RemoveEffect(oEPEE1,EffectAreaOfEffect(AOE_PER_WALLBLADE));
RemoveEffect(oEPEE2,EffectAreaOfEffect(AOE_PER_WALLBLADE));
RemoveEffect(oEPEE3,EffectAreaOfEffect(AOE_PER_WALLBLADE));
RemoveEffect(oEPEE4,EffectAreaOfEffect(AOE_PER_WALLBLADE));
}
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 pense que le problème viens du fait que dans mon premier cas j'applique un effet a une location et que dans le script de suppression, je l'applique a des objets. Donc si c'est bien ça, alors comment faire pour supprimer un effet appliquer a une location ?

Merci d'avance.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
kiky.le.magnifique
Homme très gay
Inscrit le: 19 Sep 2003
Messages: 907
Localisation: Camping de la nation martienne...
Répondre en citant
Posté le : 08/05/2004 08:16:17 Sujet du message :

G pas compris (faut dire que je viens de me lever ^^)
pourquoi tu met pas simplement des ApplyEffectToObject dans le premier script???
Embarassed
_________________
http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
decad7
Acolyte
Inscrit le: 27 Avr 2004
Messages: 22
Répondre en citant
Posté le : 08/05/2004 12:11:52 Sujet du message :

Bonjour,

Tout simplement parce que cela ne marche pas. Very Happy

l'effet AOE_PER_WALLBLADE ne marche que sur une location et non sur un objet.
a moins que quelqu'un arrive a faire la même chose en applicant un effet de
mur d'épée sur un objet.

mais le fait de le mettre sur une location, cela permet que tout le tronson de passage
d'un couloir soit pris par un effet de mur d'épée. Alors que (enfin je pense), si on applique
un effet similaire sur un objet, il sera positioner que sur l'objet.

Quoiqu'il en soit cette effet ne fonctionne pas sur un objet (j'ai déja essayé), d'ailleurs j'ai planché sur ce problème toute la nuit (regarder l'heure du post Very Happy )

Si quelqu'un a une solution

Merci d'avance
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 08/05/2004 15:10:09 Sujet du message :

hum, hum...

Pour que l'effet soit localisé sur un objet... l'infortuné PJ (comme d'habitude), il faut utiliser ApplyEffectToObject

Dans un trigger qui correspond à ta zone... Tu mets le script suivant dans le OnEnter

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.

_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
decad7
Acolyte
Inscrit le: 27 Avr 2004
Messages: 22
Répondre en citant
Posté le : 08/05/2004 22:29:24 Sujet du message :

En fait ce n’est pas tout à fait cela que je cherche à faire.

Je vais reformuler ce que je souhaite faire.

Voila donc.

Le PJ marche tranquillement dans un couloir quand lors ce qu'il marche sur un déclencheur d'empreinte créer un effet de mur d'épée (non sur le joueur même) mais a un emplacement légèrement plus avancé. (pour le surprendre et non le pénaliser tout de suite)

L’effet est permanent.
De plus afin d'éviter que le personnage empreinte ce chemin, l'effet de mur d'épée est répété a 4 emplacements, si le joueur traverse un mur d'épée, il encaisse 60 points de dommage (Ce qui devrait normalement le faire réagir en reculant, sauf si il souhaite mourir Very Happy ).

Ensuite un peu plus tard dans l'aventure, le PJ trouve le moyen de faire cesser l'effet de mur d'épée qui lui bloque le chemin afin qu'il puisse continuer.

Donc voila pourquoi je ne peux pas appliquer cet effet sur le joueur, puisqu'il ne doit pas l'affecter lors de son apparition, sauf si le joueur est sucidaire et fonce sur les lames.

Et donc mon gros soucis actuellement réside dans le fait que je n'arrive pas a supprimé cette effet.
Donc si vous connaissez une astuce,

Je suis preneur. Very Happy

Merci encore
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 09/05/2004 00:00:32 Sujet du message :

Hum, hum...

Voila qui est plus clair...

Quand j'ai ce genre d'éléments, je me tourne vers un objet invisible et son HeartBeat...

Voila ce que je te propose...

1. Tu crées 3-4 waypoints aux emplacements des futurs murs d'épée...
WP_Blade01 WP_Blade02 WP_Blade03 WP_Blade04

2. Tu crées un objet invisible (non statique et non utilisable) avec le script suivant dans le HeartBeat.
NWScript :
void main()
{
object oPC = GetNearestCreature ( CREATURE_TYPE_PLAYER_CHAR , PLAYER_CHAR_IS_PC );
// Si un Pj est a moins de 15 m, l'effet visuel se declenche (regler la distance...)
    if (GetDistanceBetween(OBJECT_SELF, oPC) <= 15.0)
    {
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_WALLSPIKE),OBJECT_SELF);

// et si le Pj s'approche, il trinque !!(3 metres ?? regler la distance ...)
        if(GetDistanceBetween(OBJECT_SELF, oPC) <= 3.0)
        {
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_WALLSPIKE),oPC);
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(60, DAMAGE_TYPE_PIERCING),oPC);
        }
    }
}
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.


3. Bouton droit.. pour le placer dans la Palette... Avec ce ResRef "bladeobjet"
4. Tu détruits celui qui t'a servi de modèle...
5. Tu crées un trigger à l'endroit où doit passer le PJ (assez éloigné ... 15 m.. des WP) avec ce script dans le OnExit
NWScript :
// pour creer les objets invisibles qui vont servir de murs de lame
void main()
{
object oExit = GetExitingObject();
if (GetIsPC(oExit))
{
CreateObject(OBJECT_TYPE_PLACEABLE,"bladeobjet", GetLocation(GetWaypointByTag("WP_Blade01")),TRUE, "BladeObjet01");
CreateObject(OBJECT_TYPE_PLACEABLE,"bladeobjet", GetLocation(GetWaypointByTag("WP_Blade02")),TRUE, "BladeObjet02");
CreateObject(OBJECT_TYPE_PLACEABLE,"bladeobjet", GetLocation(GetWaypointByTag("WP_Blade03")),TRUE, "BladeObjet03");
CreateObject(OBJECT_TYPE_PLACEABLE,"bladeobjet", GetLocation(GetWaypointByTag("WP_Blade04")),TRUE, "BladeObjet04");
DestroyObject( OBJECT_SELF,1.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.


==> Les murs sont en place.

6. Lorsque le Pj a réussi à trouver le moyen de passer ces murs... Dans un script de dialogue, un trigger... etc ...
Utiliser ceci:
NWScript :
void main()
{
DestroyObject( GetObjectByTag("BladeObjet01");
DestroyObject( GetObjectByTag("BladeObjet02");
DestroyObject( GetObjectByTag("BladeObjet03");
DestroyObject( GetObjectByTag("BladeObjet04");
// Si tu veux actualiser le journal
//AddJournalQuestEntry("b ladequest", 100, GetPCSpeaker);
}
/* warning: 4 unclosed parenthesis () */
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.


Dis-moi ce que tu en penses...
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
decad7
Acolyte
Inscrit le: 27 Avr 2004
Messages: 22
Répondre en citant
Posté le : 09/05/2004 10:16:39 Sujet du message :

Alors.....

donc j'ai essayé.

Le problème c'est que l'effet utilisé ici créer le même effet lorsque l'on marche sur un piege a pointe, a la seule différence que les pointes sortent du vide plutot que du sol. Very Happy

Deplus comme cette effet dure moins de 6 secondes, il disparait complettement pour réapparaitre.
Et comme je le disais dans mon ancien message, le fait d'appliquer a un effet a un objet, la zone du mur s'apllique qu'a l'objet et non a tout le couloir. (donc ici il faudrait creer au moins 4 ou 5 objets pour prendre la taille du couloir entier.

Et comme je souhaite que cette effet soit imposant, en gros qu'il prenne tout la largeur du couloir, et un peu de longueur. c'est pourquoi j'appliquer un effet de MUR D'EPEE a une location.

J'ai justement un exemple qui a été fait dans NWN
a la fin de la campagne contre Morag, il y a un mur d'épée sur le sol afin de nous empecher d'approcher. c'est cet effet que j'aimerais pouvoir faire (Mais surtout trouver le moyen de le supprimer).

Merci tout de même.
Ton script m'a donné une idée pour un autre endroit de mon module. Very Happy

Pour ma part je n'ai toujours pas trouver de solution.
Donc si vous en voyez une, je suis preneur.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
decad7
Acolyte
Inscrit le: 27 Avr 2004
Messages: 22
Répondre en citant
Posté le : 09/05/2004 10:55:11 Sujet du message :

voila c'est bon j'ai une solution qui marche.

il faut créer une empreinte avec le script suivant dans le OnHeartBeat

NWScript :

void main()
{
if (GetIsPC(GetEnteringObject()))
    {
        if (GetLocalInt(OBJECT_SELF,"BLADE")!=1)
        {
            //DECLARATION DES OBJECTS
            object oEPEE1 = GetWaypointByTag("EPEE1");
            object oEPEE2 = GetWaypointByTag("EPEE2");
            object oEPEE3 = GetWaypointByTag("EPEE3");
            object oEPEE4 = GetWaypointByTag("EPEE4");

            //DECLARATION DES LOCATIONS
            location lEP1 = GetLocation(oEPEE1);
            location lEP2 = GetLocation(oEPEE2);
            location lEP3 = GetLocation(oEPEE3);
            location lEP4 = GetLocation(oEPEE4);

            //DECLARATION DE L'EFFET MUR D'EPEE
            effect eBlade = EffectAreaOfEffect(AOE_PER_WALLBLADE);

            //APPLICATION DES EFFETS AU LOCATION SOUHAITE
            ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlade,lEP1,6.0f);
            ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlade,lEP2,6.0f);
            ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlade,lEP3,6.0f);
            ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eBlade,lEP4,6.0f);

            //VARIABLE UTILISE PAR LA SUITE DANS LE MODULE
        }
    }
}
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.


Ensuite dans l'objet qui vous déclenchera la suppression du mur d'épée, mettais le script suivant

NWScript :

void main()
{
if (GetIsPC(GetEnteringObject()))
{

SetLocalInt(GetObjectByTag("BL_EP"),"BLADE",1);
//La destruction de cette objet n'est pas obligatoire a vous de voir selon votre module.
DestroyObject(OBJECT_SELF);

DestroyObject(GetObjectByTag("BL_EP")); }
}
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.


Ensuite pour que tout fonctionne correctement, il faut mettre en place une variable sur l'objet du premier Script.

la variable suivante : (ici) BLADE à 0.

Le fonctionement sera le suivant.

le personnage marche sur le déclencheur, le mur d'épée apparait et dure seulement 6 secondes (afin d'eviter qu'il ne se multiplie avec la fonction OnHeartBeat.
avant que le personnage marche sur le déclencheur la variable BLADE est a 0 donc l'effet peut etre lancé. (Tant Que la variable est différent de 1).

Ensuite des que le déclencheur de suppression prend effet, la variable BLADE passe a 1, donc par conséquent l'effet d'Epée s'arrette.

Actuellement, il n'y a rien de scripté ici pour provoquer les dommages, chacun devra l'adapter a son usage.

et pour finir, les deux objets sont détruits. (surtout pour le premier car le OnHeartBeat mange beaucoup de ressource. (pour le deuxiéme objet ce n'est pas obligatoire, tout dépent de votre module.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 79.317ms