La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 12:38:06


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 03/09/2004 20:41:02 Sujet du message : un trigger qui blesse les persos tous les x secondes

bonjour!

Je voudrais créer un trigger qui blesse tous ceux qui s'y trouvent de x points de vie périodiquement.

Je sais comment faire pour qu'il blesse les PNJ et PJ qui y entrent, on n'a qu'à mettre dans le onenter un script qui donne des dégats à celui qui entre dans le trigger.

Le problème, c'est que s'il y reste, il ne subit pas d'autres dommage. Donc je voudrais que si le PJ reste sur le trigger, il continue à perdre des points de vie toutes les y secondes, ou à chaque heartbeat.

Merci de vos suggestions ou de vos réponses!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 : 03/09/2004 23:16:18 Sujet du message :

Hum, hum...

Dans ce genre de cas, je te propose que le OnEnter serve à créer un objet invisible qui possède un script de dégat dans le HeartBeat. Dans le OnExit du trigger, un script qui détruit l'objet.

La difficulté vient de la multiplication des joueurs. Il faudrait qu'il y ait un objet invisible attribué à chaque joueur.

1. Mettre dans la palette personnalisée, un objet invisible non statique (dont le resref serait "damo")

2. Dans le OnEnter du trigger
NWScript :
void main()
{
object oPC = GetEnteringObject();

    if (GetIsPC(oPC))
    {
    string sName = GetPCPlayerName(oPC);
    location lLoc = GetLocation(oPC);
    CreateObject(OBJECT_TYPE_PLACEABLE, "damo", lLoc, FALSE , sName);
    SetLocalString(GetModule(), sName, "test");
    AssignCommand(oPC, SpeakString(""));
    }
}
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. Dans le OnExit du trigger
NWScript :
void main()
{
object oExit = GetExitingObject();

    if (GetIsPC(oExit))
    {
    string sName = GetPCPlayerName(oExit);
    DestroyObject(GetObjectByTag(sName));
    AssignCommand(oExit, SpeakString(""));
    }
}
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.

4. Dans le HeartBeat de l'objet, qui applique les dégats
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.


Ca fonctionne en solo, reste à tester en multi, je suis impatient de savoir si c'est bien celui qui reste dans le trigger qui prend les dégats....
Voila.
_________________
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
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 04/09/2004 00:20:52 Sujet du message :

Merci pour ta réponse très complète! Very Happy

Je m'en vais tester ça tout de suite!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 04/09/2004 02:14:34 Sujet du message :

Une idée folle comme ça Very Happy... Ça pourrait peut-être marcher avec un effet de régénération négative appliquée au PJ, ou l'effet équivalent à la propriété "sanglante" de l'arme... Ça éviterait de charger le onHeartBeat et ce serait plus simple je crois (enfin je sais pas si ça marche une régénération avec un score négatif)
_________________
» 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
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 06/09/2004 20:10:01 Sujet du message :

longbow :
J'ai essayé tes scripts en les modifiant légèrement : j'ai plus besoin de tester si un PJ qui entre car mon trigger est censé blesser n'importe qui... J'ai donc pris le tag de la créature entrante au lieu du nom du PJ. (sachant que le PJ a un tag vide)

Tout marche, mis à part un petit problème : quand je sors du trigger, cela ne me détruit pas mon placable, qui continue à me causer des dégats... J'ai bien décoché la case statique dans ses propriétés. J'ai aussi testé si le tag de l'objet créé est le même que l'objet détruit, et c'est le cas... SadSadSad Comment faire????

finipe : je ne peux pas utiliser une régénération négative pour deux raisons :
1- ca marche pas, c'est que positif
2- il faut que les dégats causés sur mon perso cessent quand je sors du trigger, et on peut pas arrêter un effet permanent sur un perso à moins qu'il se repose.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 : 06/09/2004 20:50:29 Sujet du message :

Hum, hum...

Et la case Intrigue ?

Comment sais-tu qu'il s'agit bien du bon objet qui est détruit ?? J'aimerais bien connaître ta fonction de DEBUGG ??
NWScript :
AssignCommand(oExit, SpeakString( sName+""));
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.


Citation :
J'ai donc pris le tag de la créature entrante
mais alors le DestroyObject pourrait détruire la créature dont on a récupéré le Tag, non ???
_________________
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
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 06/09/2004 22:03:18 Sujet du message :

Et avec l'effet "sanglant" des armes t'as rien trouvé ? (excuse, je cherche pas bcp j'ai un peu la flemme Very Happy)
_________________
» 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
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 07/09/2004 00:39:40 Sujet du message :

Bon bon, voici mes scripts... j'en ai pas fait un de débug vu que je sais pas comment on fait, mais j'ai fais des speakstring pour afficher les variables qui m'intéresse. Ah oui! j'ai pas coché la case intrigue non plus.

script on enter :
NWScript :
void main()
{
    object oEnter = GetEnteringObject ();

    string sName = GetTag(oEnter);
    location lLoc = GetLocation(oEnter);

    CreateObject(OBJECT_TYPE_PLACEABLE, "plac_poison", lLoc, FALSE , "a_" + sName);
    //SetLocalString(GetModule(), sName, "test");
    AssignCommand(oEnter, SpeakString("a_" + sName));

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



script du on exit :
NWScript :
void main()
{

    object oExit = GetExitingObject();
    string sName = GetTag(oExit);
    DestroyObject(GetObjectByTag("a_" + sName, 1), 0.1);
    AssignCommand(oExit, SpeakString("a_" + sName));

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



script du on heartbeat du placeable :
NWScript :
void main()
{
string sTag = GetTag (OBJECT_SELF);
string sVar = GetSubString(sTag, 2, 15);

//GetLocalString(GetModule(), "test");
object oEnter = GetObjectByTag(sVar);



// 2D6 de degat de poison a chaque fois qu'on entre dans la zone
int iDamAmount = d6 (2);
effect eDamage = EffectDamage (iDamAmount, DAMAGE_TYPE_ACID, DAMAGE_POWER_NORMAL);
effect eVisual = EffectVisualEffect (VFX_COM_HIT_ACID, FALSE);


ApplyEffectToObject (DURATION_TYPE_INSTANT, eDamage, oEnter);
ApplyEffectToObject (DURATION_TYPE_INSTANT, eVisual, oEnter);

AssignCommand(oPC, SpeakString(sVar));
}
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é MSN Messenger 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 : 07/09/2004 09:09:38 Sujet du message :

Hum, hum...

1. Tout d'abord, bien vu le "a_" + sName, je n'y avais pas pensé.

2. Quand la créature sort du trig, le speakstring affiche qques chose ?

3. Un truc courant, au début du OnExit, tu mets un ClearAllActions(); Ca peut décoincer...

4. Autres hypothèse, tu nommes plus haut l'objet à créer...

En résumé:
NWScript :
void main()
{

object oExit = GetExitingObject();
string sName = GetTag(oExit);
object oDestroy = GetObjectByTag("a_" + sName);

ClearAllActions();
DestroyObject(oDestroy, 0.1);
AssignCommand(oExit, SpeakString("a_" + sName));

}
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
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 08/09/2004 00:40:04 Sujet du message :

oké merci ca marche! L'objet disparait quand le PJ sort de la zone, le blesse quand il est dedans, etc.. c'est merveilleux! Very Happy
Par contre ca ne blesse pas mes ennemis... Enfin bon! On peut pas tout avoir!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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/09/2004 17:08:52 Sujet du message :

Hum, hum...
Citation :
Par contre ca ne blesse pas mes ennemis
?? Que veux-tu dire par là ?? Tes ennemis sont entrés dans la zone et ils n'ont pas déclenché le système d'objet invisible ??
_________________
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
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 09/09/2004 12:51:55 Sujet du message :

En fait ils créent bien le placeable ( je le sais car j'ai lui ai donné l'apparence d'une table (pour tester)), et ca porte bien le tag de la créature, mais j'ai pas l'impression que ca la blesse...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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/09/2004 16:40:36 Sujet du message :

Hum, hum...

L'effet visuel ne se déclenche pas ?
_________________
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
 
Tuyen
Demi-dieu
Inscrit le: 23 Nov 2002
Messages: 460
Localisation: Chez moi
Répondre en citant
Posté le : 09/09/2004 17:41:06 Sujet du message :

Ni l'effet visuel, ni les dégats... Embarassed
Enfin bon, peutêtre que dans le feu de l'action j'ai pas bien vu tout....
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger 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 49.482ms