Construction Set Skriptthread zum Construction Set

Wieso ist es eine Fummelarbeit? Die Sache an sich ist nicht wirklich schwierig. Es gibt halt nur das Problem was Knochenkeule schon angesprochen hat, wie soll man die Früchte replizieren?
Mit einer Abwandlung von diesem Script könnte es wohl funktionieren. Allerdings habe ich keine Erfahrung damit ob es tatsächlich funktioniert bzw. ob sich das Savegame vergrößert.

Das ist außerdem ein OBSE Scriptbefehl, funktioniert also nicht im Vanilla Oblivion.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Skoomadieb
Es geht auch ohne den Speicher aufzublähen viel einfacher. Selbst ohne Obse. Denn anders als PlaceAtMe, bläht additem den Spielstand nicht auf.Packe diesen Script die 6 Äpfel (du musst dafür 1 neue ID erstellen, nicht auf die vorhandene ApfelID!)

Code:
scn ApfelSCRIPT

Begin OnActivate player
player.additem Apple 1
disable
End

Und dieser Script muss auf den Activator, der für den Baum steht:
Code:
scn ApfelaumSCRIPT

short button
short harvestday
short harvest

Begin OnActivate
if harvestday == 0
set harvestday to gameday
Elseif harvestday > gameday
Messagebox "Der Baum trägt noch keine Früchte! Kommt später wieder."
Endif

If (harvestday < gameday) && (harvest == 0)
Messagebox "Wollt ihr den Baum schütteln?" "Ja" "Nein"
set harvest to 1
Endif
End

Begin GameMode
If harvest == 0
return
Elseif harvest == 1
set button to getbuttonpressed
Endif

If button == 0
set harvest to 0
set harvestday to gameday +3
Apfel1REF.mopvetomarker Marker1REF
Apfel2REF.mopvetomarker Marker2REF
Apfel3REF.mopvetomarker Marker3REF
Apfel4REF.mopvetomarker Marker4REF
Apfel5REF.mopvetomarker Marker5REF
Apfel6REF.mopvetomarker Marker6REF
Apfel1REF.enable
Apfel2REF.enable
Apfel3REF.enable
Apfel4REF.enable
Apfel5REF.enable
Apfel6REF.enable
Endif
End
Ich hoffe, ich habe nichts vergessen.

Gildur
 
  • Like
Reaktionen: robinH und Skoomadieb
Ich bräuchte auch mal wieder einen Script :oops:

Wenn der Spieler sich auf einen Stuhl setzt, soll sich ein Attribut festigen. Das soll aber nur einmal am Tag geschehen. Das heißt wenn sich der Spieler nochmals hinsetzen möchte, soll eine Messagebox erscheinen, das man sich heute nicht mehr setzen kann.

grüße bertie
 
Dazu erstellst du einen neuen Zauber, der das Attribut erhöht.

Dann legst du folgendes Script auf den Stuhl:

Code:
scn ...

short once
short lastuse

begin OnActivate player
if (once == 0)
    activate
    player.addspell [SpellID]
    set lastuse to GameDay
    set once to 1
endif

if (GameDay == lastuse + 1)
    activate
    player.addspell [SpellID]
    set lastuse to GameDay
elseif (GameDay == lastuse)
    Messagebox "Ihr könnt den Stuhl heute nicht mehr benutzen."
endif
end

Das Script legst du dann auf den Stuhl. Sollte so gehen.
 
  • Like
Reaktionen: düster-bertie
Erstmal danke für den Script Knochenkeule :flower:

Aber er funktioniert nicht richtig. Sobald ich mich auf den Stuhl setzen will, wird zwar das Attribut gefestigt, aber gleichzeitig erscheint die Textbox. Ich kann auch nicht mehr aufstehen, da ebenfalls die Textbox erscheint.

grüße bertie
 
Kommt wohl durch die Art der Abfrage, der erste Fehler.
Der zweite rührt daher, dass man auch beim aufstehen den Stuhl aktiviert. Da wüsste ich leider gerade nicht, wie man das umgeht:?
 
  • Like
Reaktionen: düster-bertie
eine kleine Änderung sollte helfen:
Code:
scn Script

short sitting
short lastuse

begin OnActivate player
if lastuse == 0
set lastuse to gameday -1
endif

If sitting == 0
    if (lastuse < gameday)
        set sitting to 1
        set lastuse to GameDay
        activate
        player.addspell [SpellID]
    elseif (GameDay == lastuse)
        Messagebox "Ihr könnt den Stuhl heute nicht mehr benutzen."
    endif
Elseif sitting == 1
    set sitting to 0
Endif
end
 
Hallo Freunde der Sonne,
ich habe ein Problem. Ich will nämlich zur gleichen Zeit den Player, und sein Momentanes Ziel eine Animation ausführen lassen.
So klingt einfach, ist es aber nicht :D Das ganze soll per Extra Key passieren. Den zu bestimmen is kein Problem, das habe ich schon gemacht:
Code:
Scriptname STMessageBoxKey

Short CurrentMessage
Short Button
Short STKey
Float fQuestDelayTime

Begin GameMode
	if(STKey == 0)
		if(getquestrunning SirTroysSF)
			stopquest SirTroysSF
		endif
		set STKey to 1	
		set button to -100
		set fquestdelaytime to 0.1
	endif
	If (STKey == 1)
		If CurrentMessage == 0
			Set CurrentMessage to 1
			MessageBox "Wähle eine Taste aus. Wähle eine freie Taste auf deiner Tastatur!"
		Elseif CurrentMessage == 1
			Set Button to GetKeyPress 0
			If Button != 65535
				MessageBoxEX "Gewählter Button ist %k", Button
				Set SirTroysSF.KillKey to Button
				Set CurrentMessage to 2
			Endif
		Elseif CurrentMessage == 2
			Set CurrentMessage to 0
			Set STKey to 0
			If GetQuestRunning SirTroysSF == 0
				StartQuest SirTroysSF
			Endif
			Set SirTroysSF.Done to 1
			StopQuest Sirtroyskeyselector
		Endif
	Endif
End

So, die Quest wo der Gegner bestimmt werden soll heißt also SirTroysSF.
Code:
Scriptname SirTroysSFQuest

Short Killkey
Short Done
Short Playing
Short Move
Short Delay

Float AnimDelay

Ref Target
Ref PossibleTarget

Begin GameMode
	If Done == 1
		Enablekey Killkey
		If Delay != 0
	               If(player.isIdlePlaying || player.isPowerAttacking || player.isCasting || player.isanimgroupplaying dodgeback || player.isAnimGroupPlaying dodgeForward)
		          if(player.isAnimgroupPlaying blockAttack == 0 || iscontrolpressed 28 == 0)
			           return
			endif
		      Else
			Set Delay to 0
		     Endif
		Endif
		If Playing == 0
			Set AnimDelay to 6
		Elseif Playing >= 1 && Delay
			Set AnimDelay to Animdelay - 1
			If AnimDelay == 0
				Target.Kill
				Target.RemoveItem ZTroyRingDeath 1
				Set Playing to 0
				Set Move to 0
			Endif
		Endif
	Endif
	If ( IsKeyPressed2 KillKey ) && ( Move == 0 )
		set PossibleTarget to ( GetCrosshairRef )
		if ( IsFormValid PossibleTarget )
			If PossibleTarget.IsActor
				If PossibleTarget.IsCreature == 0
					If PossibleTarget.IsRefEssential == 0
						Set Target to PossibleTarget
					Endif
				Endif
			Endif
		Endif
		Set Move to 1
	Else
		Return
	Endif
	If Move == 0
		Return
	Elseif Move == 1
		Target.Additem ZTroyRingDeath 1
		Set Playing to 1
		Set Delay to 1
	Endif
End

Das ist das Questscript.
Nur leider funzt es Ingame nicht könnte mir da jemand helfen ich kenn mich mit Animationen noch nicht so aus.
Liebe Grüße
 
Zuletzt bearbeitet:
Die Scripte sehen recht kompliziert aus, jedenfalls für den Zweck, den sie erfüllen sollen. Außerdem vermisse ich den Befehl "pickidle", ohne den nie eine spezielle Animation ausgeführt wird.

Außerdem wäre es gut, wenn du nochmal in ein paar Worte fassen könntest, was du möchtest. Außerdem: benutzt du OBSE ?
 
  • Like
Reaktionen: robinH
Ja ich benutze OBSE. Pickidle ist in dem Sinne nicht notwendig, da sofern die Condition für eine Animation erfüllt ist, diese selbstständig ausgeführt werden.
(Condition für die Player Animation ist die Variable Move welche 1 sein muss und GetIsReference PlayerRef, und für die NPC Animation ist es GetItemCount ZRingDeath == 1)
Ich möchte das Per Knopfdruck der Spieler eine Animation einnimmt und der NPC der sich in seinem Fadenkreuz befindet (Was via GetCrosshairRef passiert, da GetSelf in einem Questscript nicht benutzt werden kann)
Mehr ist das eigentlich nicht. Achja und wenn AnimDelay == 0 ist wird der NPC getötet und die variablen werden auf 0 gesetzt damit alles wieder von vorne beginnen kann.
Eigentlich denke ich mal ich hab alles drin was ich brauche.
Aber solltest du wissen wies geht schreib mal ein Beispiel Script auf. Bitte :)
Lg
 
Letze Frage, dann kriegst du dein Script: Willst du es unbedint im Cosshair lösen? Oder gehts auch mit Fern-Zauber?
 
  • Like
Reaktionen: robinH
Nein es muss Crosshair sein, da er direkt vor dem Player stehen soll (es soll eine zusammenhängende Animation sein ;)
 
Zu aller erst erstellst du 1 Global. Diese Gobal ist für den start der Animation nötig, ich nenne sie STAnimStart.

Der eigentliche Script, der auf die Quest kommt:
Code:
scn Scriptname

short STKey
short button
ref STNPCRef

Begin GameMode
if (STKey == 0)
	set STKey to 1
	set fquestdelaytime to 0.1
	messagebox "Wähle eine Taste aus. Wähle eine freie Taste auf deiner Tastatur!"
	return
Elseif (STKey == 1) && (button == 0)
	Set Button to GetKeyPress 0
	If Button != 65535
		MessageBoxEX "Gewählter Button ist %k", Button
	Endif
Endif

If (button > 0)
	If (OnKeyDown button) && (GetCrosshairref > 0)
		set STNPCRef to GetCrosshairref
		set STAnimStart to 1
		STNPCRef.pickidle
		player.pickidle
	Endif
Endif
End

Als Condition für die Animation muss gelten STStartAnim == 1.

Der Script ist dafür, dass der NPC und der Spieler die gleiche Animation abspielen, und es gibt keinen Delay. Außerdem stirbt der NPC nicht, weil ich nicht weiß, wann. Ich wusste nämlich nicht, ob das gewollt war und andererseits ich gerade auf dem Schlauch stehe und schon lange genug für diesen Script gebraucht habe. :lol:

Gildur

****** OBSE :lol:
 
Zuletzt bearbeitet:
  • Like
Reaktionen: robinH und SirTroy
Hallo Liebe com ^^ ich habe folgendes problem, ich möchte für meine festung die geheimtüren verwenden. Die , die sich mit dem beweglichen pfeiler aktivieren lassen, aber mit den vorhandenen pfeiler funzt das nicht.Deswegen brauche ich ein neues script . Aber keine ahnung wie sowas aussehen muss!

Wenn ich dazu kein neues script brauche erlöst mich bitte von einer unwissenheit :lol:
 
Wenn die einfach so aufgehen sollen, wie die normalen, dann musst du nur beides platzieren, einen Doppelklick auf die Tür machen und einen Haken bei "Persistance Reference" setzen und dann einen Doppelklick auf die Pfeiler machen. Dort stellst du dann die Tür als Parent (Reiter "Enable Parent") ein. Dazu am besten auf "Select Reference in Render Window" und dann mit dem Fadenkreuz einen Doppelklick auf die Tür, fertig.
 
  • Like
Reaktionen: Munerigerulus
ja das habe ich schon vorher getan aber das geht iwie nicht , habe die tür und den hebel aus der activator liste vllt is das falsch ? ich finde die tür sonst nirgens
 
nenn mir mal die ID deines Hebels (nicht die Editor-ID die du selbst eingegeben hast, sondern die, die im Objekt Window steht)
evtl. hast du einen Hebel genommen, der mit einem Script versehen ist, das relevant für eine Quest ist.
 
OK, also das ist ein Hebel, der irgendwas im Schloss von Anvil bewirkt. Also kann das mit dem Parent nicht gehen. Am besten du suchst dir nen andern Hebel, ich hab KA wie das Script heissen müsste.
 
  • Like
Reaktionen: Munerigerulus
Den Hebel den du benutzt öffnet nur die Geheimtür im Schloss von Anvil, in seinem Skript ist die dortige Geheimtür eingetragen. Ingesammt gibt es vier solcher Hebel und auch nur vier solcher Geheimtüren mit einem jeweiligen Skript auf den Hebeln.

Du müsstest also eine Kopie des Skriptes (des CastleSecretLever01) erstellen und musst die entsprechende Referenz mit deiner Austauschen.
Ich hatte dieses Problem auch, aber nachdem man sich einmal die Skripte und die anderen Schalter ansieht versteht man es.
Wieso sonst gäbe es,
CastleSecretLever01
CastleSecretLever02
CastleSecretLever03
CastleSecretLever04, weil alle leicht unterschiedliche Skripte für die jeweiligen Geheimgänge haben.
Ich hoffe ich konnte dir damit helfen. :)

Mfg Master of Worlds
 
  • Like
Reaktionen: Munerigerulus