Construction Set Skriptthread zum Construction Set

@ Gildur:

Danke, für deine Hilfe. Wird sofort ausprobiert. :)

Konkreteres: Es passierte einfach gar nichts. Nicht mal die Kontrolle wurde entzogen.

mfg
Kahmul
 
@ Gildur:

Dein Skript funktioniert nicht. Es lässt sich nicht abspeichern.
Er sagt, dass ein "endif" in Zeile 19, also bei dem "else", fehlt. Ich habe statt dem "else" dann ein "endif" eingefügt, weis nicht, ob es so richtig war. :-D
Aber funktionieren tut es trotzdem nicht. Also es passiert einfach gar nichts.

mfg
Kahmul
 
Wenn du das "else" einfach durch ein "endif" ersetzt, würde es mich wundern, wenn das CS das Skript überhaupt speichert. Eigentlich ist das Skript von der Syntax her richtig. Wie sieht es denn bei dir aus?

@ Anti_Held:
Zu meinem Skript: Worauf hast du das Skript überhaupt gelegt?
 
  • Like
Reaktionen: Kahmul
@ Diarrhoe:

Das Skript sie momentan so aus und es lässt sich auch abspeichern, bloß mit "else" eben nicht (habe die Stelle, wo das "else" ausgetauscht wurde, rot markiert):

Code:
scn Scriptname

short step
float timer

Begin OnActivate
If step == 0
    <Feuer1Ref>.enable
    set timer to 5
    DisablePlayerControls
    set step to 1
endif
end 

Begin GameMode

If step == 0
    return
[COLOR=Red]endif[/COLOR]
    If Timer >= 0
        set timer to timer - getsecondspassed
    endif

    If (Timer <= 3) && (step == 1)
        <Feuer2Ref>.enable
        <Feuer1Ref>.disable
        set step to 2
    endif
    If (Timer <= 1) && (step == 2)
        <Feuer2Ref>.disable
        <Feuer3Ref>.enable
        set step to 3
    endif
    If (Timer <= 0) && (step == 3)
        setstage <Quest> xx
        EnablePlayerControls
        Player.MoveTo <MarkerID>
    endif
endif
end

mfg
Kahmul
 
Schreib
Code:
Elseif  Step == 1

Oder lass die Abfrage mit == 0 weg und schreib stattdessen nur If Step == 1 ohne Return.
Es muss ja eigentlich nicht unbedingt "Returnt" werden, da es wenn es nicht eins ist, eh nicht funktioniert.
 
  • Like
Reaktionen: Kahmul
@ SirTroy: Laut CS-Wiki ist eine Schreibweise in dieser Art etwas performancefreundlicher...

@ Kahmul: So hast du aber eigentlich ein "endif" zuviel.
 
  • Like
Reaktionen: Kahmul
Nun scheint wenigstens der Anfang des Skripts zu funktionieren.
Alles bis zum GameMode-Block wird ausgeführt, aber dann nichts mehr.
Hier nochmal das Skript:

Code:
scn Scriptname

short step
float timer

Begin OnActivate
If step == 0
    <Feuer1Ref>.enable
    set timer to 5
    DisablePlayerControls
    set step to 1
endif
end 

Begin GameMode

If Step == 1
    If Timer >= 0
        set timer to timer - getsecondspassed
    endif

    If (Timer <= 3) && (step == 1)
        <Feuer2Ref>.enable
        <Feuer1Ref>.disable
        set step to 2
    endif
    If (Timer <= 1) && (step == 2)
        <Feuer2Ref>.disable
        <Feuer3Ref>.enable
        set step to 3
    endif
    If (Timer <= 0) && (step == 3)
        setstage <Quest> xx
        EnablePlayerControls
        Player.MoveTo <MarkerID>
    endif
endif
end
mfg
Kahmul
 
Code:
scn Scriptname

short step
float timer

Begin OnActivate
If step == 0
    <Feuer1Ref>.enable
    set timer to 5
    DisablePlayerControls
    set step to 1
endif
end 

Begin GameMode

If Step == 1
    If Timer >= 0
        set timer to timer - getsecondspassed
    endif

    If (Timer <= 3) && (step == 1)
        <Feuer2Ref>.enable
        <Feuer1Ref>.disable
        [COLOR="Red"]set step to 2[/COLOR]
    endif
    If (Timer <= 1) && (step == 2)
        <Feuer2Ref>.disable
        <Feuer3Ref>.enable
        [COLOR="#ff0000"]set step to 3[/COLOR]
    endif
    If (Timer <= 0) && (step == 3)
        setstage <Quest> xx
        EnablePlayerControls
        Player.MoveTo <MarkerID>
    endif
endif
end

Wenn du Step höher als 2 setzt, musst du am anfang schreiben: If Step >= 1. Zurzeit setzt du beim ersten dann Step zu 2, dann stimmt die Abfrage Step == 1 aber nicht mehr und der gameMode Block endet. Nimm am besten eine andere Variable oder lass die Step abfragen weg.
 
  • Like
Reaktionen: Kahmul
Ist wohl etwas untergegangen.
Was 3. angeht, habe ich einfach einen Zurückstoß-Script auf die Waffe gelegt habe, sodass der Gegner immer so einen halben Meter zurückfliegt, wenn die Waffe trifft.

Ich bräucht 3 Scripts

  1. Wenn ich eine Triggerzone durchquere, soll ein Gegner (= Boss) von seiner ursprünglichen Größe (0.6) auf eine gewaltige Größe von etwa 1.2 bzw. 1.3 anwachsen. Allerdings immer schön etappenweise, d.h. etwa 0.25 pro Sekunde.
  2. Der oben genannte Gegner soll außerdem noch pro Sekunde etwas stärker werden, sodass Geschwindigkeit wirklich wichtig ist. Sobald er voll ausgewachsen ist, soll er nämlich (fast) unüberwindbar sein. Wie geht es, dass ab einer bestimmten Zeit immer eine weitere Eigenschaft (= Zauber) hinzugefügt wird?
  3. Ein Gegner soll eine Waffe habe, welche jeglichen Block überwindet. Soll heißen, dass jeder Schlag den Gegner zurücktaumeln lässt.
Danke schon einmal im Vorraus.

:bye:
 
Ich wollte fragen wie man es macht
dass jede Woche(am Tag nach Sundas) eine bestimmte Menge
an Septimen vom Spieler-"Konto" abgezogen wird.
 
@ DarkRuler:
1. Das kannst du so schreiben:
Code:
scn name

short triggered
float timer
float scale

Begin onTrigger player

if triggered == 0
 set triggered to 1
endif

end

Begin GameMode

if triggered == 1
 if timer > 0
  set timer to (timer - getSecondsPassed)
 else
  set scale to <NPC-Ref>.getScale
  <NPC-Ref>.setScale to (scale + 0.12)
  set timer to 0.5
  if <NPC-Ref>.getScale >= 1.3
   set triggered to 2
  endif
 endif
endif

end

2. Ich weiß jetzt nicht genau, was du damit meinst... Du kannst dafür "addSpell" benutzen, wenn es ein Zauber oder eine Eigenschaft sein soll. Du kannst aber auch "setAV strength" benutzen.


@ Lord4Ever:
Das müsstest du mit einem Quest-Skript machen:
Code:
scn name

long day
short done

Begin GameMode

if done == 0
 set done to 1
 set day to GameDaysPassed
else
 if GameDaysPassed >= (day + 7)
  set done to 0
  player.removeItem Gold001 x
 endif
endif

end
 
Zuletzt bearbeitet:
Diarrhoe schrieb:
Ich weiß jetzt nicht genau, was du damit meinst... Du kannst dafür "addSpell" benutzen, wenn es ein Zauber oder eine Eigenschaft sein soll. Du kannst aber auch "setAV strength" benutzen.

Ich meinte damit, dass pro Sekunde eine Eigenschaft hinzugefügt wird. Aber die Idee mit setAV strength ist auch gut.
Nur wie baue ich das jetzt in den Script ein, denn du hast ja jetzt eine Art Endlosschleife, welche nur bei einer Bedingung abbricht.

Könnte man es gegebenfalls so machen?
XXX ist eine schwächere Variante von YYY und je nach Größe würde es immer stärker werden.
Code:
scn name

short triggered
float timer
float scale

Begin onTrigger player

if triggered == 0
 set triggered to 1
endif

end

Begin GameMode

if triggered == 1
 if timer > 0
  set timer to (timer - getSecondsPassed)
 else
  set scale to <NPC-Ref>.getScale
  <NPC-Ref>.setScale to (scale + 0.12)
  set timer to 0.5

  if <NPC-Ref>.getScale = 0.7
    <NPC-Ref>.addSpell XXX
  endif

  if <NPC-Ref>.getScale = 0.8
    <NPC-Ref>.addSpell YYY
    <NPC-Ref>.removeSpell XXX
  endif
...
  if <NPC-Ref>.getScale >= 1.3
   set triggered to 2
  endif
 endif
endif

end
 
Ich würde es vielleicht lieber so machen, dass der Boss die ganze Zeit seinen Zauberspruch behält und der Zauberspruch in folge eines Scripts stärker wird.

Heißt du müsstest einen neuen Zauberspruch mit ScriptEffect erstellen der beispielsweise die vergangene Zeit in einen Multiplikator einfügt und so stärker wird. Sonst könnte ich mir vorstellen, dass es Probleme von der Ki beim wechseln des Spruches geben könnte.
 
  • Like
Reaktionen: TheDarkRuler
Bei mir solls so gehn:
Er liest ein Buch,dann wird das Buch gelöscht(disable),
und dann wird immer das Geld abgezogen.

Nur weiß ich net wie man das macht :(
 
Code:
scn Scriptname

Begin OnActivate Player
activate
BuchID.disable
palyer.removeitem gold001 Geldmenge
end
Bin mir aber nicht sicher, ob das so funktioniert.


Ich habe auch noch eine Frage: Gibt es einen Script Befehl um herauszufinden, wer eine Waffe ausrüstet und zwar allgemein? Kann auch ruhig OBSE sein.

Wenn außerdem noch jemand eine Antwort auf meine letzte Frage hat (Befehl um das Handelsmenü aufzurufen) wäre auch super :)