Construction Set Problem mit Enable und Parents

Xaephrim

Abenteurer
Moin, ich sitze mal wieder fest! :-D

Ich habe vor, einige von diesen "Lightbeams" erscheinen zu lassen, sobald der Spieler bestimmte Punkte in einem Raum erreicht hat. Zudem soll sich eine Tür öffnen, sobald ALLE dieser Punkte erreicht sind.

Also dachte ich mir, ich mache eine Triggerbox, die sobald sie vom Player betreten wird, einen bestimmten Lightbeam "enabled" und eine von mir gesetzte Global +1 setzt. Sobald diese Global dann einen bestimmten Wert erreicht (z.B. 10), ist klar, dass der Spieler alle Punkte abgegangen ist und besagte Tür kann sich öffnen.
Damit ich dann aber nicht 10 Scripts schreiben muss (1 pro Triggerbox), dachte ich mir, ich löse das am besten per Parent. Leider funktioniert bis jetzt nichts. :cry:

1.) Das Triggerboxscript:
Code:
scn TrigZoneScript

short doOnce

begin OnTrigger player
	if doOnce == 0
	set MeineGlobal to +1
	set doOnce to 1
	endif
end

Außerdem wird der Lightbeam über "Parent" aktiviert. Deshalb:

2.) Das Lightbeamscript:
(der Lightbeam steht auf "initially disabled")
Code:
scn LightBeamScript

short doOnce

begin OnActivate
	if doOnce == 0
		enable
		set doOnce to 1
	endif
end
3.) Das Sesamöffnedichscript ;) :
(liegt auf einer weiteren Triggerzone, da die Tür eine von diesen Ayleidgeheimtüren ist, auf denen sowieso schon ein Skript für die Öffneanimation liegt)
Code:
scn OpenSesameScript

short doOnce

begin gamemode
	if MeineGlobal >= 10 && doOnce == 0
		MeineTolleTuerREF..Playgroup Forward 1
		set doOnce to 1
	endif
end

Bis jetzt klappt wie gesagt gar nichts, d.h. weder die lightbeams erscheinen noch die Tür öffnet sich. Aber vielleicht denke ich auch nur (mal wieder) viel zu kompliziert und alles ist viel einfacher?!

PS: Die Refs und Scripts heißen natürlich in Wahrheit etwas anders, das ist nur zur Verdeutlichung. ;)
 
Also das machst du mal ganz anders.

Nehmen wir mal an, die 10 Lightbeams sind alle da und mit der Referenz: Lightbeam1, Lightbeam2, Lightbeam3 usw.

So, dann hast du natürlich auch 10 Triggerboxen, also für jeden Lightbeam eine. Dann muss dieser Script auf die Trigger-boxen:
Code:
scn LightbeamTriggerSCRIPT

short count

Begin OnActivate
If count >= 0
set count to count +1
Endif
End

Begin GameMode

If count == 1
Lightbeam1.enable
Elseif count == 2
Lightbeam2.enable
Elseif count == 3
Lightbeam3.enable
Elsef count == 4
Lightbeam4.enable
Elseif count == 5
Lightbeam5.enable
Elseif count == 6
Lightbeam6.enable
Elseif count == 7
Lightbeam7.enable
Elseif count == 8
Lightbeam8.enable
Elseif count == 9
Lightbeam9.enable
Elseif count == 10
Lightbeam10.enable
MeineTolleTuerREF.activate player ;Beim 10 Lightbeam wird die Tür geöffnet
set count to -1
Endif

End
Fertisch.

MfG Gildur
 
  • Like
Reaktionen: Xaephrim
:lol:
Ich wusste dass ich zu kompliziert denke! Und ich glaube, ich muss dich in der Readme erwähnen. :-D

Aber 2 Sachen fallen mir doch noch ein! ^^

1.) begin OnActivate ? Müsste das nicht begin OnTrigger player heißen?
2.) Wenn ich das richtig sehe, aktivieren sich dann alle lightbeams in einer festgelegten Reihenfolge und nicht in der, die der Spieler nimmt oder? Könnte aber auch reichen, mal schauen.

Naja, ich werde das schon rausfinden beim Testen. ;)

Aber jetzt muss ich erstmal was essen!
 
Guten Appetit :)

1.) hmmm... IOch bin mir nicht ganz sicher. Ich denke, es geht beides.
2.) Diese Lightbeams werden in einer vorgegebenen Reihenfolge aktiviert -> egal welche Triggerbox du berühst. Jedoch willst du es anders, oder? Das geht nur so, dass du dann 10 Scripte schreibst. Das ist aber nicht so toll, weil du dann auch zehn verschiedene Objekte mit den jeweiligen Scripten brauchst

MfG Gildur
 
Zuletzt bearbeitet:
So, ich habe das mal getestet und zwei Erkenntnisse gewonnen.

1.) begin OnActivate geht nicht, es muss onTrigger player sein
2.) Sobald man in EINE Triggerbox geht, werden sofort alle lightbeams aktiviert, was wohl daran liegt, dass bei "ontrigger player" nicht nur einmal abgefragt wird, sondern 1x pro frame. Ich habe mal versucht, ein doOnce darein zu setzen, aber dann kam nur noch der erste Lightbeam und kein anderer. :-D
 
Erst jetzt fällt es mir wie Schuppen von den Augen^^

Code:
scn LightbeamTriggerSCRIPT

short doonce

Begin OnActivate
If ( count >= 0 ) && ( doonce == 0 )
set count to count +1
set doonce to 1
Endif
End

Begin GameMode

If count == 1
Lightbeam1.enable
Elseif count == 2
Lightbeam2.enable
Elseif count == 3
Lightbeam3.enable
Elsef count == 4
Lightbeam4.enable
Elseif count == 5
Lightbeam5.enable
Elseif count == 6
Lightbeam6.enable
Elseif count == 7
Lightbeam7.enable
Elseif count == 8
Lightbeam8.enable
Elseif count == 9
Lightbeam9.enable
Elseif count == 10
Lightbeam10.enable
MeineTolleTuerREF.activate player ;Beim 10 Lightbeam wird die Tür geöffnet
set count to -1
Endif

End

Hierbei musst du die variabele count als Global definieren.

MfG Gildur
 
  • Like
Reaktionen: Xaephrim