[FO1] Razlo und das Gegengift - Scripting Frage

Hilfe bei der Erstellung von Fallout 1 / 2 Modifikationen, sowie Werbung und Ankündigungen.

Moderators: Newsposter, Global Moderator, Zugriff Intern, Moderator

User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

[FO1] Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Hi. Wie man hier nachlesen kann: http://web3.o067.orange.fastwebserver.d ... l#msg77773 gibt's da ein kleines Problem mit Razlos Script.

Kurzfassung: Wenn Razlo das Gegengift hat und man ihn fragt ob er einen Entgiftet passiert nix. Die Vergiftung bleibt bestehen.

Wie man sieht is das Script vom lieben Razlo wohl etwas falsch. Hab mal reingeschaut, und folgendes steht an der entsprechenden Stelle drinne:
procedure razlo25
-begin
gsay_message(129, 149, 50);
if (get_poison(dude_obj) > 0) then begin
gsay_message(129, 150, 50);
poison(dude_obj, -get_poison(dude_obj));
call razlo26;
end
else begin
gsay_message(129, 151, 50);
poison(dude_obj, -get_poison(dude_obj));
end
end
Ich bin keine Leuchte was die Scripts angeht, aber ich schätze mal die Zeile "poison(dude_obj, -get_poison(dude_obj))" sollte eigentlich die Entgiftung einleiten, was sie aber nicht tut. Also is das Script scheinbar falsch. Ich kann das Script ohne Probleme ändern, aber ich hab keine Ahnung was ich abändern sollte. Deswegen die Frage an die Scripting-Götter da draußen: Wie korrigiere ich dieses Script, so daß Razlo mich von dem Gift heilt, wie es auch vorgesehen ist?
Last edited by Cerebro on Thu Apr 26, 2007 2:56 pm, edited 1 time in total.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Das Script reparieren.... ist für Fallout 1 recht kompliziert. Du hast das Script jetzt decompiliert, dadurch kannst du das Script nicht mehr compilieren, da die ganzen Befehle vom Compiler nicht mehr erkannt werden. Du müsstest jetzt entweder das ganze Script neu schreiben oder die Befehle quasi wieder übersetzen.

Für mich schaut die Prozedur ganz ordentlich aus. Es wird erst abgefragt, ob die Vergiftung vom dude_obj größer als 0 ist, wenn das der Fall ist, wird eine Nachricht ausgegeben und die Vergiftung minus der vorher abgefragte Vergiftung gesetzt. Danach wird die nächste Prozedur (call razlo26;) aufgerufen. Warum in der Else-Abfrage aber noch einmal "poison(dude_obj, -get_poison(dude_obj));" steht, kann ich nicht so recht verstehen.
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Das mit dem compilieren is kein Problem. Ich hab schon mit anderen Scripts erfolgreich herumgebastelt. Benutze das Tool FSE und das klappt wunderbar.

Wie gesagt: Ich hab allerdings keinen Plan von der "Sprache" die hier angewandt wird... es schaut also doch richtig aus? Dennoch frage ich mich, warum Razlo absolut nichts bewirkt, wenn er mich entgiften möchte. Gäbe es evtl. ne andere Mögklichkeit. Z.B. indem man das Script so abändert, daß mir einfach ein Antidote in die Tasche steckt?

EDIT:

Mir da ein kleiner Fehler unterlaufen. In dem script oben hatte ich bereits diverse Versuche unternommen das Problem selbst in die Hand zu nehmen, als ich den Text dann wieder in seinen Ur-Zustand setzen wollte, hab ich ne Kleinigkeit übersehen. Glaube allerdings nicht, daß das jetzt den Ausschlag gibt. Das Script funzt jedenfalls mit keiner der beiden Varianten. Aber hier ist die absolute UR-FORM, so wie sie in der Master.dat ist:
procedure razlo25
begin
gsay_message(129, 149, 50);
if (get_poison(dude_obj) > 0) then begin
gsay_message(129, 150, 50);
poison(dude_obj, -get_poison(dude_obj));
call razlo26;
end
else begin
gsay_message(129, 151, 50);
end
poison(dude_obj, -get_poison(dude_obj));
end
Last edited by Cerebro on Fri Mar 30, 2007 1:00 pm, edited 1 time in total.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Irgendwie sinnlos. Egal, was bei If-Else genommen wird, "poison(dude_obj, -get_poison(dude_obj));" wird so oder so ausgeführt. Was sind denn das für Textstellen? (gsay_message, usw) Ich kann mir nicht vorstellen, dass die Prozedur für das Gift verantwortlich ist.


Und du kannst das decompilierte Fallout 1 Script mit FSE wieder _richtig_ compilieren, ohne es wieder umzuschreiben? Als ich damals ein Fallout 1 Script decompiliert habe, war es ohne vorherige Anpassung unmöglich, das Ding zu compilieren.
Ich hab allerdings keinen Plan von der "Sprache" die hier angewandt wird..
Die Fallout Scriptsprache schaut ein bisschen aus wie Delphie oder Pascal, manche behaupten auch, eine Form von C. Was das jetzt genau ist, kann ich aber auch nicht wirklich sagen...
Gäbe es evtl. ne andere Mögklichkeit. Z.B. indem man das Script so abändert, daß mir einfach ein Antidote in die Tasche steckt?
Ja natürlich, aber ich würde ehr behaupten, dass es besser ist, wenn dir der Vergiftet-Zustand entzogen wird.

Schau mal in den Fallout Scripten nach. Da müsste es AFAIK auch irgendwo eine ähnliche Stelle geben. Irgend ein NPC in Fallout 2 kann den Spieler doch auch entgiften? Im Notfall schau einfach mal in dem entsprechendem Script nach und sieh dir an, wie das da geregelt wurde.
Last edited by Lexx on Fri Mar 30, 2007 1:25 pm, edited 1 time in total.
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Zu dem compilieren:
Ja, das geht wunderbar. Ich bin ja der absolute Scripting-n00b. Man muß Fallout 2 installiert haben und dann beim ersten Start von FSE Ein paar Fallout 2 Pfade angeben. Ich glaube so bekommt das tool auch die Infos, wie es die Scripts zu "bearbeiten" hat. Dann führe ich das tool int2ssl aus, welches mir INT files in SSL files umwandelt. Diese SSL-files kann ich dann bequem per FSE öffnen, bearbeiten und wieder compilieren. Nach der compilierung wird wieder ein INT-files daraus und Fallout hat noch nie gemuckt bei diesen files - weder Fallout 1 noch Fallout 2. Habe schon diverse files auf die Art und Weise minimal bearbeitet - es funktioniert einwandfrei.

zu den Textstellen: (spiele die englische Version)
gsay_message(129, 149, 50); --> Here, let's see.
gsay_message(129, 150, 50); --> Yep, just as I thought. Let me get the cure.
gsay_message(129, 151, 50); --> You seem fine, now. Be careful in the future.

Wenn ich mich entgiften lassen möchte kommen eigentlich aber nur die 1. und die 3. Zeile zum Einsatz - also die 149 und die 151.

Habe Fallout 2 schon ewig nicht mehr gezockt und wüßte jetzt auf Anhieb nicht welcher Char dort das passende Script hätte. Wäre da über Hilfestellung wirklich dankbar.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Hm.. ich könnte frühstens heute Abend (was ich dann aber wohl nicht mehr packen werde) oder das jetzt kommende Wochenende darum kümmern. In der Theorie brauchst du jedenfalls nur den Poison-Stat von dude_obj abfragen und diesen dann per normale Subtraktion wieder auf 0 setzen... ist eigentlich eine der einfachsten Übungen.
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Für dich vielleicht. Wie gesagt ich hab von den Scripts keine Ahnung. Habe zwar schon diverse Scripts geändert, aber da nur Textstellen ausgetauscht bzw. hinzugefügt, damit ein NPC was anderes sagt etc.

Ich hab's ja auch nicht unbedingt eilig. Bin mittlerweile ohnehin im Hub, aber ich hätte das gerne irgendwann mal gefixt. ^^ Wenn du oder jemand anderes mal Zeit findet wäre das wirklich cool. Würde mir ja reichen, wenn mir einer sagt welcher Char in FO2 ein ähnliches Script verwendet, welches funktioniert. Dann wusel ich mich da durch und versuch das von Razlo entsprechend abzuändern.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Also um das neue Script zum laufen zu bekommen, müsstest du sowieso ein neues Spiel starten. Im Nachhinein irgendwelche Orte oder NPCs in ihren Scripts, ect. zu ändern, bringt nichts.
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Doch, Scripts gehen... Bin ich mir sicher, hatte das schon in nem anderen Fall.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Ne, wenn du den entsprechenden Ort schon besucht hast, sollte es eigentlich nicht mehr funktionieren. Evtl. geht es noch, wenn du die Person mit dem Script noch nicht angesprochen hast, aber das glaube ich auch ehr weniger.
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Glaub mir... es geht. Ich hab's doch schon selbst getestet. ;) Das mit dem "noch nicht ansprechen" kann sein, da ich vorher immer speicher, aber es geht. Das Script wird ja im Gegensatz zur map und alle items die drauf sind, nicht mit dem Savegame gespeichert, sondern immer wieder direkt aus der Master.dat bzw. dem Data Ordner abgefragt. Ich hatte da noch nie Probs mit.

Aber is ja sowieso egal, denn das ist hier nicht das Thema und Problem. Zurück zum Script: Wer hilft mir bei der Korrektur? :D
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Cerebro wrote: Zurück zum Script: Wer hilft mir bei der Korrektur? :D
Also bis auf "Ich" (oder evtl. noch Lisac) wird sich hier wohl niemand mehr melden. Soweit schätze ich das Forum schon ein... ^^
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Nicht unbedingt. :P Ich sagte doch mir langt im Prinzip der Name von einem NPC, der den Spieler in Fallout 2 entgiften kann. Dafür muß man ja kein Script-Genie sein. ^^
User avatar
Gauss
FoCafé Member
Posts: 7604
Joined: Wed Mar 14, 2007 2:33 pm
Contact:

Re: Razlo und das Gegengift - Scripting Frage

Post by Gauss »

???  :s000: ihr seid mir hier zu krass drauf. ich komm ma garnich mit hier.
With no guide by my side just this heart counting down out of time...
Killian
Karawanenwache
Posts: 98
Joined: Fri May 26, 2006 2:39 pm

Re: [FO1] Razlo und das Gegengift - Scripting Frage

Post by Killian »

Also erstmal würd ich in der Doku nachschauen, die es zum  black isle fo2 mapper gab. Dort stehen die "Funktionen" erklärt. Kann ja sein, dass die entwickler poison usw. für FO2 übernommen haben. Alle Makros wie eben "poison" müssten doch in define.h oder command.h definiert sein. Diese Files gabs auch mit dem Mapper mit. Ich hab sie grad nciht zu hand, kann aber zuhause nachschauen.
Killian
Karawanenwache
Posts: 98
Joined: Fri May 26, 2006 2:39 pm

Re: [FO1] Razlo und das Gegengift - Scripting Frage

Post by Killian »

hiho^^ Tut mir Leid, hab erst jetzt nachgeschaut:

Also die Zeile :  poison(dude_obj, -get_poison(dude_obj)); heisst :

ändere Vergiftungslevel von dude_obj um minus (gib mir den Vergiftungslevel von dude_obj);

Sieht also gut aus. Das einzige Problem ist vllt  das Minus. Versuch einfach statt  -get_poison(dude_obj) ne Zahl reinzuschreiben und nachschauen ob sich dein Vergiftungslevel ändert.
In der console kannst du evtl. get_poison(dude_obj) als Message ausgeben um zu sehen, was der wirft.
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: [FO1] Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Wow, hätte nicht gedacht das hier nochmal jemand antwortet und seh's dementsprechend jetzt erst.

Danke für den Tipp, werd ich mal versuchen. Aber da ich mich mit scripting nicht wirklich gut auskenne eine Frage noch dazu: Ich würde also das "-get_poison(dude_obj)" löschen und statt dessen sowas wie "-get_poison(50)" reinschreiben!? Oder vllt. so rum: "get_poison(-50)"

Übrigens ist mir aufgefallen, daß das script scheinbar tadellos funzt, wenn ich nur einmal vergiftet wurde. Vergiftet mich ein Radscorpion mehrmals, scheint der alte Razlo nicht mehr entgiften zu wollen.
Last edited by Cerebro on Tue Jul 03, 2007 10:42 pm, edited 1 time in total.
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: [FO1] Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Wenn du -50 schreibst, werden dir auch nur -50 Punkte von dem Gift abgezogen. Du wirst also nur für 50 Punkte entgiftet, wenn ich das jetzt richtig verstehe. Bin mir da aber auch nicht 100% sicher, weil ich damit noch nicht gearbeitet habe. Es kann auch sein, dass vergiftet sein nur ein ja- oder nein-Zustand ist. Dann wäre das -50 etwas sinnfrei.
only when you no-life you can exist forever, because what does not live cannot die
User avatar
Cerebro
FoCafé SL
Posts: 6261
Joined: Mon Jan 15, 2007 7:37 pm
Contact:

Re: [FO1] Razlo und das Gegengift - Scripting Frage

Post by Cerebro »

Hab mir das PROTO-file vom Gegengift mal angesehen. Da werden - bei Benutzung - Zahlen im Minus abgezogen, also kann es eigentlich kein Ja/Nein Zustand sein. Mir ging's eher um die genaue Formulierung des Scripts, also: get_poison(-50) oder -get_poison(50) (oder was ganz anderes.)
User avatar
Lexx
Administrator
Posts: 27348
Joined: Sat Dec 10, 2005 6:27 pm

Re: [FO1] Razlo und das Gegengift - Scripting Frage

Post by Lexx »

Aber ist get_poison nicht die Abfrage, um den Giftgrad auszulesen? Klingt für mich jedenfalls so.
only when you no-life you can exist forever, because what does not live cannot die
Post Reply

Return to “Fallout Modding”