Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Hmm interessant :-/
Hast du einen komplett neuen Spielstand angefangen?
Ich habe den NPC in den "Big World Clean Install" Ordner (bzw eine Kopie davon) installiert und einfach einen Spielstand geladen bei dem ich da Brückenviertel noch nicht besucht habe.
Das hat in erster Linie damit nichts zu tun. Du kannst einen Charakter auf zwei Arten in ein gebiet reinbringen:
1.) Du patchst das Gebiet und setzt die Figur als Actor rein. Das hat ein paar Vorteile aber auch ein paar Nachteile.
Vorteile sind z.B.: Du kannst, wenn du z.B. eine Figur mehrfach verwendest, ihr verschiedene Scripte zuweisen. Und du kannst ihre Anwesenheit besser zeitlich begrenzen.
Und der große Nachteil ist: Das Gebiet darf noch nicht besucht worden sein.
Du hast die Figur über das Areaskript eingefügt, das so oder so immer abläuft. Da macht es nichts ob du noch nie in dem Gebiet warst oder schon oft, Skripte werden jedes mal neu von oben nach unten abgearbeitet, die können auch während eines laufenden Spieles verändert werden. mach nen Stutter-Debug auf ar0500.bcs und schau ob dein Befehl überhaupt ausgeführt wird. der müsste dann Block 0 sein.
Von mir auch noch ein kurzer Tip am Rande: Wenn du deine Mod zu Testzwecken installiert hast und dann doch noch eine kleine Änderung in der tp2 oder so vornimmst, geh bei WeiDu nicht auf "Reinstall", sondern immer schön erst "Uninstall" und dann wieder "Install".
Ansonsten haust du dir schnell Bugs in die Installation
Viel Spaß weiterhin! Wie Jastey schon sagte - der Virus hat dich gepackt
Ja es macht in der Tat Spaß, auch wenn es umständlich ist einzelne Zwischensteps ausreichend zu testen :-/
Vielleicht finden sich ja noch ein oder zwei andere Interessierte die Lust haben gemeinsam an einem Projekt zu arbeiten
So könnte man einzelne Bereiche sinnvoll aufteilen und es macht ja auch mehr Spaß in der Gruppe ;-)
Man könnte ja dann ein git repo dazu eröffnen um effektiv miteinander arbeiten zu können.
// Wie genau führe ich btw einen "Stutter Debug" aus?
////ok hab den Thread gefunden ^^
Sooo, ich habs geschafft mir den Test mal im Spiel anzuschauen (lag schlichtweg daran, dass ich das falsche Spiel gestartet habe ) und hab ein paar Fehler entdeckt.
1) Der NPC ist grün umrandet, obwohl ich eigentlich in dessen Creaturefile "neutral 128" ausgewählt habe.
2) Folgender Block wird nicht ausgeführt:
Code:
IF ~NumTimesTalkedToGT(0)~ THEN BEGIN Talk2
SAY ~Schön Euch wieder zu treffen Freund! Darf ich mich Euch anschließen?~
IF ~~ THEN REPLY ~Warum nicht.~ DO ~SetGlobal("TestiJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~Ich kann zur Zeit leider keine weiteren Gefährten gebrauchen.~ EXIT
END
Wenn ich das richtig verstanden habe, sollte dieses Gespräch doch immer stattfinden wenn man mehr als 0x (also mindestens 1x ^^) mit dem NPC gesprochen hat, wo liegt also der Fehler?
Oder gilt das nur für NPCs die man schonmal aus der Gruppe gekickt hat (das Tutorial sah diesen Block für derartige Situationen ursprünglich vor)
Und noch eine Frage:
Um welche Dateien handelt es sich bei folgenden eigentlich und wie setzt sich der Name zusammen (habe einfach geraten was den Namen der Files anging, schien aber zu stimmen)?
1.) Testi ist bei mir als PC und nicht als Neutreal angegeben. Nicht gespeichert vielleicht?
2.) Das ist ja auch ein Dialogblock. Wenn du willst dass die Figur von sich aus spricht brauchst du ein Skript. Das ist in dem von mir ganz oben verlinkten Thread beschrieben.
3.) PDIALOG.2DA und INTERDIA.2DA sind Tabellen (2da = 2 Dimensional Arrays oder sowas). in der PDIALOG wird festgehalten, welche DLG-Datei wann benutzt wird: CoTesti.dlg ist die Datei, wenn die Figur noch nie in der Gruppe war. CoTestiP = nachdem die Figur in der Party war CoTestiJ = während sie in der Party ist. CoTestiD = das Dreamscript, also eine BCS-Datei die abgefragt wird bevor die Gruppe rastet. CoTes25P CoTes25J CoTes25D CoTest25 = Alles das gleiche nur für Thron des Bhaal
die Interdia.2da wird abgefragt wenn es um Banter geht. Da stehen also die Banterdateien drin.
Danke soweit, das mit dem Script habe ich schon verstanden.
Ich meinte vielmehr, dass der Dialogblock ausgeführt werden sollte wenn ich den NPC nochmal anspreche (IF ~NumTimesTalkedToGT(0)~).
Doch egal wie oft ich Testi anspreche, der Dialog ist immer der selbe :-/
Wenn du sie noch nicht auf Neutral geändert hast dann musst du das machen. Ich habs gerade mal ausprobiert und es scheint, dass PCs immer auf NumTimesTalkedTo(0) stehen.
So, ich hab mich dann auch mal an den ersten ernsthaften Dialog gesetzt.
Folgender Dialog soll quasi in die Geschehnisse meines Mods einführen und auch gleich ein paar Questlog einträge liefern. (dazu siehe unten)
Hier mal mein Dialog:
IF ~NumTimesTalkedTo(0)~ THEN BEGIN InitialTalk
SAY ~Ihr dort! Bitte wartet!~
IF ~~ GOTO Talk2
END
IF ~~ THEN BEGIN Talk2
SAY ~Bitte bleibt einen Moment stehen, ich benötige Eure Hilfe!~
IF ~~ THEN REPLY ~Beruhigt Euch, wie kann ich Euch helfen?~ GOTO Help
IF ~~ THEN REPLY ~Nun gut, aber lasst Euch gesagt sein, dass meine Dienste nicht umsonst sind.~ GOTO Pay
IF ~~ THEN REPLY ~Es tut mir Leid, aber ich habe keine Zeit um mich Euren Problemem zu widmen.~ GOTO NoTime
IF ~~ THEN REPLY ~Zur Seite, Dirne! Eure Probleme interessieren mich nicht!~ GOTO Decline
END
IF ~NumTimesTalkedToGT(0)~ THEN BEGIN InitialTalk2
SAY ~Wollt Ihr mir nun helfen? Ich flehe euch an!~
IF ~~ THEN REPLY ~Beruhigt Euch, wie kann ich Euch helfen?~ GOTO Help
IF ~~ THEN REPLY ~Nun gut, aber lasst Euch gesagt sein, dass meine Dienste nicht umsonst sind.~ GOTO Pay
IF ~~ THEN REPLY ~Es tut mir Leid, aber ich habe immer noch keine Zeit.~ GOTO NoTime
IF ~~ THEN REPLY ~Ich sagte doch bereits, verschwindet!~ GOTO Decline
END
IF ~~ THEN BEGIN Pay
SAY ~Ich biete Euch mein ganzes Geld, wenn Ihr mir nur helft!~
IF ~~ THEN REPLY ~Musik in meinen Ohren, was ist Euer Anliegen?~ GOTO Help
END
IF ~~ THEN BEGIN Help
SAY ~Mystra sei gepriesen, endlich erhört mich jemand!~
= ~Wir wurden letzte Nacht nicht weit nördlich von hier überfallen. Sie kamen nachts während wir schliefen, wir konnten uns nicht einmal verteidigen...~
IF ~~ THEN REPLY ~Und wir sollen nun Euer Hab und Gut von den Räubern beschaffen nehme ich an?~ GOTO Property
IF ~~ THEN REPLY ~"Wir"? Ihr seid nicht alleine?~ GOTO We
END
IF ~~ THEN BEGIN Property
SAY ~*Taldrins stimme zittert während sie spricht* Es geht nicht um Geld oder irgendwelche Gegenstände! Sie haben mir etwas viel wichtigeres genommen.~
= ~Meine Tochter und ich waren nach Norden unterwegs. Ich d-dachte ich könnte uns beschützen!~
= ~Bitte! Ihr müsst sie zurückholen!~
IF ~~ THEN REPLY ~Ihr seid getrennt worden? Wo ist sie jetzt?~ GOTO Where
END
IF ~~ THEN BEGIN We
SAY ~*Taldrins stimme zittert während sie spricht* N-nein, meine Tochter und ich waren nach Norden unterwegs. Ich d-dachte ich könnte uns vor den Gefahren der Straße beschützen!~
= ~Bitte! Ihr müsst sie zurückholen!~
IF ~~ THEN REPLY ~Ihr seid getrennt worden? Wo ist sie jetzt?~ GOTO Where
END
IF ~~ THEN BEGIN Where
SAY ~Ich weiß es nicht, sie haben sie gepackt und verschleppt ehe ich meine Waffe ergreifen konnte.~
= ~Sie hatten es nur auf Alienne abgesehen. Normalerweise kann sie auf sich selbst aufpassen, aber anscheinend wurde sie ebenfalls überrascht.~
= ~Das letzte was ich von ihnen sah war, wie sie Richtung Norden flüchteten.~
IF ~~ THEN REPLY ~Wir werden alles daran setzen sie zu finden, macht Euch keine Sorgen!~ GOTO Accept
IF ~~ THEN REPLY ~Das klingt nach einer langen und schwierigen Aufgabe. Wenn die Bezahlung stimmt können wir sofort aufbrechen.~ GOTO AcceptPay
IF ~~ THEN REPLY ~Warum wendet Ihr euch nicht an die Flammende Faust?~ GOTO Guard
IF ~~ THEN REPLY ~Das klingt nach jeder Menge Ärger. Wir können keine weiteren Feinde gebrauchen, wir müssen ablehnen.~ GOTO Decline
END
IF ~~ THEN BEGIN Guard
SAY ~Die Faust? Diese Tölpel sind ihren Sold nicht wert! Ohne konkrete Anhaltspunkte waren sie nicht bereit die Entführer zu verfolgen.~
= ~Bitte, ich brauche Eure Hilfe. Alleine werde ich es kaum schaffen die Verfolgung aufzunehmen!~
IF ~~ THEN REPLY ~Wir werden alles daran setzen sie zu finden, macht Euch keine Sorgen!~ GOTO Accept
IF ~~ THEN REPLY ~Das ist eine schwierigen Aufgabe, aber wenn die Bezahlung stimmt können wir sofort aufbrechen.~ GOTO AcceptPay
IF ~~ THEN REPLY ~Das klingt nach jeder Menge Ärger. Es tut uns Leid, aber wir können keine weiteren Feinde gebrauchen, wir müssen ablehnen.~ GOTO Decline
END
IF ~~ THEN BEGIN Accept
SAY ~Ich weiß garnicht wie ich Euch danken kann! Ihr solltet Eure Suche in Beregost beginnen, die Entführer haben sicherlich in einem der Wirthshäuser übernachtet.~
= ~Wir haben keine Zeit zu verlieren, Ihr solltet gleich aufbrechen! Ich werde mich ebenfalls dorthin begeben und mich umhören.~
= ~Möge Mystra Euch beistehen.~
IF ~~ THEN EXIT
END
IF ~~ THEN BEGIN AcceptPay
SAY ~Ich gebe Euch alles was ich habe, solange Ihr mir nur meine Alienne zurückbringt! Ihr solltet Eure Suche in Beregost beginnen, die Entführer haben sicherlich in einem der Wirthshäuser übernachtet.~
= ~Wir haben keine Zeit zu verlieren, Ihr solltet gleich aufbrechen! Ich werde mich ebenfalls dorthin begeben und mich umhören.~
= ~Möge Mystra Euch beistehen!~
IF ~~ THEN EXIT
END
IF ~~ THEN BEGIN NoTime
SAY ~Ich flehe Euch an, es ist von größter Wichtigkeit! Wenn Ihr Zeit findet kommt bitte umgehend zu mir!~
IF ~~ THEN EXIT
END
IF ~~ THEN BEGIN Decline
SAY ~*Taldrin schaut Euch ungläubig an und wendet sich schließlich mit Tränen in den Augen ab.* ~
IF ~~ THEN EXIT
END
Was haltet ihr von dem Text? Passt sich mein Schreibstil (soweit erkennbar) in das Spiel gut ein? Verbesserungsvorschläge?
Außerdem habe ich noch ein Problem mit den Journalentries, die wollen nicht so recht.
Ich habe z.B. versucht einen Eintrag wie folgt zu verfassen (copy paste aus nem Tutorial)
IF ~~ THEN BEGIN Accept
SAY ~Ich weiß garnicht wie ich Euch danken kann! Ihr solltet Eure Suche in Beregost beginnen, die Entführer haben sicherlich in einem der Wirthshäuser übernachtet.~
= ~Wir haben keine Zeit zu verlieren, Ihr solltet gleich aufbrechen! Ich werde mich ebenfalls dorthin begeben und mich umhören.~
= ~Möge Mystra Euch beistehen.~ DO ~SetGlobal("EntryTest","GLOBAL",1)~
UNSOLVED_JOURNAL %Quest Entry
This should be your quest entry.% EXIT
END
Leider meckert der Installer hier immer beim "DO", wo liegt der Fehler?
Ps: Nein, ich werde jetzt nicht für jeden Dialog eure Meinung einholen :-P
Was Ascalon damit sagen tut, ist, dass du deine Transition (IF ~~ THEN oder ++ ~~) brauchst, an die du deine Actions (DO, UNSOLVED_JOURNAL) anhängen kannst.
IF ~~ THEN BEGIN bla //Statekopf und Eröffnungsbedingungen (conditions)
SAY ~etepetete~ = ~mehr etepetete~ = ~noch mehr~ //das was gesagt wird von einer einzigen Person
IF ~~ THEN DO ~~ /*muss nicht sein*/ UNSOLVED_JOURNAL ~~ /*muss auch nicht sein*/ GOTO/EXTERN/EXIT //muss immer sein und das ganze sind dann die Bedingungen für und das Ziel für den Übergang (transition).
Du kannst verschiedene Befehle zusammenfassen. Allerdings brauchst du nur ein DO dafür:
Code:
DO ~SetGlobal("EntryTest","GLOBAL",1)EscapeArea()~
Und immer darauf achten, dass Befehle wie EscapeArea() oder DestroySelf() oder StartDialogNoSet() am Ende der Kette stehen, sonst werden die anderen Befehle nicht ausgeführt.
IF ~~ THEN BEGIN Blub
SAY ~Plop.~
IF ~~ THEN DO ~SetGlobal("EntryTest","GLOBAL",1)EscapeArea()~ UNSOLVED_JOURNAL %Quest Entry
This should be your quest entry.% EXIT
END
Befehle wie DestroySelf() EscapeArea() usw. immer als letztes Denn sobald die Person verschwunden ist, würden nachfolgende Befehle nicht mehr ausgeführt werden...
Gruß Jarl
EDIT: Hööp? Wo kommt denn dein post plötzlich her, Ascalon?
Ok, das sieht doch schonmal sehr gut aus.
Die Syntax ist mir an einigen Stellen noch nicht gazn klar, aber mit Try&Error kommt man ja auch gut voran :-P
Ach, das sind alles Kinderkrankheiten, das verwächst sich mit der Zeit. Irgendwann macht's dann plopp und gut ist. Schau dir vor allem Mods an, in denen der eine oder andere Effekt passiert den du auch erzielen willst. So lernt man am besten.
Oh, war mehr ne rhetorische Frage. Ich wunderte mich nur, dass du bereits 5 Minuten vor mir dasselbe geschrieben hast, ohne dass ich den Post bei mir gesehen habe
Diese Seite verwendet Cookies, um Inhalte zu personalisieren und dich nach der Registrierung angemeldet zu halten. Durch die Nutzung unserer Webseite erklärst du dich damit einverstanden.