Construction Set Skriptthread zum Construction Set

Bezüglich meines Schachtelscripts, ich hab ihn mal mit Scripteffectupdate geschrieben, er fragt aber immer nur die erste Messagebox ab und spielt nicht die weiteren ein, hier ist der Script:

Code:
scn BogenundPfeileBeschwoerungsSkriptTheGodMod

short PfeiloderBogen
short WelchesMaterial
short Wieviel

Begin ScriptEffectUpdate
    Set PfeiloderBogen to GetButtonpressed
        Messagebox "Pfeil oder Bogen?" , "Pfeil" , "Bogen"
            if PfeiloderBogen == 0
                Set WelchesMaterial to GetButtonpressed
                    Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedra"
                        if WelchesMaterial == 0
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow1Iron, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow1Iron, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow1Iron, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow1Iron, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow1Iron, 200
                                    endif
                        elseif WelchesMaterial == 1
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow2Steel, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow2Steel, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow2Steel, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow2Steel, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow2Steel, 200
                                    endif
                        elseif WelchesMaterial == 2
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow3Silver, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow3Silver, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow3Silver, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow3Silver, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow3Silver, 200
                                    endif
                        elseif WelchesMaterial == 3
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow4Dwarven, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow4Dwarven, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow4Dwarven, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow4Dwarven, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow4Dwarven, 200
                                    endif
                        elseif WelchesMaterial == 4
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow5Elven, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow5Elven, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow5Elven, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow5Elven, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow5Elven, 200
                                    endif
                        elseif WelchesMaterial == 5
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow6Glass, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow6Glass, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow6Glass, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow6Glass, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow6Glass, 200
                                    endif
                        elseif WelchesMaterial == 6
                            Set Wieviel to GetButtonpressed
                                Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow7Ebony, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow7Ebony, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow7Ebony, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow7Ebony, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow7Ebony, 200
                                    endif
                        elseif WelchesMaterial == 7
                            Set Wieviel to Getbuttonpressed
                                Messagebox "Wieviel" , "1" , "5" , "20" , "50" , "200"
                                    if Wieviel == 0
                                        player.additem Arrow8Daedric, 1
                                    elseif Wieviel == 1
                                        player.additem Arrow8Daedric, 5
                                    elseif Wieviel == 2
                                        player.additem Arrow8Daedric, 20
                                    elseif Wieviel == 3
                                        player.additem Arrow8Daedric, 50
                                    elseif Wieviel == 4
                                        player.additem Arrow8Daedric, 200
                                    endif
                        endif
            elseif PfeiloderBogen == 1
                Set WelchesMaterial to GetButtonpressed
                    Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedrisch"
                        if WelchesMaterial == 0
                            player.additem WeapIronBow, 1
                        elseif WelchesMaterial == 1
                            player.additem WeapSteelBow, 1
                        elseif WelchesMaterial == 2
                            player.additem WeapSilverBow, 1
                        elseif WelchesMaterial == 3
                            player.additem WeapDwarvenBow, 1
                        elseif WelchesMaterial == 4
                            player.additem WeapElvenBow, 1
                        elseif WelchesMaterial == 5
                            player.additem WeapGlassBow, 1
                        elseif WelchesMaterial == 6
                            player.additem WeapEbonyBow, 1
                        elseif WelchesMaterial == 7
                            player.additem WeapDaedricBow, 1
                        endif
            endif
end

Was habe ich falsch gemacht?
 
Begin ScriptEffectUpdate darfst du nicht vor Begin ScriptEffectStart verwenden.

Es darf nur so aufgebaut sein:

Code:
Begin ScriptEffectStart
 
; do stuff
 
 
End
 
 
Begin ScriptEffectUpdate
 
; do stuff
 
 
End
 
 
Begin ScriptEffectFinish
 
; do stuff
 
 
End

mfg
Kahmul
 
  • Like
Reaktionen: Almalexian
Hmmm, hab den Script jetzt mal so umgestellt, Jetzt fragt er aber nur endlos ab, Wieviele ich haben möchte.

Code:
scn BogenundPfeileBeschwoerungsSkriptTheGodMod

short PfeiloderBogen
short WelchesMaterial
short Wieviel

Begin ScriptEffectStart
    Set PfeiloderBogen to GetButtonpressed
        Messagebox "Pfeil oder Bogen?" , "Pfeil" , "Bogen"
            if PfeiloderBogen == 0
            endif
end
Begin Scripteffectupdate
    Set WelchesMaterial to GetButtonpressed
        Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedra"
            if WelchesMaterial == 0
            endif
end

Begin ScriptEffectupdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow1Iron, 1
            elseif Wieviel == 1
                player.additem Arrow1Iron, 5
            elseif Wieviel == 2
                player.additem Arrow1Iron, 20
            elseif Wieviel == 3
                player.additem Arrow1Iron, 50
            elseif Wieviel == 4
                player.additem Arrow1Iron, 200
            endif
end

Begin ScriptEffectupdate
    elseif WelchesMaterial == 1
    endif
end

Begin Scripteffectupdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow2Steel, 1
            elseif Wieviel == 1
                player.additem Arrow2Steel, 5
            elseif Wieviel == 2
                player.additem Arrow2Steel, 20
            elseif Wieviel == 3
                player.additem Arrow2Steel, 50
            elseif Wieviel == 4
                player.additem Arrow2Steel, 200
            endif
end

Begin ScripteffectUpdate
    elseif WelchesMaterial == 2
    endif
end

Begin ScriptEffectUpdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow3Silver, 1
            elseif Wieviel == 1
                player.additem Arrow3Silver, 5
            elseif Wieviel == 2
                player.additem Arrow3Silver, 20
            elseif Wieviel == 3
                player.additem Arrow3Silver, 50
            elseif Wieviel == 4
                player.additem Arrow3Silver, 200
            endif
end

Begin ScriptEffectUpdate
    elseif WelchesMaterial == 3
    endif
end

Begin ScriptEffectUpdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow4Dwarven, 1
            elseif Wieviel == 1
                player.additem Arrow4Dwarven, 5
            elseif Wieviel == 2
                player.additem Arrow4Dwarven, 20
            elseif Wieviel == 3
                player.additem Arrow4Dwarven, 50
            elseif Wieviel == 4
                player.additem Arrow4Dwarven, 200
            endif
end

Begin ScriptEffectUpdate
    elseif WelchesMaterial == 4
    endif
end

Begin ScriptEffectUpdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow5Elven, 1
            elseif Wieviel == 1
                player.additem Arrow5Elven, 5
            elseif Wieviel == 2
                player.additem Arrow5Elven, 20
            elseif Wieviel == 3
                player.additem Arrow5Elven, 50
            elseif Wieviel == 4
                player.additem Arrow5Elven, 200
            endif
end

Begin ScriptEffectUpdate
    elseif WelchesMaterial == 5
    endif
end

Begin ScriptEffectUpdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow6Glass, 1
            elseif Wieviel == 1
                player.additem Arrow6Glass, 5
            elseif Wieviel == 2
                player.additem Arrow6Glass, 20
            elseif Wieviel == 3
                player.additem Arrow6Glass, 50
            elseif Wieviel == 4
                player.additem Arrow6Glass, 200
            endif
end

Begin ScriptEffectUpdate
    elseif WelchesMaterial == 6
    endif
end

Begin ScriptEffectupdate
    Set Wieviel to GetButtonpressed
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow7Ebony, 1
            elseif Wieviel == 1
                player.additem Arrow7Ebony, 5
            elseif Wieviel == 2
                player.additem Arrow7Ebony, 20
            elseif Wieviel == 3
                player.additem Arrow7Ebony, 50
            elseif Wieviel == 4
                player.additem Arrow7Ebony, 200
            endif
end

Begin ScriptEffectUpdate
    elseif WelchesMaterial == 7
    endif
end

Begin ScriptEffectUpdate
    Set Wieviel to Getbuttonpressed
        Messagebox "Wieviel" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow8Daedric, 1
            elseif Wieviel == 1
                player.additem Arrow8Daedric, 5
            elseif Wieviel == 2
                player.additem Arrow8Daedric, 20
            elseif Wieviel == 3
                player.additem Arrow8Daedric, 50
            elseif Wieviel == 4
                player.additem Arrow8Daedric, 200
            endif
end

Begin ScriptEffectUpdate
    elseif PfeiloderBogen == 1
    endif
end

Begin ScripteffectFinish
    Set WelchesMaterial to GetButtonpressed
        Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedrisch"
            if WelchesMaterial == 0
                player.additem WeapIronBow, 1
            elseif WelchesMaterial == 1
                player.additem WeapSteelBow, 1
            elseif WelchesMaterial == 2
                player.additem WeapSilverBow, 1
            elseif WelchesMaterial == 3
                player.additem WeapDwarvenBow, 1
            elseif WelchesMaterial == 4
                player.additem WeapElvenBow, 1
            elseif WelchesMaterial == 5
                player.additem WeapGlassBow, 1
            elseif WelchesMaterial == 6
                player.additem WeapEbonyBow, 1
            elseif WelchesMaterial == 7
                player.additem WeapDaedricBow, 1
            endif
end
 
Ich habe zwar keine Scriptfrage an sich, sondern eine Verständnisfrage.

Bei diesem Script, welcher für die Steinfallen gebraucht wird.
Code:
scriptName CTrapCaveIn01SCRIPT

; On activation rocks will come tumbling down and do some damage
; Damage stops after 6 seconds

short triggered
float timer
short next
ref mySelf
ref myParent
float fTrapDamage
float fLevelledDamage
float fTrapPushBack
float fTrapMinVelocity
short bTrapContinuous

begin onActivate

    if triggered == 0
        set fTrapDamage to 5
        set fTrapPushBack to 300
        set fLevelledDamage to 1
        set fTrapMinVelocity to 150
        set bTrapContinuous to 0
        playgroup unequip 1
        enableLinkedPathPoints
        set triggered to 1
        set timer to 6
        setDestroyed 1
        triggerHitShader 4
    endif

end

begin gameMode

    ;after 1 sec delay, activate parent (for daisy-chaining)
    if triggered == 1 && next == 0 && timer < 5
        set next to 1
        set myParent to getParentRef
        set mySelf to getSelf
        myParent.activate mySelf 1
    endif

    if triggered == 1 && timer <= 0
        set fTrapDamage to 0
        set fTrapPushBack to 0
        set triggered to 2
    endif

    if timer > 0
        set timer to timer - getSecondsPassed
    endif

end

begin onReset

    reset3DState
    set triggered to 0
    setDestroyed 0
    enableLinkedPathPoints
    
end

Wie muss ich ihn einsetzen, damit er funktioniert.
Denn einfach auf das Objekt setzen, hat bei mir ingame nicht geklappt.

:bye:
 
also das script is dafür dass man schaden kriegt und dass die steine bei aktivierung runterfallen.du musst damits klappt aber erst eine triggerbox wo hinstellen die den script hat,die steinfalle zu aktivieren (ganz normale triggerboxactor01 sollte reichen) und dann im reference window die falle als parent von der triggerbox auswählen (falle muss natürlich persistent refference sein ;))
 
  • Like
Reaktionen: TheDarkRuler
@ Almalexian: Was hast du denn da gemacht? Du brauchst jeweils nur einen Begin-block, nicht den gleichen 100 mal. Das ist zwar nicht falsch, aber relativ unübersichtlich. Und zu Kahmul's Aussage: Es spielt keine Rolle, wo man welchen Begin-block platziert. Man kann den ScriptEffectStart sogar am Ende eines Script, noch hinter einen ScriptEffectUpdate Block packen, auch wenn das keiner macht. Und ein ScriptEffectUpdat-Block kann durchaus alleine stehen, ohne einen ScriptEffectStart. Insofern war dein zuerst geposteter Script gar nicht so falsch. Das Schwierige ist bloß die Verschachtelung von Messageboxen. Das größte Problem ist, dass GetButtonPressed einige Frames braucht, bevor es den eigentlich gedrückten Knopf als Zahl widergibt.

Doch zum Glück wird dieses "Problem" in diesem Tutorial ausführlich behandelt.

Versuche dich am Besten erst mal selbst dran, aber falls es nicht klappt, helfe ich gerne. Denn beim Üben verinnerlicht man die Funktions- und Vorgehensweise von Scripts am Besten.

Grüße
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Almalexian
@ Almalexian: Was hast du denn da gemacht? Du brauchst jeweils nur einen Begin-block, nicht den gleichen 100 mal. Das ist zwar nicht falsch, aber relativ unübersichtlich.

Leider ist es irgendwie falsch, denn wie gesagt, er fragt nur ab, wieviel ich von was auch immer haben möchte. Habs auch mal mit der Methode von Kahmul versucht, hat leider bereits beim Speichern Fehler verursacht, und mir ist noch ne neue variante eingefallen, bei der trotzdem das Gleiche Problem besteht:

Code:
scn BogenundPfeileBeschwoerungsSkriptTheGodMod

short PfeiloderBogen
short WelchesMaterial
short Wieviel
short PfeiloderBogen2
short WelchesMaterial2

Begin ScriptEffectStart
    Set PfeiloderBogen to GetButtonpressed
        Messagebox "Pfeil oder Bogen?" , "Pfeil" , "Bogen"
            if PfeiloderBogen == 0
                set PfeiloderBogen2 to 1
            elseif PfeiloderBogen == 1
                set PfeiloderBogen2 to 2
            endif
end
Begin Scripteffectupdate
    if PfeiloderBogen2 == 1
    Set PfeiloderBogen2 to 0
    Set WelchesMaterial to GetButtonpressed
endif
        Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedra"
            if WelchesMaterial == 0
                set WelchesMaterial2 to 1
            elseif WelchesMaterial == 1
                set WelchesMaterial2 to 2
            elseif WelchesMaterial == 2
                set WelchesMaterial2 to 3
            elseif WelchesMaterial == 3
                set WelchesMaterial2 to 4
            elseif WelchesMaterial == 4
                set WelchesMaterial2 to 5
            elseif WelchesMaterial == 5
                set WelchesMaterial2 to 6
            elseif WelchesMaterial == 6
                set WelchesMaterial2 to 7
            elseif WelchesMaterial == 7
                set WelchesMaterial2 to 8
            elseif WelchesMaterial == 8
                set WelchesMaterial2 to 9
            endif
end

Begin ScriptEffectupdate
    if WelchesMaterial2 == 1
    Set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow1Iron, 1
            elseif Wieviel == 1
                player.additem Arrow1Iron, 5
            elseif Wieviel == 2
                player.additem Arrow1Iron, 20
            elseif Wieviel == 3
                player.additem Arrow1Iron, 50
            elseif Wieviel == 4
                player.additem Arrow1Iron, 200
            endif
end

Begin Scripteffectupdate
    if WelchesMaterial2 == 2
    Set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow2Steel, 1
            elseif Wieviel == 1
                player.additem Arrow2Steel, 5
            elseif Wieviel == 2
                player.additem Arrow2Steel, 20
            elseif Wieviel == 3
                player.additem Arrow2Steel, 50
            elseif Wieviel == 4
                player.additem Arrow2Steel, 200
            endif
end

Begin ScriptEffectUpdate
    If WelchesMaterial2 == 3
    set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow3Silver, 1
            elseif Wieviel == 1
                player.additem Arrow3Silver, 5
            elseif Wieviel == 2
                player.additem Arrow3Silver, 20
            elseif Wieviel == 3
                player.additem Arrow3Silver, 50
            elseif Wieviel == 4
                player.additem Arrow3Silver, 200
            endif
end

Begin ScriptEffectUpdate
    If WelchesMaterial2 == 4
    Set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow4Dwarven, 1
            elseif Wieviel == 1
                player.additem Arrow4Dwarven, 5
            elseif Wieviel == 2
                player.additem Arrow4Dwarven, 20
            elseif Wieviel == 3
                player.additem Arrow4Dwarven, 50
            elseif Wieviel == 4
                player.additem Arrow4Dwarven, 200
            endif
end

Begin ScriptEffectUpdate
    If WelchesMaterial2 == 5
    Set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow5Elven, 1
            elseif Wieviel == 1
                player.additem Arrow5Elven, 5
            elseif Wieviel == 2
                player.additem Arrow5Elven, 20
            elseif Wieviel == 3
                player.additem Arrow5Elven, 50
            elseif Wieviel == 4
                player.additem Arrow5Elven, 200
            endif
end

Begin ScriptEffectUpdate
    If WelchesMaterial2 == 6
    Set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow6Glass, 1
            elseif Wieviel == 1
                player.additem Arrow6Glass, 5
            elseif Wieviel == 2
                player.additem Arrow6Glass, 20
            elseif Wieviel == 3
                player.additem Arrow6Glass, 50
            elseif Wieviel == 4
                player.additem Arrow6Glass, 200
            endif
end

Begin ScriptEffectupdate
    If WelchesMaterial2 == 7
    Set WelchesMaterial2 to 0
    Set Wieviel to GetButtonpressed
endif
        Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow7Ebony, 1
            elseif Wieviel == 1
                player.additem Arrow7Ebony, 5
            elseif Wieviel == 2
                player.additem Arrow7Ebony, 20
            elseif Wieviel == 3
                player.additem Arrow7Ebony, 50
            elseif Wieviel == 4
                player.additem Arrow7Ebony, 200
            endif
end

Begin ScriptEffectUpdate
    If WelchesMaterial2 == 8
    Set WelchesMaterial2 to 0
    Set Wieviel to Getbuttonpressed
endif
        Messagebox "Wieviel" , "1" , "5" , "20" , "50" , "200"
            if Wieviel == 0
                player.additem Arrow8Daedric, 1
            elseif Wieviel == 1
                player.additem Arrow8Daedric, 5
            elseif Wieviel == 2
                player.additem Arrow8Daedric, 20
            elseif Wieviel == 3
                player.additem Arrow8Daedric, 50
            elseif Wieviel == 4
                player.additem Arrow8Daedric, 200
            endif
end

Begin ScripteffectFinish
    If PfeiloderBogen2 == 2
    Set PfeiloderBogen2 to 0
    Set WelchesMaterial to GetButtonpressed
endif
        Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedrisch"
            if WelchesMaterial == 0
                player.additem WeapIronBow, 1
            elseif WelchesMaterial == 1
                player.additem WeapSteelBow, 1
            elseif WelchesMaterial == 2
                player.additem WeapSilverBow, 1
            elseif WelchesMaterial == 3
                player.additem WeapDwarvenBow, 1
            elseif WelchesMaterial == 4
                player.additem WeapElvenBow, 1
            elseif WelchesMaterial == 5
                player.additem WeapGlassBow, 1
            elseif WelchesMaterial == 6
                player.additem WeapEbonyBow, 1
            elseif WelchesMaterial == 7
                player.additem WeapDaedricBow, 1
            endif
end

Also, vielleicht habe ich bei Kahmul`s Idee was falsch gemacht, oder auf meinen Skript passt dieses Vorgehen nicht.
 
Also, vielleicht habe ich bei Kahmul`s Idee was falsch gemacht, oder auf meinen Skript passt dieses Vorgehen nicht.

Wie schon erwähnt, Kahmul's Idee war "falsch", und kann gar nicht die Ursache des Fehlers sein. Anscheinend hast du meinen vorangegangen Post komplett ignoriert, sowie das Tutorial. Wie auch immer, hier ist der komplette Skript:

Code:
scn GDWaffenzauberSCRIPT

short working
short button

Begin ScriptEffectStart
	set button to -1
End

Begin ScriptEffectUpdate
set button to getbuttonpressed
	if working == 0
		Messagebox "Pfeil oder Bogen?" , "Pfeil" , "Bogen"
		set working to 1
	elseif working == 1
		if button == 0
			set working to 100
		elseif button == 1
			set working to 200
		endif


	elseif working == 100
		Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedra"
		set working to 101
	elseif working == 101
		if button == 0
			set working to 110
		elseif button == 1
			set working to 120
		elseif button == 2
			set working to 130
		elseif button == 3
			set working to 140
		elseif button == 4
			set working to 150
		elseif button == 5
			set working to 160
		elseif button == 6
			set working to 170
		elseif button == 7
			set working to 180
		endif


	elseif working == 110
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 111
	elseif working == 111
		if button == 0
			player.additem Arrow1Iron, 1
		elseif button == 1
			player.additem Arrow1Iron, 5
		elseif button == 2
			player.additem Arrow1Iron, 20
		elseif button == 3
			player.additem Arrow1Iron, 50
		elseif button == 4
			player.additem Arrow1Iron, 200
		endif

	elseif working == 120
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 121
	elseif working == 121
		if button == 0
			player.additem Arrow2Steel, 1
		elseif button == 1
			player.additem Arrow2Steel, 5
		elseif button == 2
			player.additem Arrow2Steel, 20
		elseif button == 3
			player.additem Arrow2Steel, 50
		elseif button == 4
			player.additem Arrow2Steel, 200
		endif

	elseif working == 130
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 131
	elseif working == 131
		if button == 0
			player.additem Arrow3Silver, 1
		elseif button == 1
			player.additem Arrow3Silver, 5
		elseif button == 2
			player.additem Arrow3Silver, 20
		elseif button == 3
			player.additem Arrow3Silver, 50
		elseif button == 4
			player.additem Arrow3Silver, 200
		endif

	elseif working == 140
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 141
	elseif working == 141
		if button == 0
			player.additem Arrow4Dwarven, 1
		elseif button == 1
			player.additem Arrow4Dwarven, 5
		elseif button == 2
			player.additem Arrow4Dwarven, 20
		elseif button == 3
			player.additem Arrow4Dwarven, 50
		elseif button == 4
			player.additem Arrow4Dwarven, 200
		endif

	elseif working == 150
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 151
	elseif working == 151
		if button == 0
			player.additem Arrow5Elven, 1
		elseif button == 1
			player.additem Arrow5Elven, 5
		elseif button == 2
			player.additem Arrow5Elven, 20
		elseif button == 3
			player.additem Arrow5Elven, 50
		elseif button == 4
			player.additem Arrow5Elven, 200
		endif

	elseif working == 160
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 161
	elseif working == 161
		if button == 0
			player.additem Arrow6Glass, 1
		elseif button == 1
			player.additem Arrow6Glass, 5
		elseif button == 2
			player.additem Arrow6Glass, 20
		elseif button == 3
			player.additem Arrow6Glass, 50
		elseif button == 4
			player.additem Arrow6Glass, 200
		endif

	elseif working == 170
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 171
	elseif working == 171
		if button == 0
			player.additem Arrow7Ebony, 1
		elseif button == 1
			player.additem Arrow7Ebony, 5
		elseif button == 2
			player.additem Arrow7Ebony, 20
		elseif button == 3
			player.additem Arrow7Ebony, 50
		elseif button == 4
			player.additem Arrow7Ebony, 200
		endif

	elseif working == 180
		Messagebox "Wieviel?" , "1" , "5" , "20" , "50" , "200"
		set working to 181
	elseif working == 181
		if button == 0
			player.additem Arrow8Daedric, 1
		elseif button == 1
			player.additem Arrow8Daedric, 5
		elseif button == 2
			player.additem Arrow8Daedric, 20
		elseif button == 3
			player.additem Arrow8Daedric, 50
		elseif button == 4
			player.additem Arrow8Daedric, 200
		endif

	elseif working == 200
		Messagebox "Welches Material?" , "Eisen" , "Stahl" , "Silber" , "Zwergisch" , "Elfisch" , "Glas" , "Ebenerz" , "Daedra"
		set working to 201
	elseif working == 201
		if button == 0
			player.additem WeapIronBow, 1
		elseif button == 1
			player.additem WeapSteelBow, 1
		elseif button == 2
			player.additem WeapSilverBow, 1
		elseif button == 3
			player.additem WeapDwarvenBow, 1
		elseif button == 4
			player.additem WeapElvenBow, 1
		elseif button == 5
			player.additem WeapGlassBow, 1
		elseif button == 6
			player.additem WeapEbonyBow, 1
		elseif button == 7
			player.additem WeapDaedricBow, 1
		endif
	endif

end

Wichtig zu beachten: Der Zauber muss mindestens eine Sekunde andauern, sonst hat GetButtonpressed keine Chance zu arbeiten. Der Skript ist übrigens getestet und funktioniert.

Viel Spaß.
 
  • Like
Reaktionen: Almalexian
also das script is dafür dass man schaden kriegt und dass die steine bei aktivierung runterfallen.du musst damits klappt aber erst eine triggerbox wo hinstellen die den script hat,die steinfalle zu aktivieren (ganz normale triggerboxactor01 sollte reichen) und dann im reference window die falle als parent von der triggerbox auswählen (falle muss natürlich persistent refference sein ;))

Könntest du das etwas genauer erläutern?
Ich versteh' grad nicht, was du meinst. :huh:
 
Könntest du das etwas genauer erläutern?
Ich versteh' grad nicht, was du meinst. :huh:

Du brauchst im die Steinfalle zu aktivieren eine TriggerBox, wie schon angegeben als Beispiel die TrigZoneACTOR01 die du unter Activator findest. Diese plazierst du an einer Stelle deiner Wahl, sobald diese Stelle von einem Actor erreicht wird wird die Falle ausgelöst (wenn die Falle aber nur vom Spieler ausgelöst werden soll kannst du die TrigZonePLAYER01 oder TrigZonePLAYER02 nutzen).

Nachdem plazieren machst du einen Doppelklick auf die TriggerBox, wechselst von 3D Data auf Enable Parent und wählst die bereits vorhandene Steinfalle aus. Sie muss einen Haken unter Persistent Reference haben, diesen kannst machen wenn du auf die Steinfalle einen Doppelklick machst. Die Steinfalle kannst du aus der Liste als Parent heraussuchen oder du machst es dir einfacher, du klickst dann auf "Select Reference in Render Window" und kannst dann mit dem veränderten Mauszeiger über die Steinfalle fahren und mit sie mit einem weiteren Doppelklick als Parent für die TriggerBox eintragen.

MfG Master of Worlds
 
  • Like
Reaktionen: TheDarkRuler
Also: Du suchst dir unter Activator die Triggerbox01 raus. Die ziehst du an den Ort wo die Steinfalle ausgelöst werden soll. Dann machst du Doppelklick auf die Falle, machst ein Häkchen bei "Persistent Refference" und bestätigst. Dann machst du Doppelklick auf die Triggerbox, da ist dann im "Oberen Mittelteil" des Fenster eine Oberkategorie "Enable Parent" oder so. Da klickst du hin und dann auf Select Refference in Preview Window oder so. Da kommt dann so ein Fadenkreuz und du musst auf die Falle klicken, wenn das Fadenkreuz weiß ist. (vorher ist es rot).

Edit: Mist, zu langsam. :)
 
  • Like
Reaktionen: TheDarkRuler
Welchen Script meint ihr jetzt genau?
Ich erstelle für meine Mod generell nur neue IDs und benutze keine vorhandenen. Daher haben meine TriggerBoxen leider noch gar keinen Script. :oops:
 
Welchen Script meint ihr jetzt genau?
Ich erstelle für meine Mod generell nur neue IDs und benutze keine vorhandenen. Daher haben meine TriggerBoxen leider noch gar keinen Script. :oops:

Für eine Box die durch normale NPCs aktiviert werden soll.

Code:
scn TrigZoneACTOR01SCRIPT

; Activates linked Parent object once

short triggered
ref target
ref mySelf

begin onTriggerActor

	if triggered == 0
		set target to getParentRef
		set mySelf to getSelf
		target.activate mySelf 1

		set triggered to 1
	endif

end

begin onReset

	set triggered to 0

end

Für eine Box die nur durch den Spieler aktiviert werden soll.

Code:
scn TrigZonePLAYER01SCRIPT

; Activates linked Parent object once

short triggered
ref target
ref mySelf

begin onTrigger player

	if triggered == 0
		set triggered to 1
		set target to getParentRef
		set mySelf to getSelf
		target.activate mySelf 1
	endif

end

begin onReset

	set triggered to 0

end

War doch das was du gesucht hast oder? :?

MfG Master of Worlds
 
Zuletzt bearbeitet:
  • Like
Reaktionen: TheDarkRuler
Ja. Genau den Script hab' ich gesucht :D

:bye:

EDIT:

Noch eine Frage:

Weißt jemand, was ich für ScriptEffect Finish einsetzen muss, damit der Geistereffekt auch wieder aufgehoben werden kann?

Code:
scn 0AlteLegionDungeon01GeistereffektScript

begin ScriptEffectStart
    saa 0.01
    pms ghosteffect
end

begin ScriptEffectFinish

end
 
Zuletzt bearbeitet:
Hallo Leute!

Ich habe da ein dem oben genannten ähnliches Script.

Es soll einen Begleiter kontrolloeren.

So siehts aus:
Code:
scn SotANFollowerScript

short working
short button
short act


begin OnActivate player
set act to 1
set button to -1
set working to 0
end


begin GameMode
if act == 1

[U]set button to -1[/U]
set button to GetButtonPressed

if working == 0
	MessageBox "Was wollt ihr befehlen?", "Bewegung" "Verhalten" "Kampfstil" "Beenden"
	set working to 1
[U]elseif button != -1[/U]

	if working == 1
		if button == 0
			set working to 100
		else if button == 1
			set working to 200
		else if button == 2
			set working to 300
		else if button == 3
			set act to 0
		endif
		
	elseif working == 100
		MessageBox "Was verlangt ihr von eurem treuen Gehilfen?", "Folgt mir" "Wartet hier" "Geht mir aus den Augen" "Beenden"
		set working to 101
	elseif working == 101
		if button == 0
			SotANFollowerNPCRef.AddScriptPackage AIFollow
			StopWaiting AIFollow
			SotANFollowerNPCRef.RemoveScriptPackage AILagerBretonenWater
			SotANFollowerNPCRef.RemoveScriptPackage AILagerBretonenWander01
			SotANFollowerNPCRef.RemoveScriptPackage AILagerBretonenSleep01
		elseif button == 1
			SotANFollowerNPCRef.RemoveScriptPackage AIFollow
			Wait AIFollow
		elseif button == 2
			SotANFollowerNPCRef.RemoveScriptPackage AIFollow
			Wait AIFollow
			SotANFollowerNPCRef.AddScriptPackage AILagerBretonenWater
			SotANFollowerNPCRef.AddScriptPackage AILagerBretonenWander01
			SotANFollowerNPCRef.AddScriptPackage AILagerBretonenSleep01
			SetAlert 0
			SetForceSneak 0
			MoveTo SotANFollowStartMarker
		endif
		set act to 0

	elseif working == 200
		MessageBox "Wie soll ich mich verhalten?", "Verhaltet euch normal" "Seid vorsichtig" "Schleichen" "Beenden"
		set working to 201
	elseif working == 201
		if button == 0
			SetAlert 0
			SetForceSneak 0
		elseif button == 1
			SetAlert 1
		elseif button == 2
			SetForceSneak 1
			cast SotANFollowerSpellSneak Player
		endif
		set act to 0
			
	elseif working == 300
		MessageBox "Womit soll ich an eurer Seite kämpfen?", "Klinge" "Bogen" "Magie" "Beenden"
		set working to 301
	elseif working == 301
		if button == 0
			SetCombatStyle SotANNPCBlade
		elseif button == 1
			SetCombatStyle SotANNPCMissile
		elseif button == 2
			SetCombatStyle SotANNPCMage
		endif
		set act to 0

	endif
[U]endif[/U]
endif
end

Wenn ich teste, dann erscheint die erste MBox. Egal worauf ich klicke, es erscheint dieselbe ein zweites mal. Diese lässte sich auf "Beenden" auch schließen, aber auf die anderen Optionen erscheint immer die gleiche (unter working=200; "Verhalten") MBox, auch wenn ich auf Bewegung oder Kampfstil klicke.

EDIT: Hab jetzt einen Abfage mit eingebaut, welche verhindert, dass der Script weiterläuft, bevor "button" den Wert von "GetButtonPressed" erhalten hat. (siehe oben, unterstrichen)

Folgen: Jetzt kommt einfach beim Anspracher der Peron die erste MB. Egal worauf ich kliche, sie schließt sich und fertig!... Da kommt keine andere!

Jemand nen Lösungsansatz für mich??

Vielen Dank!

Guten Abend
tach810i
 
Zuletzt bearbeitet von einem Moderator: