Construction Set Skriptthread zum Construction Set

Das Script soll auf ein Buch.
Wenn man es versucht zu activieren kommt eine MessagesBox doch weiss man das Lösungswort nicht wenn man das weiss steht die antwort zur auswahl in der MessagesBox und wenn man die Lösung anklickt soll man das Buch lesen können (aktiviert)
 
Ah, ok. Dann reicht ein einfaches "activate".

Code:
scn ...

short once
short button
short level
short Exit

begin OnActivate
if (once == 0) && (player.GetStage FNHQ02 <= 45)
Messagebox "Verschlüsselung", "Nichts eingeben und weglegen"
    set level to 1
    set once to 1
elseif (once == 0) && (player.GetStage FNHQ02 >= 50)
Messagebox "Verschlüsselung", "Nichts eingeben und weglegen", "Necromanti"
    set level to 2
    set once to 1
endif
end

begin GameMode
set button to GetButtonPressed
if (once == 1) && (level == 1) && (button == 0)
    return
    set once to 0
    set level to 0 
elseif (once == 1) && (level == 2) && (button == 0)
    return
    set once to 0
    set level to 0 
elseif (once == 1) && (level == 2) && (button == 1)
     activate 
     set once to 0
     set level to 0
endif
end
 
  • Like
Reaktionen: Yves
Doch noch ne Frage:
Ich wollte in dieses Script das wetter in Oblivion Storm ändern doch so Funktion iert es nicht:
Code:
scn FnDestinationEX

short doonce

begin OnTrigger Player 

if doonce == 0


FNDestinationStartSpigganEX01.enable
FNDestenationEX01.enable
FNDestenationEX02.enable
FNDestenationEX03.enable
FNDestenationEX04.enable
FNDestenationEX05.enable
FNDestenationEX06.enable
FNDestenationEX07.enable
FNDestenationEX08.enable
FNDestenationEX09.enable
FNDestenationEX10.enable
FNDestenationEX11.enable
FNDestenationEX12.enable
FNDestenationEX13.enable
FNDestenationEX14.enable
FNDestenationEX15.enable
FNDestenationEX16.enable
FNDestenationEX17.enable
FNDestenationEX18.enable
FNDestenationEX19.enable
FNDestenationEX20.enable
FNDestenationEX21.enable
FNDestenationEX22.enable
FNDestenationEX23.enable
FNDestenationEX24.enable
FNDestenationEX25.enable
FNDestenationEX26.enable
FNDestenationEX27.enable
FNDestenationEX28.enable
FNDestenationEX29.enable
FNDestenationEX30.enable
FNDestenationEX31.enable
FNDestenationEX32.enable
FNDestenationEX33.enable
FNDestenationEX34.enable
FNDestenationEX35.enable
FNDestenationEX35.enable
FNDestenationEX36.enable
FNDestenationEX37.enable
FNDestenationEX38.enable
FNDestenationEX39.enable
FNDestenationEX40.enable
FNDestenationEX41.enable
FNDestenationEX42.enable
FNDestenationEX43.enable
FNDestenationEX44.enable
FNDestenationEX45.enable
FNDestenationEX46.enable
FNDestenationEX47.enable
FNDestenationEX48.enable
FNDestenationEX49.enable
FNDestenationEX50.enable
FNDestenationEX51.enable
FNDestenationEX52.enable
FNDestenationEX53.enable
FNDestenationEX54.enable
FNDestenationEX55.enable
FNDestenationEX56.enable
FNDestenationEX57.enable
FNDestenationEX58.enable
FNDestenationEX59.enable
FNDestenationEX60.enable
FNDestenationEX61.enable
FNDestenationEX62.enable
FNDestenationEX63.enable
FNDestenationEX64.enable
FNDestenationEX65.enable
FNDestenationEX66.enable
FNDestenationEX67.enable
FNDestenationEX68.enable
FNDestenationEX69.enable
FNDestenationEX70.enable
FNDestenationEX71.enable
FNDestenationEX72.enable
FNDestenationEX73.enable
FNDestenationEX74.enable
FNDestenationEX75.enable
FNDestenationEX76.enable
FNDestenationEX77.enable
FNDestenationEX78.enable
FNDestenationEX79.enable
FNDestenationEX80.enable
FNDestenationEX81.enable
FNDestenationEX82.enable
FNDestenationEX83.enable
FNDestenationEX84.enable
FNDestenationEX85.enable
FNDestenationEX86.enable
FNDestenationEX87.enable
FNDestenationEX88.enable
FNDestenationEX89.enable
FNDestenationEX90.enable
FNDestenationEX91.enable
FNDestenationEX92.enable
FNDestenationEX93.enable
FNDestenationEX94.enable
FNDestenationEX95.enable
FNDestenationEX96.enable
FNDestenationEX97.enable
FNDestenationEX98.enable
FNDestenationEX99.enable
FNDestenationEX100.enable
FNDestenationEX101.enable
FNDestenationEX102.enable
FNDestenationEX103.enable
FNDestenationEX104.enable
FNDestenationEX105.enable
FNDestenationEX106.enable
FNDestenationEX107.enable
FNDestenationEX108.enable
FNDestenationEX109.enable
FNDestenationEX110.enable
FNDestenationEX111.enable
FNDestenationEX112.enable
FNDestenationEX113.enable
FNDestenationEX114.enable
FNDestenationEX115.enable
FNDestenationEX116.enable
FNDestenationEX117.enable
FNDestenationEX118.enable
FNDestenationEX119.enable
FNDestenationEX120.enable
FNDestenationEX121.enable
FNDestenationEX122.enable
FNDestenationEX123.enable
FNDestenationEX124.enable
FNDestenationEX125.enable
FNDestenationEX126.enable

FNDestenationDisableEX01.disable
FNDestenationDisableEX02.disable
FNDestenationDisableEX03.disable
FNDestenationDisableEX04.disable
FNDestenationDisableEX05.disable
FNDestenationDisableEX06.disable
FNDestenationDisableEX07.disable
FNDestenationDisableEX08.disable
FNDestenationDisableEX09.disable
FNDestenationDisableEX10.disable
FNDestenationDisableEX11.disable
FNDestenationDisableEX12.disable
FNDestenationDisableEX13.disable
FNDestenationDisableEX14.disable
FNDestenationDisableEX15.disable
FNDestenationDisableEX16.disable
FNDestenationDisableEX17.disable
FNDestenationDisableEX18.disable
FNDestenationDisableEX19.disable
FNDestenationDisableEX20.disable
FNDestenationDisableEX21.disable
FNDestenationDisableEX22.disable
FNDestenationDisableEX23.disable
FNDestenationDisableEX24.disable
FNDestenationDisableEX25.disable
FNDestenationDisableEX26.disable
FNDestenationDisableEX27.disable
FNDestenationDisableEX28.disable
FNDestenationDisableEX29.disable
FNDestenationDisableEX30.disable
FNDestenationDisableEX31.disable
FNDestenationDisableEX32.disable
FNDestenationDisableEX33.disable
FNDestenationDisableEX34.disable
FNDestenationDisableEX35.disable
FNDestenationDisableEX36.disable
FNDestenationDisableEX37.disable
FNDestenationDisableEX38.disable
FNDestenationDisableEX39.disable
FNDestenationDisableEX40.disable
FNDestenationDisableEX41.disable
FNDestenationDisableEX42.disable
FNDestenationDisableEX43.disable
FNDestenationDisableEX44.disable
FNDestenationDisableEX45.disable
FNDestenationDisableEX46.disable
FNDestenationDisableEX47.disable
FNDestenationDisableEX48.disable
FNDestenationDisableEX49.disable
FNDestenationDisableEX50.disable
FNDestenationDisableEX51.disable
FNDestenationDisableEX52.Disable
FNDestenationDisableEX53.Disable
FNDestenationDisableEX54.Disable
FNDestenationDisableEX55.disable
FNDestenationDisableEX56.disable
FNDestenationDisableEX57.disable
FNDestenationDisableEX58.disable
FNDestenationDisableEX59.disable
FNDestenationDisableEX60.disable
FNDestenationDisableEX61.disable
FNDestenationDisableEX62.disable
FNDestenationDisableEX63.disable
FNDestenationDisableEX64.disable
FNDestenationDisableEX65.disable
FNDestenationDisableEX66.disable
FNDestenationDisableEX67.disable
FNDestenationDisableEX68.disable
FNDestenationDisableEX69.disable
FNDestenationDisableEX70.disable
FNDestenationDisableEX71.disable
FNDestenationDisableEX72.disable
FNDestenationDisableEX73.disable
FNDestenationDisableEX74.disable
FNDestenationDisableEX75.disable
FNDestenationDisableEX76.disable
FNDestenationDisableEX77.disable
FNDestenationDisableEX78.disable
FNDestenationDisableEX79.disable
FNDestenationDisableEX80.disable
FNDestenationDisableEX81.disable
FNDestenationDisableEX82.disable
FNDestenationDisableEX83.disable
FNDestenationDisableEX84.disable
FNDestenationDisableEX85.disable
FNDestenationDisableEX86.disable
FNDestenationDisableEX87.disable
FNDestenationDisableEX88.disable

set doonce to 1
setweather OblivionStormTamriel 1

endif
end

Und wie heisstder Befehlm damit alles wieder seinen Normalen Lauf geht?
 
Gibs eigentlich einen Befehl der sagt das die Funktion eines Scripts nur ist solang man sich in der Triggerbox befindet.
Also das wetter nur so ist wenn man sich in der Triggerbox befindet.
 
Wegen Oblivionwetter:

Dazu gibt's diese Befehle:

fw (force weather) setzt das Wetter sofort auf ein anderes.

fw 000836D5 <- das ist "Oblivion Storm 1"
fw 0006BG8B <- das ist "Oblivion Storm 2"

Wenn das Wetter eine Weile so bleiben und sich nciht wieder nach wenigen Sekunden zurückändern, musst du eine 1 dahinter packen, also:

fw 1234567ABC 1

Um das Wetter zu normalisieren, nutze

releaseweatheroverride

Es gibt auch einen Befehl, mit dem sich das Wetter sanft zum Neuen ändert, aber der fällt mir jetzt nicht ein. Muss wohl sowas wie "sw" oder so sein.

Edit: LOL ich schreibe und in der Zeit fängt man hier eine neue Seite an, obwohl ich 40 Beiträge pro Seite zeigen lasse. Jetzt wird mein Beitrag nie da ankommen, wo er hingehört.
 
Zuletzt bearbeitet:
Es gibt auch einen Befehl, mit dem sich das Wetter sanft zum Neuen ändert, aber der fällt mir jetzt nicht ein. Muss wohl sowas wie "sw" oder so sein.

Edit: LOL ich schreibe und in der Zeit fängt man hier eine neue Seite an, obwohl ich 40 Beiträge pro Seite zeigen lasse. Jetzt wird mein Beitrag nie da ankommen, wo er hingehört.

Das "sw" ist das bereits verwendete "SetWeather".

Ist auch nicht mehr unbedingt nötig, dass der Post richtig ankommt, ForceWeather und ReleaseWeatherOverride sind etwas weiter oben bereits aufgeführt;)
 
Morgen! :)

Ich benöttige einmal ein Script.
Und zwar ist es etwas komplitiert und meine Script künste könnnen dies noch nicht ganz bewältigen...
Darum gehts in dem Script:
Es gibst 3 Sockel und 3 Gegenstände. wenn man den Sockel aktiviert und man hat keinen Stein soll eine Nachricht in der Ecke des Fensters erscheinen und der sockel soll nicht aktiviert werden aber wenn man den Gegenstand hat soll der aus dem Inventra entferntwerden und etwas enables geschlatet werden.Wenn man alle drei Sockel aktivert hat ,soll etwas enable geschaltet werden.

Bitte um Hilfe :)
Lg Yves
 
Zuletzt bearbeitet:
Wenn ich das richtig sehe, ist es nicht mit einem Script getan. Ich würde denken, du brauchst für jeden Sockel eins. Die sehen so aus:

Code:
Scn ...

begin OnActivate
if (player.getitemcount [Gegenstand-ID] >= 1)
    player.removeitem [Gegenstand-ID] 1
    [Ref-ID auf einem Sockel].enable
    set [global] to ([global] + 1)
else
    Message "Ihr habt den benötigten Gegenstand nicht"
endif
end

In denen musst du dann jeweils noch die passende Ref-ID des zu enablenden Gegenstandes einfügen sowie die Obeject-ID des Gegenstandes, den man benötigt. Den Text bei Message kannst du natürlich ändern.
Für global setzt du eine neue globale Variable ein. (Die erstellst du unter Gameplay>Globals. Einfach Short und den Wert auf 0 lassen.)

Als nächstes brauchst du noch ein Script, dass entweder als Questscript fungiert oder auf einem weiteren Activator liegt, der sich im selben Raum befindet und am besten nicht für den Spieler erreichbar ist.

Code:
scn ...

short once

begin GameMode
if ([global] >= 3) && (once == 0)
    [Hauptgegenstand-Ref].enable
    set once to 1
endif
end


So sollte das gehen. Eine simplere Lösung fällt mir gerade nicht ein. Ich weiß nämlich nicht, ob man abfragen kann, ob etwas enabled ist.
Ich hoffe das klappt so.
 
  • Like
Reaktionen: Yves
In Folgender zeile:
set [global] to ([global] + 1)
ensteht eine fehlermeldung:
Code:
---------------------------
Warning
---------------------------
Script 'FNEarthShrineTributSockelScript01', line 9:
Missing variable name in set command.





Weiterspielen?

"Yes to all" will disable all Warnings this session.
---------------------------
Ja   Nein   Abbrechen   
---------------------------


Und kann man nicht das 2. Script mit diesem zusammen machen:
Code:
scn FNEarthShrineEndgameOpenGate

short triggered	
float timer

Begin onTrigger Player

     if triggered == 0
         FNEndgameOpenGate.playgroup equip 0
         set triggered to 1
         set timer to 8
     endif

End

Begin GameMode

     if triggered == 0
           return

    endif
         if timer >= 0 && triggered == 1
		set timer to timer - getSecondsPassed

	endif

     if timer <= 4
          FNEndgameOpenGate.playgroup Forward 1
     endif



	if timer <= 0


	endif

end
Dass das alles Passiert wenn die drei Aktiviert sind?

Lg yves
 
Zuletzt bearbeitet:
Hast du denn auch eine neue Globale erstellt und dort auch eingetragen ?

Oder hast du nur "Global" eingetragen, dass ist ja nur als Beispiel.

Mfg Master of Worlds
 
Nein, hat er nicht oder er hat sie nicht ins Script übernommen.

Zu dem anderen:
Steht die Triggerbox in der selben Zelle bzw Interior? (Wenns in einem Interior ist...)
Wenn ja, dann sollte es gehen, wenn du dem GameMode-Block einfach den anderen hinzufügst.
 
@ Master of World:
Woran liegt den nun die Fehlermeldung :?

@Knochenkeule:

Code:
scn ...

short once
short triggered	
float timer


begin GameMode
if ([global] >= 3) && (once == 0)
    FNEndgameOpenGate.playgroup equip 0
         set triggered to 1
         set timer to 8
     endif


    endif
         if timer >= 0 && triggered == 1
		set timer to timer - getSecondsPassed

	endif

     if timer <= 4
          FNEndgameOpenGate.playgroup Forward 1
     endif



	if timer <= 0


	endif

end
    set once to 1
endif
 
Zuletzt bearbeitet:
die Fehlermeldung liegt daran, dass du keine global erstellt hast bzw sie nicht im Script eingetragen hast.

Du gehst im CS unter Gameplay auf Globals.
Dort in die Liste rechtsklick>new.
Da gibst du einen Namen ein, stellst auf short und den Wert 0.

Dann ersetzt du in den Scripts [global] durch deine erstellte global.

zu dem anderen:
Soll jetzt doch kein weiterer Gegenstand enabled werden, wenn du die drei Sockel mit nem Gegenstand versehen hast?
So würde das jedenfalls nicht passieren.

Außerdem hast du ein endif zu viel und ich bin mir auch nicht sicher, ob das so klappen wird.
 
Ich habe doch Eben gefragt...
Die Triggerbox die enable geschaltet wird löst ein Script aus kann man nicht machen nach dem aktivieren direkt das was die eine Triggerbox machen würde?Das erspart ein Script und eine TriggerBox.


Und ich kann das Script nichtB Speichern kommt zwar keine Fehler meldung aber immer wenn ich schlissen will fragt der Speichern dann drück ich ja dann will ich wieda closen dann das gleiche wieda...
Code:
ScriptName FNEarthShrineTributSockelScript01


begin OnActivate
if (player.getitemcount FNEarthCrystel01 >= 1)
    player.removeitem FNEarthCrystel01 1
    FNEarthShrineTribut01.enable
    FNEarthShrineFXCrytsel01.enable
    set FNEarthShrineOpenGate to FNEarthShrineOpenGate+ 1)
else
    Message "Ihr habt den benötigten Gegenstand nicht"
endif
end

Lg yves
 
Zuletzt bearbeitet:
Versuchs mal mit einem Leerzeichen vor dem "+"...
Also:
Code:
set FNEarthShrineOpenGate to FNEarthShrineOpenGate + 1)

Edit: Das Problem mit dem Speichern kenne ich, bin aber nie dahinter gekommen woran es liegt. Auch weil das gleiche Script bei anderen Leuten ohne Weiteres speichert...
 
Wieso du das Script nicht speichern kannst, weiß ich ehrlich gesagt nicht.
Kopier es mal, starte das CS neu und versuche es erneut.

Um es in ds Triggerscript einzubauen machst du das so:

Code:
scn FNEarthShrineEndgameOpenGate

short triggered	
float timer
[COLOR="Red"]short once[/COLOR]

Begin onTrigger Player

     if triggered == 0
         FNEndgameOpenGate.playgroup equip 0
         set triggered to 1
         set timer to 8
     endif

End

Begin GameMode

    if triggered == 0
         return
    endif

    if timer >= 0 && triggered == 1
        set timer to timer - getSecondsPassed
    endif

    if timer <= 4
       FNEndgameOpenGate.playgroup Forward 1
    endif

    if timer <= 0
    endif

[COLOR="red"]    if (FNEarthShrineOpenGate >= 3) && (once == 0)
    [Hauptgegenstand-Ref].enable
    set once to 1
    endif[/COLOR]

end

Noch eine Frage hierzu:
Code:
ScriptName FNEarthShrineTributSockelScript01


begin OnActivate
if (player.getitemcount FNEarthCrystel01 >= 1)
    player.removeitem FNEarthCrystel01 1
    FNEarthShrineTribut01.enable
[COLOR="red"]    FNEarthShrineFXCrytsel01.enable[/COLOR]
    set FNEarthShrineOpenGate to FNEarthShrineOpenGate+ 1)
else
    Message "Ihr habt den benötigten Gegenstand nicht"
endif
end

Das Markierte, soll das das sein, was erst enabled werden soll, wenn alle Gegenstände platziert wurden?
Wenn ja, dann nimmst du die Zeile aus dem SScript raus und fügst die ID in das anderen Script an der Stelle, wo [Hauptgegenstand-Ref] steht, ein.
Da muss jedenfalls der Gegenstand hin.