HerrDerSchatten wrote:
habt mal ne allgemeine Frage,
bastel gerade an meiner ersten Karte (omg was für ein Drecks . Editor) und möchte dem Spieler alle 10 min 20 Rad verpassen.
Hab das aber nicht hinbekommen und schreibe das mal eben in Pseudocode
procedure Strahlung
begin;(brauchts hier ";"?)
var x: boolean;
while x=true add_player_dude(radiation(20))
end;
so ähnlich würds zumindest unter delphi aussehen
Sorry nochmal, dass du etwas länger warten musstest. Obgleich mein Fallout 2 hier an meinem Haupt- und Internet PC geschrottet ist, will ich trozdem fix antworten.
Die Überlegung ist schonmal nicht schlecht, aber etwas kompliziert für Fallout.
In einem Map Script, in dem der Spieler bei erstmaligem betreten der Map verstrahlt wird, würde es so aussehen:
procedure map_enter_p_proc
begin // kein ; hier hin!
variable radiate_me;
//deklarieren der temporären Variable
radiate_me:=
20;
//der Var radiate_me wird der Wert 20 zugewiesen
radiation_inc(dude_obj,radiate_me);
//dude_obj bekommt beim Map betreten 20 Strahlung.
end
Jetzt würde der Spieler beim betreten der Map 20 Strahlung abbekommen. Aber wir wollen ja keine einmalige, sondern zeitabhängige Verstrahlung.
Der Wert 10 Minuten ist in Fallout ziemlich hoch gegriffen denke ich. Klar, man braucht auch mal etwas länger in einer Map, aber 10 Minuten ist schon etwas heftig.
Sagen wir mal, der Spieler bekommt alle 5 Game-Ticks 20 Rad. (1 Tick sollte ca. 1 Spielsekunde sein, aber ich denke, dass ist vom PC abhängig.)
Das ganze sieht dann schon einen Tick komplizierter aus, da wir zwei Prozeduren brauchen:
procedure map_enter_p_proc
begin
add_timer_event(self_obj,game_ticks(
5),0);
//timed_event nach 5 Ticks aufrufen.
end
procedure timed_event_p_proc
begin
variable radiate_me;
//deklarieren der temporären Variable
radiate_me:=
20;
//der Var radiate_me wird der Wert 20 zugewiesen
radiation_inc(dude_obj,radiate_me);
//dude_obj bekommt 20 Rad je Prozedurdurchlauf.
add_timer_event(self_obj,game_ticks(
5),0);
//Timer Event auslösen, für Schleife(!)
end
Jetzt wird praktisch beim betreten der Map ein Timer aktiviert, der nach Ablauf die timed_event_p_proc aufruft. Die Prozedur wird dann durchgearbeitet und am Ende wird die timed_event_p_proc wieder nach 5 Ticks aufgerufen. Das ergibt eine Endlosschleife und der Spieler bekommt in meinem Beispiel alle 5 Game-Ticks 20 Rad Strahlung ab. Die 20 varriieren natürlich, je nach dem, wie hoch die Rad-Resistenz des Spielers gerade ist.
Wenn du ein vorhandenes Map Script nimmst, sollten die Prozeduren eigentlich schon vorhanden sein und du brauchst nur noch reinschreiben, was du brauchst. Sollte eine der beiden Prozeduren fehlen, musst du diese am Anfang des Scripts auch noch deklarieren. (
procedure timed_event_p_proc; z.B.)
Am Ende sei noch gesagt, dass du die Variable "radiate_me" nicht unbedingt brauchst. Du kannst auch anstelle der Variable eine Zahl direkt in dem Befehl eintragen. Also "radiation_inc(dude_obj,
20);". Das funktioniert natürlich auch, ist aber nicht so gut geeignet, falls du per Script den Rad Wert bei bestimmten Bedingungen ändern willst. Geht zwar alles auch, wird aber mehr Code und damit unübersichtlicher.
Hoffe, ich konnte helfen.
only when you no-life you can exist forever, because what does not live cannot die