Construction Set Türen-Öffner

Wavebreaker02

Reisender
Erstmal Hallo! :)

Ich wollte wissen, wie ich per Quest-Skript eine bestimmte Tür öffnen kann.
Ich habe so ein Skript mal ausprobiert:

scn DieBesagteQuest

Begin GameMode

if ( Player.GetStage DieBesagteQuest == 10 )
ControlDoor1.Unlock
ControlDoor2.Unlock
ControlDoor1.Activate
ControlDoor2.Activate
endif

end

Das funktioniert insofern, dass die Tür nicht mehr verschlossen ist.
Sie öffnet sich aber nicht ....

Wäre für einen HIlfevorschlag sehr dankbar.

MfG Wave
 
also.. erstma reich GetStage das player is ja in s fern "vorprogrammiert" weil ja nur der player quests machen kann..

wenn das KEIN loaddoor ist sondern eine "3d" tür, dann versuch mal

ControlDoor1.playgroup open also sollte das ganze dann so aussehen

Code:
Begin Gamemode
if GetStage DieBesagteQuest == 10
ControlDoor1.Unlock
ControlDoor2.Unlock
ControlDoor1.playgroup open
ControlDoor2.playgroup open
endif
end
 
  • Like
Reaktionen: Wavebreaker02
Ich habe versucht (!), das Scipt ein bisschen auszuweiten :lol:

Hier das Skript:

Scn DieBesagteQuest

Begin Gamemode

if ( ControlDoor03.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 )
ControlDoor03.SetOpenState 1

elseif ( ControlDoor03.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetOpenState 3 )
ControlDoor03.SetOpenState 0

elseif ( ControlDoor04.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor05.GetOpenState 3 ) && ( ControlDoor03.GetOpenState 3 )
ControlDoor04.SetOpenState 1

elseif ( ControlDoor04.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor05.GetOpenState 3 )
ControlDoor04.SetOpenState 0

elseif ( ControlDoor05.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetOpenState 3 )
ControlDoor05.SetOpenState 1

elseif ( ControlDoor05.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetOpenState 3 )
ControlDoor05.SetOpenState 0

endif
endif
endif
endif
endif
endif

end


:lol: ein wenig verwirrend.
Ich möchte, dass man immer nur die nächste Tür durchschreiten kann, wenn die andere schon zu ist.
Wenn mir dabei auch jemand helfen könnte wäre das klasse. :)

MfG Wave
 
erstmal.. bitte nur !1! endif.. das reicht vollkommen

hier haste den fehler gemacht, das du mit open == 0 das nicht "zurückspulen" kannst.. und da das ganze offentltsichtlich wie ne schleuse funktioniren sol baue ich in das script uach gleich ein Lock ein so das man nicht zurück kann..

Code:
Scn DieBesagteQuest

Begin Gamemode

if ( ControlDoor03.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 )
ControlDoor03.unlock
ControlDoor03.SetOpenState 1

elseif ( ControlDoor03.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetLocklevel == 100 )
ControlDoor03.SetCloseState 1
ControlDoor03.Lock 100

elseif ( ControlDoor04.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor05.Getlocklevel == 100 ) && ( ControlDoor03.GetLocklevel == 100 )
ConntrolDoor04.unlock
ControlDoor04.SetOpenState 1

elseif ( ControlDoor04.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor05.GetLockLevel == 100 )
ControlDoor04.SetCloseState 1
ControlDoor04.lock 100

elseif ( ControlDoor05.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetLockLevel == 100 )
ControlDoor05.unlock
ControlDoor05.SetOpenState 1

elseif ( ControlDoor05.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetLockLevel == 100 )
ControlDoor05.SetCloseState 1
ControlDoor05.lock 100

endif
en

aber dann musst du allen türen einen Vorlock von 100 geben also "unmöglich
 
hä? also doch? ich dachte wenn Setopenstate 1 soviel wie playgroup open heißst.. dann müsste playgroup close ja getclosestate heißen.. naja ingsgesamt heißst es dann so:

Code:
Scn DieBesagteQuest

Begin Gamemode

if ( ControlDoor03.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 )
ControlDoor03.unlock
ControlDoor03.SetOpenState 1

elseif ( ControlDoor03.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetLocklevel == 100 )
ControlDoor03.SetOpenState 0
ControlDoor03.Lock 100

elseif ( ControlDoor04.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor05.Getlocklevel == 100 ) && ( ControlDoor03.GetLocklevel == 100 )
ConntrolDoor04.unlock
ControlDoor04.SetOpenState 1

elseif ( ControlDoor04.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor05.GetLockLevel == 100 )
ControlDoor04.SetOpenState 0
ControlDoor04.lock 100

elseif ( ControlDoor05.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetLockLevel == 100 )
ControlDoor05.unlock
ControlDoor05.SetOpenState 1

elseif ( ControlDoor05.GetDistance Player >= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 ) && ( ControlDoor04.GetLockLevel == 100 )
ControlDoor05.SetOpenState 0
ControlDoor05.lock 100

endif
end
 
  • Like
Reaktionen: Wavebreaker02
Danke für deine Bemühungen, aber es funktioniert nicht :?
Die erste Tür (ControlDoor03) öffnet sich, schließt und verriegelt sich so wie es sein soll, aber Tür 2 (ControlDoor04) will einfach nicht aufgehen. :(

Ich werde mir etwas anderes einfallen lassen.

MfG Wave
 
Hier wird nicht aufgegeben. Probier es mal hier mit:
Code:
Scn DieBesagteQuest

Begin Gamemode

If ( Player.GetStage "0VerurteiltenControlQuest" == 20 )

if ( ControlDoor03.GetDistance Player <= 300 )
ControlDoor03.unlock
ControlDoor03.SetOpenState 1

elseif ( ControlDoor03.GetDistance Player > 300 ) && ( ControlDoor04.GetLocked == 1 )
ControlDoor03.lock 100
ControlDoor03.SetOpenState 0

elseif ( ControlDoor04.GetDistance Player <= 300 ) && ( ControlDoor05.Getlocked == 1 ) && ( ControlDoor03.GetLockled == 1 )
ConntrolDoor04.unlock
ControlDoor04.SetOpenState 1

elseif ( ControlDoor04.GetDistance Player > 300 ) && ( ControlDoor05.GetLocked == 1 )
ControlDoor04.lock 100
ControlDoor04.SetOpenState 0

elseif ( ControlDoor05.GetDistance Player <= 300 ) && ( ControlDoor04.GetLocked == 1 )
ControlDoor05.unlock
ControlDoor05.SetOpenState 1

elseif ( ControlDoor05.GetDistance Player > 300 ) && ( ControlDoor04.GetLocked == 1 )
ControlDoor05.SetOpenState 0
ControlDoor05.lock 100

endif

endif

end

Wenn du es 1:1 übernimmst, sollte es so klappen. Auch die ""-Zeichen sind besonders wichtig.

MfG Gildur
 
  • Like
Reaktionen: Wavebreaker02
versuch ma das hier:
Code:
Scn DieBesagteQuest

Begin Gamemode

if ( ControlDoor03.GetDistance Player <= 300 ) && ( Player.GetStage 0VerurteiltenControlQuest == 20 )
ControlDoor03.unlock
ControlDoor03.SetOpenState 1

elseif ( ControlDoor03.GetDistance Player >= 300 ) && ( ControlDoor04.Getlocklevel == 100 )
ControlDoor03.SetOpenState 0
ControlDoor03.Lock 100

elseif ( ControlDoor04.GetDistance Player <= 300 ) && ( ControlDoor05.Getlocklevel == 100 ) && ( ControlDoor03.GetLocklevel == 100 )
ConntrolDoor04.unlock
ControlDoor04.SetOpenState 1

elseif ( ControlDoor04.GetDistance Player >= 300 ) && ( ControlDoor05.GetLockLevel == 100 )
ControlDoor04.SetOpenState 0
ControlDoor04.lock 100

elseif ( ControlDoor05.GetDistance Player <= 300 ) && ( ControlDoor04.GetLockLevel == 100 )
ControlDoor05.unlock
ControlDoor05.SetOpenState 1

elseif ( ControlDoor05.GetDistance Player >= 300 ) && ( ControlDoor04.GetLockLevel == 100 )
ControlDoor05.SetOpenState 0
ControlDoor05.lock 100

endif
end


sooooo dann muss aber mindestens am besten 1024 units zwischen jeder Tür liegen
 
  • Like
Reaktionen: Wavebreaker02
Es hat nicht ganz so funktioniert wie es sollte, ist aber soweit in Ordnung. :)

Ich hätte noch eine zweite Frage:
Ich habe einen neuen Worldspace gemacht, ne kleine Außenwelt.
Jetzt ist es aber so dass die Landmasse oder die Objekte einfach verschwinden, wenn ich zu weit weg bin, ich befinde mich dann in einem Quadrat, in welchem die Texturen geladen werden. :?
Könnte mir jemand helfen, dieses Problem zu lösen?

MfG Wave
 
ja es wird aus Leistungsgründern immer nur eine gewissen anzahl cels um deine herumliegende geladen. wen du nur noch grau siehst einfach mal ins render window klicken unddie landmasse sollte (insofern du nicht außerhalb des exteriors bist) generieren

€: was klappt den net ? sag dochma dann könne wir vil auch das beheben
 
Ich meine, dass ich nicht wie im org. Spiel die entfernten Berge sehe, sondern nur bis zu einer bestimmten Distanz. Dann sind alle Sachen abgeschnitten. Das passiert alles sowohl in-game als auch im CS.

Was nicht klappt? nunja .. Die erste Tür öffnet und schließt sich wie es sein sollte. Die 2. nicht. Bis zur dritten komm ich ja gar nicht :lol:
Ich glaube ich mach das aber so, dass sich alle Türen öffnen wenn der Player 100 Units davon entfernt ist und sich dann erst wieder schließen, wenn der Player hinter der 3. Tür ist.

MfG Wave
 
Ich nehme mal ganz stark an, dass es an der fehlenden LOD liegt, die man erst erstellen/generieren muss. Aber bitte frag mich nicht, wie es geht, da ich mich damit noch nicht befasst habe.
 
nunja den fehler kann ich mior auch net erklären. was das script angeht biste sicher das zwischen den türen genug abstand ist?
 
Hat leider nicht funktioniert ....
Ich hab den Abstand größergemacht, das doppelte.
Naja ... hab sowieso eine bessere Idee ;)
Danke an alle beteiligten!

MfG Wave