Autor Thema: [FO1] Razlo und das Gegengift - Scripting Frage  (Gelesen 5939 mal)

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
[FO1] Razlo und das Gegengift - Scripting Frage
« am: 29. März 2007, 20:02:47 Uhr »
Hi. Wie man hier nachlesen kann: http://web3.o067.orange.fastwebserver.de/index.php/topic,1255.msg77773.html#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:

Zitat
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?
« Letzte Änderung: 26. April 2007, 14:56:22 Uhr von Lexx »

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #1 am: 30. März 2007, 08:55:33 Uhr »
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

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #2 am: 30. März 2007, 12:23:11 Uhr »
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:

Zitat
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
« Letzte Änderung: 30. März 2007, 13:00:28 Uhr von Cerebro »

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #3 am: 30. März 2007, 13:17:05 Uhr »
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.

Zitat
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...

Zitat
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.
« Letzte Änderung: 30. März 2007, 13:25:06 Uhr von Lexx »
only when you no-life you can exist forever, because what does not live cannot die

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #4 am: 30. März 2007, 14:15:10 Uhr »
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.

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #5 am: 30. März 2007, 14:51:04 Uhr »
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

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #6 am: 30. März 2007, 17:20:57 Uhr »
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.

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #7 am: 30. März 2007, 20:18:24 Uhr »
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

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #8 am: 30. März 2007, 22:41:16 Uhr »
Doch, Scripts gehen... Bin ich mir sicher, hatte das schon in nem anderen Fall.

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #9 am: 30. März 2007, 23:46:11 Uhr »
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

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #10 am: 31. März 2007, 02:35:03 Uhr »
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

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #11 am: 31. März 2007, 02:57:38 Uhr »
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

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #12 am: 31. März 2007, 12:14:01 Uhr »
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. ^^

Offline Gauss

  • FoCafé Member
  • Heilige Granate
  • Beiträge: 4.470
Re: Razlo und das Gegengift - Scripting Frage
« Antwort #13 am: 31. März 2007, 13:35:11 Uhr »
 ???  :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...

Offline Killian

  • Karawanenwache
  • Beiträge: 97
Re: [FO1] Razlo und das Gegengift - Scripting Frage
« Antwort #14 am: 04. Juni 2007, 10:49:57 Uhr »
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.

Offline Killian

  • Karawanenwache
  • Beiträge: 97
Re: [FO1] Razlo und das Gegengift - Scripting Frage
« Antwort #15 am: 06. Juni 2007, 20:45:17 Uhr »
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.

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: [FO1] Razlo und das Gegengift - Scripting Frage
« Antwort #16 am: 03. Juli 2007, 22:37:04 Uhr »
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.
« Letzte Änderung: 03. Juli 2007, 22:42:08 Uhr von Cerebro »

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: [FO1] Razlo und das Gegengift - Scripting Frage
« Antwort #17 am: 04. Juli 2007, 08:20:11 Uhr »
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

Offline Cerebro

  • FoCafé SL
  • Heilige Granate
  • Beiträge: 5.965
  • 4 8 15 16 23 42
Re: [FO1] Razlo und das Gegengift - Scripting Frage
« Antwort #18 am: 04. Juli 2007, 12:53:10 Uhr »
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.)

Offline Lexx

  • Administrator
  • Auserwähltes Wesen
  • Beiträge: 17.726
Re: [FO1] Razlo und das Gegengift - Scripting Frage
« Antwort #19 am: 04. Juli 2007, 12:55:23 Uhr »
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