Construction Set Skriptthread zum Construction Set

Ich würde den ganzen Script vielleicht lieber entweder als Questscript laufen lassen oder als OnLoad, das ist beides Performance schonender, als wenn man die ganze Zeit einen Script im GameMode laufen lässt...
 
man könnte es zwar mit irgendsowas wie "getdrink" oderso machen,aber da kenn ich mich nicht so aus...also entweder machst du dass JEDER,der den trank trinkt stirbt.einfach ein script

Code:
scn name
ref drinker

begin scripteffectstart
set drinker to getself
drinker.kill
end
erstellen und als scripteffect auf den trank legen und dem npc den script
Code:
scn name

begin ondeath
setstage <quest-ID> X
end
geben.oder du fragst ab,ob der trank im inventar ist

Code:
scn name
short gotpotion

begin gamemode
if <NPC-ref>.getitemcount <trank-ID>==1
set gotpotion to 1
elseif <NPC-ref>.getitemcount <trank-ID>==0
  if gotpotion==1
  <NPC-ref>.kill
  setstage <quest-ID> X
  endif
endif
end

ich empfehle aber die erste variante.ist performance-freundlicher^^
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Darth Andauril
ich habe mal wieder eine Frage zu einem Script

im Moment geht es aber erstmal darum, ob das überhaupt so funktionieren würde, wie ich mir das vorstelle.

Folgendes ist geplant:

der Spieler wird in einen neuen Worldspace teleportiert; sobald man angekommen ist, erscheint eine MessageBox, die einem sagt, dass man auf der Insel schiffbrüchig an Land gespült wurde;
das wichtigste bei diesem Script ist aber, dass dem Spieler für ein paar Sekunden sehr viel Ausdauer entzogen wird, sodass er auf dem Boden liegt, wenn er auf der Insel ankommt.
Am besten wäre es, wenn der Hintergrund, bevor man sich auf dem Boden liegen sieht, schwarz ist, sodass man nicht mitbekommt, wie der Spieler zu Boden geht, sondern denkt, dass der schon eine Weile da liegt...

der Knackpunkt ist der Part mit dem Ausdauer entziehen und ich wollte mich erstmal erkundigen, ob das überhaupt funktionieren kann? kann man für ein paar Sekunden Ausdauer entziehen, sodass der Spieler zunächst am Boden liegen bleibt?

außerdem soll der Spieler ohne Ausrüstung ankommen, die ist in einem Sack an Land gespült worden, den er erst suchen muss...

vom zeitlichen Ablauf her, wäre es wohl am besten, wenn man irgendwie
-den Bildschrim schwarz machen könnte (wäre optimal, ist aber nur optional)
-die Ausrüstung aus dem Inventar entfernt wird
-dann die Messagebox erscheint
und gleichzeitig die Ausdauer entzogen wird

so weit die Idee, jetzt wäre es super zu hören, dass das klappen kann^^
 
messagebox ist kein probllem.items entfernen mit

"player.RemoveAllItems <ziel-container-REF>"

ausdauer könnte man mit einem zauber entziehen aber das wäre dann blöd wenn man dem zb widersteht und wenns oben rechts in der ecke angezeigt wird...es gibt auch einen skriptbefehl dafür...

mit "player.setav fatigue X/modav fatigue X/forceav fatigue X" kann man den ausdauer-wert beeinflussen.allerdings hat das bei mir immer dazu geführt dass sie sich nicht mehr eigenständig regeneriert hat :(

zum schwarzen bildschirm könnte man einfach ein riesiges schwarzes object zum spieler teleportieren...
 
  • Like
Reaktionen: Big Little
ah, genau

das script müsste nach 5 Sekunden oder so die Ausdauer wieder herstellen..
auf Zauber möchte ich eher nicht zurückgreifen, weil ich nicht möchte, dass man Effekte sieht..

das mit dem schwarzen Objekt ist gut..das müsste dann nur schnell wieder entfernt werden^^
 
ja als objekt würde ich "blackmask01" oderso empfehlen

weist du was?!ich hab so wenig zutun und hock eh den ganzen tag in der bude....ich schreib einfach mal ein script und probier aus,obs klappt^^
sagen wir ne viertelstunde,dann bin ich hoffentlich fertig.dann kann ich dir ja vllt irwi die .esp schicken und du sagst mir ob es so ist wie dus dir vorgestellt hast^^
 
  • Like
Reaktionen: Big Little
Klasse! Das ist natürlich Luxus pur :D

ein was hab ich noch vergessen...

diese Messagebox und die ganze Schiffbruchgeschichte soll nur einmal passieren, also wenn der Spieler das erste mal auf die Insel kommt..
 
Zuletzt bearbeitet:
ja schon klar^^
soll ich dir einen activator machen,durch den du auf die insel kommst oder soll ichs als gamemode machen damit du geportet wirst sobald du das speil startest?
 
Mit "Player.ModAV2 -5000" könnte man dem Spieler die gesamte Ausdauer entziehen. Es könnte natürlich auch -1000 heißen, aber wir wollen ja auf Nummer sicher gehen.
Mit dem Befehl "ModAV2" kannst Du dem Spieler die gewünschte Ausdauer entziehen, aber es wird nichts vom Basis-Wert abgezogen.
Also wenn der Spieler, sagen wir mal, 155 Ausdauer hat und Du im Script "Player.ModAV2 Fatigue -1000" hat der Spieler 0 Ausdauer.
Wenn der Spieler aber 155 Ausdauer von 200 hat und Du "Player.ModAV2 +500" schreibst, dann wird die aktuelle Audauer auf 200, also den maximal Wert erhöht.

Soweit verstanden? :D Der Befehl wäre perfekt für dein Vorhaben gedacht und es wird nichts am Basis-Wert geändert und die Ausdauer regeneriert sich normal.
Der Haken ist, dass der Befehl OBSE benötigt und ich nicht weis, ob Du das willst.
 
für mich ist das kein Problem..höchstens für die anderen, die meine Mod spielen *aufHolzklopfdasssiejemalsfertigwird*

allerdings ist obse mittlerweile ein Muss, weil es einfach unglaublich praktisch ist und ich denke ich kann mal davon ausgehen, dass der Großteil aller Oblivionzocker mittlerweile eine mehr oder weniger aktuelle Version vom ScriptExtender hat^^

ab welcher Version sollte man obse denn dafür haben? das muss ich gleich mal unter "Requirements" aufnehmen
 
Die Sache ist die...

wie bekomme ich es hin, dass beim Tod durch das Trinken dieses Trankes eine andere QuestStage ausgelöst wird als, wenn der Spieler den NPC tötet?

Beim Vergiften würde, z.B., die Stage kommen: "Ich habe X vergiftet und er ist sofort gestorben."

Beim persönlichen Töten würde z.B. die Stage "Ich habe X eigenhändig die Haut von den Knochen geschält" kommen.

Es passt einfach irgendwie nicht, wenn ich besagten NPC ganz normal töte und dann heißt es, ich hätte ihn vergiftet...
 
Ich würde dieses Script auf den Apfel legen:

Code:
SCN ...

Ref Me

Begin OnEquip

set me to getcontainer

if(me != <Npc-Ref>)
     return
 else
        me.kill
endif

end
Dann dieses Script auf den NPC:

Code:
SCN ...

Begin OnDeath Player    ; wenn der Spieler den NPC getötet hat

setstage <quest> <stage>

end

Begin OnDeath

setstage <quest> <stage>

end

@ Big Little:

Ich würde imemr die aktuellste Version nehmen und empfehlen. ;)
 
  • Like
Reaktionen: Darth Andauril
öhm, mir fällt grad ein, dass ich einen entscheidenden Punkt bei meinem Wunschscript vergessen hab :oops:

wenn man auf der Insel ankommt, soll da nämlich ein heftiges Gewitter sein..der Held braucht ja eine Erklärung für seinen Schiffbruch..

allerdings ist das bei mir und dem Wetter so eine Sache..irgendwie will das nicht klappen. ich hab neulich zwei Scripts von Diarrhoe bekommen, aber leider hab ich sie nicht zum Laufen gebracht. Das Script sollte das Wetter der ganzen Insel regeln, aber es passierte nichts...

für den Start auf der Insel wär es aber wichtig, dass da wenigstens das Wetter richtig mies ist..
 
Ich würde so ein Quest-Script erstellen:

Code:
SCN ...


Short Once
Short Frames

Float fQuestDelayTime


Begin GameMode

if(fquestdelaytime)
     set fquestdelaytime to 0.01
endif

 if(player.getinworldspace <worldspace>) && (once == 0)
      set once to 1
 endif

   if(once == 0)
       return
 elseif(once == 1)
     releaseweatheroverride
     setweather <wetterID>

     player.removeallitems <sack-ref>
     MessageBox "Bla"
     set once to 2
  elseif(once == 2)
     set frames to (frames +1)
      if(frames < 500)
           player.modav2 fatigue -5000
          return
    elseif(frames >= 500)
        player.modav2 fatigue +5000
        set frames to 0
        set once to 3

        stopquest <questID>
       return
      endif
   endif

end
Habe jetzt eben statt einem Timer die Frames zählen lassen. Müssten eigentlich 5 Sekunden sein. Wenn nicht, kann man es ja noch ändern. ;)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Big Little
ah, mir ist gerade etwas aufgefallen..

bei Wetter ID meinst du damit "Thunderstorm" oder hat Gewitter eine ID wie die ganzen anderen Objekte im CS auch? (also so einen Zahlen/Buchstaben-Code)

wenn ja, dann wüsste ich jetzt, warum mein altes Script nicht funktioniert hat^^