Hilfe bei FX-Script gesucht

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
andy
PaC-DK Newby
Posts: 5
Joined: 14 May 2011, 16:55

Hilfe bei FX-Script gesucht

Post: # 78218Post andy
14 May 2011, 17:14

Hallo ihr lieben.

Ich hoffe das ihr mir helfen könnt.

Ich bastel zur zeit mit meiner Schwester zusammen an einem Adventure game, mit einem kleinen Horror-Einschlag, und nun suche ich praktisch schon den ganzen Tag nach einen Fehler, den ich mir absolut nicht erklären kann. Und zwar:

Warum funktioniert das nachstehende Script nicht?

Code: Select all

[...]

if_num ([panik] ; 3)
  {
  setobj (hud_leben ; 4)
  loopsound (lkeuc03 ; 2)
  loopsound (lherz01 ; 50)
  starteffect (blur)
  starteffect (whoosh ; 50)
  starteffect (drugged ; 50)
  setobj (hud_panik ; 1)
  }

[...]
Das Ding soll nichts anderes machen, als in dem Augenblick, in dem der Panik-Wert des Charakters auf 3 ansteigt, die Wahrnehmung des Spielers zu verändern.
Im Grunde funktioniert es zwar schon, aber starteffect (whoosh ; 50) und starteffect (drugged ; 50) werden aus irgend einem Grunde nicht aufgerufen und scheinbar einfach übersprungen (oder der Effekt wird zumindest nicht angezeigt). Ich begreife nicht warum.

Gestern hat das Script noch als "Raumscript" funktioniert ... dann hatte ich die tolle Idee, es in das Hauptscript zu übernehmen, und jetzt geht es gar nicht mehr, auch dann nicht, wenn ich es in das Raumscript zurück schreibe.

Ich hoffe, hier kann mir jemand helfen.

EDITH sagt:

Ich habe nochmal etwas rumprobiert, und noch einen weiteren fehler im Script bemerkt:
Wenn die Variable panik auf 3 schaltet, wird setobj (hud_leben ; 4) ebenfalls nicht korrekt ausgeführt. Stattdessen wird das objekt hud_leben auf einen Zustand gesetzt, der praktisch nicht existent ist :shock:
Zur erläuterung:
hud_leben besitzt 4 Zustände, die sich darin unterscheiden, wie schnell sie animiert sind... je höher der Zustand, desto schneller die Animation. Schalte ich aber die Variable panik auf 3, wird die Animation des Objektes komplett unterbunden - das ist in sofern besonders kurios, da hud_leben gar keinen Zustand besitzt, der NICHT animiert ist.




P.S.: gibt es eigentlich einen etwas kompfortableren Weg um das Raumscript aufzurufen als über "Neues Script erstellen"? Irgendwie ist das ganz schön nerfig, dass ich immer die neu angelegten Scripts löschen muss, weil ich das Raumscript sonst nicht geöffnet kriege.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Hilfe bei FX-Script gesucht

Post: # 78219Post japanhonk
14 May 2011, 18:20

Hi,

Die Abfrage if_num ([panik] ; 3) ist falsch.

korrekt müsste es lauten : if_num (panik ; 3)


Die eckigen Klammern werden nicht vor dem Semikolon verwendet, ausser in einigen Sonderfällen.

Über einen Klick auf den Pfeil nach unten (oben im Rahmen des Skriptfensters) Kannst Du die letzten 5 Skripte aufrufen.
Oder einfach ein Klick (einfacher Klick) auf den Raum links im Pool. Auch dann kommt das Raumskript.
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

andy
PaC-DK Newby
Posts: 5
Joined: 14 May 2011, 16:55

Re: Hilfe bei FX-Script gesucht

Post: # 78220Post andy
14 May 2011, 18:44

Hallo du.

Danke für deine Antwort, leider bringt sie nicht den gewünschten Effekt. Ich habe das auch schon ohne klammern versicht, der effekt war der selbe.

Code: Select all

if_num (panik ; 3)
  {
  setobj (hud_leben ; 4)
  loopsound (lkeuc03 ; 2)
  loopsound (lherz01 ; 50)
  starteffect (blur)
  starteffect (whoosh ; 50)
  starteffect (drugged ; 50)
  setobj (hud_panik ; 1)

Im Spiel habe ich einen Trigger, der setzt "Panik" von 0 auf 3, wenn er aktiviert wird. Bei "Panik 0" passiert zu beginn des Spiels noch gar nichts ... und das funktioniert soweit auch. Ich habe jetzt ein wenig mit der Konsole gespielt, und folgendes herausgefunden:

Aktiviere ich den Trigger, wird panik korrekt auf 3 gesetzt, und das Script FEHLERHAFT (wie oben beschrieben) ausgeführt.
Setzte ich jetzt über die Konsole "Panik" zurück auf 0, womit das script eigentlich abgeschaltet werden sollte (weil if_num (panik ; 3) dann nicht mehr gegeben ist), wird das ganze Script aber stattdessen plötzlich korrekt ausgeführt - OBWOHL zu spielbegin Panik 0 korrekt bewirkt hat, das NICHTS passiert ist.
Setzte ich Panik jetzt per Konsole wieder auf 3, treten auch die Probleme wieder auf.

Ich zweifel grade an meinem verstand.




P.S:
Bei mir öffnet sich das raumscript nicht, wenn ich im Baum links auf den Raum klicke, dann wird mir immer nur der raum angezeigt. Auch rechtsklick oder doppelklick zeigt das Raumscript nicht an. Ich kann es derzeit nur über die 5 letzte scripte im Scriptfenster, oder über "Neues Script" aufrufen.

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Re: Hilfe bei FX-Script gesucht

Post: # 78221Post parkiii
14 May 2011, 19:26

andy wrote:P.S:
Bei mir öffnet sich das raumscript nicht, wenn ich im Baum links auf den Raum klicke, dann wird mir immer nur der raum angezeigt. Auch rechtsklick oder doppelklick zeigt das Raumscript nicht an. Ich kann es derzeit nur über die 5 letzte scripte im Scriptfenster, oder über "Neues Script" aufrufen.
Fenster / Raumfenster ein

oder einfach ein objektskript öffnen und dann im raum auf den hintergrund klicken.

andy
PaC-DK Newby
Posts: 5
Joined: 14 May 2011, 16:55

Re: Hilfe bei FX-Script gesucht

Post: # 78222Post andy
14 May 2011, 22:25

Danke. Das mit dem Scriptfenster hat geholfen.



Mit meinem anderen Problem komme ich aber nicht so recht weiter.
Ich habe immer noch mal stunden lang rumgedocktert, und bin zu folgendem ergebniss gekommen:

Wenn ich den Zustand eines beliebiegen Objektes durch eine Endlos-Schleife (zum Beispiel im Main-Script) über einen setobj-Befehl ändern will, der Teil einer if_num-Abfrage ist, dann wird das betroffene Objekt aus irgend einem Grunde vom System eingefroren. Dann funktionieren nicht einmal mehr on (click) events.

Die beiden folgenden Codes stammen aus dem selben Script:

Kurz zur Erklärung:
Es gibt im HUD des Spiels eine Anzeige, die gleichzeitig die Lebensenergie und die Angst des Charakters darstellt.

Code: Select all

  if_num (health ; 100)
    {
    setobjlight (obj_status; 255 ; 255; 255; fade)
    }

  if_num (health ; >66)
    {
    if_num (health ; <100)
      {
      setobjlight (obj_status; 100 ; 255; 100; fade)
      }
    }

  if_num (health ; >33)
    {
    if_num (health ; <66)
      {
      setobjlight (obj_status; 255 ; 255; 100; fade)
      }
    }

  if_num (health ; >0)
    {
    if_num (health ; <33)
      {
      setobjlight (obj_status; 255 ; 100; 100; fade)
      }
    }
Dieser teil funktioniert Tadellos! Sinkt die Lebensenergie des Charakters, wird die Gesundheitsanzeige eingefärbt. Erst Grün, dann Gelb, dann Rot. Wird der Charakter geheilt, dann verfürbt sich die Anzeige ebendso in umgekehrter Richtung.



Code: Select all

  if_num (psi ; 1)
    setobj (obj_status ; 1)

  if_num (psi ; 2)
    setobj (obj_status ; 2)

  if_num (psi ; 3)
    setobj (obj_status ; 3)

  if_num (psi ; 4)
    setobj (obj_status ; 4)
Dieser Teil funktioniert nicht. Eigentlich sollte an dieser Stelle durch die geschwindigkeit der Animation die größe der Angst dargestellt werden, die der Charakter verspührt. Deshalb bestimme ich durch die Variable 'psi' den Zustand des Objektes, wobei höhere Zustände eine schneller Animationsgeschwindigkeit haben.

Was passiert tatsächlich? Ist die Variable 'psi' größer als 0, wird der aktiven Zustand des Objektes vom System auf den höchsten vergebenen Zustand gesetzt (in diesem Fall 4) und die Animation bleibt beim ersten existierenden Frame hängen, so das das Objekt praktisch nutzlos wird.


Ist das so gewollt und bestimmte Befehle funktionieren einfach nicht aus einer Endlosschleife - beziehungsweise aus dem hauptscript - heraus? Liegt es daran, dass ich mehrere If-Abfragen in einer Schleife nacheinander habe? Bin ich einfach zu dumm? Oder ist das ein Bug?



EDITH SAGT:
So, ich habe das Problem jetzt umgangen, in dem ich die IF-Schleifen in separate Scripts ausgelagert habe, die nur noch über das Mainscript aufgerufen werden. Dadurch habe ich jetzt nicht mehr das Problem, dass die Animationen blockiert werden und alles funktioniert so, wie es soll.
:D

Post Reply