Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Script "PJ stopper pour dialogue Trigger" Gros Bug
Script "PJ stopper pour dialogue Trigger" Gros Bug
Par Zariel le 27/11/2002 à 18:05:34 (#2658053)
Voilà, je met dans le OnEnter de mon trigger ce script:
//::///////////////////////////////////////////////
//:: Start a conversation by trigger
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: William Weideman wylll@msn.com
//:: Created On: Aug. 1, 2002
//:://////////////////////////////////////////////
// This script will start a one time conversation by a trigger.
// Place the script on the OnEntered spot of the trigger
// It is important that when you save this script that you save it
// useing a simular name as the one I have used.
// ww_trigtalk_000 is broken down as follows: ww = my initials
// _trigtalk_ tells what the function of the script is (trigger talks)
// 000 is the master script and each time the script is used in a moduel
// the number goes up by one (000 = master, 001 = first use in mod, 002 = second use in mod)
// this will make useing the in-script instructions easy to follow.
//:://////////////////////////////////////////////
void main()
{
//Section 1: checks PC to see if they have triggered this trigger already.
//Change O_000 to the whatever the last 3 numbers of your script are.
//For example: O_000 becomes O_001 or even O_002 based on what you save the script as
object oPC = GetEnteringObject();
if(GetIsPC(oPC) && GetLocalInt(oPC, "bandit_001") == 0)
{
//Section 2: starts conversation file
//Change 000 to whatever name you gave to the conversation you wish to open
//I would name the conversation file the three last numbers of this script
object oPC = GetEnteringObject();
ActionStartConversation(oPC, "ct_bandit_001", FALSE);
{
//Section 3: sets a local int on PC so that the conversation fires only once per PC in party
//Change O_000 to the whatever the last 3 numbers of your script are.
//For example: O_000 becomes O_001 or even O_002 based on what you save the script
object oPC = GetEnteringObject();
SetLocalInt(oPC, "bandit002", 1);
}
}
}
Donc, tout est bien renseigné, le tag de mon PNJ, le nom du fichier Conversation et le Blueprint.
Quand je test in game le script, le trigger me stoppe bien et engage la convers, mais quand je selectionne la phrase pour faire attaquer mon PNJ, un message s'inscrit dans la barre de dialoque et m'indique que 'il y a une erreur DIVIDE BY ZERO avec le tag de mon trigger et de mon script "action conséquentes".
Et le PNJ reste inactif.
Quelqu'un pourrait-il m'aider dans cette démarche ?
Par Jedaï le 27/11/2002 à 21:26:18 (#2659788)
Sinon un Divide by zero, c'est que visiblement tu as fais une division qui passe pas, peut-être avec tes variables locales ?:doute: Vérifie les opérations dans ton script d'action conséquentes (et donne le nous ! :mdr: ).
Par eMRaistlin le 27/11/2002 à 21:43:03 (#2659911)
void main()
{
object oPC = GetEnteringObject();
if(GetIsPC(oPC) && GetLocalInt(oPC, "bandit_001") == 0)
{
oPC = GetEnteringObject();
ActionStartConversation(oPC, "ct_bandit_001", FALSE);
}
else
{
oPC = GetEnteringObject();
SetLocalInt(oPC, "bandit002", 1);
}
}
Et pis, ca fait mieux avec le else ^^
Par Jedaï le 27/11/2002 à 21:48:18 (#2659955)
Il est vraiment bizarre ce script, qu'est-il censé faire ?
Par Zariel le 27/11/2002 à 21:51:24 (#2659983)
Merci infiniment pour votre aide.
Par Zariel le 27/11/2002 à 22:00:03 (#2660046)
Voilà le script dans l'action conséquentes:
//::///////////////////////////////////////////////
//:: FileName at_033
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 27/11/2002 17:43:41
//:://////////////////////////////////////////////
#include "nw_i0_generic"
void main()
{
// Paramétrer la faction de manière à ce qu'elle déteste le joueur et l'attaque
AdjustReputation(GetPCSpeaker(), OBJECT_SELF, -100);
DetermineCombatRound(GetPCSpeaker());
}
Et le script d'origine dans le OnEnter du Trigger://::///////////////////////////////////////////////
//:: Start a conversation by trigger
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: William Weideman wylll@msn.com
//:: Created On: Aug. 1, 2002
//:://////////////////////////////////////////////
// This script will start a one time conversation by a trigger.
// Place the script on the OnEntered spot of the trigger
// It is important that when you save this script that you save it
// useing a simular name as the one I have used.
// ww_trigtalk_000 is broken down as follows: ww = my initials
// _trigtalk_ tells what the function of the script is (trigger talks)
// 000 is the master script and each time the script is used in a moduel
// the number goes up by one (000 = master, 001 = first use in mod, 002 = second use in mod)
// this will make useing the in-script instructions easy to follow.
//:://////////////////////////////////////////////
void main()
{
//Section 1: checks PC to see if they have triggered this trigger already.
//Change O_000 to the whatever the last 3 numbers of your script are.
//For example: O_000 becomes O_001 or even O_002 based on what you save the script as
object oPC = GetEnteringObject();
if(GetIsPC(oPC) && GetLocalInt(oPC, "O_000") == 0)
{
//Section 2: starts conversation file
//Change 000 to whatever name you gave to the conversation you wish to open
//I would name the conversation file the three last numbers of this script
object oPC = GetEnteringObject();
ActionStartConversation(oPC, "000", FALSE);
{
//Section 3: sets a local int on PC so that the conversation fires only once per PC in party
//Change O_000 to the whatever the last 3 numbers of your script are.
//For example: O_000 becomes O_001 or even O_002 based on what you save the script
object oPC = GetEnteringObject();
SetLocalInt(oPC, "O_000", 1);
}
}
}
Merci.
Par coolstar le 27/11/2002 à 23:23:13 (#2660689)
Remarque judicieuse de Jedaï... une fois que la Variable temporaire est identifiée il apparaît inutile de la répéter... je ne pense pas que cette redondance gène vraiment le Script, mais c'est lourd à rédiger et à lire... pas propre ça, non ?? :D
;)
Par Kemay le 29/11/2002 à 1:25:03 (#2669065)
void main()
Cela dit c'est étonnant que ton ancien script ait compilé sans erreurs, normalement tu ne peux pas déclarer plusieurs variables avec le même nom.
{
object oPC = GetEnteringObject();
if( GetIsPC(oPC) && GetLocalInt(oPC,"O_000") == 0 )
{
ActionStartConversation(oPC, "000", FALSE);
SetLocalInt(oPC, "O_000", 1);
}
}
JOL Archives 1.0.1
@ JOL / JeuxOnLine