Construction Set Skriptthread zum Construction Set

Hey
Hier ist ein Script mit dem das möglich ist.
Aber Achtung der Script ist für eine Quest!
Code:
ScriptName ScriptName
short doonce
short dice
Begin GameMode
if doonce == 0
If Player.GetItemCount ITEMID > 0 && GetPCSleepHours > 0;Bei ItemID musst du dein ITem einsetzen
set dice to 1 + 0.06 * GetRandompercent 
;############################################
; => 1 zu 6 Wenn du mehr videos hast musst du 0.06 durch bsp 0.07 ersetzen
set doonce to 1
    If Dice == 1
        PlayBink "Vid1.bik" 1
        ;##############################        
         ;Die 1 kannst du durch 0 erstzen. sie bedeutet nur das man während des guckens das vid niocht abbrechen kann
    elseif Dice == 2
        PlayBink "Vid2.bik" 1
    elseif Dice == 3
        PlayBink "Vid3.bik" 1
    elseif Dice == 4
        PlayBink "Vid4.bik" 1
    elseif Dice == 5
        PlayBink "Vid5.bik" 1
    elseif Dice == 6
        PlayBink "Vid6.bik" 1
        ;#################
        ;halt immer so weiter jenachdem wie viele videosequenzen du hast. 
endif
Endif
EndIf
End
Hoffe ich konnte helfen


Anmerkungen: Das Video muss im *.bik sein.
Das Video speciherst du möglichst uim Ordner Data/Video
 
Und das ist dazugehörige Quest Skript:

PHP:
scn sssQuestDevilTriggerScript

short curkey
short On
short index

ref me
ref myCast
ref myBall

ref myZ

ref myObj
short baseFatigue

; initial position vector
float xPos
float yPos
float zPos

float fquestdelaytime 

Begin GameMode

set fquestdelaytime to 0.01

    if On == 1 && isKeyPressed2 sssKey.DTZoomIn && sssModeWheel > 30
        set sssModeWheel to sssModeWheel - 1

        SetNumericGameSetting fVanityModeWheelMin sssModeWheel
        SetNumericGameSetting fVanityModeWheelMax sssModeWheel
     elseif On == 1 && isKeyPressed2 sssKey.DTZoomOut && sssModeWheel < 600
        set sssModeWheel to sssModeWheel + 1

        SetNumericGameSetting fVanityModeWheelMin sssModeWheel
        SetNumericGameSetting fVanityModeWheelMax sssModeWheel
    endif

    if ( curKey && isKeyPressed2 curkey )  ; key still being held down
        return
    else
        set curkey to 0
    endif

    if iskeypressed2 sssKey.DevilTrigger

        if On == 0

             set me to Player

            set myBall to sssLightTriggerBurstRef

            set zPos to 118-25*(me.IsSneaking)

            if myBall != me
                myBall.Activate me 1
                myBall.moveto me 0 0 0
                set myZ to myBall.Getpos z
                myBall.Setpos Z myZ
            endif

            set myCast to sssActivatorCastRef
            set myBall to sssActivatorDummyRef

            myCast.Activate me 1
            sssTarget.Activate me, 1

            myCast.moveto me 0 0 zPos
            set myZ to myCast.Getpos z
            myCast.Setpos Z myZ

            myBall.Activate me 1
            sssTarget.Activate me, 1
            set myZ to myBall.Getpos z
            myBall.Setpos Z myZ

            myBall.moveto me 0 0 zPos

            myCast.Cast sssTriggerBurstTouchSpell myBall

            sssTarget.Activate me 1

            ; initial position vector (to add to player coords)
            set xPos to -5*sssTarget.dx*sssTarget.cos
            set yPos to -5*sssTarget.dy*sssTarget.cos
            set zPos to 118-25*(me.IsSneaking)+5*sssTarget.dz

            set myObj to sssNPCDevilTriggerRef

            if myObj != me
                if myObj.isActorsAiOff
                    myObj.ToggleActorsAi
                endif
        
                myObj.Enable        
                if myObj.GetDead
                    myObj.Resurrect 0
                endif
                if myObj.Getav Fatigue <= 0
                   set baseFatigue to myObj.GetBaseAv Fatigue
                  myObj.ModAv Fatigue baseFatigue    
                endif

                myObj.enable

                myObj.moveto me sssTarget.xpos sssTarget.ypos sssTarget.zpos
                set myZ to me.Getpos Z
                myObj.setpos z myZ
                myObj.moddisposition me 100
                myObj.ResetHealth
            endif

            set sssQuest.indexSoundDevilTrigger to ( sssQuest.indexSoundDevilTrigger + 1 ) %  2
            set index to sssQuest.indexSoundDevilTrigger 
            if index == 0
                playSound sssSoundDevilTriggerOn01
            else
                playSound sssSoundDevilTriggerOn02
            endif

            set On to 1

            SetNumericGameSetting fVanityModeWheelMin sssModeWheel
             SetNumericGameSetting fVanityModeWheelMax sssModeWheel
 
            set curkey to sssKey.DevilTrigger

        elseif On == 1

            set myObj to sssNPCDevilTriggerRef

            myObj.disable

            playSound sssSoundDevilTriggerOff

            set On to 0

            SetNumericGameSetting fVanityModeWheelMin 30.0
             SetNumericGameSetting fVanityModeWheelMax 600.0

            set curkey to sssKey.DevilTrigger

        endif
    endif

End

Kann mir jemand das bitte umschreiben???
 
Also ich mache einfach eine neue Quest mit diesem Script, welche die ganze Zeit im Hintergrund läuft?
Du erstellst eine Quest. Egal welche ID
Setzt einen Haken bei Start Game Enabled und bei scripts wählst du dann den script von oben aus.
Diesen musst du aber als "quest Script" kennzeichnen.
Das geht ganz einfach.
Da wo du den script editioeren kannst also nachdem du auf die 3 punkte gedrückt hast. wählste oben rechts anstatt object script einfach quest script aus und speicherst.

Soll ich sämtliche Rauten ebenfalls im Script lassen?[/quote]
Wie schmelz schon schrieb alles hinter ";" ist nicht relevant.
Die # habe ich nur gesetzt damit du siehst dass da drunter ein kommentar kommt.
 
Das sollte "gespawned" heißen :lol:
Ic denke,ein 24h-Package mit "Sleep" in der AI des NPCs sollte da ausreichen. Man könnte auch einfach das von Henantier kopieren, nur mit einer anderen Ziel-REF für das Bett ;)
 
Henantier ist kein geeignetes Beispiel dafür. Im schlafenden Zustand ist er so gescriptet, dass bei Aktivierungen eine Messagebox erscheint und bei Schlägen seitens des Spielers stirbt er automatisch. Mit dem Package hat das bichts zu tun. Ein Schlaf-Package ist schon richtig, aber zusätzlich müsste man noch sowas wie "setGhost" oder "setUnconscious" benutzen, damit er die Schläge des Spielers ignoriert.
 
Ich meinte ja auch nur Henantiers Package;) setUnconscious wird wahrscheinlich nicht passen, da ich jetzt einfach mal vermute, der Schlafende soll als Vampirnahrung dienen und dann wird das Aussaugen wahrscheinlich nicht mehr gehen:? Aber setGhost reicht ja auch völlig^^
 
  • Like
Reaktionen: rushman
ich habe mir so ein haus erstellt mit einem Folter-altar(kopie des opferaltar).
ich wollte npc foltern(dass sie da schlafen und wenn man sie angreift schreien also eben schmerzschreie:) bis sie tot sind und nicht aufstehen und sich nicht wehren oder weglaufen)also will ich mir einen zauber erstellen (sowas änliches wie deaths Folterkammer´s zauber entführen)die sie in Folter-altar bett spawnen (dass sie eben schlafen) sie können nach 2 stunden wieder aufstehen:).Es soll aber immer nur 1 entführt werden.Kann mir jemand bitte den ganzen Skript schicken? Ich bin Anfänger im skirpten:)(ich hab ehrlich noch nie geskirptet ;)).
 
Zuletzt bearbeitet:
Moin Moin,

nach längerer Absitinenz bin ich auch mal wieder mit ein paar Fragen da.

Die erste hat nur indirekt mit Scipting zu tun.
Meiner bescheidenen Meinung nach müsste doch ein Häckchen bei "Initially Disabled" ein Objekt "disablen", solange ich keine weiteren Anweisung per Scipt definiere, richtig? Bei mir scheint sich eine testweise aufgestellte Tonne wehement dagegen zu wehren zu verschwinden.

Zweitens:
Sollte sich nun erstens klären, und meine Objekte wirklich disabled sein, müssen sie ja nun wieder auftauchen. Ein Script dafür hätte ich, aber es funktioniert nicht. Woran liegt's? ( Ich vermute ja es ist die Zeitangabe und bei "begin GameMode" bin ich mir auch nicht sicher...)
Code:
scn MCDaylightTestBarrel

begin GameMode

     if ( Gamehour > 19 ) && (Gamehour < 7 )
      Barreltest.disable
       elseif ( gamehour > 7 ) && ( gamehour < 19 )
        Barreltest.enable
     endif
end

Mit freundlichen Grüßen

-- Edit: Bevor ihr euch die Mühe macht und antwortet. Ich versuch erstmal das PI mal zu speichern und nicht nur das Script.
Ich glaub das wird helfen :roll:

-- Edit #2: Ok. Hat sich soeben aufgeklärt. Ich habe immer nur das Script gespeichert, das PI aber nicht. Kommt davon wenn
man zu faul ist, das CS zu schließen...
 
Zuletzt bearbeitet:
Dir ist aber schon klar, dass Du das CS nicht schließen musst?
Speichern reicht völlig aus. Das CS zum Speichern zu schließen wäre spätestens bei häufigem Speichern extrem nervig.
 
Ja. Eben. Ich schließe das CS nicht. Aber ich habe schlicht und einfach vergessen, im CS zu speichern. Aus Refelx hab ich grade ebend zufällig das CS geschlossen und ich wurde gefragt, ob ich speichern will. Da wurde es mir klar.

Ich hab jetzt aber doch ein neues Problem. Meine Tonne erscheint nicht wieder. Sie verschwindet wie ihr aufgetragen um 7 Uhr morgens - ich habe es grad nur beim herumprobieren in die Richtung hinbekommen, Schritt 2 wird sein, dass es um 7 erscheint - aber erscheint nicht mehr.

Code:
scn MCDaylightTestBarrel

begin GameMode

	if ( Gamehour > 7 ) && (Gamehour < 19 )
           Barreltest.disable
	  elseif ( gamehour > 19 ) && ( gamehour < 7 )
	   Barreltest.enable
     endif
end
 
Code:
scn MCDaylightTestBarrel
  begin GameMode
  if ( Gamehour > 7 ) && (Gamehour < 19 )
    Barreltest.disable
  elseif ( gamehour > 19 ) [B][COLOR=Red]||[/COLOR][/B] ( gamehour < 7 )
    Barreltest.enable
  endif
end
Dein
Code:
elseif ( gamehour > 19 ) && ( gamehour < 7 )
kann nicht funktionieren, da das heißen würde, dass 19 < x < 7 gilt.
x, also gamehour, kann schlecht gleichzeitig größer 19 und kleiner 7 sein.;)
Es muss entweder größer 19 (20, 21, 22, 23, 24, ...) oder (die zwei senkrechten Striche) kleiner 7 (6, 5, 4, 3, 2, 1, 0, ...) sein.
 
ich habe mir so ein haus erstellt mit einem Folter-altar(kopie des opferaltar).
ich wollte npc foltern(dass sie da schlafen und wenn man sie angreift schreien also eben schmerzschreie:) bis sie tot sind und nicht aufstehen und sich nicht wehren oder weglaufen)also will ich mir einen zauber erstellen (sowas änliches wie deaths Folterkammer´s zauber entführen)die sie in Folter-altar bett spawnen (dass sie eben schlafen) sie können nach 2 stunden wieder aufstehen:).Es soll aber immer nur 1 entführt werden.Kann mir jemand bitte den ganzen Skript schicken? Ich bin Anfänger im skirpten:)(ich hab ehrlich noch nie geskirptet ;)).
 
ich habe mir so ein haus erstellt mit einem Folter-altar(kopie des opferaltar).
ich wollte npc foltern(dass sie da schlafen und wenn man sie angreift schreien also eben schmerzschreie:) bis sie tot sind und nicht aufstehen und sich nicht wehren oder weglaufen)also will ich mir einen zauber erstellen (sowas änliches wie deaths Folterkammer´s zauber entführen)die sie in Folter-altar bett spawnen (dass sie eben schlafen) sie können nach 2 stunden wieder aufstehen:).Es soll aber immer nur 1 entführt werden.Kann mir jemand bitte den ganzen Skript schicken? Ich bin Anfänger im skirpten:)(ich hab ehrlich noch nie geskirptet ;)).
 
Ich habe mir [-]so[/-] ein Haus erstellt, mit einem Folter-Altar (Kopie des Opferaltars).
Ich wollte NPC's foltern (Sie sollen da schlafen und, wenn man sie angreift, schreien, also eben Schmerzschreie, bis sie tot sind und nicht mehr aufstehen und sich nicht wehren oder weglaufen). Also will ich mir einen Zauber erstellen (sowas Ähnliches wie Deaths Folterkammer´s "Zauber entführen"), der sie im Folter-Altar-Bett spawnen lässt (also damit sie schlafen). Sie sollen nach 2 Stunden wieder aufstehen können. Es soll aber immer nur möglich sein, einen zu entführen. Kann mir jemand bitte den ganzen Skript schicken? Ich bin Anfänger im Skripten (ich hab ehrlich gesagt noch nie geskriptet).

Ich habe mal Deinen kompletten Beitrag korrigiert und alles rot angestrichen (wenn ich nichts übersehen habe), was ich verbessert habe (20 (!) Minuten habe ich jetzt für diesen Beitrag gebraucht). Ich hoffe, Du siehst ein, dass Du so keine Hilfe erwarten kannst. Das ist geradezu eine Zumutung. Außerdem brauchst Du nicht Smileys an unpassenden Stellen zu verwenden. Allgemein braucht man eigentlich keine Smileys, außer wenn man evtl. etwas betonen möchte.

Auszug aus den Forenregeln schrieb:
Beim Verfassen von Beiträgen ist auf korrekte deutsche Rechtschreibung und Grammatik zu achten. Dazu sollte ein Text vor dem Veröffentlichen auf Fehler überprüft werden. Rechtschreib- und Tippfehler sind unvermeidbar, aber der Respekt vor den Anderen erfordert, dass man sie auf ein Minimum reduziert, um das Lesen und Verstehen von Beiträgen möglichst zu erleichtern.

Hast Du das gelesen?
Außerdem brauchst Du dasselbe nicht 3 mal zu schreiben. Wenn Du sicher bist, wirklich übergangen zu werden (1-2 Seiten nichts zu Dir geschrieben worden), kannst Du nochmal drauf aufmerksam machen.
Ich weiß, dass niemand perfekt ist, aber man kann sich ja Mühe geben.

MfG.
 
Zuletzt bearbeitet: