Funktion spinnt?

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
Frath
PaC-DK Newby
Posts: 18
Joined: 12 Jan 2008, 07:29
Location: Dresden
Contact:

Funktion spinnt?

Post: # 72951Post Frath
11 Feb 2009, 15:16

Hallo! Ich bin es mal wieder. Ich sitze schon seit Wochen an einem (neuen) Projekt und hatte bis jetzt auch noch keine Probleme....bis jetzt.
Ich habe mir gedacht: "Bau mal eine lustige Aufgabe unter Zeitdruck ein" Man soll einen Stock nehmen, ihn anzünden und nach 30 Sekunden soll er wieder ausgehen ( weil es im Raum regnet). Das hat auch alles super funktioniert.
Ich habe eine rekursive Funktion gebaut, die so aussieht:

setnum(sekunden;-1)
wait (1)
ifnot_num(sekunden;<1)
function(Stabzahl)
setnum(sekunden;31)
cutscene(Stabaus)

(Natürlich habe ich vorher "sekunden" auf 31 gestellt)

"Stabaus" sieht so aus:

delitem(self;Stab_geg_feuer)
additem(self;Stab_geg)
speech(self;Der Stab ist ausgegangen...So ein mist!)

Das Problem ist, dass beim Verlassen des Raumes auf einmal "Stabaus"
aktiviert wird, bevor die Zeit abgelaufen ist....("sekunden" läuft trotzdem weiter)

Ich hoffe mir kann jemand helfen das Problem zu lösen...
Musik von DJ Frath (mir) gibt's hier: http://soundcloud.com/djfrath

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Post: # 72952Post Zimond
11 Feb 2009, 16:27

eine loopende Funktion ruft man auf mit :

function (stab ; inf)


in der Funktion dann :

Code: Select all

setnum(sekunden;-1)
wait (1)
if_num(sekunden; 0)
 {
 setnum(sekunden;31)
 cutscene(Stabaus) 
 stopfunction (stab)
 }

wesentlich simpler wäre es aber :

timer (30)
cutscene (stabaus)

in die cutscene stabaus kannst du dann noch am anfang etwas einfügen wie :

if_num (feuergenutzt ; 99)
break()

Für den Fall das man den brennenden Stab rechtzeitig benutzt hat und er schon weg ist. Ansonsten musst du auch hier an der Stelle dafür sorgen das die Funktion gestoppt wird wenn der Spieler den Stab rechtzeitig benutzt.

Frath
PaC-DK Newby
Posts: 18
Joined: 12 Jan 2008, 07:29
Location: Dresden
Contact:

Post: # 72953Post Frath
11 Feb 2009, 17:18

Danke für die schnelle Antwort!
Gut, es war mir klar, dass es eine elegantere Lösung für die Funktion gibt.
Ich wollte auch erst einen Timer benutzen, allerdings habe ich folgendes im Gegenstandsskript des brennenden Stocks:

on (look)
speech(self;Der Stab brennt noch [sekunden] Sekunden)

Deswegen habe ich auf einen Timer verzichtet, da man, soviel ich weiß, nicht einzelne "Timerschritte" als Variablen ausgeben kann.

Allerdings besteht das Problem weiterhin: Wenn ich in einen anderen Raum gehe (z.B: Eine dunkle Höhle, wo man den Stock in eine Halterung geben soll) wird, kurz nachdem ich die Höhle betrete, "Stabaus" aktiviert.
Woran könnte das liegen?

By the way: Wenn ich den, auf mysteriöse Weise nun ausgegangenen, Stock wieder "entzünde" und in die Höhle (oder einen anderen Raum) gehe, wird "Stabaus" NICHT mehr aktiviert: Es funktioniert also, aber erst beim zweiten Entzünden...Sachen gibt's.
Musik von DJ Frath (mir) gibt's hier: http://soundcloud.com/djfrath

Frath
PaC-DK Newby
Posts: 18
Joined: 12 Jan 2008, 07:29
Location: Dresden
Contact:

Post: # 72954Post Frath
11 Feb 2009, 17:25

Oh...moment...hat sich erledigt! Es funktioniert! Juhu! :banana:

Trotzdem eine Frage: Kann man "Timerschritte" irgendwie als Variablen ausgeben lassen?
Musik von DJ Frath (mir) gibt's hier: http://soundcloud.com/djfrath

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Post: # 72955Post Zimond
11 Feb 2009, 18:18

nein direkt nicht, nur halt durch den Umweg den du ja schon gemacht hast. Gameplayfrage nebenher : Woher soll die Spielfigur genau wissen wieviel Sekunden der stab noch brennt? Nicht das das technisch falsch wäre erscheint mir nur etwas merkwürdig. Besser fände ich ungefähre Angaben basierend auf die Sekunden z.B

Code: Select all

if_num (sekunden ; <6)
 speech (self ; Du solltest dich beeilen, das Ding brennt nicht mehr lange.)
if_num (sekunden ; >5)
 if_num (sekunden ; <15)
  speech (self ; Noch brennts aber ein Ende ist schon in Sicht)

Frath
PaC-DK Newby
Posts: 18
Joined: 12 Jan 2008, 07:29
Location: Dresden
Contact:

Post: # 72957Post Frath
12 Feb 2009, 10:19

Zimond wrote: Woher soll die Spielfigur genau wissen wieviel Sekunden der stab noch brennt?


Äh...ähm...gute Frage. Das habe ich mir gar nicht überlegt...Ich wollte das Spiel benutzerfreundlich und nachvollziehbar gestallten, dabei ist der Realismus wohl irgendwie auf der Strecke geblieben... :oops:
Naja, man könnte es ja auch als eine Anspielung auf andere Spiele sehen, wo ein Countdown eingeblendet wird, obwohl man garnicht wissen kann, wie lange eine Tür o.ä. offen bleibt..*rausred*

Vielen Dank für deine Tipps und Hinweise! :comp:
Musik von DJ Frath (mir) gibt's hier: http://soundcloud.com/djfrath

Baelavay
PaC-DK God
Posts: 1168
Joined: 04 Jun 2006, 19:24
Contact:

Post: # 72958Post Baelavay
12 Feb 2009, 18:10

Dazu möchte ich gerne zweierlei Dinge anmerken. Also zunächst musst du trennen zwischen dem Wissen des Spielcharakters und dem, was der Spieler weiß. Es ist zwar möglich, den Spieler das Spiel praktisch durch die Augen des Charakters zu spielen, um mehr Spannung zu erzeugen. Meistens weiß der Spieler aber mehr als die Figur, die er da steuert (alleine wenn man bedenkt, dass man einen gebailten Abschnitt neu laden kann, wovon die Spielfigur keinen Schimmer hat). Das heißt, du kannst einen Counter für den Spieler einbauen, obwohl die Spielfigur nicht weiß, wie lange noch Zeit bleibt.

Außerdem ist es aus meiner Sicht nur bedingt ratsam, Realismus in einem Spiel durchzusetzen. Du kannst entweder ein realistisches Spiel machen (dann bist du beim Genre der Simulation) - oder ein spielerfreundliches. Die Realität macht nämlich häufig weniger Spaß als das Spiel, in dem der Spieler die gewohnten Grenzen überschreiten kann. Das ist auch der Grund, wieso Spiele überhaupt gespielt werden. Natürlich gibt es aber Ausnahmen, wo das Spielerlebnis nie an die Realität heranreichen kann (gerade im Bereich Sport, oder bei einem guten Essen oder Sex ;)). Ich rate dir, bei der Spielplanung den Spielspaß als primäres Augenmerk zu verfolgen, aber noch ein Mindestmaß an Realismus beizubehalten, damit das Ganze glaubhaft bleibt, gerade bei Adventures, die in unserer Welt und Zeit angesiedelt sind.

Post Reply