World of Gothic Archiv
> Editing Script-Problem |
|
24.03.2004, 17:03 | #1 | ||||
König Rhobar II Beiträge: 639 |
Script-Problem
Ich bin gerade dabei meine erste Quest zu scripten, und hab auch schon ein Problem. Ich wollte die Mission man testen, aber beim parsen kommen Fehlermeldungen, die ich irgendwie nicht ganz nachvollziehen kann: Unknown Identifier ELSE irgendwas mit nem ";" und: Syntax Error: } Hier mal der betroffene Scriptteil: code\: Ich hab bis jetzt alle Fehler verbessern können, aber hierbei weiß ich echt nicht weiter. |
||||
24.03.2004, 18:10 | #2 | ||||
HornOx Beiträge: 1.458 |
quote:http://wiki.devmode.de/Deadalus/Syntax#q24 ";" schließt einen Ausdruck ab und eine alleinstehende Funktion "else" kenn Gothic nicht. |
||||
24.03.2004, 18:24 | #3 | ||||
König Rhobar II Beiträge: 639 |
Ok, danke, jetzt klappt es. |
||||
24.03.2004, 19:26 | #4 | ||||
aragorn_16 Beiträge: 529 |
Hab auch ein Problem mit nem Script: Yugun_ChargePat = LOG_RUNNING; var C_NPC Pat; Pat = Hlp_GetNpc(SLD_2871_Pat); Pat.aivar[AIV_WASDEFEATEDBYSC] = FALSE; Pat.aivar[AIV_HASDEFEATEDSC] = FALSE; FUNC INT SLD_2870_Yugun_PatSuccess_Condition() { var C_NPC Pat; Pat = Hlp_GetNpc(SLD_2871_Pat); if ( (Yugun_ChargePat == LOG_RUNNING) && (Pat_Charged == TRUE) && ( (Pat.aivar[AIV_WASDEFEATEDBYSC] == TRUE) || (Pat.aivar[AIV_HASDEFEATEDSC] == TRUE) ) ) { return 1; }; }; FUNC VOID SLD_2870_Yugun_PatSuccess_Info() { var C_NPC Pat; Pat = Hlp_GetNpc(SLD_2871_Pat); AI_Output (other,self,"SLD_2870_Yugun_PatSuccess_15_00"); // Ich habe gegen Pat gekämpft. if (Pat.aivar[AIV_HASDEFEATEDSC] == TRUE) { AI_Output (self,other,"SLD_2870_Yugun_PatSuccess_02_01"); // Und du hast gegen ihn verloren. Aber das habe ich mir fast schon gedacht. AI_Output (self,other,"SLD_2870_Yugun_PatSuccess_02_02"); // Lass dir eins gesagt sein. Hier im Lager brauchen wir gute Kämpfer. Yugun_ChargePat = LOG_FAILED; B_LogEntry( YugunsKampf, "Yugun schien ziemlich enttäuscht über meine Niederlage gegen Pat zu sein. Ich könnte ihn noch mit einem Sieg gegen Tokab beeindrucken, aber das wird ziemlich schwer."); } else if (Pat.aivar[AIV_WASDEFEATEDBYSC] == TRUE) { AI_Output (self,other,"SLD_2870_Yugun_PatSuccess_02_03"); // Und du hast ihn besiegt. Ich bin sehr beeindruckt. Das hätte ich dir gar nicht zugetraut. Mach weiter so. Yugun_ChargePat = LOG_SUCCESS; B_LogEntry( YugunsKampf, "Yugun ist sehr beeindruckt, dass ich Pat besiegt hab."); }; }; Also, das sollte jetzt so ein Dialog sein, wie der mit Kirgo. Aber es kommt immer die Fehlermeldung: Yugun_ChargePat Woran könnte das liegen? |
||||
24.03.2004, 19:33 | #5 | ||||
HornOx Beiträge: 1.458 |
Lass zSpy mitlaufen, dann bekommst du eine richtige Fehlermeldung mit Zeilenangabe... |
||||
24.03.2004, 20:00 | #6 | ||||
Ken Suyoko Beiträge: 923 |
liegt das nicht an der großschreibung? Da die Skripte mit Logbucheinträgen groß geschrieben sind wie der mit Thorus über Mordrag. aber jetzt komme ich. Ich bin zu blöd um einen Logbuch eintrag zu machen. ich kopier mal den von Thorus rein: Thorus_MordragKo = LOG_RUNNING; Log_CreateTopic (CH1_MordragKO, LOG_MISSION); B_LogEntry (CH1_MordragKO,"Thorus hat mich damit beauftragt, einen Banditen namens Mordrag aus dem Lager zu vertreiben. Wie ich das anstelle hat er mir überlassen. Außerdem darf niemand erfahren, dass Thorus dahintersteckt."); Log_SetTopicStatus (CH1_MordragKO, LOG_RUNNING); var C_Npc Mordrag; Mordrag = Hlp_GetNpc(ORG_826_Mordrag); also ich weis jetzt nicht ob das alles war aber... jetzt meine Idee: Mein hero soll am anfang in der Verlassenen Mine einen zettel finden. ( wo gibt es einen leeren Zettel den ich beschreiben kann?) Dann liest der den und bekommt den Auftrag die Waren wiederzufidnen denn in dem Brief steht das gewisse Leute manchmal Waren geklaut haben. Das soll erst mal alles sein! Nur das der EIntrag im Logbuch steht. Ich weis jetzt nur nicht ob das so richtig ist: ERSTER_AUFTRAG = LOG_RUNNING; Log_CreateTopic (CH1_Mission, LOG_MISSION); B_LogEntry (CH1_Mission,"Eine Bande hat Güter versteckt. Ihre Anfangsbuchstaben sind: T; D; L. Ich sollte so unaufällig wie möglich wirken damit sie keinen Verdacht schöpfen."); Log_SetTopicStatus (CH1_Mission, LOG_RUNNING); und wo ist der Skript weches als Oberbegriff im Logbuch steht? |
||||
24.03.2004, 20:25 | #7 | ||||
HornOx Beiträge: 1.458 |
steht in Log_Constants.d quote:ERSTER_AUFTRAG mußt du da auch definieren. Benutz einen Editor der ganze Verzeichnisse nach etwas durchsuchen kann (z.b. den Crimson Editor), dann findest du sowas recht schnell. Großschreibung ist bei Konstanten egal. |
||||
24.03.2004, 20:37 | #8 | ||||
aragorn_16 Beiträge: 529 |
Als Fehlermeldung kommt ja Yugun_ChargePat. Aber was muss ich da anders machen? |
||||
24.03.2004, 20:38 | #9 | ||||
Ken Suyoko Beiträge: 923 |
Also ich versteh da nur Bahnhof. aber hier ist der ganze Skript: INSTANCE ItWr_ZerZettel_01(C_Item) { name = "Zerknuellter Zettel"; mainflag = ITEM_KAT_DOCS; flags = 0; value = 150; visual = "ItWr_Book_09_09.3ds"; material = MAT_LEATHER; scemeName = "MAP"; description = "Zerknuellter Zettel"; TEXT[5] = NAME_Value; COUNT[5] = value; on_state[0] = UseItWr_ZerZettel_01; }; FUNC VOID UseItWr_ZerZettel_01() { var int nDocID; nDocID = Doc_Create () ; // DocManager Doc_SetPages ( nDocID, 2 ); //wieviel Pages Doc_SetPage ( nDocID, 0, "Book_Brown_L.tga", 0 ); Doc_SetPage ( nDocID, 1, "Book_Brown_R.tga", 0 ); //1.Seite Doc_SetFont ( nDocID, -1, "font_15_book.tga" ); // -1 -> all pages Doc_SetMargins ( nDocID, 0, 275, 20, 30, 20, 1 ); // 0 -> margins are in pixels Doc_PrintLine ( nDocID, 0, " An Alle!"); Doc_PrintLine ( nDocID, 0, ""); Doc_PrintLine ( nDocID, 0, " " ); Doc_SetFont ( nDocID, -1, "font_10_book.TGA" ); // -1 -> all pages Doc_PrintLine ( nDocID, 0, ""); Doc_PrintLine ( nDocID, 0, ""); Doc_PrintLines ( nDocID, 0, " Ich glaube man hat im Neuen Lager Verdacht geschöpft. Wir sollten uns hier nicht treffen! Wenn jemand mit den Waren durchbrennen will so finden wir den jenigen. Und KEIN Wort, auch nicht zu Asylya!"); Doc_PrintLine ( nDocID, 0, ""); //2.Seite Doc_SetMargins ( nDocID, -1, 30, 20, 275, 20, 1 ); // 0 -> margins are in pixels (Position des Textes von den Ränder des TGAs aus, links,oben,rechts,unten) Doc_PrintLine ( nDocID, 1, ""); Doc_PrintLine ( nDocID, 1, ""); Doc_PrintLine ( nDocID, 1, ""); Doc_PrintLine ( nDocID, 1, ""); Doc_PrintLines ( nDocID, 1, "Gez: L ; D ; T."); Doc_PrintLine ( nDocID, 1, ""); Doc_PrintLine ( nDocID, 1, ""); Doc_Show ( nDocID ); if Knows_GetBFSting == FALSE DIEBE = LOG_RUNNING; Log_CreateTopic (CH1_Diebe, LOG_MISSION); B_LogEntry (CH1_Diebe,"Eine Bande hat Güter versteckt. Ihre Anfangsbuchstaben sind: L;T. Ich sollte so unaufällig wie möglich wirken damit sie keinen Verdacht schöpfen. Auserdem sollte ich nach dieser Asylya Ausschau halten."); Log_SetTopicStatus (CH1_Diebe, LOG_RUNNING); }; wenn ich G1 starte kommt da ein Fehler mit einer Klammer auf Zeile 1641 oder so. Aber die Zeilen zahl hab ihr ja net drum... aber die klammer.... also ich habe das Buch der Blutfliegen genommen und das geändert. |
||||
24.03.2004, 21:32 | #10 | ||||
aragorn_16 Beiträge: 529 |
Also den Tagebucheintrag bracuhst du doch bei dem Brief nicht hinschreiben. Du musst einfach nur den Text ändern und zwar da: Doc_PrintLines ( nDocID, 0, " Ich glaube man hat im Neuen Lager Verdacht geschöpft. Wir sollten uns hier nicht treffen! Wenn jemand mit den Waren durchbrennen will so finden wir den jenigen. Und KEIN Wort, auch nicht zu Asylya!"); |
||||
24.03.2004, 22:17 | #11 | ||||
Neely Beiträge: 133 |
Kleiner Hinweis vorweg: Bitte den CODE-Tag benutzen, macht die Sache wesentlich übersichtlicher und besser zu lesen. @aragorn_16: Hast du die Variable 'Yugun_ChargePat' auch irgendwo deklariert? Bei der Fehlermeldung müsste doch noch bissl mehr stehen oder? Sowas wie Unknown Identifier oder sowas in der Art?! @Ken Suyoko: Kannst du die genaue Fehlermeldung mal bitte Posten? Notfalls lad dir mal Ultraedit runter, das hat Zeilenangaben. |
||||
25.03.2004, 16:49 | #12 | ||||
Ken Suyoko Beiträge: 923 |
Also ich habe das erste Prob gelöst da hat eine: { gefehlt aber nun wenn ich reparse kommt das er : DIEBE = LOG_RUNNING; Das Wort Diebe nicht kennt! D.h. ich muss e sin einem anderen Skript noch ientragen damit er es annerkennt, aber welcher ist das? der Missionsskript? Kann es sein das ich den noch im Story_Globals eintragen muss? Damitd as Spiel weis wann ich die Q lösen kann? |
||||
25.03.2004, 16:57 | #13 | ||||
HornOx Beiträge: 1.458 |
mußt du in Log_Constants.d schreiben.code\: |
||||
25.03.2004, 17:01 | #14 | ||||
Ken Suyoko Beiträge: 923 |
Danke für die schnelle Antwort. Ich habe den Crisom editor geloadet, danke ebenfalls. Da stehen die Zeilen dran usw usw. edit wie cann ich in dme cirsom deitor eine Datai Schreibegscützt wegmachen damit ich speichern kann? |
||||
25.03.2004, 17:14 | #15 | ||||
HornOx Beiträge: 1.458 |
granihct, ds must d zb mit dem Wndows Expploer tun |
||||
25.03.2004, 17:29 | #16 | ||||
Ken Suyoko Beiträge: 923 |
Also ich hätte da noch ne Frage. aber dmait die mods mein plötzliches modder Dasein nicht als Spammgrund sehen würde e smich freuen wenn ich deine icq nummer bekommen würde,´dann müsste ich meine posts nicht in die Höhe treiben und kann dich geziehlt fragen, das kommt auch direkter rüber. Aber wenn du nicht willst dann ist das okay, denn ich bin sicherlich nicht der einzigste der diese probs hat und schließlich wollen die anderen gleichartigen probs auch glöst werden. also nun kommt eine fehler mrldung das auf Zeile 1677 ein Gehler ist aber auf Zeile 1677 im Written skript ist nud das Ende zeichen: }; aber ansheinden hat er ein prob mit irgeneinerm : ; sol ich es mal wegmachen? |
||||
25.03.2004, 17:30 | #17 | ||||
König Rhobar II Beiträge: 639 |
und schon wieder ein problem: zSpy sagt: code\: Hier ist das Betroffene Script: code\: |
||||
25.03.2004, 17:43 | #18 | ||||
Ken Suyoko Beiträge: 923 |
ALso hier ist der Fehler: hoffe das ihr das verstehen mögt! |
||||
25.03.2004, 17:56 | #19 | ||||
aragorn_16 Beiträge: 529 |
Also das mit dem Dialog hat jetzt funktioniert. |
||||
25.03.2004, 18:08 | #20 | ||||
Black Daemon Beiträge: 218 |
@König..... Ich glaube, das zwar auch schonmal benutzt zu haben aber ich konnte "B_GiveInvItem" nirgends finden. Überall wird "B_GiveInvItems" benutzt und da Zspy auch "Unknown Identifier: B_GIVEINVITEM " sagt scheint es die andere Funktion nicht zu geben. Also benutz mal "B_GiveInvItems" und probier dann nochmal. Denke es lag nur daran. @Ken Suyoko Wow also wirklich viel sagen kann ich dir jetzt nicht. Aner der Fehler ist in Zeile 1677 deines bearbeiteten Scripts und es fehlt wohl ein ";" das am Ende der Zeile stehen sollte, meistens fehlt es in der Zeile darüber. |
||||
25.03.2004, 18:38 | #21 | ||||
König Rhobar II Beiträge: 639 |
hat funktioniert, danke. Nur die Sachen mit den ";" und so haben sich kaum geändert. Ich hab mal nachgesehen, ob das in anderen Scripten sein könnte, aber das ist das einzige, was in Frage kommt. |
||||
25.03.2004, 18:38 | #22 | ||||
HornOx Beiträge: 1.458 |
quote:solange deine posts etwas mit dem verändern von Gothic zu tun haben sind sie hier kein Spam quote:Tritt einem Modteam bei, dann hast du einen Lehrer und das Modteam hat einen neuen Mitarbeiter. IMHO ist es besser erstmal intensiv selbst nach den Fehler zu suchen, Syntaxfehler und vertippen in Funktionsnamen sind triviale Fehler, wenn ihr sowas nicht alleine findet werdet ihr bei komplexeren Fehlern _richtige_ Probleme bekommen. |
||||
25.03.2004, 18:54 | #23 | ||||
Ken Suyoko Beiträge: 923 |
Also ich habe verzweifelt so manches ausprobiert und habe das nächste prob: in meinem Skript steht: DIEBE = LOG_RUNNING; und bei Thorus: Thorus_MordragKo = LOG_RUNNING; also das Gothic hat ein Problem mit meinem DIEBE ich habe in den Log_constance bei Kapitel 1 hinzugrfügt: const string CH1_DIEBE = "Waren Diebe"; Aber warum kennt der dann noch immer DIEBE nicht? Denn das CH1_DIEBE ist hier drin: Log_CreateTopic (CH1_DIEBE, LOG_MISSION); da ist es aber wo muss ich dann noch das normale DIEBE eintippen wo da oben Thorus_MordragKO steht? und zu Mod... Ich glaube kaum das jemand mich in ein Modteam will da man eigentlich etwas können müsste ehe man da reinkommt aber ich kann ja gar nix! Danke im Vorraus! |
||||
25.03.2004, 18:55 | #24 | ||||
König Rhobar II Beiträge: 639 |
ich hab das ganze mal im Spiel getestet, und bis zu dem oben genannte Scriptteil funktioniert der Dialog einwandfrei, als ich dann "Ich bin dabei" ausgewählt habe stürzte Gothic ab. Das heißt der Fehler muss in dem Dialogteil sitzen. edit: Hab den Fehler gefunden. ich hab das ",1" in B_GiveInvItems (self, other, senyansbook,1); vergessen |
||||
26.03.2004, 13:55 | #25 | ||||
Ken Suyoko Beiträge: 923 |
also ich gebe WHistler den AUftrag und der soll es dm hero geben ist glaube ich einfacher! |
||||
|