Construction Set Skriptthread zum Construction Set

also, in Oblivion musst du allerdings noch die "->" durch "." ersetzen und den Scriptnamen bestimmt man durch den Befehl "scn" (ganz an den Anfang)
und das Begin solltest du besser auch ändern, bei oblivion meint das nämlich, wann das Script "abgespielt" (besseres Wort fällt mir grad nicht ein) wird.


edit: so:
Code:
scn irgedwas

begin OnHit
 
short controlvar
 
if controlvar == 1 
 
           "die ID de NPCs".addspell "die ID deiner Eigenschaft" 
 
set controlvar to 1
 
           endif
 
endif
 
end
 
Um es nochmal zu ergänzen:
Der richtige Befehl lautet nicht "<NPC-ID>.addSpell <Zauber-ID>", sondern "<NPC-Ref>.addSpell <Zauber-ID>".
Außerdem würde ich den Blocktype noch um ein "player" ergänzen, also "Begin onHit player"...
 
alles klar danke lässt sich die npc ref im onHit Block mit getSelf bestimmen ?

ich habe gerade versucht das über Questscript zu lösen

PHP:
scn aavictimsofbroken


long Count
long Number
float fQuestDelayTime
ref victim
ref Cell


begin GameMode

set fQuestDelayTime to 1
if ( Cell != ( Player.GetParentCell ) )
		set Cell to ( Player.GetParentCell )
		set Number to -1
	endif
if ( Number != ( GetNumRefs 69 1 ) )
		set Number to ( GetNumRefs 69 1 )
		set Count to 0
		While ( Count < Number )
			if ( Count )
				set victim to ( GetNextRef )
			else
				set victim to ( GetFirstRef 69 1 )
			endif
               set Count to Count +1
               if victim.getEquippedObject 2 > 0
                    if getIsID aamodiamelion
                            victim.addSpell
                    elseif getIsID aamodiamelionbroken
                            victim.addSpell
                    endif
               endif
         loop
endif
end
allerdings läst sich das net speichern

meldung

reference function getIsID requires explicit reference in questSkript

kann ich das jetzt iwie anders abfragen oder wie soll ich die ID sonst angeben?
 
Zuletzt bearbeitet:
mal ne Frage von mir: kann man per Script beim aktivieren eines NPC dessen Inventar öffnen? und wenns geht, wenn man dem dann da was ins Inventar reinpackt, würde der das auch ausrüsten?
 
Schau dir mal Toasters Say Share and Recruit an. Dort kann man Nach der Rekrutierung den NPC auf sein Inventar ansprechen. Wenn man etwas reinpackt, rüstet der sich auch damit aus. ;)
 
alles klar danke lässt sich die npc ref im onHit Block mit getSelf bestimmen ?

ich habe gerade versucht das über Questscript zu lösen

PHP:
scn aavictimsofbroken


long Count
long Number
float fQuestDelayTime
ref victim
ref Cell


begin GameMode

set fQuestDelayTime to 1
if ( Cell != ( Player.GetParentCell ) )
		set Cell to ( Player.GetParentCell )
		set Number to -1
	endif
if ( Number != ( GetNumRefs 69 1 ) )
		set Number to ( GetNumRefs 69 1 )
		set Count to 0
		While ( Count < Number )
			if ( Count )
				set victim to ( GetNextRef )
			else
				set victim to ( GetFirstRef 69 1 )
			endif
               set Count to Count +1
               if victim.getEquippedObject 2 > 0
                    if getIsID aamodiamelion
                            victim.addSpell
                    elseif getIsID aamodiamelionbroken
                            victim.addSpell
                    endif
               endif
         loop
endif
end
allerdings läst sich das net speichern

meldung

reference function getIsID requires explicit reference in questSkript

kann ich das jetzt iwie anders abfragen oder wie soll ich die ID sonst angeben?

Da steht, was du ändern musst:
reference function getIsID requires explicit reference in questSkript
Ich würde "fQuestDelayTime" auf einen kleineren Wert als 1 setzen; eher auf 0.01 oder noch kleiner...
Mal eine Frage... Was soll die Funktion "While" (Z.21) bedeuten?
 
Da steht, was du ändern musst:

ist ja schon gut hab´s herausgefunden wie ich das jetzt mache
skript lässt sich jetzt auf jeden fall speichern

PHP:
scn aavictimsofbroken

long Count
long Number
float fQuestDelayTime
ref victim
ref Object
ref Cell


begin GameMode

set fQuestDelayTime to 1
if ( Cell != ( Player.GetParentCell ) )
        set Cell to ( Player.GetParentCell )
        set Number to -1
endif
if ( Number != ( GetNumRefs 35 1 ) )
        set Number to ( GetNumRefs 35 1 )
        set Count to 0
        While ( Count <= Number )
            if ( Count )
                set victim to ( GetNextRef )
            elseif ( Count == Number )
                set victim to Player
            else
                set victim to ( GetFirstRef 35 1 )
            endif
               set Count to Count + 1
               if Eval ( Object := ( victim.getEquippedObject 2 ) )
                    if Object == aamodiamelion
                            victim.addSpell aamodiamelionbrokenSP
                    elseif Object == aamodiamelionbroken
                            victim.addSpell aamodiamelionhealthSP
                    endif
               endif
         loop
endif
end

funktioniert das so in game passiert net viel werde erstma quest und zaubereinstellung prüfen vieleicht liegt da ja der hund begraben

Ich würde "fQuestDelayTime" auf einen kleineren Wert als 1 setzen; eher auf 0.01 oder noch kleiner...
warum? heist 1 net schon in jedem frame

Mal eine Frage... Was soll die Funktion "While" (Z.21) bedeuten?
Willst du mir etwa erzählen das du als Kompetenter Skripter keine While Schleife kennst? :?
 
1. Gibt "fQuestDelayTime" den Wert in Sekunden wieder. 1 bedeutet also, dass das Skript jede Sekunde einmal durchlaufen wird, 0.01 bedeutet, dass es jeder hundertstel Sekunde einmal durchlaufen wird. Und solange du keinen Rechner hast, der über 100 FPS hat, heißt das quasi in jedem Frame oder sogar noch öfter...
2. Habe ich die Funktion "While" noch nie in TES-Skripts gesehen. Selbst im englischen CS-Wiki wird der Befehl nicht aufgeführt, was darauf schließen lässt, dass er nicht existiert/funktioniert... Auch die von dir benutzte Funktion "loop" (Z.37), halte ich für nicht existent. Den Sinn kann ich mir aus dem Kontext erschließen und könnte dir deshalb auch sagen, dass du dafür ruhig "if" benutzen kannst, weil es ja im GameMode-Block steht... (es sei denn, meine Interpretation des Befehls ist falsch).
3. Kann ich nicht skripten... nur TES-Skripts, aber das ist ja eine andere Sprache.
 
1. alles klar werde es so ändern

2. ich persöhnlich kenne die while schleife weil ich unter anderem dabei bin Flash Actionscript 3 zu lehrnen den befehl in tes habe ich von jemanden der auch sehr viel ahnung hat von tes-script und da er die while schleife in einem seiner mods anwendet muss der befehl scheinbar doch exestieren loop muss denn das sein was für if endif ist
cs hatt ja auch nicht rumgemeckert was es sonst immer mach wen eine funktion net exestiert (traumbefehl getActorRef)
[Klugschei**]
funktionalietät in AS3 (wird in TES wohl net anders sein)

|
|
while [bedingung] <------
|################|
|#############anweisung # bitte ignorieren war jetzt net anders möglich
|################|
|---------true--->-------
|
false
|
[/Klugschei**]
3. aso habe mich nur gewundert dachte das wen man von sowas ahnung hat
versucht man sich früher oder später auchma in einer anderen skriptsprache
 
Zuletzt bearbeitet:
KEnnt wer nen Script der nem RüstungsTEIL einen Shader Effekt einer Waffe für unbegrenzte ZEit gibt?

Lol Flasches Forum <----Gehört eigentlich Oblivion rein. Tut Mir LEid kann dasn Mod ändern pls? ich weiß echt net was mit mia los is OO
 
Zuletzt bearbeitet:
Hi Leute!

Wie lautet der Skript für einen Activator den man nur zu einer bestimmten zeitspanne aktivieren kann?

wie zb von 12-15 kann man ihn aktivieren, die restliche Zeit kann man ihn nicht aktivieren.

mfg Fluffy
 
Hmm okay, das hatte ich schonmal jedoch tut sich nix wenn ich noch ne Condition dazu tu.... wie zb player.GetItemCount <ID> == 1

mfg Fluffy
 
scn test

Begin OnActivate
If GameHour >= 22 && GameHour <= 24 && player.Getitemcount MortFlesh == 1
player.Removeitem MortFlesh 1
Messagebox "Hat geklappt"
<ID>.moveto <IDX-Marker>
endif
else
Messagebox "Hat nicht geklappt" <- Bishierhin komm ich ja nicht mal....
end


:Hinweis, der Skript ist nicht 1zu1 aus meinem herausgenommen.... bin grade noch nicht zuhause ( Dienst :p )

Mfg Flüffy
 
ertmal steht das else ausserhlab des endifs, kann also nicht. dann würd ich mal
player.Getitemcount MortFlesh >= 1 probieren, ausser du willst, dass man nur 1 haben darf.
 
Öhm das else steht beim Origin. Skript zu 100% vor endif^^, habs nun wie schon gesagt nur ausm kopf getippt, Ja das mit MortFlesh würde schon passen, also nur 1x.
Mein Problem ist ja, selbst wenn ich die Conditions erfülle und den Activator aktiviere.... passiert nix..... *grummel*

mfg Fluffy