Construction Set Skriptthread zum Construction Set

Hallo
Ich brauche ein script für meine Waffe.
Und zwar soll die Waffe wenn Feinde in der nähe sind anfangen zu leuchten (am besten blau) und wenn alle Feinde besiegt sind, ( oder keine mehr in der nähe), dann soll es wieder aufhören zu leuchten.

Thy schonmal im vorraus.

mfg
Shadow-King
 
Ich hatte jetz doch ne Idee für ein Misc Item für meine Mod und das hat auch ein einfaches Script. Ich hab mich auch mal selbst dran versucht, aber jetz brauch ich doch nochma Hilfe.

Code:
scn ACpieceofedenScript

short HPplayer
short newHPplayer

begin OnEquip

set HPplayer to player.getActorValue Health
set newHPplayer to -(HPplayer/3+10)

if (newHPplayer > player.getActorValue Health)
	player.ModActorValue Health 1
else
	player.ModActorValue Health newHPplayer
endif

Player.additem ACthrowingkniveItem, 100
end

Das Script funzt ansich so wie ich es will. Der Gegenstand gibt dem Spieler ein bestimmtes Item, das kostet aber Leben. Ich möchte aber nicht das man dadurch sterben kann.
Deswegen die If Abfrage. Allerdings ist in der "newHPplayer" Variable immer ein negativer Wert und "player.getActorValue Health" ist immer positiv, was bedeutet, das ganze ergibt nie True.

Im Grunde will ich nur das Vorzeichen der "newHPplayer" Variable ins positive ändern. Wie müsste ich das machen? Hab schon selber probiert und nachgeschaut bin aber nicht fündig geworden.

EDIT: Ok hat sich erledigt. Habs hinbekommen
 
Zuletzt bearbeitet:
Hallo
Ich brauche ein script für meine Waffe.
Und zwar soll die Waffe wenn Feinde in der nähe sind anfangen zu leuchten (am besten blau) und wenn alle Feinde besiegt sind, ( oder keine mehr in der nähe), dann soll es wieder aufhören zu leuchten.

Thy schonmal im vorraus.

mfg
Shadow-King

Ich hab dein Script doch schon in nem anderen thread erläutert! Du musst ein neues Item machen was leuchtet dafür! ansonsten geht das nicht!
 
Brauch ich für die leuchtende Waffe den kein script?
Ich dachte ich muss das blaue leuchten auf eine Waffe scripten, und dann ein script erstellen, welche halt die waffen austauscht.

mfg
Shadow-King
 
Nein, die Waffe muss einen Shader haben bzw so was in der Art. Wenn du aber auf eine Waffe im CS per Script ein Shader legst, ist im Spiel dann der ganze Körper betroffen. Deswegen muss das in das Mesh integriert sein. Du kennst vielleicht dieses blaue Runenportal. Im CS sieht man nur den Steinrahmen. Erst wenn man Havok einschaltet, kommt die blaue Partikelwolke. Bei dem Schwert läuft das zwar nicht ganz so, aber es geht in die Richtung.
 
mhh also du könntest auch einfach n script auf die waffe legen, welches die momentane (und wenn du willst die umliegenden) zellen auf monster/feindliche npc's überprüft und dann einen magieshader auf die waffe legt. Das ganze würde jedoch OBSE benötigen. Kenn mich in dem bereich das scriptings nicht ganz so aus aber das müsste dann ungefähr so aussehen:

Code:
scn leuchtendewaffe

short evil
ref npc
ref creature

begin gamemode

set creature to apple
set creature to GetFirstRef 36 1
set evil to 0
label 1
if creature
  set evil to 1
  set creature to apple
  set creature to GetNextRef
  goto 1
endif

set npc to apple
set npc to GetFirstRef 35 1
label 2
if npc
  if npc.IsActorEvil == 1
    set evil to 1
  endif
  set npc to apple
  set npc to GetNextRef
  goto 2
endif

if evil == 1
  IDderWaffe.playMagicEffectVisuals 'effect' ; effect durch den Code des gewünschten [URL="http://cs.elderscrolls.com/constwiki/index.php/Magic_Effects_List"]Magic Effect[/URL] austauschen
  endif
elseif evil == 0
  IDderWaffe.stopMagicEffectVisuals 'effect'
endif

bin mir jetzt aber nicht ganz sicher ob das so funktioniert *grübel*
auf jedenfall sollte dieses script die eigene und die 8 umliegenden zellen auf feindliche NPCs und Kreaturen überprüfen und falls vorhanden einen Visual auf deine Waffe legen.

Hier die verwendeten CS-Befehle:
GetFirstRef
GetNextRef
IsActorEvil
PlayMagicEffectVisuals[pme]
StopMagicEffectVisuals[sme]
Magic Effects List
 
das ist aber kein shader sondern ein visual.
wenn du einen zauber auf deine waffe legst erhält ja auch nur die waffe den effect und nicht der ganze spieler...
und du willst mir ja nicht erzählen das es von allen waffen exemplare für jeden einzelnen magieeffekt gibt...
 
Hallo nochmal.

Ich bräuchte wieder ein Script:)oops:).

Wenn ein Gegner stirbt, soll ein NPC, welcher in der selben Cell stand wie der Spieler, einen Feuershader bekommen und nach 3 Sekunden mit einem Feuerball-Aufprall-Spund in eine andere Cell "teleportiert" werden. In der anderen Cell soll der Shader wieder weg sein. Ich denke, das ließe sich durch disable des NPCs in der ersten Cell und dann enable in der anderen Cell lösen, oder?

Kann mir jemand dabei helfen und mir einen ganzen Script geben?


Edit: 'Tschuldigung, hat sich erledigt:oops: Kann gelöscht werden.
 
Zuletzt bearbeitet:
Code:
scn ACpieceofedenScript

short HPplayer
short newHPplayer
short newHPplayerplus
short HPone

begin OnEquip

set HPplayer to player.getActorValue Health
set newHPplayer to -(HPplayer/3+10)
set newHPplayerplus to (HPplayer/3+10)
set HPone to -(HPplayer-1)

if (newHPplayerplus > HPplayer)
	player.ModActorValue Health HPone
else
	player.ModActorValue Health newHPplayer
endif

Player.additem ACthrowingkniveItem, 100
end

Nachdem ich festegestellt hab, dass das von mir oben geschriebene Script zwar genauso funzt wie ich es will, aber die HP des Spieler dauerhaft und unwiderrufbar verändert werden:)roll:), hab ich mir überlegt wie man es sonst noch lösen könnte.
Und zwar will ich jetzt einen von mir erstellten Zauber auf den Spieler casten.

Code:
scn ACpieceofedenScript

begin OnEquip
player.addspell ACpieceofedenSpell
player.cast ACpieceofedenSpell Player
Player.additem ACthrowingkniveItem, 100
end

Allerdings passiert wieder mal garnix. Der Spieler bekommt zwar den Spell, aber er castet ihn nicht. Wenn ich ihn manuell caste geht es. Der Spell kostet 0 Mana und ist auf Novizenstufe, also kanns daran nicht scheitern.

Was muss ich machen damit es funktioniert? Oder kennt wer noch ne andere Methode wie man dem Spieler per Script Schaden zufügt?
 
Zuletzt bearbeitet:
Code:
scn ACpieceofedenScript

begin OnEquip
player.addspell ACpieceofedenSpell
player.cast ACpieceofedenSpell Player
Player.additem ACthrowingkniveItem, 100
end

Allerdings passiert wieder mal garnix. Der Spieler bekommt zwar den Spell, aber er castet ihn nicht. Wenn ich ihn manuell caste geht es. Der Spell kostet 0 Mana und ist auf Novizenstufe, also kanns daran nicht scheitern.

Was muss ich machen damit es funktioniert? Oder kennt wer noch ne andere Methode wie man dem Spieler per Script Schaden zufügt?

Probier doch mal, die einzelnen Befehle in einzelne Blöcke zu schreiben, dann eventuell noch jeweils mit nem if. Also etwa so:

Code:
scn ACpieceofedenScript

begin OnEquip
player.addspell ACpieceofedenSpell
end

begin GameMode
if player.addspell ACpieceofedenSpell == 1
player.cast ACpieceofedenSpell Player
endif
end

begin GameMode
if player.cas ACpieceofedenSpell == 1
Player.additem ACthrowingkniveItem, 100
endif
end

Vielleicht geht es so.
 
  • Like
Reaktionen: Nexon
Code:
...
if player.cas ACpieceofedenSpell == 1
..

Hier gibts nen Syntax Fehler. (Ja ich hab das "t" bei Cast mitgeschrieben, das fehlt oben :))

Ich habs so abgeändert

Code:
scn ACpieceofedenScript

begin OnEquip
player.addspell ACpieceofedenSpell
end

begin GameMode
if (player.addspell ACpieceofedenSpell == 1)
player.cast ACpieceofedenSpell Player
Player.additem ACthrowingkniveItem, 100
endif
end

Er castet jetz sogar. Aber er scheint den onEquip Block jetz völlig zu ignorieren, da er mir die 100 Wurfmesser und den Spell von Anfang an gibt und castet. Wenn ich das Item ausrüste passiert jetz garnix mehr.

Wenn man die Blöcke schachteln könnte, würde es vielleicht so gehen.

Code:
scn ACpieceofedenScript

begin OnEquip
player.addspell ACpieceofedenSpell

	begin GameMode
	if (player.addspell ACpieceofedenSpell == 1)
		player.cast ACpieceofedenSpell Player
		Player.additem ACthrowingkniveItem, 100
	endif
end
end

Aber da bekomm ich nen Syntax Fehler, was wohl heißt, dass es nicht geht.

Also irgendwie geht das auch nicht so... :?
 
Dann probier das ganze mal so:


Code:
scn ACpieceofedenScript

begin OnEquip
player.addspell ACpieceofedenSpell
end

begin GameMode
if ( player.addspell ACpieceofedenSpell == 1 ) && ( player.equipitem [ID des Items == 1 )
player.cast ACpieceofedenSpell Player
endif
end

begin GameMode
if player.cast ACpieceofedenSpell == 1
Player.additem ACthrowingkniveItem, 100
endif
end

Wenn das auch noch nicht klappt, dann füge das neue aus dem zweiten Block auch mal in den dritten ein oder mach aus den beiden letzten einen, der so aussieht:

Code:
begin GameMode
if ( player.addspell ACpieceofedenSpell == 1 ) && ( player.equipitem [ID des Items == 1 )
player.cast ACpieceofedenSpell Player
endif

if ( player.cast ACpieceofedenSpell == 1 ) && ( player.equipitem [ID des Items == 1 )
Player.additem ACthrowingkniveItem, 100
endif
end
 
Zuletzt bearbeitet:
Ich hab langsam die Vermutung, dass diese Zeilen hier:

player.addspell ACpieceofedenSpell == 1
player.equipitem [ID des Items == 1

überhaupt keine Wahrsheitswert wiedergeben, da ich jetz wieder den Spell von Anfang an bekommen hab und zusätzlich bekomm ich in ner Endlosschleife das Item was das Script auslösen soll.

So geht das also auch nicht.
 
Ok ich habs.

Code:
scn ACpieceofedenScript

short Spellbool

begin OnEquip
player.addspell ACpieceofedenSpell
set Spellbool to 1
end

begin GameMode
if ( Spellbool == 1 )
	player.cast ACpieceofedenSpell Player
	Player.additem ACthrowingkniveItem, 100
	set Spellbool to 0
	player.removespell ACpieceofedenSpell
endif
end

Fehlen nur noch ein paar Schönheitskorrekturen wegen den Messages.

Danke für den Tip mit dem GameMode Block. Da wär ich sicher nicht so schnell drauf gekommen.:)

Sieht so aus, als ob der cast Befehl nur im GameMode Block funzt.

Soweit ich weiß geht das schon, und zwar indem 2 mal ein Message Befehl ohne Inhalt nachgeschoben wird, sprich:
Code:
player.additem xyz 1
Message " "
Message " "

Nachteil dieser Methode ist, dass trotzdem eine Nachricht ausgegeben wird, diese hat halt nur keinen Inhalt.

Danke, das funzt ganz gut. Und den Nachteil erkenn ich eigentlich grad nicht. Ob das Nachrichten fenster mit leeren Msg Strings überladen ist oder keine Msg ausgegeben wird kann man ja nicht erkennen.:)
 
So, da hak ich doch gleich mal ein.
Eine genauere Beschreibung ist von Nöten, um so ein Script auzustellen.
zum Beispiel:
-Wie sollen sie die Stadt angreifen? einfach nur reinrennen und loskloppen?
-In bestimmten Zeitabständen?

und noch einiges mehr, ein recht genauer Ablauf wäre nicht schlecht.
 
Ok ich hab das Script im Spiel, aber mir ist grad eine bessere Idee gekommen.

Ist es möglich abzufragen, ob der Spieler grad einen Bogen ausgerüstet hat?

Dann würde ich es nämlich gern so machen, dass wenn ein Bogen (irgendeiner, am besten allgemein definieren) ausgerüstet wird, dann wird mein Item automatisch abgerüstet und man kann es auch nicht ausrüsten solange der Spieler einen Bogen trägt.

Wäre sowas möglich?
Ja, mit OBSE

Code:
ref weapon

Begin GameMode
Set weapon to Player.GetEquippedObject 16
Player.GetWeaponType Weapon 5 == 1

Nachdem ich mich in den letzten paar Tagen mehr mit Scripten beschäftigt hab, konnt ich es endlich so machen, wie ich es mir vorgestellt hatte. Und das sogar ohne OBSE.

Für die dies interessiert.

Code:
scn ACmiscItemScript

Begin GameMode
If player.GetWeaponSkillType == 3
	Player.unequipItem ACshortswordback
endif
end

Im übrigen kann man so sogar HandtoHand abfragen. ;)