Construction Set Skriptthread zum Construction Set

GetSelf funktioniert auf Items nicht, probiere deswegen das:
Code:
scn name

Begin ScriptEffectStart
 This.setOwnership
end

Gildur
 
  • Like
Reaktionen: robinH
Hab nochmal im CS-Wiki nachgeguckt und dort steht, dass "setOwnership" als Referenz eine spezielle benötigt und bei einer Ref-Variable wie ein "return" agiert... Also ist es gar nicht möglich, diese Funktion zu realisieren... (vllt gehts ja mit OBSE) :?
 
  • Like
Reaktionen: robinH
1. Du kannst das Skript nicht einfach eins zu eins übernehmen. Es muss ja schließlich die Variable deklariert und gesetzt werden. Also:
Code:
scn name

ref target

Begin ScriptEffectStart
 set target to this
 target.setOwnership
end
Ich denk mal, dass Gildur das so meinte.

2. Keine Ahnung, aber mit OBSE ist doch fast alles möglich... 8)
 
  • Like
Reaktionen: robinH
1. Du kannst das Skript nicht einfach eins zu eins übernehmen. Es muss ja schließlich die Variable deklariert und gesetzt werden. Also:
Code:
scn name

ref target

Begin ScriptEffectStart
 set target to this
 target.setOwnership
end
Ich denk mal, dass Gildur das so meinte.

...........)

Sorry funzt aber leider auch nicht.(lässt sich zwar abspeichern, doch das Item bleibt Diebstahl. Das gibt es doch nicht, dass man das nicht hinbekommt. Mit der Console geht der Befehl doch auch. Also müsste es doch auch einen Weg geben, dass ohne die Konsole zu bewerkstelligen.
 
Hallo zusammen

ich hab ne lange Zeit nur gemoddet und nicht mehr gescripted und jetzt kam ich mal wieder nicht drum rum eines zu schreiben. Und das schlug natürlich promt fehl.

Das item auf dem das script liegt soll einfach nur alle 2 sekunden irgendeinen beliebigen spell bzw spelleffekt casten / abspielen.
Mein Versuch sieht so aus, aber es passiert nix. Bestimmt weiß einer von euch die Lösung!

Code:
scn MWEvilStoneCastSCR

float timer
ref selfref


Begin GameMode
set selfref to GetSelf
	if timer == 8
		cast StandardFireShield4Expert selfref
	else if timer == 6
		cast StandardRestoreHealth3Journeyman selfref
	else if timer == 4
		cast StandardFireDamageArea5Master selfref
	else if timer == 2
		cast StandardShockShield4Expert selfref
	else if timer == 0
		set timer to 10
		cast StandardFireDamageArea3Journeyman selfref
	endif
	if timer > 0
		set timer to timer - GetSecondsPassed
	endif
end
 
Hiho!
Probier das Skript mal so:
Code:
scn MWEvilStoneCastSCR

short cast
float timer

Begin GameMode
 if timer > 0
  set timer to timer - getSecondsPassed
 else
  if cast == 0
   set cast to 1
   cast StandardFireShield4Expert
  elseif cast == 1
   set cast to 2
   cast StandardRestoreHealth3Journeyman
  elseif cast == 2
   set cast to 3
   cast StandardFireDamageArea5Master
  elseif cast == 3
   set cast to 4
   cast StandardShockShield4Expert
  else
   set cast to 0
   cast StandardFireDamageArea3Journeyman
  endif
  set timer to 2
 endif
end
 
Selbst wenn es ein Item wäre, würde man wenigstens etwas sehen, auch wenn es nicht wie erwartet funktioniert.
CS Wiki schrieb:
[...]But when some other object types, such as Items, are supplied for the Target parameter, the spell projectile will travel down the negative y-axis rather than in the direction of the target.

Warum funktioniert nur ein Spell? Weil nur für einen die Bedingung eintrifft, nämlich dass timer == 0 ist. Alle anderen Bedingungen treffen nicht ein, weil der timer nur in sehr seltenen Fällen eine Ganzzahl ergibt (jedenfalls nicht mit dem normalen GetSecondsPassed). Demnach musst du es wie folgt machen:
Code:
scn MWEvilStoneCastSCR

float timer
short step
ref myself


Begin GameMode
set myself to GetSelf

	if timer < 0
		return
	elseif timer == 0
		set timer to 10
		set step to 1
		cast StandardFireDamageArea3Journeyman myself
	elseif timer > 0
		set timer to timer - GetSecondsPassed
	endif

	if (timer <= 8) && (step == 1)
		set step to step +1
		cast StandardFireShield4Expert myself
	elseif (timer <= 6) && (step == 2)
		set step to step +1
		cast StandardRestoreHealth3Journeyman myself
	elseif (timer <= 4) && (step == 3)
		set step to step +1
		cast StandardFireDamageArea5Master myself
	elseif (timer <= 2) && (step == 4)
		set step to step +1
		cast StandardShockShield4Expert myself
	endif

end
 
  • Like
Reaktionen: Xaser
soo gildur hab das problem setzt gefunden, es steckte in der if timer < 0 aussage.

So funktioniert es prima:

Code:
scn MWEvilStoneCastSCR

float timer
short step


Begin GameMode

	if timer <= 0
		set timer to 10
		set step to 1
		pme DRFA 1
	elseif timer > 0
		set timer to timer - GetSecondsPassed
	endif

	if (timer <= 8) && (step == 1)
		set step to step +1
		pme FIDG 1
	elseif (timer <= 6) && (step == 2)
		set step to step +1
		pme LISH 1
	elseif (timer <= 4) && (step == 3)
		set step to step +1
		pme RALY 1
	elseif (timer <= 2) && (step == 4)
		set step to step +1
		pme SHDG  1
	endif

end
 
Hab gleich 2 Fragen

1. Frage:
Wir kann der player (ingame) Die ausrüstung eines begleiters verändern?
2. Frage:
Wie sage ich meinen Belgleiter er soll nicht kämpfen?

Danke im voraus
 
Vielleicht so, bin aber überhaupt nicht sicher, habe noch nie so etwas gescriptet:

Code:
if player.startcombat
disable<NPC-ID>controls
endif
if player.endcombat (Befehl gibts vielleicht gar nicht^^)
enable<NPC-ID>controls
endif
end
Dadurch kann er sich, während du kämpfst, nicht bewegen^^
Wenn das Script geht :lol: :p
 
  • Like
Reaktionen: death-lord
zu 2) Es sollte reichen, wenn du den Aggressionswert des NPCs veränderst. Es gilt in etwa: Ein NPC greift an, wenn die Aggression größer ist, als die Disposition...
Bei einem Aggressionswert von 0 wird er sich nichtmal verteidigen und bei ~20 wird er vorraussichtlich nicht von selbst angreifen...

Dass das Skript nicht funktioniert ist klar, weil es die Befehle gar nicht gibt...
 
  • Like
Reaktionen: death-lord