Construction Set Skriptthread zum Construction Set

Object verschieben

:) erstmal ein schönen Guten Abend,

Ich bin nun zum ersten mal in Scharesoft Forum und sonst war ich immer bei euren Mods, die alle einen riesen Spaß machen obwohl viele sinnlos doch lustig sind.

Nun bin ich dabei meinen eigenen Mod zu machen. (Abgesehn von Schönes Häusern kann ich noch nichts)

Fang nun an mit dem Scripten und meine Frage lautet:

"Wie kann ich ein Object verschieben (nicht moven sondern Bildlich verschieben. Das durch einen Geheimen Hebel / Lampe in Action gebracht wird."

Einfaches Beispiel. Lampe an der Wand wird Aktiviert hinter dem Spieler schiebt sich der Schrank wie von selbst zur seite und siehe an da is ja eine Tür << So in dem Dreh..^^ nur der Schrank soll sich verschieben nicht auflösen man soll ja was rein tun können :)


Wäre nett wenn mri einer Hilft...


Schönen Abend

Pac White
 
Hallo.

Wilkommen im Board, und in der "Modding-Fammilie"

Zu deiner Frage, es gibt doch eine solche Schranktüre (siehe DB-Quest mit Baenlin, da kriecht man dort rein)

Ansonsten klick dich mal durch's CS-Wiki

es gibt einen Befehl (weiß nihct mehr wie der heist) da muss man die Koordinaten des Ziel's angeben. Das könntest du verketten...

LG

CC
 
So wie du es beschreibst, PacWhite, erinnert mich das eher an Animationen, welche in den NIFs der Objekte drinnen sind und die durch einen PlayGroup-Befehl genutzt werden.

:?
 
Naja das mit den Animationen hatte ich auch schon im Kopf...

Doch bin ich weder Grafiker noch kann ich Animationen von "Gegenständen" erstellen. xD Dieser dumme Schrank soll doch nur einen meter nach links geschoben werden xD ...-.-

sonst geh ich als nächstes mit tcl durch den Schrank...


gibts da keine Möglichkeit das mit einem Hebel zu machen? der Schrank muss sich auch nicht flüssig verschieben da man beim Betätigen nur einen kleinen Teil vom Schrank sieht?


_____________________________'
Nun Gelernter Grafiker ;)
 
Zuletzt bearbeitet:
Einen Vorschlag hätte ich.
Du könntest mal Lazarus anschreiben.
Der hat einen voll animierten Schrank in Ivellon.
Der würde gut passen.

Ansonsten beschreib' mal plz, wie du dir das genau vorstellst. :)
 
Das Ganze könnte man doch einfach mit "SetPos" machen:

Code:
SCN ...

Short State
Float  Timer

Begin OnActivate

if(state == 0)
    set state to 1
endif

end


Begin GameMode

if(state == 0)
    return
elseif(state == 1)
       set timer to timer + getsecondspassed
       <schrank-ref>.setpos y, -5 ; Ich weis ja jetzt nicht, in welcher  Position Dein Schrank steht, deswegen musst Du es halt anpassen.
    if(timer >= 5) ; Hier musst Du eben anpassen, wie lange dein Schrank verschoben werden soll.
          set state to 2
          set timer to 0
    endif
 endif

end
 
Trigger

Hi, hab ne frage für nen Trigger der nen Aktivator namens dragonPassFelsen.
Er soll sobald ich durch den Trigger gehe aktiviert werden.


__________________________________________________
P.S: Nehrim for Gold :nono:
 
Also gut.. ganz genau :)



Aehm...

Ihr kennt alle die Priorei am Anfang der Mainquest.? Diese Priorei hat einen Geheimenraum wo dann das Amulett der Könige drin ist. :) Anstatt diesen billigen Schrank zusetzen :D möcht ich das ganze mit einem Schrank machen der von einem Geheimen "Buch" sobald man es aktiviert verschiebt... Dh der schrank schiebt sich zur seite :p oda eine Steinmauer nach unten das ist mir wurscht hauptsache es bewegt sich weg xD wie im Kerker die erste tür.. doch das Script sagt mir leider garnichts :/ da hab ich schon nachgeschaut mit der Prison Secret Wall :D das von Renold geöffnet wird? Naja.. das war so im groben meine Idee :? xD er soll sich nur verschieben wie ein Aufzug nur halt nicht nach oben sondern zur seite ? is das möglich?


Guten Morgen erstmal alle
Pac White xD
 
Kahmul hat es schon ganz richtig beschrieben. Allerdings besteht bei seinem Skript die Gefahr, dass die Bewegung bei zu schnellen oder zu langsamen Rechnern verzerrt wird, da "setPos" jeden Frame und nicht einmal pro Sekunde o.Ä. ausgeführt wird. Um das zu umgehen, ist der "getSecondsPassed"-Befehl wichtig.
Im Grunde würde ich das mit einem Skript auf dem Schalter lösen:
Code:
scn name

short doonce
float metre
float distance
float duration
ref myParent

float secondsPassed

short state
short busy
float timer
float diff_pos


Begin onLoad

if doonce == 0
 set doonce to 1
 set metre to [COLOR="Red"]a[/COLOR]       [COLOR="Red"];a = die Strecke in Metern, die der Schrank bewegt werden soll[/COLOR]
 set distance (meter * 70)
 set duration to [COLOR="Red"]b[/COLOR]    [COLOR="Red"];b = die Dauer der Bewegung[/COLOR]
 set myParent to getParentRef       [COLOR="Red"];der Schrank muss das Parent des Schalters sein[/COLOR]

 set state to [COLOR="Red"]c[/COLOR]       [COLOR="Red"];c = -1, wenn die erste Verschiebung auf der Achse positiv sein soll, sonst 1[/COLOR]
endif

end


Begin onActivate

if busy == 0
 set state to (state - 2*state)
 set busy to 1
endif

end


Begin GameMode

if busy == 1
 set secondsPassed to getSecondsPassed
 set timer to (timer + secondsPassed)
 set diff_pos to (distance * secondsPassed / duration)
 set diff_pos to (state * diff_pos)
 myParent.setPos [COLOR="Red"]d[/COLOR] diff_pos     [COLOR="Red"];d = die gewünschte Achse (x, y oder z)[/COLOR]
 if timer >= duration
  set busy to 2
  set timer to 0
  myParent.disable
 endif
elseif busy == 2
 set busy to 0
 myParent.enable
endif

end
Der Schrank lässt sich jetzt immer wieder verscheiben.


@Reaper: Das versteh ich nicht.
 
Zuletzt bearbeitet:
wo stell ich ein das der schrank bewegt wird den ich erstellt habe :?

und.. kann man mit dem Schalter auich den schrank wieda zurück schieben?
 
Das macht doch alles das Skript. Das Skript musst du auf den Schalter legen. Und beim Schalter unter "Enable Parent" die Referenz des Schrankes auswählen. Dann sollte es klappen. Du musst natürlich noch die Ergänzungen (in rot markiert) machen.
 
Hi, hab ne frage für nen Trigger der nen Aktivator namens dragonPassFelsen.
Er soll sobald ich durch den Trigger gehe aktiviert werden.

Du willst einen Activator namens dragonPassFelsen aktivieren, sobald du durch eine TriggerBox gehst?

Dann machste folgendes.
Code:
scn ...

Begin onTrigger player

Referenz-des-Activators.Activate

End

Wenn du es nur ein Mal passieren soll musst du's so machen.
Code:
scn ...
short DoOnce

Begin onTrigger player
If (DoOnce == 0)
Referenz-des-Activators.Activate
Set DoOnce to 1
Else ;DoOnce == 1
Return
Endif
End
 
Klappt

Du willst einen Activator namens dragonPassFelsen aktivieren, sobald du durch eine TriggerBox gehst?

Dann machste folgendes.
Code:
scn ...

Begin onTrigger player

Referenz-des-Activators.Activate

End
Wenn du es nur ein Mal passieren soll musst du's so machen.
Code:
scn ...
short DoOnce

Begin onTrigger player
If (DoOnce == 0)
Referenz-des-Activators.Activate
Set DoOnce to 1
Else ;DoOnce == 1
Return
Endif
End

Tolle idee klappt in fast jedem versuch
 
Ich bins nochmal.

Wollte fragen wenn ich will das eine Kreatur (is ein drache) bei berührung mit den Steinen Stirbt. Ich meine damit dass er erschlagen wird
 
Zuletzt bearbeitet von einem Moderator:
Hmm, also genau so zu machen, wie du willst, wird schwer.
Ich würde ganz einfach die Lebenspunkte mit SetAv Health 1 auf 1 setzen.
Dann krepiert der auf jeden Fall daran. Ist zwar ein Umweg, aber auf jedenfall ist's einfacher.
 
Hallo Reaper26,

würdest du es bitte vermeiden, Doppelposts zu erstellen.

Bei deinen Beiträgen gibt es rechts unter den Button "Ändern". Mit ihm kannst deine Beiträge editieren.
 
Das ist die Frage. Funktioniert ein "onTrigger"-Block auf den Steinblöcken? Ich dachte immer, dafür bräuchte es eine spezielle Kollision, wie sie nur Trigger- und Killboxen haben. Aber wenn man den Blocktype mit jedem beliebigen Objekt oder auch nur mit einigen wenigen außer Triggerboxen benutzen kann, bietet das echt neue Möglichkeiten.