Construction Set Skriptthread zum Construction Set

hi.

könnt ihr mir sagen, wieso ich diese Script nicht speichern kann?
keine Fehlermeldung, aber NACH dem speichern kommt immer die Meldung (Änderungen speichern) wen ich auf ja gehe, schließt er nicht, wenn auf nein, ist es nicht gespeichert!!!
EGAL was ich mache, es funkt ncht zu speichern...

Das Script:


Code:
scn zzSurvivalMineCollapsScript

float timer
float timer2
float timer3
float timer4
float timer5
float timer6

Begin OnTrigger player ;player läuft in CollisionBox

set timer to 0
set timer to 1
set timer to 2
set timer to 3
set timer to 4
set timer to 5
set timer to 6

	if timer >= 3
		set timer to getsecondspassed 
elseif
		TriggerHitShader 3 ;beben stufe 3
			disableplayercontrols ;player kann sich nicht bewegen
				if timer2 >= 1
					set timer2 to getsecondspassed
				elseif ;Timer 2 Sekunden
					TriggerHitShader 7 ;beben stufe 7
							;playsound beben
								if timer3 >= 5
									set timer3 to getsecondspassed
								elseif
									TriggerHitShader 15 ; beben stufe 15
										if timer4 >= 3
											set timer4 to getsecondspassed
										elseif
											TriggerHitShader 20 ; beben stufe 20
												if timer5 > 2
													set timer5 to getseconspassed
												elseif 
													;dunkler bildschirm
													; player.moveto MarkerID ; teleport zu anderem Interior
														if timer6 >= 2
															set timer6 to getseconspassed
														elseif
															;player.moveto MARKERID
endif
endif
endif
endif
endif
endif				
end

Danke & LG
 
Das passiert manchmal, weiß selbst nicht wieso... Kopier das Script in ein Textdokument, starte das CS neu und füge das Skript nochmal ein. Dann solltest du es speichern können.
 
Der Teil hat (in mein Script eingebaut) jedoch ein Problem (das zum Absturz führt) mit zu vielen Toten. Es ist zwar nicht gerade ein Wunder (bei zwei Schleifen ineinander), aber wie kann man das umgehen?
Code:
set actor to getfirstref 69 1 1
while actor
    if actor.getdead == 1 && actor != player
        foreach actoritem <- actor
            if (isquestitem actoritem)
                continue
            endif
            if (actoritem.isOffLimits 7 == 0)
                actoritem.removemeIR player
            endif
        loop
    endif
    set actor to getnextref
loop
 
Eventuell kannst du den Code in so aufteilen, dass nicht alles in einem Frame geschieht, sondern in mehreren. Du könntest beispielsweise die Referenzen in einem Array speichern und im nächsten Frame die Inventargegenstände entfernen.
 
  • Like
Reaktionen: Schmelz
Ich hätte es außerdem so gemacht:

Code:
ref item
ref container

set item to getfirstref 70 1 1
while item
    set container to item.getcontainer
    if container.getdead && container != player
            if (isquestitem item)
                set item to getnextref
                continue
            endif
            if (item.isOffLimits 7 == 0)
                item.removemeIR player
            endif
    endif
    set item to getnextref
loop
Somit ersparrst du dir verschachtelte Schleifen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Schmelz