World of Gothic Archiv > Editing
Script Problem
Seite 1 von 2  1  2 
30.03.2004, 20:36 #1
Söldner1
Beiträge: 133
Script Problem
Weiss jemand den Waypoint für den umgestürtzten Turm im alten Lager. (in der nähe von Mordrag das große leere Gebäude)?
Immer wenn ich in meinen Mod drinnen bin und dann zu den Torwachen beim Haupteingang des Alten Lagers gehe stürtzt das Spiel ab. Auch wenn ich mich zu Gomez cheate und dann probiere raus zu gehen. Woran liegt das?
30.03.2004, 21:59 #2
Black Daemon
Beiträge: 218

Öhm kannst du das mal etwas genauer definieren? Was hat das mit nem Scriptproblem zu tun, bzw wo liegt dein Problem?
Den Wp weiß ich leider nicht auswendig aber schau doch schnell im spacer nach. Was hast du verändert, nachdem es nimmer ging?
Bei mir ist das erst einmal passiert, als ich eine Funktion in sich selbst gestartet habe. Das hatte es nicht verkraftet.
31.03.2004, 00:55 #3
Söldner1
Beiträge: 133

Zugegeben der Thementitel ist nicht gut geählt. Ich glaube ich habe den Wachen einen neuen Npctype verpasst habe ich aber wieder geändert.
31.03.2004, 14:39 #4
Söldner1
Beiträge: 133

Wies niemand sonst rat
31.03.2004, 15:16 #5
Neely
Beiträge: 133

Was genau hast du denn nun gemacht?
31.03.2004, 16:50 #6
Söldner1
Beiträge: 133

Ich habe nur Npctype=main; auf Npctype=rouge umgeschrieben. Das habe ich aber wieder geändert.
02.04.2004, 22:57 #7
Ken Suyoko
Beiträge: 923

Also me hat nun wieder etwas...

also ich habe einen neuen NPC eingefügt einen neuen Dialogteil bei einem NPC dazugeskriptet. Der Dialog mit meinem selbsterstellten NPC geht gut, nur die optionen die kommen sollen scheinen noch etwas verwirrt herumzugeistern. Doch nun kommt das richtige prob!

ALLE Dialoge mit Sprachausgaben sind weg!
Wenn ich mit Diago spreche dann kommt KEIN Untertitel und KEIN gelaber! Sofort kann ich die nächste oprion auswählen und weiter gamen. ich habe schon mim spacer geupdatet und gesaved aber weis ich nun auch nicht mehr weiter!
02.04.2004, 23:10 #8
Black Daemon
Beiträge: 218

@Söldner1 Haste das Problem immer noch?
@Ken Suyoko
Also erstmal zu deinem Optionenchaos.
Du solltest darauf achten, dass du diese Funktion auch oft genug benutzt. Sie räumt dann ganz schnell auf ;).
Info_ClearChoices(DIA_Marand_hallo);

Zum zweiten Problem.
Das hatte ich auch schon, allerding nicht in diesem Umfang, sondern nur als ich nach nem neuen Dialog das erstellen der OUs vergessen habe hatte das bei diesem einen Dialog den selber Effekt. Also Untertitel und Sprache nicht da. Daher schätze ich hast du irgendwas mit den Ous angestellt.
Ist Diago(Diego?)der NPC, den du Modifiziert hast?
Hast du schon mal mit ner anderen umodifizierten Person geredet?
Hast du die gothic.src mal neu geparset?
03.04.2004, 09:34 #9
Ken Suyoko
Beiträge: 923

quote:
Zitat von Black Daemon

Info_ClearChoices(DIA_Marand_hallo);



also das versteh ich imo grad net. meine selbstgemachte babe heißt Asylya.

quote:
Zitat von Black Daemon

Zum zweiten Problem.
Das hatte ich auch schon, allerding nicht in diesem Umfang, sondern nur als ich nach nem neuen Dialog das erstellen der OUs vergessen habe hatte das bei diesem einen Dialog den selber Effekt. Also Untertitel und Sprache nicht da. Daher schätze ich hast du irgendwas mit den Ous angestellt.



also die Ous habeich gelöscht und dann mim spacer neu gesaved dadurch sind die wie wieder da! Aber ansonsten habe ich nix angestellt!

Ich meine blos das ich gerne wissen würde wie ich da sbeheben kann und wie der optionen salat weggeht.
03.04.2004, 10:17 #10
Neely
Beiträge: 133

Wenn du auch die OUINFO.INF gelöscht hast dann musst du diese per 'reparse all scripts' wieder erstellen lassen.
03.04.2004, 11:11 #11
Ken Suyoko
Beiträge: 923

Also ich habe den spacer per Gothic starter gestartet und das häckchen bei reparse al skripts gemacht. aber da kamrn rund 50 Fehlermeldungen die alle auf linr 144 und line 147 bei Asylya sind. Dannach hab ich daupfatet und gesaved nun probier ich obs geht. danke Neely.!
07.04.2004, 14:20 #12
Realdennis
Beiträge: 279

Hab auch jetzt nen Problem...

Hier erstmal der Skript:

quote:

instance DIA_None_999_Gunther_Exit (C_INFO)
{
npc = None_999_Gunther;
nr = 999;
condition = DIA_None_999_Gunther_Exit_Condition;
information = DIA_None_999_Gunther_Exit_Info;
important = 0;
permanent = 1;
description = "ENDE";
};

FUNC int DIA_None_999_Gunther_Exit_Condition()
{
return 1;
};

FUNC VOID DIA_None_999_Gunther_Exit_Info()
{
AI_StopProcessInfos (self);
};

var int int_GotSword;

instance None_999_gunther_AskForSword (C_INFO)
{
npc = None_999_Gunther;
condition = None_999_Gunther_AskForSword_Condition;
information = None_999_Gunther_AskForSword_Info;
important = TRUE;
permanent = FALSE;
description = "";
};

FUNC int None_999_Gunther_AskForSword_Condition()
{
if (hero.level >= 0)
{
return TRUE;
};
return FALSE;
};

func void None_999_Gunther_AskForSword_Info()
{
AI_Output (self, other, "None_999_Gunther_AskForSword_Info_8_01"); //Hey Du, Heute schon was vor?
Info_ClearChoices(None_999_Gunther_AskForSword);
Info_AddChoice(None_999_Gunther_AskForSword, "Auf jedenfall genug", None_999_gunther_AskForSword_Yes);
Info_AddChoice(None_999_Gunther_AskForSword, "Nichts spezielles", None_999_Gunther_AskForSword_No);
};

func void None_999_Gunther_AskForSword_Yes ()
{
AI_Output(other,self, "None_999_Gunther_AskForSword_Info_8_02"); //Es geht Dich nichts an,was ich heute vorhabe.
AI_Output(self,other, "None_999_Gunther_AskForSword_Info_8_03"); //Na gut dann scheidest du wohl aus.
AI_StopProcessInfos (self);
};

func void None_999_Gunther_AskForSword_No ()
{
AI_Output(other,self,"None_999_Gunther_AskForSword_Info_8_04"); //Bisher noch nichts spezielles.
AI_Output(self,other,"None_999_Gunther_AskForSword_Info_8_05"); //Das ist gut, denn du musst mir ein Schwert suchen.

Log_CreateTopic (CH1_GunthersSword,LOG_MISSION);
Log_SetTopicStatus (CH1_GunthersSword,LOG_RUNNING);
B_logEntry(CH1_GunthersSword, "Gunther will, dass ich sein Schwert auftreibe");
AI_StopProcessInfos (self);
};



// ************************ EXIT **************************
instance None_999_GuntherAksForSword_Exit (C_INFO)
{
npc = None_999_Gunther;
condition = None_999_GuntherAksForSword_Exit_Condition;
information = None_999_GuntherAksForSword_Exit_Info;
important = 0;
permanent = 1;
description = "ENDE";
};

FUNC int None_999_GuntherAksForSword_Exit_Condition()
{
return true;
};
FUNC VOID None_999_GuntherAksForSword_Exit_Info()
{
AI_StopProcessInfos ( self );
};

instance None_999_Gunther_BringSword (C_INFO)
{
npc = None_999_Gunther;
condition = None_999_Gunther_BringSword_Condition;
information = None_999_Gunther_BringSword_Info;
important = FALSE;
permanent = TRUE;
description = "Hast du das Schwert ?";
};

FUNC int None_999_Gunther_BringSword_Condition()
{
if (Npc_KnowsInfo ( hero, None_999_Gunther_AskForSword));
&! int_GotSword;
&& (Npc_HasItems (other, ItMw_1H_GunthersSword) >= 1);
{
return TRUE;
};
};

func void None_999_Gunther_BringSword_Info()
{
Info_ClearChoices (None_999_Gunther_BringSword);
Info_AddChoice (None_999_Gunther_BringSword, "Ich habe dein Schwert, gebe es dir aber nicht", None_999_Gunther_BringSword_Yes);
Info_AddChoice (None_999_Gunther_BringSword, " Ich habe dein Schwert...Hier ist es.", None_999_gunther_BringSword_No);
};

func void None_999_Gunther_BringSword_Yes ()
{
AI_Output( other, self, "None_999_Gunther_BringSword_Info_8_06"); // Ich habe dein Schwert,aber es ist doch viel zu gut für dich. Ich behalte es lieber.
AI_Output( self, other, "None_999_Gunther_BringSword_Info_8_07"); // Du hast wohl nicht mehr alle Tassen im Schrank. Gib es mir!
AI_StopProcessInfos (self);
AI_StartState( self, ZS_Attack, 0, "");
};

func void None_999_Gunther_BringSword_No ()
{
AI_Output ( other, self, "None_999_Gunther_BringSword_Info_8_08"); // Hier hast du es.
AI_Output (self, other, "None_999_Gunther_BringSword_Info_8_09"); // Hahaha...Geht doch.

B_LogEntry(CH1_GunthersSword, "Ich habe Gunther sein Schwert gebracht,er war glücklich und hat mich reichlich mit Erfahrung und Lernpunkte belohnt");

other.exp = other.exp + 250;
other.lp = other.lp + 5;

Npc_GiveItem ( other , ItMw_1H_GunthersSword, self);
AI_StopProcessInfos (self);
};





So jett das Problem...
Beim parsen kommt immer die nachricht:

Expected '{' (line 103)

Was muss ich denn ändern?
07.04.2004, 15:47 #13
Neely
Beiträge: 133

code\:
if (Npc_KnowsInfo ( hero, None_999_Gunther_AskForSword));
&! int_GotSword;
&& (Npc_HasItems (other, ItMw_1H_GunthersSword) >= 1);


->
code\:
if ((Npc_KnowsInfo ( hero, None_999_Gunther_AskForSword))
&&! int_GotSword
&& (Npc_HasItems (other, ItMw_1H_GunthersSword) >= 1))


So müsste es eigentlich klappen.
07.04.2004, 15:59 #14
Realdennis
Beiträge: 279

jo,es geht...^^
07.04.2004, 22:04 #15
Ken Suyoko
Beiträge: 923

Also ich hab da mal ne Frage...
Ich will einen skript so machen wie im normalen Game im Neuen Lager. Da muss man für die Sektentypen den Sumpfkraut verkaufen. Da hat man doch einen allgemeinenskript zu.
Ich möchte an alle Gardisten die im AUsenring stehen eine Mitteilung geben. aber...
In dem B Ordner gibt es nur 3 allgemeine
B_assignAmbientInfos_Grd_6, ..._Grd_7,...
_Grd_13.

die anderen Grd skripte sind in der Mine usw.
Ich würde jetzt gerne wissen welcher davon für die 6 Gardisten in silberner Rüstung im AUsenring sind. Da ich den dann relativ leicht umeditieren kann.

thx im Vorraus!
07.04.2004, 23:11 #16
JonathanSalznik
Beiträge: 22

Die Zahlen 6, 7, 13 beziehen sich auf die Stimme des NSCs und nicht auf dessen Position.

Willst du die Info nur den sechs Gardisten im Aussenring zuweisen, musst du dafür leider einen neuen Eintrag in B_AssignAmbientInfos.d erzeugen.
08.04.2004, 00:03 #17
GülleMüller
Beiträge: 472

@ Neely: Du solltest nicht alles kopieren && einfügen, weil was büddeschön ist &! für ein boolescher Operator ??? ;)


@Realdennis: ersetze &! mit && ! dann sollte das auch keine Probleme mehr machen.

cu
GüMü
08.04.2004, 10:43 #18
Ken Suyoko
Beiträge: 923

@Johnatan das check ich grad net.

wie meinste das? soll ich einen neuen skript erstellen der extra auf die 6 Gardisten zu kommt?
08.04.2004, 12:07 #19
Neely
Beiträge: 133

Schau dir mal die B_SetAmbientInfos an. Dort wird festgelegt welche Arten von NPCs welche Ambient Infos bekommen. Ambient Infos sind die Dialoge, die bei den 'gewöhnlichen' NPCs angeboten werden ("Wo finde ich dies und jenes", "was ist hier im Lager so los", etc).
Wenn du dir die Mühe ersparen willst, jedem der Gardisten einen entsprechenden Dialog zu erstellen, dann mach es per Ambient Info.
08.04.2004, 15:44 #20
Realdennis
Beiträge: 279

hab ma wieder ein problem
wenn ich die scripte im spacer parsen will kommt die Meldung...
+++ Wrong type : DIA_VLK_20003_DENNIS_FIRSTEXIT_KOMM +++

Hier ist der script:

instance DIA_VLK_20003_Dennis_Exit (C_INFO)
{
npc = VLK_20003_Dennis;
nr = 999;
condition = DIA_VLK_20003_Dennis_Exit_Condition;
information = DIA_VLK_20003_Dennis_Exit_Info;
important = 0;
permanent = 1;
description = DIALOG_ENDE;
};

FUNC INT DIA_VLK_20003_Dennis_Exit_Condition()
{
if (Npc_KnowsInfo(hero, DIA_VLK_20003_Dennis_FirstExit))
{
return 1;
};
};

FUNC VOID DIA_VLK_20003_Dennis_Exit_Info()
{
AI_StopProcessInfos (self);
};

INSTANCE DIA_VLK_20003_Dennis_FirstExit (C_INFO)
{
npc = Vlk_20003_Dennis;
nr = 1;
condition = DIA_VLK_20003_Dennis_FirstExit_Condition;
information = DIA_VLK_20003_Dennis_FirstExit_Info;
permanent = 0;
important = 1;
};

FUNC INT DIA_VLK_20003_Dennis_FirstExit_Condition()
{
if (Npc_GetDistToNpc(self,hero) < ZivilAnquatschDist)
{
return 1;
};
};

FUNC VOID DIA_VLK_20003_Dennis_FirstExit_Info()
{
AI_Output (self, other,"DIA_VLK_20003_Dennis_FirstExit_15_00"); //Hi,du bist neu hier,oder? Ich kann dich begleiten,wenn du willst.
AI_Output (self, other,"DIA_VLK_20003_Dennis_FirstExit_15_01"); //Ich kann für dich Tiere besiegen,du bekommst dabei auch Erfahrung. Und du kannst jederzeit alleine weiterlaufen... na wie sieht's aus?
Info_ClearChoices (DIA_VLK_20003_Dennis_FirstExit);
Info_AddChoice (DIA_VLK_20003_Dennis_FirstExit,"Nein vielleicht später...",DIA_VLK_20003_Dennis_FirstExit_Nein);
Info_AddChoice (DIA_VLK_20003_Dennis_FirstExit,"Ok,komm mit.",DIA_VLK_20003_Dennis_FirstExit_Komm);
Log_CreateTopic (follow_me, LOG_NOTE);
B_LogEntry (follow_me, "Dennis hat mir angeboten, dass er für mich kämpft.");

};

func void DIA_VLK_20003_Dennis_FirstExit_Nein()
{
AI_Output (other, self,"DIA_VLK_20003_Dennis_FirstExit_Nein_15_00"); // Nein,vielleicht später!
AI_Output (self, other,"DIA_VLK_20003_Dennis_FirstExit_nein_15_01"); //Ok,komm wieder vorbei,wenn du es dir anders überlegt hast.
AI_StopProcessInfos ( self );
};

func void DIA_VLK_20003_Dennis_FirstExit_Komm()
{
AI_Output (other, self,"DIA_VLK_20003_Dennis_FirstExit_Komm_15_00"); // Ja, klar, du kannst mit mir jetzt richtig Monster schlachten. Folge mir!
Info_ClearChoices (DIA_VLK_20003_Dennis_FirstExit);
AI_StopProcessInfos ( self );
Npc_ExchangeRoutine (self,"FOLLOW");


};

instance DIA_VLK_20003_Dennis_Stop(C_INFO)
{
npc = VLK_20003_Dennis;
nr = 1;
condition = DIA_VLK_20003_Dennis_Stop;
information = DIA_VLK_20003_Dennis_Stop;
permanent = 0;
description = "Ich will alleine sein";
};

FUNC INT DIA_VLK_20003_Dennis_Stop_Condition()
{
if (Npc_KnowsInfo(hero,DIA_VLK_20003_Dennis_FirstExit_Komm))
{
return 1;
};
};

FUNC VOID DIA_VLK_20003_Dennis_Stop_Info()
{
AI_Output (oher, self ,"DIA_VLK_20003_Dennis_Stop_15_00"); // Du kannst jetzt gehen, ich brauch' dich nicht mehr!
AI_Output (self, other,"DIA_VLK_20003_Dennis_Stop_15_01"); // Ok,wenn du mich brauchst,komme einfach zu mir. Man sieht sich.
Npc_ExchangeRoutine (self,"START");
AI_StopProcessInfos ( self );
};
08.04.2004, 17:10 #21
HornOx
Beiträge: 1.458

Npc_KnowsInfo will als zweiten Parameter eine c_Info Instanz haben, DIA_VLK_20003_Dennis_FirstExit_Komm ist aber eine Funktion.
08.04.2004, 17:20 #22
Ken Suyoko
Beiträge: 923

So nun bin ich wieder da.

ich habe vom Def Kit alle Dateien nochmal reingetan und übespeichert. d.h. ich habe alle Dateien so ganz normal wie sie sein müssen aber nun reparse ic zum testen und starte Gothic da kommt folgende Feglermeldung:

http://mitglied.lycos.de/blaaablubb/modden/fehler.jpg

ich weis auch net wie das kommt. aber die Fehlermeldung deutet auf Corristo hin!
Ich habe aber an einem anderen Magier geksriptet.


thx im Vorraus

EDIT: die einzigsten skripte wo die Fehlermeldung als 1.te Zeile haben sind die normalen NPC und MISSION.
08.04.2004, 18:07 #23
Maharreshi
Beiträge: 82

quote:
die einzigsten skripte wo die Fehlermeldung als 1.te Zeile haben sind die normalen NPC und MISSION


Heißt das, du bekommst Unmengen von Fehlermeldungen, die jeweils die erste Zeile der Scriptdateien im NPC- und MISSION-Unterordner betreffen?


edit:

Also der Screenshot von deiner Fehlermeldung weist eigentlich eindeutig darauf hin, dass es die Funktion bzw. Info 'KDF_402_Corristo_Exit' schon gibt (übrigens in der Datei 'DIA_KDF_402_Corristo.d' im Missionsordner).

Hast du eventuell einer andere Funktion bzw. Info den selben Namen gegeben, oder ist die oben genannte Datei evtl. doppelt vorhanden (wenn dann in verschiedenen Ordnern), möglicherweise durch einen Fehler beim Re-Installieren des MDKs?
08.04.2004, 18:15 #24
HornOx
Beiträge: 1.458

Such doch mal mit Ultraedit oder mit dem CrimsonEditor alle Scripte nach "KDF_402_Corristo_Exit" ab, dann siehst du wo es überall defeniert ist.
08.04.2004, 18:25 #25
Ken Suyoko
Beiträge: 923

Also ich hab die 2 Skripte abgesucht und diese sind die 2 Teile.

Die sind jeweils ganz am anfang.


    instance KDF_402_Corristo_Exit (C_INFO)
    {
    npc = KDF_402_Corristo;
    nr = 999;
    condition = KDF_402_Corristo_Exit_Condition;
    information = KDF_402_Corristo_Exit_Info;
    important = 0;
    permanent = 1;
    description = DIALOG_ENDE;
    };

    FUNC int KDF_402_Corristo_Exit_Condition()
    {
    return TRUE;
    };

    FUNC VOID _Info()
    {
    AI_StopProcessInfos ( self );
    };



    -------------------------------------------------------------






Seite 1 von 2  1  2