Construction Set Skriptthread zum Construction Set

Auch wenn ich jetzt nicht genau verstehe, was du mit den Collisions meinst, hier ein geeignetes Script:

Code:
scn Wiegehtsdennso

short UpDown

Begin GameMode
if (UpDown == 0)
     [I]RefdesObjekts[/I].setpos Z to (getpos Z + 2) ;wenn du die Zahl hier veränderst, kannst du die Geschwindigkeit ändern
elseif (UpDown == 1)
     [I]RefdesObjekts[/I].setpos Z to (getpos Z - 2) ;dito
endif

if (UpDown == 0) && ([I]RefdesObjekts[/I].getpos Z >= 1000);hier die maximale Höhe eingeben
     set UpDown to 1
elseif (UpDown == 1) && ([I]RefdesObjekts[/I].getpos Z <= 500);hier die minimale Höhe eingeben
     set UpDown to 0
endif
end
 
  • Like
Reaktionen: elveon
Ich habe meine Vermutungen, warum er beim "to" meckert, trotzdem wäre das Abtippen der Fehlermeldung oder das Hochladen als Bild nützlich. doch zuerst probier diesen Script hier (leicht veränderter Script von Arc):
Code:
scn Wiegehtsdennso

short UpDown
ref myself
float ZCood

Begin OnLoad
set myself to getself
End

Begin GameMode
set ZCood to myself.getpos Z
if ( UpDown == 0 )
     myself.setpos Z to ( ZCood + 2 ) ;wenn du die Zahl hier veränderst, kannst du die Geschwindigkeit ändern
elseif ( UpDown == 1 )
     myself.setpos Z to ( ZCood - 2 ) ;dito
endif

if ( UpDown == 0 ) && ( myself.getpos Z >= 1000 );hier die maximale Höhe eingeben
     set UpDown to 1
elseif ( UpDown == 1 ) && ( myself.getpos Z <= 500 );hier die minimale Höhe eingeben
     set UpDown to 0
endif
end
Du brauchst jetzt außerdem keine Referenz für das Objekt.

MfG Gildur
 
  • Like
Reaktionen: elveon
Der Fehler liegt darin, dass der SetPos-Befehl kein Set-Befehl ist.
Er verwendet kein to, sondern der Parameter kommt direkt danach. Außerdem verträgt er keine Rechnungen als Parameter.

Ohne jetzt den Rest des Scripts überprüft zu haben:
Code:
scn Wiegehtsdennso

short UpDown
[COLOR="Red"]float Speed[/COLOR]
[COLOR="Red"]float Position[/COLOR]

Begin GameMode
set Speed to 2 ;wenn du die Zahl hier veränderst, kannst du die Geschwindigkeit ändern
[COLOR="Green"]if (UpDown == 0)
[COLOR="Red"]     set Position to ( GetPos z + Speed )[/COLOR]
elseif (UpDown == 1)
[COLOR="Red"]     set Position to ( GetPos z - Speed )[/COLOR]
endif
RefdesObjekts.setpos Z [COLOR="Red"]Position[/COLOR][/COLOR]

if (UpDown == 0) && (RefdesObjekts.getpos Z >= 1000);hier die maximale Höhe eingeben
     set UpDown to 1
elseif (UpDown == 1) && (RefdesObjekts.getpos Z <= 500);hier die minimale Höhe eingeben
     set UpDown to 0
endif
end
Rotes ist von mir geändert.
Grünes hab ich etwas umgestellt um Platz zu sparen.


Wenn du das Script auf das Objekt selbst legst kannst du das RefdesObjekts. weglassen.
 
  • Like
Reaktionen: elveon
Thx, klappt jetzt!

Kann ich das ganze auch auf die x bzw y-Achse verlagern?
 
Zuletzt bearbeitet:
Hi!

Ich habe folgendes Problem:

Ich möchte, dass mein Begleiter nachdem er im Kampf getroffen wird zu einem Freund "flieht" und ich habe da so an den Befehl "ForceFlee ChorrolGreyMare, FreundRef" gedacht.
Im CS-Wiki steht, dass die Zelle vor der Referenz ignoriert wird, aber angegeben werden muss, damit das Skript funktioniert.

Jetzt flieht mein Begleiter auch brav, aber leider nicht zu dem Freund, sondern irgendwo hin!

Skript, dass auf dem Begleiter liegt (nicht alles, nur mein Problemteil):

scn FliehenderBegleiter

.
.
.

Begin OnHit
ForceFlee ChorrolGreyMare, FreundRef
end

Was ist daran faul?

Mfg Wave
 
Strings und Arrays

Ich moechte mich auch an einen kleinen PI versuchen (mein erstes), aber ich weiss nicht, ob es, was ich vorhabe, geht:
Und zwar moechte soetwas wie ein Buch (oder aehnliches) machen, in dem die getoeteten Gegner mit Anzahl und Namen aufgelistet sind. z.B. 134 Ratten, 34 Wegelagerer, 172 Zombies, ....

Dazu braeuchte ich am besten Strings und Arrays. Leider wird sowas nicht direkt unterstuetzt. Es gibt zwar die OBSE Erweiterung TSFC und Pluggy (fuer Arrays). Aber leider bin ich beim Modden noch ein blutiger Anfaenger, vielleicht kann mir jemand Tipps geben, wie man so etwas loesen koennte. ;)

So viel weiss ich schon: Beim Tod des Gegners muss ich den Namen irgendwie abspeichern und den Zaehler erhoehen. Nach meinen "normalen" programmiertechnischen Wissen, eignen sich dafuer am besten Strings in Listen, die dann beim Buch wieder ausgegeben werden.
 
Ich kenn mich damit zwar nicht aus, aber geht das nicht nur mit Kreaturen, die in Vanilla-Oblivion vorhanden sind? Also bei Kreaturen, die du schon vorgibst. Wenn dann ne neue Kreatur kommt (durch PI) könnte die nicht erfasst werden. Wie gesagt, ich kenn mich damit nicht aus, könnte mir das aber vorstellen.
 
Ich wollte das eigentlich ueber ein Item machen, dass ich dem Gegner im Kampf mitgeben. So aehnlich macht es OELS, dort werden beim Tod die XP-Punkte berechnet und dem Spieler gegeben.
 
Weiß denn niemand, wie man mein Problem lösen kann? Ich habe jetzt schon drei Anfragen gestellt und es hat mir keiner ein klares "Ja, es geht und zwar so: ... " oder ein klares "Nein, das was du vorhast geht nicht." gegeben.
 
Ich habe auch eine Frage:
Ist es möglich, dass man eine Tür mit einigen anderen verbindet und beim Aktivieren zufällig zu einer dieser Türen teleprotiert wird? Also etwa so, wie die Obliviontore in der Wildnis funktionieren. Wenn ja, kann mir jemand das Script sagen?
 
@Wavebreaker:
Hm... sry, ich erinner mich jetzt nur an zwei Probleme, die du gepostest hast. Zum einen das mit dem kostenlosen reparieren, zum anderen das mit der Flucht des Begleiters.

Zuerst wegen der Flucht: Da hab ich nichts dazu gepostet, weil mir beim besten Willen nicht einfällt,w as daran falsch sein sollte... theoretisch müsste es also funktionieren afaik... :?

Dann das mit dem kostenlosen reparieren: Zuerst gesagt, ich kann nur von den im Vanilla-Obl vorhandenen Funktionen reden. Aber meines wissens ist es nicht möglich, durch eine Messagebox Dinge zu reparieren. Mir würde höchstens einfallen, wie man es "kostenlos" machen könnte, wenn man die gewöhnliche Möglichkeit des Buttons unten links beim Dialog benutzt...
 
  • Like
Reaktionen: Wavebreaker02
Hmm ... waren es nur zwei? :huh:

Das spielt ja jetzt auch keine Rolle.
Jedenfalls danke Arcanum Antor, für deine Antwort.
Ich werde das mit dem Flüchten nochmal genauer unter die Lupe nehmen, hätte ja sein können, dass ich den Befehl falsch verstanden habe oder so.

Da ich meiner Aussage gerecht werden möchte kommt hier mein drittes Problem :lol: :

Mein Begleiter greift jeden an, der mich angreift und das ist auch gut so.
Jetzt hat mein Begleiter aber einen Kameraden, der ihn begleitet und nicht mich. Das Problem dabei ist, dass der Begleiter vom Begleiter meinem Begleiter nicht hilft, wenn er im Kampf ist.

Was kann man dagegen tun?

MfG Wave
 
Ist es irgendwie möglich, Skripts nacheinander auszuführen?
Im Moment lasse ich ca. 10 Skripts gleichzeitig über GameMode laufen.
Ich möchte aber dass zuerst Skript 1 ausgeführt wird und wenn das fertig ist, soll Skript 2 gestartet werden.
Ich hatte die Idee, über die Quest-Condition SkriptVariable(heißt so ähnlich) zu gehen, aber da soll ich irgendwas in einer Zelle auswählen(??).
Kann mir jemand sagen, wie ich meine Skripts nacheinander ablaufen lasse?
 
Ich würde einfach eine Questvariable erstellen (ich nenn´ die Quest mal Quest1 und die Variable short Stage). Dann einfach die jeweiligen GameMode-Blöcke in nen if-Block:
Code:
if (Quest1.Stage == 0)
.
.
.
endif
set Quest1.Stage to 1
Dann beim nächsten Script die Variable eins weiter usw.

Die Abfrage GetQuestVariable (ich nehme mal an, die hast du gemeint) existiert afaik nur bei Conditions. Aber wozu man da i-was mit ner Zelle braucht... kp, geht aber ja auch einfacher :lol:
 
Erst mal Danke. Aber wie setze ich eine Questvariable, ich hab noch nie welche gebraucht.:cry: