Construction Set Skriptthread zum Construction Set

Wie ging das nochmal, dass wenn der Spieler wo durch geht, das dann ein paar Sachen enabled werden? Ich hab ne Box gesetzt und den enable teil hab ich auch, aber die Bedingung dazu fällt mir nicht mehr ein.
 
Wie gesagt ich bin ein totaler Neuling / Frischling was Mods erstellen angeht, welcher sich mit den Topis nicht auskennt. ;)

Also tut mir leid im voraus aber könntet ihr mir das bitte näher erklären? Also müsste wissen wie ich die Topics mit einander verbinde; mehrere Antworten zum auswählen für Fragen und auch ob ich einstellen kann, das der NPC unter einer Topic mehrere Sachen nacheinander sagt.

Danke im voraus!!

Antworten als eigene Topics, dann beim Frage-Topic rechts "Responses" die Anwort-Topic eintragen.

Mehrere Sachen nacheinander (also mehrere Seiten) bekommst du, indem du unter der Topic einfach mehrere Zeilen füllst, jede entspricht später einer Seite.
 
Hey

Ich bräuchte bitte zweiSkripts die folgendes machen...

Nachdem 5 Gegner tot sind soll ein Npc erscheinen .

Der Npc selber soll dann noch einen Skript haben das er den Spieler wenn dieser auf eine bestimmte Entfernung herankommt , zu einem bestimmten Topic anspricht .
 
1stens mache ich am liebsten so: Du fügst der zugehörigen Quest ein Script zu, wie folgt:

Code:
scn Scriptname

short enemycount
Dieses Questscript hält lediglich eine Variable. Dann kommt folgender Script auf alle Gegner, die sterben sollen.
Code:
scn Scriptname

Begin OnDeath
set [QuestID].enemycount to [QuestID].enemycount + 1
if [QuestID].enemycount == 5
    [NPCRef].enable
endif
End
Ich gehe davon aus, dass der NPC schon im CS an der richtigen Postion platziert und "Initialy Disabled" ist.

zu 2tens legst du folgendes auf den NPC:
Code:
scn Scriptname

short doonce

Begin GameMode
if (getdistance player <= 210) && (doonce == 0)
    set doonce to 1
    StartConversation player, [Topic]
endif
End

Die Distanz liegt momentan bei 210, das entspricht ungeföähr 3 Meter (70 units = 1 Meter in Oblivion).
 
  • Like
Reaktionen: Anti_Held
hi leute ,

ich brauche ein script für folgende situation:

Ich habe zwei Altäre. wenn man an einen altar herantritt, soll die frage kommen ob ich einen schwarzen seelenstein opfern möchte. Wenn ich das selbe am anderten gemacht habe soll sich eine geheimtür öffnen.

die altäre sollten anwählbar sein, ähnlich dem topf , der in der sheogorath-mission vorkommt wo man den käse hinein legt um die ratten anzulocken

würde mich über eine antwort freuen
 
als erstes erstellst du eine globale Variable.

Für die Altäre:

ScriptName Name

short doonce

Begin OnActivate

if doonce == 0
set globVar to globVar + 1
set doonce to 1

endif

end

Für die Tür:

ScriptName Name

Begin OnActivate

if globVar == 2
activate
endif

end
 
  • Like
Reaktionen: Morzan
Ich würds anders machen als du es schreibst, Schmelz.
Globals werden jeden Frame abgefragt.
Ich würd eine Quest machen und folgenden Skript drauflegen.

PHP:
scn ...

Short Altar01Var
Short Altar02Var

Begin GameMode

If (Altar01Var == 1) && (Altar02Var == 1)
 TuerRef.Unlock
Endif
End

Auf den Altar 1 legst du

PHP:
scn ...

Begin onActivate

If (QuestID.Altar01Var == 0)
 Player.RemoveItem ID-Vom-Schwarzen-Seelenstein 1
 Set QuestID.Altar01Var to 1
Endif
End

Auf Altar 2 legst du
PHP:
scn ...

Begin onActivate

If (QuestID.Altar02Var == 0)
 Player.RemoveItem ID-Vom-Schwarzen-Seelenstein 1
 Set QuestID.Altar02Var to 1
Endif
End
 
  • Like
Reaktionen: Morzan
Die Altäre müssten beides Activator sein, damit man sie aktivieren kann. Ich kenne jetzt zwar die Mission mit Sheogorath nicht, aber ich nehme an da wurde es ähnlich gemacht. Dann würde ich es so machen (wenn das nicht questbezogen ist und keine quest-variable hätte, wovon ich jetzt einfach mal ausgehe). Folgender Script kommt auf die Tür:

Code:
scn Scriptname

short step

Begin OnActivate
if isactionref player
    return
else
    if step == 1
        activate
    else
        set step to 1
    endif
endif
End

Dann musst du der Tür noch eine Referenz geben. Da ich nicht weiß, wie gut du dich mit dem CS auskennst schreibe ich kurz wie: Doppelklick auf die Tür 3D-Fenster, oben bei "Reference Editor ID" in dem leeren Textfeld eine eindeutige Ref ID eintragen, zB. MZGeheimtuer (MZ als Abkürzung für deinen Namen). Dann noch ein Haken unten bei "Persistent Reference". Nun kommt folgender Script auf die Altäre:

Code:
scn Scriptname

short button
short offered

Begin OnActivate
if (isactionref player)
    if offered
        Message "Ihr habt schon euer Opfer erbracht"
    else
        Messagebox "Möchtet ihr einen schwarzen Seelenstein opfern?" "Ja" "Nein"
    endif
endif
End

Begin GameMode
set button to getbuttonpressed
if button == -1
    return
elseif button == 0
    if (player.getitemcount BlackSoulGem == 0) && (player.getitemcount BlackSoulGemFilled == 0) && (player.getitemcount BlackSoulGemGrand == 0)
        Message "Ihr habt keinen schwarzen Seelenstein bei euch"
    else
        if (player.getitemcount BlackSoulGem != 0)
            player.removeitem BlackSoulGem 1
        elseif (player.getitemcount BlackSoulGemFilled != 0)
            player.removeitem BlackSoulGemFilled 1
        else
            player.removeitem BlackSoulGemGrand 1
        endif
        Message "Euer Opfer wurde angenommen."
        [TuerREF].activate [TuerREF] 1
        set offered to 1
    endif
endif
End
Die [TuerREF] musst du dann durch die oben eingesetzte Referenz ersetzen, auch die Brackets [], die dürfen nicht mehr da sein. Wenn die Geheimtür wirklich eine Tür ist und kein Activator sollte es so funktionieren. Dieser Script fragt übrigens auch wirklich ab, ob der Spieler einen schwarzen Seelenstein hat.

Grüße,

Gildur

Edit: @ Kahmul: Weil wir es ausführlicher machen! xD
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Morzan
Ich würde es so machen:

Auf die beiden Activator:

Code:
SCN ...

Short Once

Begin OnActivate

if(once)
     return
else
        set once to 1
endif

end


Begin GameMode

 if(once == 0 || open == 4)
     return
 endif

if(once)
     MessageBox "Wollt Ihr einen schwarzen Seelenstein opfern?" "Ja", "Nein"
     set button to getbuttonpressed
     set once to 2
   if(once == 2)
          if(button == -1)
                  set button to 0
                  set once to 0
                 return
          elseif(button == 0)
                    if(player.getitemcount <SeelenSteinID>)
                          player.removeItem <SeelenSteinID>
                          set once  to 3
                    endif
          elseif(button == 1)
                set button to 0
                set once to 0
              return
          endif
   elseif(once == 3)
                set <TürRef>.Open to <TürRef>.Open +1
                set once to 4
              return
      endif
  endif

end
Und auf die Tür das hier:

Code:
SCN ...

Short Open
Short Once

Begin GameMode

if(open < 2)
      return
else
    if(once == 0)
        enable ; falls sie erst erscheinen soll.
        unlock ; falls sie verschlossen ist
        activate

        set once to 1
   else
            return
 endif

end
MfG.

EDIT: Mist, warum sind alle schneller als ich? o_O
 
  • Like
Reaktionen: Morzan
was ich nicht ganz verstehe. wie kann ich jetzt festlegen das mir dann ein schwarzer seelenstein abgezogen? es soll ja eine messagebox erscheinen mit der frage:

Wollt ihr einen schwarzen Seelenstein opfern?
Ja
Nein

irgendwie muss ich dann ja mit der if funktion prüfen lassen ob ich über genug seelensteine verfüge.

danke schonmal im vorraus
 
@ Gilder .

Danke , aber ich habe da ein Problem das Cs sagt immer das die Variable 00Quest1.enemycount unbekannt ist.


Folgender Script liegt auf der Quest...


scn 00ScriptStartQuest




short doonce

Begin GameMode

short enemycount

if doonce == 0
set doonce to 1
setstage 00Quest1 10
endif

end

Und dieser sollte auf den Gegnern liegen...

scn Scriptname

Begin OnDeath
set 00Quest1.enemycount to 00Quest1.enemycount + 1
if 00Quest1.enemycount == 5
diener.enable
endif
End
 
Oh nein... sonst war das nie ein Problem....

Gibts nicht eine Möglichkeit den Skript anders zu schreiben ? Neu anfangen wäre jetzt höchst unschön...