Construction Set Skriptthread zum Construction Set

Brauche nochmal Hilfe:

Ist es möglich, dass, wenn ein Script aktiviert wurde, bestimmte andes Scripts dann nicht mehr greifen müssen? Kann man das so einstellen?
 
Da gibt es mehrere Möglichkeiten. Wenn du ein Questskript "ausschalten" willst, reicht es, wenn du "stopQuest <Quest-ID>" benutzt. Bei einem Objektskript, kannst du das Objekt in eine andere Zelle bewegen oder einfach in diesem Skript eine Variable hochsetzen, sodass das Skript abgebrochen wird...
 
  • Like
Reaktionen: Korbi_789
Ok, verstanden. Geht das jetzt dann auch, wenn ich sage: Das Script wird aktiviert, Spieler bekommt dieses Gegenstände+Rang in der Gilde. Bei 2 anderen ist es das gleiche, nur mit anderen Rängen. Sobald eines der 3 aktiviert ist, werden die anderen beiden weggemacht. Wo füge ich das im Script ein?
 
Verstehe die Frage nicht richtig... :?
Gewöhnlich baut man einen Skriptbefehl da ein, wo man ihn haben will. Wenn ich das Skript nicht sehe, kann ich die schlecht eine Zeile oder einen Block sagen...
 
Wie sieht das Skript denn jetzt aus?
Btw: Vergiss nicht, "targetRef" eine Referenz zuzuweisen...

Code:
scn scriptname

ref targetref

begin scripteffectstart
<markerid#1>.moveto player
<markerid#2>.moveto targetref
end

begin scripteffectfinish

targetref.moveto <markerid#1>
player.moveto <markerid#2>

end
sry für späte antwort

übrigens,heißt das DAS script?
ich dachte immer DER?
 
Zuletzt bearbeitet:
"Das" ist korrekt.

Was in deinem Script noch nicht drin ist eine Zeile wie "set targetref to x".
So hat targetref überhaupt keinen Wert, kann dementsprechend auch nichts bewegen.

Für <markerid#1> hast du jeweils eine Reference-ID eingesetzt, nehme ich an?
 
Moin!

Ich versuche mich gerade daran, aus NPCs Statuen (mit Stein-Shader) zu machen, die angreifen wenn der Spieler näher kommt. Das gibt es auch schon im Originalspiel bei einer der Diebesgildenquests in der Ayleidenruine unter der IC.
Das funktioniert auch schon gut, es gibt allerdings noch ein paar Kleinigkeiten, die irgendwie verbesserungswürdig sind.

Hier erstmal das Script:

Code:
Short SetIdle
short doOnce

begin OnLoad
	[COLOR="Red"]equipitem[/COLOR] [COLOR="Red"]WEAPON-ID[/COLOR]
	setalert 1
	setghost 1
	pickidle
	setunconscious 1
	setdestroyed 1	
	pms effectstone
end


begin OnDeath
	setdestroyed 1
end

begin gamemode
		If GetDistance Player <= 1000
			[COLOR="Red"]NPCNAMEREF[/COLOR].SetGhost 0
			[COLOR="Red"]NPCNAMEREF[/COLOR].SetUnconscious 0
			[COLOR="Red"]NPCNAMEREF[/COLOR].SetDestroyed 0
			Set SetIdle to 0
		ElseIf SetIdle == 0
			PickIdle
			Set SetIdle to 1
		EndIf
End

Da ich davon relativ viele aufstellen möchte, habe ich dazu ein paar Fragen:

1.) Gibt es statt equipitem WEAPON-ID nicht eine Möglichkeit, das ohne die Weapon ID zu lösen? Dann könnte ich jede Statue anders bewaffnen und müsste nicht jedes mal ein neues Script schreiben.

2.) Das selbe gilt für NPCNAMEREF ... 1 Script das für alle Statuen funktioniert wäre perfekt.

3.) Wenn die einmal aktiviert wurden und ich sie dann mit einem Zauber beschieße, verschwindet der Shader für die Dauer des Zaubers. Kurz nach ihrem Tod verschwindet er ebenfalls kurz. Kann man das abstellen? ;)

4.) Wenn sie tot sind, verlieren sie Waffe und Schild, die dann auch keinen Shader mehr haben. Vermutlich lässt sich das aber nur beheben, indem man auf beides Shader legt oder sie per Script "OnDeath" entfernt, was wieder 1 Script pro Statue erfordert - richtig? ...

5.) Leider bewegen sie sich ab und zu ein bischen bzw. schwanken so hin und her ... und ich kann sie durch die Gegend schieben indem ich dagegen laufe! Wäre super wenn man beides abstellen könnte.
 
Nunja... mit OBSE könntest du die Referenz von Waffe und Schild bekommen ("getEquippedObject"). Aber zieht der NPC nicht automatisch die Waffe, wenn er in den Kampf eintritt? Die NPC-Referenz brauchst du in diesem Fall auch nicht da das Skript ja auf dem NPC liegt...
zu 5) Wie kann man die denn berühren, wo sie doch "erwachen", wenn man ihnen zu Nahe kommt...
zu 3) Wahrscheinlich nicht, wenn der Zauber einen eigenen Shader in sich birgt, der dann Steineffekt überschreibt...
 
OBSE? Hmm ... bin bisher immer ohne ausgekommen. ;)
Das mit dem "berühren" funktioniert nur, weil ich noch ein zweites Script für Statuen habe, die erst später über ein Script aktiviert werden ... hätte ich dazu schreiben sollen! :-D
Das mit dem Waffe ziehen will ich drin haben, damit der NPC schon als Statue mit gezogener Waffe da steht - sieht einfach besser aus.

Das Script in meinem letzten Post habe ich größtenteils aus dem Originalspiel übernommen, da heißt es "ElvenStatueScript".
Habe das ganze jetzt nochmal anders geschrieben, weil es Probleme mit dem Waffe ziehen gab ... manchmal funktionierte das und manchmal nicht.

Code:
short doOnce
float timer

begin OnDeath
	setdestroyed 1
end

begin gamemode

set timer to timer - GetSecondsPassed

	if doOnce == 0
		equipitem WEAPON-ID
		setalert 1
		set timer to 1
		set doOnce to 1
	endif

	if timer <= 0 && doOnce == 1
		setghost 1
		pickidle
		setunconscious 1
		setdestroyed 1	
		pms effectstone
		set doOnce to 2
	endif

		if GetDistance Player <= 1000
			SetGhost 0
			SetUnconscious 0
			SetDestroyed 0
		endif
end

Das Waffe ziehen funktioniert jetzt, blöderweise bewegen/schwanken sie immer noch!
 
Sind die in einer Pose solange sie sich nicht bewegen können? Wenn nicht, kannst du das mal probieren. Dann sollten sie sich eigentlich nicht mehr bewegen.
 
Ich habe ehrlich gesagt keine Ahnung, wie das geht. :roll:

Hier mal 2 Screens von dem Problem ... und ja, ich habe den Shader kopiert und eine andere Textur drauf geklebt ... so toll ist die aber auch nicht! :lol:


Man achte mal auf Schild, Schwert und Arm. Die Maus wurde nicht bewegt ...

Die Veränderung ist nicht gigantisch, aber sie bewegen sich halt permanent und das fällt schon auf, weil das ja so gar nicht zu einer Statue passt.
 
Du siehst keine Bilder? Bei mir sind sie da ... war die Seite mal down oder hat noch jemand das Problem? :huh:

Achso du meinst Pickidle ... das habe ich ja schon drin. Ich dachte, da hätte es vielleicht noch etwas gegeben. :)

Ich habe jetzt noch "toggleactorsai 0" eingefügt, das behebt das Problem! :win:

Jetzt habe ich bloß noch das Problem, dass NPCs im Spiel gerne mal an völlig anderen Orten platziert werden als im Editor ... wenn sie im Editor auf einem Podest stehen, stehen sie im Spiel fast unter Garantie daneben ... extrem nervig. Werde ich wohl doch Xmarker verwenden müssen.
 
Ich hab auch ein kleines Problem: Kann mir jemand sagen, wieso in folgendem Script die Queststage nicht auf 0 zurückgesetzt wird, aber der Scriptträger verschwindet und der Sound ertönt?
Code:
scn 00GegnerSCRIPT

Begin OnDeath
SetStage AAQuest 0
disable
Playsound AMBThunder
end
Vor dem Kampf wird die Queststage auf 10 gesetzt und soll nach dem Kampf, also sobald der Gegner (Scriptträger) tot ist, wieder auf 0 gesetzt werden. Das funktioniert aber nicht. Es liegt ziemlich sicher an diesem Script, denn weder das Erhöhen noch das Reduzieren der Queststufe zeigt Wirkung, wie die Konsole gezeigt hat. Die Queststage bleibt nach dem Kampf auf 10, während die anderen Befehle funktionieren. "Allow repeated stages" ist aktiv, daran liegt's auch nicht.

Sieht jemand das Problem? :huh:
 
Dann versuche es mal über ein Quest-Script:

SCN ...

Short DoOnce
Float fQuestDelayTime

Begin GameMode

Set fQuestDelayTime to 0.001

If DoOnce == 0

If <GegnerRef>.getDead == 1
SetStage AAQuest 0
<NPCRef>.disable
Playsound AMBThunder
Set DoOnce to 1
Endif
End

Das müsste eigentlich klappen.
mfg
Kahmul
 
Das werde ich mir gleich mal ansehen. Ich denke, das dauert etwas, denn ich habe verschiedene Gegner, und bei jedem werden andere Befehle bei dessen Tod ausgeführt. Aber eigentlich müsste sich das in einem Script vereinigen lassen, hoffe ich zumindest. Danke für den Vorschlag, ich versuch's mal. :)
 
Kann es vielleicht daran liegen, dass man die Stufe einer Quest gar nicht auf 0 setzen kann, dass diese Stufe quasi gar nicht existiert? Erstell mal die Stage 1 und setze die Quest in dem Skript auf diese Stufe, vielleicht geht es dann ja...