Construction Set Skriptthread zum Construction Set

Ersetzte den Gamemode-Block durch einen ScriptEffectUptdate-Block und sorge dafür, dass der Zauber lang genug wirkt.


Edit:
200 ist etwas übertrieben und könnte zu Problemen führen wenn du ihn innerhalb der Wirkungsdauer nochmal triffst. 5 Sekunden sollten da locker reichen. Auf keinen Fall solltest du die Dauer auf 0 setzten. Alles darüber ist experimentiersache.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Wavebreaker02
Ich soll also bei Duration beispielsweise 200 einsetzen?
Ich probiere es mal aus.

EDIT:

Hat funktioniert!
Damit hat sich dann auch meine nächste Frage erübrigt. ;)
Danke! :)
 
Zuletzt bearbeitet:
...Und ich war so intelligent mein SKript zu zerschießen, naja, ich musste halt ein paar messageBoxen verschachteln.
Das Problem ist, wenn ich für jede Waffe einen Button mache wird das ganzr ziemlich unübersichtlich, also wollte ich vorher eine Material-Abfrage machen, danach dann die Waffen-Abfrage. Das Problem, klick ich z.B. auf Eisen-Dolch, verschwindet die MessageBox und die gleiche erscheint wieder und immerso weiter, naja, schaut mal selbst, hoffe ihr findet den Fehler:

Code:
scn NRSmithScript

short SmithSkill
short IronCount
short Material
short Button
short buttonPressed

begin OnActivate 
set SmithSkill to player.GetActorValue Armorer
set IronCount to player.GetItemCount NRIronIngredient
	if IsActionRef player == 1 && SmithSkill >=25
		messageBox "Mit welchem Material möchtest du schmieden?",  "Eisen"		
		set buttonPressed to 1
		set Material to -1
	elseif IsActionRef player == 1 && SmithSkill < 25
		messageBox "Du solltest das Schmieden noch ein bisschen üben."
	endif
end

begin GameMode
	if buttonPressed == 1
		set Material to GetButtonPressed
		if Material > -1
			if Material == 0			
				messageBox "Welche Eisenwaffe möchtest du schmieden", "Eisendolch"					
				set Button to GetButtonPressed
				if Button == 0 && IronCount >= 1
					player.additem WeapIronDagger 1
					player.removeitem NRIronIngredient 1
					PlaySound UIArmorWeaponRepair
					set buttonPressed to 0
				elseif Button == 0 && IronCount < 1
					messageBox "Du hast nicht das nötige Material."
					set buttonPressed to 0					
				endif
			endif
		endif
	endif
end
 
GetButtonPressed brauch hin und wieder ein paar Frames bis es den Wert ausgiebt.
Die Abrage nach Button darf also nicht direkt nach der MessageBox kommen, sondern muss so gesetzt werden, dass es im nächsten Frame ausgelesen wird.
 
Da es hier gerade so schön voran geht stelle ich mal meine nächste Frage. ;)
Ich möchte meinem Begleiter per Zauber "befehlen", dem vom Zauber getroffenen Ziel zu folgen.

Ich habe schon einige Sachen ausprobiert, doch leider hat keine funktioniert. :?

MfG Wave
 
GetButtonPressed brauch hin und wieder ein paar Frames bis es den Wert ausgiebt.
Die Abrage nach Button darf also nicht direkt nach der MessageBox kommen, sondern muss so gesetzt werden, dass es im nächsten Frame ausgelesen wird.

Ich kann dir leider nicht ganz folgen, muss der GetButtonPressed-Befehl woanders hin? ... oder das If Button == 0.
Ich hab über beides schon etwas nchagedacht und man müsste ja eine kleine Pause zwischen die entsprechenden Schritte tun, aber wie?, ich hab keinen Schimmer.
 
Ich kann dir leider nicht ganz folgen, muss der GetButtonPressed-Befehl woanders hin? ... oder das If Button == 0.
Ich hab über beides schon etwas nchagedacht und man müsste ja eine kleine Pause zwischen die entsprechenden Schritte tun, aber wie?, ich hab keinen Schimmer.

Füg am Anfang des OnActivate-Blocks noch folgende Zeile hinzu:
Code:
set Button to -2

und im Gamemode-Block ersetzt du den If Material==0-Block mit folgendem:
Code:
if Material == 0
	set Button to GetButtonPressed
	if Button == -2
		messageBox "Welche Eisenwaffe möchtest du schmieden", "Eisendolch"
		set Button to GetButtonPressed
	elseif Button == 0 && IronCount >= 1
		player.additem WeapIronDagger 1
		player.removeitem NRIronIngredient 1
		PlaySound UIArmorWeaponRepair
		set buttonPressed to 0
	elseif Button == 0 && IronCount < 1
		messageBox "Du hast nicht das nötige Material."
		set buttonPressed to 0					
	endif
endif

Dadurch wird die MessageBox nichtmehr angezeigt, wenn GetButtonPressed einmal noch keinen Wert(==-1) ausgegeben hat, sondern es wird einfach im nächsten Frame nochmal überprüft.
 
ich möchte nur einmal an mein problem erinnern, da es denke ich nicht sehr schwer zu lösen ist (für einen erfahrenen modder)
 
Ich gleichfalls, tut mir leid, will nicht nerven, aber ich habe es mit meinen bescheidenen Möglichkeiten nicht hinbekommen, zur erinnerung, ich möchte ein Skript, das die magischen Effekte nur enabled, wenn ein Gegner in de Nähe ist, wie im Herr der Ringe!
 
Warum sachste denn nichts, elvi?^^

Ist doch ganz einfach...hoffe ich :D:

Code:
scn elveonsmagicshaderscript

Begin Gamemode

if IsinCombat == 1
waffe.pms deinshader
elseif
waffe.sms deinshader
endif
end
 
So einfach ist das nicht.
Er will ja nicht, dass der Effekt im Kampf aktiviert wird, sondern wenn sich ein Gegner in einem bestimmen Radius zu ihm befindet.
 
Nein, ledier nicht.

Mit GetDistance fragst du die Distance zwischen 2 Referenzen ab. Allerdings müsste der Feind schon eine Referenz besitzen oder man selber müsste in einen Script eine Referenz zuweisen... nud das geht leider nicht.

evt. könntest du eine Triggerbox erstellen, die sich um und mit dem Spieler mitbewegt. Sobald jemand die Triggerbox aktiviert, wird dem eine Referenz hinzugewiesen. Das wäre jetzt eine (oder eventuell die einzige) Lösung ohne OBSE.

MfG Gildur
 
Das mit dem Trigger hört sich aber realistisch an, aber wie lasse ich den Trigger dem Spieler folgen? Vielleicht als faik Körperteil oder so?
 
Ich denke, es gäbe 2 Varianten:

die wahrscheinlich nicht so komplizierte Variante (wobei ich nicht weiß, ob das so klappt):
Man legt eine Triggerbox auf das Schwert, die nur dann "funktioniert", wenn der Spieler die Waffe ausgerüstet hat.

Die etwas kompliziertere Möglichkeit, und wahrscheinlich auch performancelastigere:
Man setzt im CS eine große Collission aus mehreren einzelnen zusammen, so, wie man es haben will. Dann werden die Collission mit dem Spieler per Script mitbewegt. Das alles läuft über einen GameMode, der jede (oder jede zweite) Sekunde die Position des Spielers anfragt (GetPos), und dann alle Collissions durch SetPos-Befehle hinbewegt.

MfG Gildur
 
Ersteres wird nicht funktionieren, da ich das bei allen Waffen machen möchte, die zweite interesiert mich, wie funktioniert das? Ich kann das leider nicht:oops:
 
Die Zweitere ist eigentlich relativ blöd. Der Script geht über etwas mehr als ein paar Zeilen und ich müsste STARK nachdenken :lol:

Hmm.... wie wäre es denn, wenn man beim Ausrüsten eines der Schwerter einfach die Trigger-Box ausrüstet? Also als Rüstungsteil auf ein Körperteil legen, was keiner benutzt (per Script versteht sich).

Wenn dir das auch nicht gefällt, kann ich dir den Script gerne liefern, wenn du willst.
Aber das dauert ein kleines bisschen.

MfG Gildur
 
Ein Skriptlieferant! :lol:

Ne was ist das schön.
Ich weiß ja nicht, aber meine Frage hat ja auch in entfernter Weise etwas mit dem Referenz-Problem zu tun, bloß, dass nicht die Referenz das Problem ist, sondern mit dieser etwas anzufangen. :?

Ich möchte meinem Begleiter per Zauber "befehlen", dem vom Zauber getroffenen Ziel zu folgen. Die Referenz für das Ziel ist ja kein Problem (GetSelf, u.s.w.), aber wie zum Teufel sag ich denn nun meinen Begleitern, dass sie dieser Referenz folgen sollen?
Soweit ich weiß gibt es nämlich kein "Follow"-Befehl ...
 
@ Gildur, mir gefällt das! Aber wie ist das umsetzbar? Man rüstet immer einen Trigger aus, wenn man das Schwert ausrüstet...