Construction Set Skriptthread zum Construction Set

da ich ein absoluter noob in scripten bin, hab ich da gleich ne Frage:

Also, ich will das ein bestimmtes Static im Raum (Dungeon), von einer anderen cell aus mit einem Scahlter entfernt wird.

(Ein Magiewall soll bei betätigen des Hebels deaktiviert werden)

Ich hoffe ihr könnt mir helfen ;)
 
Ich nehme mal an, du sprichst von eine CollisionBox...
Einfach einen Haken bei "Persistent Reference" machen und eine Referenz eingeben. Dann schribst du das ins Script hinein:
Code:
short doonce

Begin onActivate
 if doonce == 0
  <Ref der Collision-Box>.disable
  set doonce to 1
 endif
end

Du kannst das natürlich auch durch einen GameMode-Block o.Ä. geschehen lassen...
 
  • Like
Reaktionen: kingu
EDIT: Uups. Zweiter. :)

Aaaaalso.

Wenn Du einen Schalter vewenden willst:

- Schalter raussuchen und duplizieren.
- Script vom Schalter öffnen und in den Speicher kopieren
- Script in temporäre Textdatei kopieren.
- Scriptname (scn XXXX) abändern und die Funktion [Reference ID].disable an der richtigen Stelle unterbringen. Welche das ist hängt vom Script ab.

Beispiel am RFSwitch01 Script (Drehgriff in Fort-Tilesets):
scn RFSwitch03SCRIPT ; NAME ABÄNDERN.

; activates parent after a 2 sec delay

short open
short next
short busy
float timer
ref mySelf
ref myParent

begin onActivate

if busy == 0
if open == 0

playgroup forward 1
[Reference ID].disable ; HIER DIESEN TEXT REIN. STATT dem eingeklammerten dann den Referenznamen des Magiewalls.
set open to 1
set next to 1
set timer to 2
else
playgroup backward 1
set open to 0
set next to 1
set timer to 0.5
endif
set busy to 1
endif

end

begin gameMode

if next == 1 && timer <= 0
set mySelf to getSelf
set myParent to getParentRef
myParent.activate mySelf 1
set next to 0
endif

if isAnimPlaying == 0 && busy == 1
set busy to 0
endif

if timer > 0
set timer to timer - getSecondsPassed
endif

end

begin onReset

reset3DState
set next to 0
set open to 0
set busy to 0

end

- Das ganze als neues Script speichern und als Script für den duplizierten Schalter auswählen.

Und zack, sollte es funktionieren.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: kingu
danke euch, ich versuchs jetzt mal ;)

EDIT: wenn ich es abspeichern will, kommt diese meldung
 
Zuletzt bearbeitet:
@Kaunit
Woher willst du wissen, was für ein Schwert es ist? Im Editor wird nur zwischen stumfen und spitzen Waffen bzw. Ein- und Zweihänder unterschieden.
Außerdem: Es gibt Dolche, die durchaus besser sind als einige Langschwerter.
Des weiteren ist das Produkt von Schaden und Geschwindigkeit der Waffen bei den Kurzschwertern ab besten, daher sind diese meiner Mainung nach besser, als Langschwerter.
Was willst du bei einem Bogen verbieten? Wenn du das nur bei den anderen Waffen machst, kämpft jeder einigermaßen zielsichere und geschickte mit dem Bogen, wenn es deinen Mod verwenden würde, da Schwerter ja einen sehr großen Nachteil haben würden.
Und außerdem findet man alle Waffentypen einer Art ab dem gleichen Level.
Und als letztes: Warum sollte es verboten sein, wenn man schwach und unerfahren ist, mit einem Landschwert rumzulaufen???

So, jetzt hab ich genug meiner Meinung geäußert. Ich finde die Idee einfach nicht gut. Aber das ist jedem seine Sache...

Falls du es versuchst, wünsche ich dir trotsdem viel Glück.


@Knochenkeule
Es funktioniert mit Add-/RemoveScriptPackage in Kombination mit Wait und StopWaiting.
Jetzt führt der NPC die 3 Packages aber nicht aus, die er ausführen sollte, solange es dem Spieler nicht folgt. Diese sollen, wenn er mir folgt, deaktiviert werden.
Wait und StopWaiting kann ich nicht verwenden, da diese nur bei Follow-Packages funktionieren.

Hast du eine Idee, wie ich das realisieren könnte?
 
kann mir jemand vielleicht ein script zaubern, bei dem die "Membranmauer" sich öffnet, wenn sie direkt berührt wird, jedoch muss vorher ein schalter betätigt sein damit sie sich öffnet. (ich glaub das hört sich nach einem schweren script an...)
 
Zuletzt bearbeitet:
@kingu:
Zu der Fehlermeldung:
Kopier mal die Zeile, in der der Fehler ist, hier rein. Ich vermute, du hast da den Befehl nicht korrekt eingetippt.

Zu der Membranmauer und dem Schalter:
Im Grunde ist das nicht so schwer. Soll der Hebel nur die Funktion haben, dass danach die Mauer aktiviert (= geöffnet) werden kann?
Dann erstellst du eine Global (Gameplay->Globals | Short, Defaultwert 0) und legst auf den Schalter dieses Script:
Code:
scn ...

begin OnActivate
set [Global] to 1
end

Auf die Mauer legst du dann dann dieses Script:
Code:
scn ...

short once

begin OnActivate
if (once == 0) && ([Global] == 1)
    activate
else 
    return 
endif
end

Das sollte klappen.

@Tach810i:
Ich kenne mich leider mit Packages nicht aus, deswegen weiß ich nicht, wie das abläuft und kann dem entsprechend leider nicht helfen:(
 
  • Like
Reaktionen: kingu
ja, hab ich auch grad probiert, Script für Mauer

scn myscript02

short once

begin OnActivate
if (once == 0) && ([mondlicht] == 1)
activate
else
return
endif
end

Script für Schalter

scn myscript01

begin OnActivate
set [mondlicht] to 1
end

wenn ich es jedoch ohne eckige Klammern anwende speichert es ab, mauer lässt sich aber trotzdem nicht öffnen...
 
Die [] sollen natürlich nicht gesetzt sein.

Wenn das so nicht klappt, dann ersetze mal das "activate" durch
Code:
[Ref-ID der Mauer].playgroup forward 1

Dazu musst du noch (im RenderWindow) doppelt auf die Mauer klicken, einen Haken bei "Persistance Reference" setzten und oben eine "Reference Editor ID" eingeben.
In der Zeile setzt du die dann für [Ref-ID der Mauer] ein, ohne die [].

So sollte es dann eigentlich hinhauen.
 
  • Like
Reaktionen: kingu
danke für die obse codes, hab den richtigen gefunden. Muss nur noch lernen mit obse umzugehen dann wird das schon hinhauen. Und das mit dem Enchantment isses ja net. ich will ja per skript abfragen ob ich getroffen hab oder nicht.
 
Code:
scn myscript02

short once

begin OnActivate
if (once == 0) && ([mondlicht] == 1)
 activate
else 
 return
endif 
end

kann es sein, dass hier das Set once to 1 fehlt? ohne würde die Wand jedesmal aufgehen, wenn man sie Aktiviert.
 
Code:
scn myscript02

short once

begin OnActivate
if (once == 0) && ([mondlicht] == 1)
 activate
else 
 return
endif 
end

kann es sein, dass hier das Set once to 1 fehlt? ohne würde die Wand jedesmal aufgehen, wenn man sie Aktiviert.


ja, sie öffnet sich jedesmal beim aktivieren, script müsste dann vielleicht so aussehen?

Code:
scn myscript02

short once

begin OnActivate
if (once == 0) && ([mondlicht] == 1)
 activate
set once to 1
else 
 return
endif 
end
 
Ich bräuchte ein ziemlich einfaches script fürs aufgeben (also im Kampf ergeben). Der Spieler sollte sich sofort ergeben, sobald die jemand auf ihn los geht.

Der Befehl ist "Yield", aber ich weiß nicht wie ich den einsetzten soll...
 
Den Befehl Yield kannst Du auf die Spielfigur, glaube ich, nicht anwenden, weil die Spielfigur keine KI verwendet, da sie ja vom Spieler gesteuert wird.

Eine einfache Methode ist folgende:

Erstelle einen NPC, der den AI Type Ambush verwendet und den Spieler anredet. Mache einen Dialog, in dem der Spieler nur die Wahl hat sich zu ergeben und gut ist. :)

Howto Ambush Package:

http://cs.elderscrolls.com/constwiki/index.php/A_beginner's_guide_-_Appendix_3
Ab Ambush Package

Howto Dialog:
http://cs.elderscrolls.com/constwiki/index.php/Category:Dialogue
 
Geht das nicht anders auch? Die Gegner sollten einfach aufhören zu kämpfen.

Mit StopCombat oder so...