Construction Set Skriptthread zum Construction Set

Also irgendwie komme ich da nicht hinter. In meinem momentanen Script erscheinen, wie gewollt, 2 Kopien des Anwenders.
Ich verstehe aber nicht wie ich die beiden Kopien verschwinden lassen kann bzw. wie ich ihnen eine Referenz zuweisen kann :(

Mein Script sie wie folgt aus:

Code:
scn aaDoppelgaengerScript

ref MySelf

Begin ScriptEffectStart
	set MySelf to GetSelf
	MySelf.CreateFullActorCopy
	MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
End
 
Also irgendwie komme ich da nicht hinter. In meinem momentanen Script erscheinen, wie gewollt, 2 Kopien des Anwenders.
Ich verstehe aber nicht wie ich die beiden Kopien verschwinden lassen kann bzw. wie ich ihnen eine Referenz zuweisen kann :(

Mein Script sie wie folgt aus:

Code:
scn aaDoppelgaengerScript

ref MySelf

Begin ScriptEffectStart
	set MySelf to GetSelf
	MySelf.CreateFullActorCopy
	MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
End

So kannst deinen Kopien eine Referenz geben:

Code:
scn aaDoppelgaengerScript

ref MySelf
ref clon1
ref clon2

Begin ScriptEffectStart
	set MySelf to GetSelf
	set clon1 to MySelf.CreateFullActorCopy
	set clon2 to MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
End

Deine erste Kopie hat dann die Referenz "clon1", und deine zweite Kopie hat die Referenz "clon2".;)
 
  • Like
Reaktionen: Calcho
Code:
scn aaDoppelgaengerScript

ref MySelf

Begin ScriptEffectStart
	set MySelf to GetSelf
	MySelf.CreateFullActorCopy
	MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
End
Also:
du musst im ScriptEffectFinish Block, die Erschienen kopien wieder löschen, mit DeleteFullActorCopy
So sollte das aussehen:
Code:
scn aaDoppelgaengerScript

ref MySelf

Begin ScriptEffectStart
	set MySelf to GetSelf
	MySelf.CreateFullActorCopy
	MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
MySelf.DeleteFullActorCopy
End
 
  • Like
Reaktionen: Calcho
Nicht ganz.

Code:
scn aaDoppelgaengerScript

ref MySelf
ref copy1
ref copy2

Begin ScriptEffectStart
	set MySelf to GetSelf
	set clon1 to MySelf.CreateFullActorCopy
	set clon2 to MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
copy1.DeleteFullActorCopy
copy2.DeleteFullActorCopy
End
 
  • Like
Reaktionen: Calcho
Mach noch das drauß, dann haut das hin;)

Nicht ganz.

Code:
scn aaDoppelgaengerScript

ref MySelf
ref copy1
ref copy2

Begin ScriptEffectStart
	set MySelf to GetSelf
	set [COLOR="red"]copy1[/COLOR] to MySelf.CreateFullActorCopy
	set [COLOR="Red"]copy2[/COLOR] to MySelf.CreateFullActorCopy
End

Begin ScriptEffectFinish
copy1.DeleteFullActorCopy
copy2.DeleteFullActorCopy
End
 
  • Like
Reaktionen: Calcho
Es funktioniert nun alles wie es soll. Ich möchte jetzt allerdings die Lebenspunkte von jeder Kopie halbieren.
Ich habe keine Ahnung wie ich die Abgefragten Health Werte halbieren kann.

Ich bin bisher soweit. Muss ich den abgefragten Werten neue Referenzen zuweisen?

Code:
Begin ScriptEffectStart
	set MySelf to GetSelf
	set copy1 to MySelf.CreateFullActorCopy
	set copy2 to MySelf.CreateFullActorCopy
	copy1.GetBaseActorValue Health 
	copy2.GetBaseActorValue Health 
End
 
Code:
scn aaDoppelgaengerScript

ref MySelf
ref copy1
ref copy2
short avhealth

Begin ScriptEffectStart
	set MySelf to GetSelf
	set avhealth to myself.getbaseactorvalue health * 0.5
	set copy1 to MySelf.CreateFullActorCopy
	set copy2 to MySelf.CreateFullActorCopy
	copy1.setav health avhealth
	copy2.setav health avhealth
End

Begin ScriptEffectFinish
copy1.DeleteFullActorCopy
copy2.DeleteFullActorCopy
End
Ach ja: Nicht, dass ich drauf scharf wäre, aber ein Klick auf den "Danke"-button unter beiträgen, die dir geholfen haben, macht es leichter, zu helfen. ;)
 
  • Like
Reaktionen: Calcho
So, jetzt habe ich auch mal eine Frage.
Gibt es auch eine Abkürzung für "StopMagicShaderVisuals" ?
Bei "PlayMagicShaderVisuals" ist die Abkürzung ja "pms".
 
abend hier^^
ich hätte da auch mal wieder ein problem.
Ich hab mir von die Mod Wounds Healed gezogen und wollte auf Basis dessen Scripts ein eigenes PI erstellen zur Regeneration der Lebenspunkte.
Bis zu einem gewissen Punkt wird mein verändertes Script auch ausgeführt, aber danach scheint es einfach aufzuhören...

so sieht das script im moment aus:
Code:
scn tbHealing

float fquestdelaytime
float percentage
float healingrate
float restorerate
float ratemodifier
float amounthealed
float currenthealth
float health
float endurance
float fatigue
float basefatigue
short healthrestored
short totalhealth
short once

Begin GameMode

if once == 0
	set once to 1
	set fquestdelaytime to 1
	Message "tbHealing initialisiert"
endif

set totalhealth to player.GetBaseActorValue health
set currenthealth to player.GetActorValue health
set health to totalhealth/(currenthealth*8)
set endurance to player.GetActorValue endurance
set endurance to endurance/100
set basefatigue to player.GetBaseActorValue fatigue
set fatigue to player.GetActorValue fatigue
set fatigue to fatigue/basefatigue
Message "Grundwerte initialisiert"

if currenthealth < totalhealth
	Message "Spieler ist verletzt"
	set percentage to currenthealth/totalhealth
	
	[b]if percentage < 0.25 
		set healingrate to 0.5
	elseif percentage >= 0.25 && < 0.5
		set healingrate to 0.25
	elseif percentage >= 0.5 && < 0.75
		set healingrate to 0.125
	elseif percentage >= 0.75 && < 1
		set healingrate to 0.0625
	endif[/b]
	
	Message "Regenerationsrate ermittelt"
	
	if player.IsInCombat == 1
		set ratemodifier to 0.5
		Message "ratemodifier to 0.5"
	elseif player.IsRunning == 1
		set ratemodifier to 0.75
		Message "ratemodifier to 0.75"
	elseif player.IsInCombat == 0
		set ratemodifier to 1
		Message "ratemodifier to 1"
	elseif player.IsSneaking == 1
		set ratemodifier to 1.25
		Message "ratemodifier to 1.25"
	elseif player.IsRidingHorse == 1
		set ratemodifier to 1.5
		Message "ratemodifier to 1.5"
	elseif player.IsMovingBackward == 0 && player.IsMovingForward == 0 && player.IsMovingLeft == 0 && player.IsMovingRight == 0
		set ratemodifier to 1.75
		Message "ratemodifier to 1.75"
	elseif player.GetSitting == 3
		set ratemodifier to 2
		Message "ratemodifier to 2"
	endif
	
	Message "Modifier ermittelt"
	
	set restorerate to totalhealth*healingrate*ratemodifier*health*endurance*fatigue
	set amounthealed to amounthealed + restorerate
	
	if amounthealed >= 1
		set healthrestored to Floor amounthealed
		set amounthealed to amounthealed - healthrestored
		player.ModActorValue health healthrestored
		Message "Leben regeneriert"
	endif
	
endif

end

Die 'message's habe ich eingefügt damit ich ingame sehen kann bis wohin es funktionert. Hinter dem fett markiertem if-block scheint das script nicht mehr weiterzulaufen. Soll heißen die Message "Spieler ist verletzt" erscheint noch, aber danach ist funkstille.
Hab jetzt schon ein paar sachen versucht aber irgendwie bekomm ichs nicht zum laufen. Weiß jemand evtl wo das Problem liegen könnte?

danke schonmal im vorraus,

takbir
 
mhh mal probieren.... aber müsste das CS dann nicht eigtl meckern?
wenns daran liegt beiß ich mir glaub ich innen ****^^

Edit:

oh man was soll man dazu sagen^^
echt jeden ****** hab ich ausprobiert und dann überseh ich sowas dämliches...
ich bins halt gewohnt, dass das CS bei jeder kleinigkeit meckert, mit der es nichts anfangen kann, aber da hats mich doch einfach angeschwiegen xD
*sich selbst in den ***** beiß*

besten dank für die schnelle hilfe, t-rip
 
Zuletzt bearbeitet:
Ich brauche ein Script für einen Quest. Das Script soll überprüfen ob der Player eine bestimmte Anzahl eines Items im Inventar hat. Wenn er die Items im Inventar hat soll soll die nächste Queststage ausgelöst werden.

Ich weis nur nicht wie so was geht. :huh: Ich bin in Sachen scripten noch Anfängerin. Es wäre super wenn mir jemand helfen könnte.

Das ist alles was ich zusammen bekommen habe ;):

Code:
scn Scriptname

begin Gamemode

if ????
setStage MeinQuest to 10
endif

end
 
Ich wollte mal den Ring programmieren, und sein Verlangen einen neuen Besitzer zu finden...könnt ihr mir mal sagen, ob das so geht? Und wisst ihr zufällig, wie ich es einrichten kann, das der Ring gefunden werden will?




scn 00theoneringscript

ref me
long timer
short doonce
short aclevel
short ringtest
short doonce2
short ringcount
ref myself
ref owner

begin onadd
message "Der Ring wurde gefunden" 3
set me to getcontainer
me.equipitem 00thering
set timer to 600
set ringtest to 1
me.setfactionrank 00ringowner 0
set doonce to 1
end

begin gamemode
if me.getitemcount 00thering > 1 && ringtest == 1 && me.getdead == 0
if timer > 0
set timer to (timer - getsecondspassed)
elseif (timer == 0) && (doonce == 1)
set aclevel to (me.getlevel *2)
me.setfactionrank 00ringfaction 1
me.setactorfullname "Hexenkönig"
me.setlevel aclevel
me.setghost 1
me.pms ghosteffect
set doonce to 2
elseif (timer == 0) && (doonce == 2)
set ringcount to (me.getitemcount 00thering)
me.drop 00thering ringcount
me.moveto 00ringmarker
message "Der Ring wurde verloren" 3
endif
elseif (me.getitemcount 00thering == 0) && ringtest == 1 && me.getdead == 0
me.setfactionrank 00ringowner -1
me.addscriptpackage 00findring
me.setfactionrank 00ringfaction 0
me.setactorfullname "Ringgeist"
set aclevel to ((aclevel /2) *1.5)
me.setlevel aclevel
endif
end


begin ondrop Nur vorläufig, damit er irgend einen neuen Besitzer kriegt;
clearownership
if isininterior == 1
set owner to getcellowner
disable myself
owner. additem 00thering 1
endif
end
 
Hallo

Ich hätte da mal eine Frage wodurch kommt es das ich wenn ich einem Skript etwas hinzufüge, ich beim Speichern im Cs eine Syntaxfehlermeldung bekomme die mit der Änderung nicht das geringste zu tun hat? Das Problem tritt auch auf wenn ich nur einen Buchstaben lösche und wieder schreibe damit das Skript als geändert angesehen wird also gar nichts verändert wurde.

Gruß Thayja
 
Am besten schreibst du das Script mal hier rein.;)

Ansonsten kopiere das Script mal in einen Texteditor und lad die esp neu, und kopier das Script wieder dahin, wo es hin soll.
Manchmal bewirkt das wirklich Wunder:-D
 
Guten Abend,
da ich neu bin beim Skripten, habe ich mal eine Frage.
Folgendes Skript müsste doch eigentlich tun, oer nicht?
Code:
Scn aaassassinJamesScript

Begin GameMode

If ( GetDead == 1 ) && ( GetStage aaassassinguild1 < 10 )
        SetStage aaassassinguild1 10
        aaassassinleader.AddTopic aaaJamesisdeadwhatisnext
    EndIf
Else
Return
EndIf

End
Das Problem ist, dass das Topic nicht bei dem NPC mit der Ref "aaassassinleader" hinzugeüft wird. Der QuestStage wird erhöht und eigentlich sollte das Topic hinzugefügt werden. Aber es passiert nicht.
Weiß jemand warum?
Auch über die Konsole geht es nicht? Das Topci erscheint einfach nicht...
 
Zuletzt bearbeitet von einem Moderator: