World of Gothic Archiv > NWN-Hilfe
2 Scripts fehlerhaft
Seite 1 von 1  1 
10.07.2002, 22:02 #1
GuradonHellsing
Beiträge: 232
2 Scripts fehlerhaft
Hi
Ich habe 2 fehlerhafte Scripte und hoffe das mir jemand helfen kann sie zu fixen:
1. Ablauf:Der NPC soll zu einem Anderen NPC laufen,dann unterhalten sich die beiden NPC (SpeakString)
Am Ende soll der NPC(Brom) auf den Spieler zu gehen und mit ihm ein Gesprächbeginnen

Das Script:
void main()
{
object oBrom= GetObjectByTag("Brom");
object oGawain= GetObjectByTag("Gawain");
location lBrom = GetLocation(oBrom);
object oPC = GetNearestCreatureToLocation(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC,lBrom);

if( GetDistanceBetween(oBrom,oGawain) <= 7.0f)
{
AssignCommand(oGawain,ActionSpeakString("Hauptmann Brom!Hauptmann Brom!"));
AssignCommand(oBrom,ActionSpeakString("Wo ist die Verstaerkung?"));

AssignCommand(oGawain,SpeakString("Dieser Mann ist die Verstaerkung,die anderen sind tot.")) ;
AssignCommand(oBrom,SpeakString("Nun das Schicksal meint es nicht gut mit uns,aber wir sollten dankbar sein,dass berhaupt jemand gekommen ist,um uns beizustehen.")) ;

AssignCommand(oBrom,ActionMoveToObject(oPC)) ;
AssignCommand(oBrom,ActionStartConversation(oPC));
}
}

Problem: Es werden nicht alle strings lang genug ausgegeben,um sie zu lesen (ich hab auch die funktion ActionWait() versucht) hat leider nichts gebracht. Der NPC läuft nicht auf den Spieler zu und startet keine Conversation.
---------------------------------------------------------------------
2. Ablauf:Der NPC läuft auf den PC zu sagt eine Zeile, wird feindlich und setzt eine Variable um einen wert hoch.

Das Script:
void main()
{
object oNPC = GetObjectByTag("Deveran");
object oPC = GetLastPerceived();
if((GetIsPC(oPC)) &&(GetObjectSeen(oPC,oNPC)) &&
(GetLocalInt(OBJECT_SELF, "iDeveran") != 1))
{

AssignCommand(oNPC, ActionMoveToObject(oPC));
AssignCommand(oNPC, StartConversation(oPC));
SetLocalInt(OBJECT_SELF, "iDeveran", 1);
}
SetLocalInt(oPC,"DeveronAttack",1);
AdjustReputation(GetLastSpeaker(),oNPC,5);
}

Problem:Der NPC läuft auf den PC zu,aber spricht ihn nicht an und die Variable verändert sich auch nicht.
10.07.2002, 22:09 #2
Gawain15
Beiträge: 1.084

Ich hab jetzt keine Zeit mehr mich dadrum zu kümmern, mach das aber morgen als erstes wenn ich aufsteh (so um 12 Uhr :) ) Vielleicht hat dir bis dahin aber auch schon Xerxes geholfen.
11.07.2002, 11:35 #3
GuradonHellsing
Beiträge: 232

*schieb*
11.07.2002, 12:36 #4
Gawain15
Beiträge: 1.084

momentchen bin grad erst aufgestanden...
11.07.2002, 13:21 #5
Gawain15
Beiträge: 1.084

void main()
{
object oNPC = GetObjectByTag("Deveran");
object oPC = GetLastPerceived();
if(
(GetIsPC(oPC)) &&
(IsInConversation(oNPC) == FALSE) &&
(GetObjectSeen(oPC,oNPC)) &&
(GetLocalInt(OBJECT_SELF, "iDeveran") != 1))
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC, ActionMoveToObject(oPC));
AssignCommand(oNPC, ActionStartConversation(oPC));
SetLocalInt(OBJECT_SELF, "iDeveran", 1);
AdjustReputation(oPC, OBJECT_SELF, -100);
DetermineCombatRound(oPC);
}
}

Du kannst auch oPC, Clearallactions weglassen dann stoppt der Spieler nicht sobald der NPC ihn sieht.
11.07.2002, 13:33 #6
Gawain15
Beiträge: 1.084

Ok das andere ist komisch, mit ActionWait geht das echt nicht... naja "Brom" sprich den Spieler aber an sobald das Gespräch fertig ist... mal kucken...
11.07.2002, 13:43 #7
GuradonHellsing
Beiträge: 232

hehe man gawain wir wären ein gutes team hab grad das andere fertig gekrigt vielen dank für die hilfea und mach weiter so!
11.07.2002, 13:47 #8
Gawain15
Beiträge: 1.084

Ah haste fertig? Verdammt... Haste das so gemacht wie ich?:

void main()
{
object oBrom= GetObjectByTag("Brom");
object oGawain= GetObjectByTag("Gawain");
location lBrom = GetLocation(oBrom);
object oPC = GetNearestCreatureToLocation(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC,lBrom);

if( GetDistanceBetween(oBrom,oGawain) <= 7.0f)
{
AssignCommand(oGawain, DelayCommand(1.0, ActionSpeakString("Hauptmann Brom!Hauptmann Brom!")));
AssignCommand(oBrom, DelayCommand(2.0, ActionSpeakString("Wo ist die Verstaerkung?")));
AssignCommand(oGawain, DelayCommand(2.0, ActionSpeakString("Dieser Mann ist die Verstaerkung,die anderen sind tot.")));
AssignCommand(oBrom, DelayCommand(4.0, ActionSpeakString("Nun das Schicksal meint es nicht gut mit uns,aber wir sollten dankbar sein,dass berhaupt jemand gekommen ist,um uns beizustehen.")));
AssignCommand(oBrom, DelayCommand(6.0, ActionMoveToObject(oPC)));
AssignCommand(oBrom, ActionStartConversation(oPC));
}
}
11.07.2002, 14:18 #9
GuradonHellsing
Beiträge: 232

fast genauso

void main()
{
object oBrom= GetObjectByTag("Brom");
object oGawain= GetObjectByTag("Gawain");
location lBrom = GetLocation(oBrom);
object oPC = GetNearestCreatureToLocation(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC,lBrom);

if( GetDistanceBetween(oBrom,oGawain) <= 7.0f && GetLocalInt(oPC,"BromGawain")== 0)
{

DelayCommand(3.0f, AssignCommand(oGawain,SpeakString("Hauptmann Brom!Hauptmann Brom!")));
DelayCommand(4.0f,AssignCommand(oBrom,SpeakString("Wo ist die Verstaerkung?"))) ;
DelayCommand(5.0f, AssignCommand(oGawain,SpeakString("Dieser Mann ist die Verstaerkung,die anderen sind tot.")) ) ;
DelayCommand(6.0f, AssignCommand(oBrom,SpeakString("Nun das Schicksal meint es nicht gut mit uns,aber wir sollten dankbar sein,dass berhaupt jemand gekommen ist,um uns beizustehen.")) ) ;
DelayCommand(8.0f, AssignCommand(oBrom,ActionMoveToObject(oPC))) ;
DelayCommand(9.0f, AssignCommand(oBrom,ActionStartConversation(oPC)));
SetLocalInt(oPC, "BromGawain",1);
}
}
11.07.2002, 14:23 #10
GuradonHellsing
Beiträge: 232

mh ich hab problem mit dem einen script dem deveran
ich kann es nicht kompilieren,wegen der funktion
DetermineCombatRound(oPC);// Bezeichner nicht deklariert
ich hab diefunktion auch nicht im toolset gefunden mit filter
11.07.2002, 15:16 #11
Gawain15
Beiträge: 1.084

Hm bei mir gehts... egal lass AdjustReputation und DetermitCombatRound weg und benutz beim Konversations Editor den Scriptwizard und erfolgte Aktionen Angriff, dann is das so ziemlich das selbe.
11.07.2002, 15:44 #12
GuradonHellsing
Beiträge: 232

Mh es geht noch immer nicht der zombie (npc) ist zwar blau aber auch wenn ich ihn ansprechhe gibt es keine conversation.Die verlinkung zwischen npc gespräch script ist richtig. Aber er will kein gespräch führen könnte es daran liegen das die fraction der er zugeteilt ist neutral zu allen anderen fraction ist?
11.07.2002, 16:04 #13
Gawain15
Beiträge: 1.084

Händler etc. sind auch Neutral, nur wenn sie dir feindlich gesinnt sind greifen sie dich an und wollen nicht mit dir reden.

void main()
{
object oNPC = GetObjectByTag("Deveran");
object oPC = GetLastPerceived();
if(
(GetIsPC(oPC)) &&
(IsInConversation(oNPC) == FALSE) &&
(GetObjectSeen(oPC,oNPC)) &&
(GetLocalInt(OBJECT_SELF, "iDeveran") != 1))
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC, ActionMoveToObject(oPC));
AssignCommand(oNPC, ActionStartConversation(oPC));
SetLocalInt(OBJECT_SELF, "iDeveran", 1);
}}
Beim Trigger bei onEnter einfügen und im Konversationseditor halt den Angriff starten.

/e: ach scheis*e funzt net...
Seite 1 von 1  1