Construction Set Skriptthread zum Construction Set

Mit enable und disable würden die Tore höchstens erscheinen und verschwinden, am besten schau dir einfach mal das Skript eines Obliviontores an, welches sich während der Oblivion-Krise öffnet. ;)

Mfg Master of Worlds

Die Tore sollen ja verschwinden. Disable hat da überhaupt keine Auswirkung. Habe es schon mit dem Befehl nach der Oblivionkriese versucht, hat aber auch nicht funktioniert :cry:
 
Hmm Ja aber dann hab ich doch nicht so einen Steh auf effekt oder? Die erscheinen dann einfach...., Ich hätte gern so einen Steh auf effekt erstellt, aber selbst mit dem Script von den Original zombies funzts nit.... Gibts nicht irgendwie nen Skript das die Lebensenergie wieder anhöht also ausser resurrect?
Öhm kann das sein das ein Avticator dem eine Referenz zugeteilt wurde bzw, der in Gebrauch ist also zb ein Schalter um ein Tor zu öffnen, nicht mit Initially disabled deaktiviert werden kann?

Mfg Fluffy

PS: Wie wird im CS die Entfernung eingeteilt? Also 100 = in meter?
Lieber Fluffy,

Nach deinem Beitrag bin ich eher ungewillt, der noch weiter zu helfen. Du hast meinen ersten Post zu den Effekten gekonnt igonriert, und jetzt probierst du gar nicht meinen Script aus, weil du etwas annimmst, dass so gar nicht stimmt. Resurrect 1 belebt einen NPC mit seinen vollen Lebenspunkten und lässt den toten NPC dabei eine Aufsteh-animation ausführen. Genaue Erklärung meines Scriptes: Sobald der Zombie geladen wird (in 3D gerendert) wird er getötet. Sobald der Spieler dann in die Nähe kommt (70 Units = 1 Meter) wird er wiederbelebt.

Und jetzt zu Intialy Disabled: Du hast wahrscheinlich vergessen den Haken zu setzen. Ich habe den Script selbst ausprobiert, inklusive Initialy Disabled, und es hat einwandfrei funktioniert.

Bitte probiere das nächste mal einen Script aus, bevor du dich beschwerrst. Oder erkundige dich wenigstens über die Funktion des Befehls. Halbwissen ist...

Gildur

Ps.: Wenn dir etwas weiter geholfen hat, dann gibt es den nützlichen Danke-button unter dem Post, der den Helfenden freut.
 
  • Like
Reaktionen: robinH und Fluffy
Hallo leute,
ich suche eine Möglichkeit den Player komplett Unsichtbar zu machen, am besten ohne den Zauber. Gibts da ne Möglichkeit?
(Falls ihr jetz Denkt Disable ihn einfach... Das wird nicht funktionieren)
Mfg

Hab gerade das Quest der Diebesgilde wo man den Stein im Ahnenmotten Tempel holen muss. Der Stein wird von einem Priester bewacht, der auch komplett unsichtbar ist. Schau Dir den doch einfach mal an.

Außer einer Unsichtbar-Eigenschaft fällt mir jetzt auch nichts ein.
 
Sonst zeig einfach mal dein Script

Hier ist das Script disable und enable (fett markiert)

Code:
scn OblivionGateRandomScript

float timer
short count
ref mySpawnMarker
short rand				; this can be removed eventually. Put it in just to be able to see the numbers that were being rolled.
short destroyed		; set to 1 after destroyed script runs
short ignore

begin OnLoad
	disableLinkedPathPoints
	; reset count
	if count > 0
		set timer to 60
	endif
	set count to 0

	; if MQ is over, destroy me if I'm open
	if getdisabled == 0 && getdestroyed == 0 && getstage MQ16 >= 100
		ForceCloseOblivionGate 
		enablelinkedpathpoints
	endif

     [B]; solange die Quest nicht abgeschlossen ist, werden die Tore geschlossen
     if getdisabled == 0 && getdestroyed == 0 && getstage MWOBL < 100
          disable
       else
         enable
     endif[/B]

	; if we're not at max gates, we might open a new one here
     ; dies geht nur, wenn die Morrowind-Oblivion Überleitung abgeschlossen ist
     if MWOBL == 100
	if MQ00.openGates < MQ00.maxOpenGates && ( getdisabled == 1 || ( MQ00.allowGatesToReopen == 1 && destroyed == 1 ) )
		set rand to GetRandomPercent 
		if rand <= MQ00.randomGateChance
			set mySpawnMarker to getParentRef
			mySpawnMarker.enable
			enablelinkedpathpoints
			set MQ00.openGates to MQ00.openGates + 1
			if destroyed == 1
				setDestroyed 0
				set destroyed to 0
			endif
		endif
	endif
     endif
end

begin OnActivate
	if isActionRef player == 1
		; we aren't "near" any gate anymore (we're in Oblivion!)
		set MQ00.nearOblivionGate to 0
		ReleaseWeatherOverride
	endif
	Activate
	set ignore to 1
	return
end

begin gamemode
	if ignore == 1
		set ignore to 0
		return
	endif

	; no need to process further if destroyed
	if destroyed == 1
		return
	endif
		
	if getdestroyed == 1 && destroyed == 0
		set destroyed to 1
		set MQ00.destroyedGates to MQ00.destroyedGates + 1
	endif

	; start churning out creatures when I'm turned on
	if GetDisabled == 0 && GetDestroyed == 0
		if IsAnimPlaying == 0
			playgroup specialidle 1
		endif

		; make sure weather is eeeevil gate weather
		if getiscurrentweather OblivionStormTamriel == 0
			if getdistance player < 4000
				if MQ00.nearOblivionGate == 0 && getdistance player < 1000
					; this should only happen when I come out an Oblivion gate into Tamriel -- I'm suddenly close but the "near" variable hasn't been set
					forceweather OblivionStormTamriel 1
				else
					setweather OblivionStormTamriel 1
				endif
				set MQ00.nearOblivionGate to GetSelf
			endif
		else
			if getdistance player > 5000 && MQ00.nearOblivionGate == GetSelf
				set MQ00.nearOblivionGate to 0
				ReleaseWeatherOverride
			endif
		endif

		if timer > 0
			set timer to timer - getsecondspassed
		elseif count < MQ00.maxCreatureCount
			set count to count + 1
			playgroup forward 1
			mySpawnMarker.placeatme LL1DaedricBeast100
			set timer to 10
		endif
	endif
end

Und hier das Script, mit dem ich es am Anfang versucht habe:

Code:
scn OblivionGateRandomScript

float timer
short count
ref mySpawnMarker
short rand				; this can be removed eventually. Put it in just to be able to see the numbers that were being rolled.
short destroyed		; set to 1 after destroyed script runs
short ignore

begin OnLoad
	disableLinkedPathPoints
	; reset count
	if count > 0
		set timer to 60
	endif
	set count to 0

	; if MQ is over, destroy me if I'm open
	if getdisabled == 0 && getdestroyed == 0 && getstage MQ16 >= 100
		ForceCloseOblivionGate 
		enablelinkedpathpoints
	endif

 [B]    ; solange die Quest nicht abgeschlossen ist, werden die Tore geschlossen
     if getdisabled == 0 && getdestroyed == 0 && getstage MWOBL < 100
          ForceCloseOblivionGate
          enablelinkedpathpoints
     endif[/B]

	; if we're not at max gates, we might open a new one here
     ; dies geht nur, wenn die Morrowind-Oblivion Überleitung abgeschlossen ist
     if MWOBL == 100
	if MQ00.openGates < MQ00.maxOpenGates && ( getdisabled == 1 || ( MQ00.allowGatesToReopen == 1 && destroyed == 1 ) )
		set rand to GetRandomPercent 
		if rand <= MQ00.randomGateChance
			set mySpawnMarker to getParentRef
			mySpawnMarker.enable
			enablelinkedpathpoints
			set MQ00.openGates to MQ00.openGates + 1
			if destroyed == 1
				setDestroyed 0
				set destroyed to 0
			endif
		endif
	endif
     endif
end

begin OnActivate
	if isActionRef player == 1
		; we aren't "near" any gate anymore (we're in Oblivion!)
		set MQ00.nearOblivionGate to 0
		ReleaseWeatherOverride
	endif
	Activate
	set ignore to 1
	return
end

begin gamemode
	if ignore == 1
		set ignore to 0
		return
	endif

	; no need to process further if destroyed
	if destroyed == 1
		return
	endif
		
	if getdestroyed == 1 && destroyed == 0
		set destroyed to 1
		set MQ00.destroyedGates to MQ00.destroyedGates + 1
	endif

	; start churning out creatures when I'm turned on
	if GetDisabled == 0 && GetDestroyed == 0
		if IsAnimPlaying == 0
			playgroup specialidle 1
		endif

		; make sure weather is eeeevil gate weather
		if getiscurrentweather OblivionStormTamriel == 0
			if getdistance player < 4000
				if MQ00.nearOblivionGate == 0 && getdistance player < 1000
					; this should only happen when I come out an Oblivion gate into Tamriel -- I'm suddenly close but the "near" variable hasn't been set
					forceweather OblivionStormTamriel 1
				else
					setweather OblivionStormTamriel 1
				endif
				set MQ00.nearOblivionGate to GetSelf
			endif
		else
			if getdistance player > 5000 && MQ00.nearOblivionGate == GetSelf
				set MQ00.nearOblivionGate to 0
				ReleaseWeatherOverride
			endif
		endif

		if timer > 0
			set timer to timer - getsecondspassed
		elseif count < MQ00.maxCreatureCount
			set count to count + 1
			playgroup forward 1
			mySpawnMarker.placeatme LL1DaedricBeast100
			set timer to 10
		endif
	endif
end
 
Quest Skript

Hi,:)

Also kurze Beschreibung:

Du sprichst mit einem NPCn ( Quest beginn ). Der erzählt z.B es gibt ein geheimen Eingang ins..
z.B Schloss. Dann kommt ein Tagebucheintrag: "Ich sollte diesen geheimen Eingang finden". Nun geht man zu dem eingang hin (Also da ist keine Wegbeschreibung, man muss es selbst finden. Also kein rotes Zielkreuz auf der Karte) und wenn man durch die Tür geht soll eine weiterer Tagebucheintrag erscheinen und der soll sagen:"
Ich habe den geheimgang gefunden. Ich sollte mich ein bisschen umsehen"

Frage: Wie kann man einstellen das der Tagebucheintag reagiert wenn du an dem ersten Zielpunkt ankommst(Noch kein Questende
?

Frage2: Wie setzte ich das als Skrip?

Danke im Vorraus für eure Hilfe:D
 
Zuletzt bearbeitet:
Ich möchte in meinem Mod (ein land aus fliegenden Inseln), das bewirkt, dass Runterfallende Spieler wieder auf die Insel (oder die erste Insel) geportet werden, da man beim Fallen auf Wasser nicht stirbt.
 
@Chaos_of_Net:
Du nimmst eine Triggerzone und legst diesen Skript darauf:

Code:
 scn "dein Skriptname"

short triggered

Begin OnTriggerActor player  ; Sobald der Spieler mit der Triggerzone kollidiert

If (triggered == 0) 
           setstage "der Name deiner Quest" "Die Queststage, die erreicht werden soll"
           ;das ganze würde dann ungefähr so aussehen setstage Geiheimgang 20
           set triggered to 1 ; damit es nur einmal ausgeführt wird
Endif

End

und damit die Quest nicht vorher ausgelöst wird, müsstest du noch den einen kleinen Zusatz machen:

Code:
scn "dein Skriptname"

short triggered

Begin OnTriggerActor player  ; Sobald der Spieler mit der Triggerzone kollidiert

If (triggered == 0)
     if( getstage "der Name deiner Quest" " Die Stage die erreicht sein muss, damit die nächste Stage erreicht wird"
           setstage "der Name deiner Quest" "Die Queststage, die erreicht werden soll"
           ;das ganze würde dann ungefähr so aussehen setstage Geiheimgang 20
           set triggered to 1 ; damit es nur einmal ausgeführt wird
Endif

End


@Gartenzwerg:
Zuerst müsstest du Xmarker auf deine Inseln setzten.
Und meinen Skript auf Triggerzone legen.
Dein Skript müsste dann eig. so aussehen:

Code:
scn Fallscript(oder dein eigener Skriptname)

short triggered
Begin OnTriggerActor player  ; Sobald der Spieler mit der Triggerzone kollidiert

If (triggered == 0) 
		player.moveto " ersetzen durch ReferenceID der XMarker, die du gesetzt hast" ; hier kannst du die unterschiedlichen ReferenceIDs der XMarker nehmen, damit man jenachdem wo du runterfällst wieder auf die Insel kommst, von der du runtergefallen bist.
		set triggered to 0 ; da bin ich mir nicht so sicher, vielleicht kann man die auch weglassen.
		
Endif

End

Du musst den Xmarkern, vorher einen ReferenceID geben ;)
Hoffe, dass es funktioniert :)
mfg
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Gartenzwerg
Danke, aber mir wurde mittlerweile schon im Thread zum Mod-Projekt ein Vorschlag gemacht, aber wenn er nicht funktioniert, kommt dein Script zum Einsatz!
 
Ok das mit set triggered to 0 stimmt aber nein, lieber Patta93 ;), short triggered kann ich nicht weglassen.
Denn ich habe noch den Befehl " if( triggered == 0) " , der ohne das short nicht erkannt wird. :p
lg
 
gut, das auch noch weg. braucht man nämlich wirklich nicht.

edit: und muss es nicht Begin OnTrigger Player heissen?
 
Nagut, aber schaden kanns ja auch nicht :p
Bei mir funktionierte es ohne Probleme, da ich diesen Skript in einer abgewandelten Version selbst benutze. :)
 
Hm wie denn nun, Kann das weggelassen werden oder nicht. Heisst es on Trigger Player oder doch nicht?

Ihr habt mich jetzt total verwirrt. schreibt doch das Script mal so, wie es nun richtig geschrieben wird. So kann man ja nichts lernen.

So ein Script hat mir bisher auch immer gefehlt. Wäre schön wenn Ihr da für uns nicht so Scriptbegabten das noch mal in die richtige Form bringen könntet.
 
Hm wie denn nun, Kann das weggelassen werden oder nicht. Heisst es on Trigger Player oder doch nicht?
"Begin OnTrigger" wird ausgelöst, sobald ein Objekt mit der Triggerbox kollidiert. Also havokobjekte, NPC's und dem Spieler - Zauber lösen diesen Begin-Block nicht aus.
Begin OnTriggerActor wird hingegen ausschließlich von NPC's und dem Spieler ausgelöst.
Sofern du nun einen Actor als Parameter benutzt, spielt es keine Rolle, ob du "Begin OnTrigger player" oder "Begin OnTriggerActor player" benutzt. Möchtest du aber, dass die Triggerbox nur durch ein bestimmtes Objekt ausgelöst wird, geht nur "Begin OnTrigger objectREF".

So benutzt man zB. "Begin OnTriggerActor" bei Fallen, damit diese nicht durch zufällig mit der Triggerbox kollidierende Objekte ausgelöst werden.

Das hilft dir hoffentlich weiter.

@ Chaos_of_Net:
Kurzanleitung:
  1. WorldObjects->Activator->rechts in der Liste Rechtsklick->NEW
  2. in dem neuen Fenster eine eindeutige ID vergeben und merken, sodass du sie wieder findest.
  3. Linksklick auf den Knopf "Add NIF File" im ordner durch dungeons/misc/triggers klicken und eine von den beiden trigzone's mit doppelklick auswählen (man kann den Pfad nachträglich noch ändern).
  4. Rechts bei "Script: NONE" noch den Script auswählen und anschließend mit OK bestätigen.
  5. Im Object Window (standardmäßig links) die ID deiner erstellten Triggerzone suchen und in die Welt setzen.

Gildur
 
  • Like
Reaktionen: robinH
Hi Leute,

also ich komme nicht ganz mit dem Scripten klar, sogar mit normalerweise einfachen Scripts.

Also, wenn ich mit jemanden rede und er fertig mit dem reden ist, sollte ein Tagebucheintrag kommen.Und wenn ich dann in einen Bereich gehe kommt der nächste Tagebucheintrag und zwar das ich angekommen bin und dann sollte wieder ein neuer Tagebucheintrag kommen.Ich hoffe jemand weiß wie ich das meine :)
 
In das Resulscript beim Dialog einfach
Code:
setstage [Quest-ID] [Stage]
schreiben. Natürlich ohne [ ]. Hab ich dir doch schon per PN geschrieben :?