PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tagebuchscriptproblem



Da Freak
15.08.2011, 15:44
Hey Leute. Ich habe ein Problem mit meinem Script. Ich will, das nach dem Dialog ein Tagebucheintrag vorgenommen wird. Dafür schreibe ich in den Script an der Stelle:

Log_CreateTopic (DIA_GRD_1900_Gardist ,LOG_MISSION);
Log_SetTopicStatus (DIA_GRD_1900_Gardist,LOG_RUNNING);
B_LogEntry(DIA_GRD_1900_Gardist, "Der Scheiß funzt nicht!");

Außerdem erstelle ich in der Log_constants.d folgendes:

const string DIA_GRD_1900_Gardist = "DEr Scheiß klappt nich.";

Was klappt da nich??

Hier der ganze Script.

//ENDE//

INSTANCE DIA_GRD_1900_Gardist_Exit (C_Info)
{
npc = GRD_1900_Gardist;
nr = 999;
condition = DIA_GRD_1900_Gardist_Exit_condition;
information = DIA_GRD_1900_Gardist_Exit_info;
permanent = TRUE;
important = FALSE;
description = DIALOG_ENDE;
};
FUNC int DIA_GRD_1900_Gardist_Exit_condition ()
{
RETURN TRUE;
};
FUNC void DIA_GRD_1900_Gardist_Exit_info ()
{
AI_StopProcessInfos(self);
};

//Hallo//
INSTANCE DIA_GRD_1900_Gardist_Hallo (C_Info)
{
npc = GRD_1900_Gardist;
nr = 0;
condition = DIA_GRD_1900_Gardist_Hallo_condition;
information = DIA_GRD_1900_Gardist_Hallo_info;
permanent = TRUE;
important = FALSE;
description = "Hallo";
};
FUNC int DIA_GRD_1900_Gardist_Hallo_condition ()
{
RETURN TRUE;
};
FUNC void DIA_GRD_1900_Gardist_Hallo_info ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_Hallo_00_12"); //Hallo!
AI_Output(self, other, "DIA_GRD_1900_Gardist_Hallo_00_13"); //Hey, wie gehts?
AI_Output(other, self, "DIA_GRD_1900_Gardist_Hallo_00_14"); //Gut. Was machst du hier?
AI_Output(self, other, "DIA_GRD_1900_Gardist_Hallo_00_15"); //Ach, ich steh ein bisschen in der Gegend rum.
AI_Output(self, other, "DIA_GRD_1900_Gardist_Hallo_00_16"); //Und lass mich nich gerne von Leuten wie dir anquatschen.
AI_Output(other, self, "DIA_GRD_1900_Gardist_Hallo_00_17"); //Was du nicht sagst!
Log_CreateTopic (DIA_GRD_1900_Gardist ,LOG_MISSION);
Log_SetTopicStatus (DIA_GRD_1900_Gardist,LOG_RUNNING);
B_LogEntry(DIA_GRD_1900_Gardist, "Der Scheiß funzt nicht!");

AI_StopProcessInfos ( self );
Npc_SetTarget(self,other);
AI_StartState(self,ZS_ATTACK,1,"");
};


Danke im vorraus.

Milky-Way
15.08.2011, 16:40
Ich habe deinen Beitrag mal in einen eigenen Thread verschoben, damit es übersichtlicher ist :)

Benutze in Zukunft bitte Code-Tags. Dazu schreibst du um deinen Code:

hier dann dein Skript oder du klickst auf den Button http://forum.worldofplayers.de/layouts/gothicneu/editor/code.gif.

Um dir bei deinem Problem helfen zu können, wäre es gut zu wissen, was bei dir nicht klappt. Kommt eine Fehlermeldung? Wird der Dialog normal abgespielt, aber es kommt kein Tagebucheintrag?

Bisasam
15.08.2011, 18:03
du kannst doch nicht den instanznamen eines dialoges als name für deine quest nehmen. das beißt sich doch.

schreib statt dem DIA_.... mal "Testquest" (inklusive anführungszeichen), das sollte funktionieren

Da Freak
15.08.2011, 18:17
'schuldigung *kleinlaut*

Habs nich gewusst, bin erst in den Anfängen...

ABER DANKE :)

Milky-Way
15.08.2011, 19:06
du kannst doch nicht den instanznamen eines dialoges als name für deine quest nehmen. das beißt sich doch.

schreib statt dem DIA_.... mal "Testquest" (inklusive anführungszeichen), das sollte funktionieren

Wenn ich nichts übersehen habe, ist das keine Instanz und sollte daher eigentlich funktionieren.

Da Freak
15.08.2011, 19:49
Das Problem besteht immer noch. Hab den auftrag jetzt in DIA_TheGardist geändert und in die COnst_log.d eingeschriebn. Unverändert

U:PAR: CONTENT\STORY\MISSIONS\DIA_GRD_1900_GARDIST.D: Unknown identifier : DIA_THEGARDIST

Was kann man tun?

mfg

Da Freak

Dalai Zoll
15.08.2011, 19:59
Hör doch einfach mal auf den Eintrag in der LogConstants.d "const string DIA_GRD_1900_Gardist = "DEr Scheiß klappt nich."; zu nennen.

Warum DIA? DIA ist der Vorsatz damit ein Dialog auch geparst wird und GRD_1900_Gardist klingt wie der InstanceName eines NPC. Das ist doch vollkommen absurd und führt sowieso nur zu Verwirrungen.

Schreib doch einfach mal

"const string Topic_Nichts_geht = "Der Scheiß klappt nicht.";

Ich glaube da muss auf jeden Fall ein Topic davorstehen!

Milky-Way
15.08.2011, 20:09
Das Problem besteht immer noch. Hab den auftrag jetzt in DIA_TheGardist geändert und in die COnst_log.d eingeschriebn. Unverändert

U:PAR: CONTENT\STORY\MISSIONS\DIA_GRD_1900_GARDIST.D: Unknown identifier : DIA_THEGARDIST

Was kann man tun?

mfg

Da Freak
Zeige bitte mal deine Gothic.src
Außerdem wären noch der aktuelle Dialog und die Datei, in der du die Konstante deklarierst nützlich (inklusive der Dateinamen)



Ich glaube da muss auf jeden Fall ein Topic davorstehen!
Nein. Wie eine Variable, Funktion oder Instanz heißt, ist ziemlich egal. Es darf die Bezeichnung nur nicht schon einmal geben.
Und Dialoge werden auch geparst, wenn sie nicht mit DIA_ anfangen. Sie müssen lediglich in der Gothic.src eingetragen sein.

Dalai Zoll
15.08.2011, 20:12
Und Dialoge werden auch geparst, wenn sie nicht mit DIA_ anfangen. Sie müssen lediglich in der Gothic.src eingetragen sein.

Weiss ich ... aber kannst du mir einen Grund nennen, sie nicht mit Dia zu bezeichnen, damit man sie dann umständlich in die *scr eintragen darf?:dnuhr:

Milky-Way
15.08.2011, 20:17
Weiss ich ... aber kannst du mir einen Grund nennen, sie nicht mit Dia zu bezeichnen, damit man sie dann umständlich in die *scr eintragen darf?:dnuhr:
Es kommt nur auf den Dateinamen an. Die Ambiente-Infos, die von mehreren NPC benutzt werden, sind auch Dialoge, allerdings in anderen Ordnern und mit anderen Dateinamen, wenn ich mich richtig erinnere.
Es ging mir nur darum, sicherzustellen, dass nicht fälschlicherweise angenommen wird, dass die die Benennung von Variablen, etc. viel mehr als der Übersichtlichkeit dient. Sonst macht man sich nur unnötig Sorgen über mögliche Probleme, die gar keine sind.

Dalai Zoll
15.08.2011, 20:38
U:PAR: CONTENT\STORY\MISSIONS\DIA_GRD_1900_GARDIST.D: Unknown identifier : DIA_THEGARDIST

Wenn das die Fehlermeldung ist, dann steht der Dialog ja auch nicht im Dialogordner, wie ich sehe. Ist das korrekt?

Milky-Way
15.08.2011, 20:41
U:PAR: CONTENT\STORY\MISSIONS\DIA_GRD_1900_GARDIST.D: Unknown identifier : DIA_THEGARDIST

Wenn das die Fehlermeldung ist, dann steht der Dialog ja auch nicht im Dialogordner, wie ich sehe. Ist das korrekt?
Das ist der Gothic 1 Dialog-Ordner.

Problem ist eher, dass die Deklaration der Variable / Konstante nicht bekannt ist.

Da Freak
16.08.2011, 14:06
Darauf konntet ihr nicht kommen. Die Log_Constants war schreibgeschützt:mad::mad::mad:
Tja, hab n neue OHNE schreibschutz erstellt. Und tada. Es funktioniert :)

DAnke für euer interessantes Gespräch, hat mich auf neue Ideen gebracht :)

mfg

Da Freak

Da Freak
16.08.2011, 14:25
//ENDE//

INSTANCE DIA_GRD_1900_Gardist_Exit (C_Info)
{
npc = GRD_1900_Gardist;
nr = 999;
condition = DIA_GRD_1900_Gardist_Exit_condition;
information = DIA_GRD_1900_Gardist_Exit_info;
permanent = TRUE;
important = FALSE;
description = DIALOG_ENDE;
};
FUNC int DIA_GRD_1900_Gardist_Exit_condition ()
{
RETURN TRUE;
};
FUNC void DIA_GRD_1900_Gardist_Exit_info ()
{
AI_StopProcessInfos(self);
};

//Hallo//
INSTANCE DIA_GRD_1900_Gardist_Hallo (C_Info)
{
npc = GRD_1900_Gardist;
nr = 0;
condition = DIA_GRD_1900_Gardist_Hallo_condition;
information = DIA_GRD_1900_Gardist_Hallo_info;
permanent = TRUE;
important = FALSE;
description = "Hallo";
};
FUNC int DIA_GRD_1900_Gardist_Hallo_condition ()
{
RETURN TRUE;
};
FUNC void DIA_GRD_1900_Gardist_Hallo_info ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_Hallo_00_12"); //Hallo!
AI_Output(self, other, "DIA_GRD_1900_Gardist_Hallo_00_13"); //Hey, wie gehts?
AI_Output(other, self, "DIA_GRD_1900_Gardist_Hallo_00_14"); //Gut. Was machst du hier?
AI_Output(self, other, "DIA_GRD_1900_Gardist_Hallo_00_15"); //Ach, ich steh ein bisschen in der Gegend rum.
AI_Output(self, other, "DIA_GRD_1900_Gardist_Hallo_00_16"); //Und lass mich nich gerne von Leuten wie dir anquatschen.
AI_Output(other, self, "DIA_GRD_1900_Gardist_Hallo_00_17"); //Was du nicht sagst!
Log_CreateTopic (DIA_TheGardist ,LOG_MISSION);
Log_SetTopicStatus (DIA_TheGardist,LOG_RUNNING);
B_LogEntry(DIA_TheGardist, "Ich habe mit dem Gardisten gesprochen. Er hat mich sofort attackiert.");

AI_StopProcessInfos ( self );
Npc_SetTarget(self,other);
AI_StartState(self,ZS_ATTACK,1,"");
};

INSTANCE DIA_GRD_1900_Gardist_QUESTION (C_Info)
{
npc = GRD_1900_Gardist;
nr = 1;
condition = DIA_GRD_1900_Gardist_Exit_condition;
information = DIA_GRD_1900_Gardist_Exit_info;
permanent = FALSE;
important = FALSE;
description = "Warum hast du das gemacht?";
};
FUNC int DIA_GRD_1900_Gardist_QUESTION_condition ()
{
IF (Npc_KnowsInfo ( hero, DIA_GRD_1900_Gardist_Hallo))
{
RETURN TRUE;
};
RETURN FALSE;
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_info ()
{
AI_Output(other, self, "DIA__DialogName_hero_0"); //Warum hast du das gemacht?
AI_Output(self, other, "DIA__DialogName_npc_1"); //Ich sags dir wenn du ein Rätsel löst!
B_LogEntry(DIA_TheGardist, "Der Gardist will mir sagen warum er mich angegriffen hat, wenn ich sein RÄtsel löse.");
Info_ClearChoices (DIA_GRD_1900_Gardist_QUESTION);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION, "Ich bin doch nicht bescheuert!", DIA_GRD_1900_Gardist_QUESTION_PISSOFF);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION, "Klar, warum nicht?", DIA_GRD_1900_Gardist_QUESTION_GO);
};

FUNC void DIA_GRD_1900_Gardist_QUESTION_PISSOFF ()
{
AI_Output(other, self, "DIA__DialogName_hero_7"); //Ich bin doch nicht bescheuert!
AI_Output(self, other, "DIA__DialogName_npc_8"); //Dann lass es eben bleiben.
B_LogEntry(DIA_TheGardist, "Nachdem ich sein bescheuertes Rätsel abgelehnt habe, will er es mir nicht mehr sagen. Ich werds wohl nie erfahren.");
Log_SetTopicStatus (DIA_TheGardist,LOG_FAILED);
AI_StopProcessInfos (self);
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_GO ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_00_01"); //Klar, warum nicht?
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_00_02"); //Gut.
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_00_03"); //Also, wie heißt der Präsident der USA mit Nachname?

Info_ClearChoices (DIA_GRD_1900_Gardist_QUESTION_GO);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION_GO, "Obama.", GRD_1900_Gardist_QUESTION_GO_RIGHT);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION_GO, "Bin Laden.", GRD_1900_Gardist_QUESTION_GO_WRONG);
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_GO_WRONG ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_WRONG_00_01"); //Bin Laden.
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_WRONG_00_02"); //Idiot.
B_LogEntry(DIA_TheGardist, "Ich hab das Rätsel falsch gelöst. Er verrät mir nichts.");
Log_SetTopicStatus (DIA_TheGardist, LOG_FAILED);
AI_StopProcessInfos (self);
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_01"); //Obama.
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_02"); //Richtig.
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_03"); //Sagst du mir jetzt, warum du mich niedergeschlagen hast?
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_04"); //Nö.
B_LogEntry(DIA_TheGardist, "Ich habe das Rätsel gelöst, er hat es mir aber trotzdem nicht gesagt.");
AI_StopProcessInfos (self);
Log_SetTopicStatus (DIA_TheGardist, LOG_SUCCES);
};





Jetzt kommt die Felhermeldung: ...wrong type DIA_GRD_1900_QUESTION_GO

Was könnte da nich stimmen?

Ach und achtet nich zuviel auf den Inhalt. Ich weiß, das ist sprachlicher und inhaltlicher Durchfall :gratz

mfg
Da Freak

Milky-Way
16.08.2011, 14:36
Der Fehler ist nicht im gezeigten Abschnitt. Dort kommt "DIA_GRD_1900_QUESTION_GO" auch gar nicht vor.

Da Freak
16.08.2011, 15:02
ok. Runterscrollen hätts auch getan aber dann so: :)


INSTANCE DIA_GRD_1900_Gardist_QUESTION (C_Info)
{
npc = GRD_1900_Gardist;
nr = 1;
condition = DIA_GRD_1900_Gardist_QUESTION_condition;
information = DIA_GRD_1900_Gardist_QUESTION_info;
permanent = FALSE;
important = FALSE;
description = "Warum hast du das gemacht?";
};
FUNC int DIA_GRD_1900_Gardist_QUESTION_condition ()
{
IF (Npc_KnowsInfo ( hero, DIA_GRD_1900_Gardist_Hallo))
{
RETURN TRUE;
};
RETURN FALSE;
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_info ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_00_01"); //Warum hast du das gemacht?
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_00_02"); //Ich sags dir wenn du ein Rätsel löst!
B_LogEntry(DIA_TheGardist, "Der Gardist will mir sagen warum er mich angegriffen hat, wenn ich sein RÄtsel löse.");
Info_ClearChoices (DIA_GRD_1900_Gardist_QUESTION);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION, "Ich bin doch nicht bescheuert!", DIA_GRD_1900_Gardist_QUESTION_PISSOFF);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION, "Klar, warum nicht?", DIA_GRD_1900_Gardist_QUESTION_GO);
};

FUNC void DIA_GRD_1900_Gardist_QUESTION_PISSOFF ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_PISSOFF_00_01"); //Ich bin doch nicht bescheuert!
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_PISSOFF_00_02"); //Dann lass es eben bleiben.
B_LogEntry(DIA_TheGardist, "Nachdem ich sein bescheuertes Rätsel abgelehnt habe, will er es mir nicht mehr sagen. Ich werds wohl nie erfahren.");
Log_SetTopicStatus (DIA_TheGardist,LOG_FAILED);
AI_StopProcessInfos (self);
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_GO ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_00_01"); //Klar, warum nicht?
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_00_02"); //Gut.
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_00_03"); //Also, wie heißt der Präsident der USA mit Nachname?

Info_ClearChoices (DIA_GRD_1900_Gardist_QUESTION_GO);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION_GO, "Obama.", GRD_1900_Gardist_QUESTION_GO_RIGHT);
Info_AddChoice (DIA_GRD_1900_Gardist_QUESTION_GO, "Bin Laden.", GRD_1900_Gardist_QUESTION_GO_WRONG);
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_GO_WRONG ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_WRONG_00_01"); //Bin Laden.
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_WRONG_00_02"); //Idiot.
B_LogEntry(DIA_TheGardist, "Ich hab das Rätsel falsch gelöst. Er verrät mir nichts.");
Log_SetTopicStatus (DIA_TheGardist, LOG_FAILED);
AI_StopProcessInfos (self);
};
FUNC void DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT ()
{
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_01"); //Obama.
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_02"); //Richtig.
AI_Output(other, self, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_03"); //Sagst du mir jetzt, warum du mich niedergeschlagen hast?
AI_Output(self, other, "DIA_GRD_1900_Gardist_QUESTION_GO_RIGHT_00_04"); //Nö.
B_LogEntry(DIA_TheGardist, "Ich habe das Rätsel gelöst, er hat es mir aber trotzdem nicht gesagt.");
AI_StopProcessInfos (self);
Log_SetTopicStatus (DIA_TheGardist, LOG_SUCCES);
};






das ist der ganze dialogteil

Milky-Way
16.08.2011, 15:35
Auch da kommt "DIA_GRD_1900_QUESTION_GO" nicht vor.

Lautet die Fehlermeldung vielleicht etwas mit DIA_GRD_1900_Gardist_QUESTION_GO?

In der Fehlermeldung oder im zSpyFenster steht auch eine Zeilenangabe. Die solltest du mit angeben und die entsprechende Zeile farblich markieren.

Der Fehler ist, dass du

Info_ClearChoices (DIA_GRD_1900_Gardist_QUESTION_GO);
benutzt. Der Parameter ist eine Funktion - du kannst dort aber nur eine Dialog-Instanz angeben, also DIA_GRD_1900_Gardist_QUESTION. Genauso kannst du auch zu DIA_GRD_1900_Gardist_QUESTION_GO keine weiteren Choices hinzufügen.

Da Freak
16.08.2011, 18:31
*schrumpf*

VOllidiot.... ich baum...

Gut, danke :)

mfg
DA Freak