Construction Set Skriptthread zum Construction Set

Wie jetzt? 12 Obelisken oder eine Obelisk 12x aktivieren?

Für letzteres müsstest du jedenfalls noch eine "Zähl-Variable" einbauen.

Wenn die dann >= 12 ist, wird ein weiterer Block aktiviert.
Wenn das in einem anderen Script sein muss, dann nimmst du dafür am besten eine Global.
 
Es sind ingesammt 12 Obelisken und das Skript was ich bräuchte soll erst Aktiviert werden wenn alle 12 Obelisken aktiviert wurden. (Alle sind in einem Raum platziert.)

Wie müsste ich es dann machen ?

Mfg Master pf Wpröds
 
Ich denke, du brauchst das Script für das "Hochfahren" der Obelisken 12x.
(Sonst klappt das mit dem "doonce" nicht.)

Einfach mit 12 verschiedenen Namen speichern.
Den Obelisken brauchst du dann natürlich auch 12x mit verschiedenen IDs.

Dann erstellst du eine Global und baust die in jedem Script mit eine.
Dann setzt du hinter die Zeile "set doonce to 1" noch "set [global] to [global] + 1".

Dann kannst es so gestaltetn, dass das andere Script nur aktiviert wird, wenn [global] >= 12 ist.

So sollte das gehen.
 
  • Like
Reaktionen: Master of Worlds
Was ist dann Global ?
Ist das das Skript was dann aktiviert werden soll ?

Muss ich dann den Namen des Skripts bei [Global] eintragen ? (Ich blicke leider gerade nicht durch :oops:)

Mfg Master of Worlds
 
Ich hab mal ne Frage: Gibt es eine Möglichkeit per Script einen NPC per Zufall auszuwählen? Ich stelle mir das so vor: Nach einem Gespräch soll ein NPC erscheinen, da das Gespräch aber wiederholt werden kann und soll, finde ich es blöd, wenn der NPC immer das gleiche Gesicht hat. Gibt es ein Script, welches aus einer vorher festgelegten Liste von NPC's einen aussucht?

gruß
bjoernret
 
@ Master Of Worlds: Steht das ganze eigentlich in Zusammenhang mit einer Quest? Dann würde ich nämlich keine Global nehmen.

@ bjoernret: Ja, es ist möglich, per Zufall einen NPC aus einer festgelegten Liste erscheinen zu lassen. Nur müsstest du genauer beschreiben, was du willst, weil ich nicht ganz verstanden habe, wann der NPC erscheinen soll (und sicher auch wieder verschwinden).
 
  • Like
Reaktionen: bjoernret
@Master of World:
Ein Global kannst du unter Gameplay>Globals erstellen.
Das ist eine Variable, die Scriptübergreifend aufrufbar ist.


@bjoernret:
Ich würde es mal mit GetRandomPercent und einer Variable probieren.
Damit könntest du 100 verschiedene NPCs haben.
Das sähe dann etwa so aus:

Code:
...
short welcherNPC
...
set welcherNPC to GetRandomPercent
if (welcherNPC <= 9)
  ...
elseif (welcherNPC <= 19)
  ...
elseif (welcherNPC <= 29)
  ...
...
elseif (welcherNPC <= 99)
  ...

(Die Werte gehen von 0-99% anstatt von 1-100%)

So wären es 10 NPCs, jeweils mit 10% Wahrscheinlichkeit.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: bjoernret
Hiho.

Ich wollt mal gern ein paar NPCs bedrohlich auf mich zu laufen lassen^^.

Also ich hab 3 NPCs und will, dass die von A nach B laufen, wenn ich die Cell betrete. Nur weiß ich nicht recht, wie das geht :).

Ich überlegte mal so:

scn blablascript

short doonce

begin gamemode

if (player.getincell blubbblubb && doonce == 0)
disableplayercontrols
ersternpc.setav aggression 0
zweiternpc.setav aggression 0
dritternpc.setav aggression 0
streammusic "lalala"
ersternpc.[laufnach] player
zweiternpc.[laufnach] player
dritternpc.[laufnach] player
set doonce to 1
endif
So dann sollen sie mich angreifen, aber erst, wenn sie vor mir stehen. Wenn ich startcombat einfach an den obigen Script ranschreibe, greifen sie ja schon vorher an, oder?
Deshalb evtl so weiter:
if (dritternpc.getdistance player < 10 && doonce == 1)
enableplayercontrols
ersternpc.startcombat player
ersternpc.setav aggression 100
zweiternpc.startcombat player
zweiternpc.setav aggression 100
dritternpc.startcombat player
dritternpc.setavaggression 100
set doonce to 2
endif

if (doonce == 2 && ersternpc.getdead && zweiternpc.getdead && dritternpc.getdead)
streammusic "juhugewonnen"
set doonce to 3
endif

end
...?
Was ist das eigentlich für eine Längeneinheit bei getdistance? Und geht meine letzte "if"-Zeile so? Oder krepeln da Probleme rum?

Vielen Dank.
 
Ja, die letzte if-Zeile ist ok.
Für das Laufen brauchst du wohl eher Packages als ein Script.

Die Entfernungen sind in Units angegeben.
Etwa 70 Units entsprechen 1 Meter.
Mit 10 wärst du also bei etwa 13cm.

Das dürfte etwas wenig sein.
 
  • Like
Reaktionen: Rakios
So, jetzt habe ich noch ne Frage: Wie kann ich denn den NPC "erscheinen" lassen? Dachte, dass würde mit "moveto player" funktionieren. Tut es aber nicht.
 
Doch, eigentlich geht das.
Dafür muss er aber schon irgendwo sein.

Am besten erstellt du eine Interior-Zelle, die keinen Eingang hat.
Dort einfach ein Gebäudeteil reinsetzen und da dann die NPCs.
Dann noch jeweils einen X-Marker hin, zu dem der NPC dann wieder hinteleportiert werden kann.
 
  • Like
Reaktionen: bjoernret
Funktionier nicht. Ich bekomme folgende Meldung:
"Invalid Object Reference [...]"

Hier ist mein Anfangscode:
Code:
scn bKasernenNeuerSoldatImperialCity

Begin OnActivate
short NeuerSoldat
set NeuerSoldat to GetRandomPercent

If (NeuerSoldat <= 9)
 bKasernenSoldatImperialCity1.moveto player
endif
End
 
Hi, ich habe das selbe Problem wie Hoch-Ordinator.
Mein Begleiter NSC folgt mir nicht, aber ich habe alles gemacht wie es in dem Tutorial beschrieben ist.
Alles andere macht er z.b. seine Waffe ziehen oder alles angreifen was sich bewegt.
Was haben wir falsch gemacht?
 
Funktionier nicht. Ich bekomme folgende Meldung:
"Invalid Object Reference [...]"

Hier ist mein Anfangscode:
Code:
scn bKasernenNeuerSoldatImperialCity

Begin OnActivate
short NeuerSoldat
set NeuerSoldat to GetRandomPercent

If (NeuerSoldat <= 9)
 bKasernenSoldatImperialCity1.moveto player
endif
End

Mal davon abgesehen, dass "short NeuerSoldat" vor dem begin-Block stehen muss, hast du wohl die Object-ID des NPC benutzt.
Hierfür musst du jedem der NPCs noch eine Reference-ID zuordnen und einen Haken bei Persistance Reference setzen.
 
  • Like
Reaktionen: bjoernret
Dann funktioniert es aber nicht mit dem, was ich vorhabe. Meine Mod soll eine Art Armee-Mod werden, und dafür brauche ich mehrere Soldaten. Gibt es nicht eine Möglichkeit, dass man nach einem Gespräch den per Zufall ausgewählten Soldaten erscheinen lässt, aber so, dass man danach auch wieder Soldaten "erscheinen" lassen kann, also mehrere Soldaten rekrutieren.
Denn so, wie ich das verstanden habe, müsste ich in meine Dummy Cell tausende von Soldaten einfügen und sie im Script berücksichtigen
 
Es gibt noch den Befehl PlaceAtMe, dafür müssen die Objekte noch nicht irgendwo sein.

Allerdings hat der Befehl einen großen Nachteil.
Jedesmal, wenn er ausgeführt wird, vergrößert sich das Svaegame.
Ab einer bestimmten Größe kann es im schlimmsten Fall passieren, dass das Save nur noch für den Papierkorb gut ist.
 
  • Like
Reaktionen: bjoernret
Ohne die NPCs vorher schon irgendwo zu platzieren, nicht das ich wüsste.

So viele NPCs werdens ja wohl nicht sein. 10 oder so wären ja nciht so ein Aufwand, wenn man die vorher in eine Interior-Zelle setzt.
Viel mehr sollten es auch nicht sein, aus Performancegründen.

Wenn du da 30 NPCs hinhaust, hast du hinterher nicht viel Spaß beim Spielen.
 
  • Like
Reaktionen: bjoernret
Ok, dann werde ich das ganze auf 10 NPC's begrenzen. Da ich schon mal so schön beim Fragen bin: Mit
Code:
GetDeath.moveto XMarker
Resurrect
müssten die NPC's doch eigentlich wieder in die Dummy Cell zurückkehren und wiederbelebt werden, oder?