Construction Set Skriptthread zum Construction Set

Hi,

ich will in meiner Mod so ein Ayleidenteil aufbauen, das hochgeht sobald man es betritt. Habe dafür unter Activator dieses Teil genommen auf dem bereits ein Script lag, das aber ingame nicht funktioniert. Brauch man da irgendwelche Collisionsboxen oder Triggerboxen? Wenn ja wie funktioniert das?
 
"Ayleidenteil" ist jetzt nicht die beste Beschreibung für ein beliebiges Objekt. Die ID wäre hier hilfreicher. Ich gehe aber mal davon aus, dass du damit den "FloorSmasher" meinst. Für den brauchst du einen Trigger. Da verfährst du wie mit jedem anderen Trigger auch.
 
  • Like
Reaktionen: Nerrok
Einfach das gewünschte Objekt auswählen und einen Haken bei "Persistent Reference" machen. Dann auf den Trigger klicken und bei "Enable Parent"-->"Select Reference in Render Window" auf das eben als Persistent markierte Objekt doppelt klicken.
 
  • Like
Reaktionen: Nerrok
So, ich brauche auch noch einmal Hilfe ;)

Ich möchte, dass solange ein Gegner X lebt, die Gegner Y alle Z Sekunden wieder zum Leben entdeckt werden. Geht das?

:bye:
 
Dafür legst du auf Gegner X so ein Skript:
Code:
scn name

float timer

Begin GameMode

if getDead == 1
 return
endif

if timer >= 0
 set timer to (timer - getSecondsPassed)
else
 set timer to Z
 if <Y-Ref>.getDead == 1
  <Y-Ref>.resurrect 1
 endif
 <Y-Ref>.resetHealth ;wenn Y nicht tot ist, werden seine HP trotzdem wieder hochgesetzt
 ...
endif

end
 
Ich habe auch noch ne Frage: Was für einen Befehl brauche ich denn, damit in einem Script abgefragt wird, ob ein gewisser Effekt schon abgespielt wurde?

Ein Freund von mir hat das Script für mich geschrieben und als ich es dann im CS erstellen wollte bekam ich eine Fehlermeldung.

Das hier ist das Script:

short played

begin gamemode
if killed== X (gesamtzahl der gegner die getötet sein müssen,also alle)
if played==0
HalleRechteObereEckeREF.pme REHE
HalleLinkeObereEckeREF.pme REHE
HalleRechteUntereEckeREF.pme REHE
HalleLinkeUntereEckeREF.pme REHE
set played to 1
endif
endif
end

Und die Fehlermeldung sagt, dass dem CS der Befehl "played" unbekannt ist.

Was muss ich statt dessen für einen Befehl verwenden?

Edit: Moment, mir fällt gerade auf, dass ich nicht short played drüber geschrieben habe! Das wird der Fehler sein...

Edit: Noch eine 2. Frage:

Wie kann ich per Script einen zauber auf den Player sprechen, wenn etwas bestimmte erfüllt wurde? Mir geht es nur darum, wie ich den Zauber in ein Script einbinden muss.
 
Zuletzt bearbeitet:
Sorry, aber ich versteh das nicht :oops:
Was für eine ID muss ich für Y einsetzen?
Der macht bei mir immer so Fehlermeldungen wegen ungültigen IDs :cry:

Und kann der Script noch ergänzt werden, sodass beim Ableben von X alle Y sterben?

scn AALichfuerstMacht

float timer

Begin GameMode

if getDead == 1
return
endif

if timer >= 0
set timer to (timer - getSecondsPassed)
else
set timer to 10
if <Y-Ref>.getDead == 1
<Y-Ref>.resurrect 1
endif
<Y-Ref>.resetHealth ;wenn Y nicht tot ist, werden seine HP trotzdem wieder hochgesetzt
...
endif

end
 
Hi bei mir scheint immer ein Problem aufzutreten wenn ich den moveto befehl benutze, da rührt sich nämlich gar nichts.
Ich habe einen script vom CS wiki übernommen bloß meine Gegenstände eingesetzt. Der unterschied ist, dass ich statt einen Activaotr einen Felsen genommen habe.
Naja ich denke mein script ist gerade totaler mist. Könntet ihr mir sage wie ich es hinbekomme, dass ein normaler felsen direkt vor mir erscheint aber nicht auf oder unter mir sondern so 50 meter ( sprich 3500 Gameunits ) von mir weg erscheint.
Schonmal danke im vorraus
 
@DarkRuler:
Das "<Y-Ref>" ist nur ein Platzhalter. Da musst du die Referenz des Objektes eintragen. Wenn Y beim Tod von X sterben soll, kannst du das so schreiben:
Code:
Begin onDeath player

<Y-Ref>.kill

end
Den Block kannst du in das obige Skript einfügen.


@V0g3I:
Welches Skript hast du aus dem CS-Wiki genommen und wie sieht es jetzt aus?
Ich nehme an, du meinst den Summon Object-Artikel aus dem CS-Wiki. Ich weiß jetzt nicht, was an dem Skript fehlerhaft ist, aber du kannst es ansonsten noch über die "Math Library ESM" versuchen.
 
"MoveTo" platziert das Objekt ja auch nicht unbedingt vor dem Spieler sondern achsenverschoben. "MoveTo player 0,0,125" platziert ein Objekt in etwa auf Kopfhöhe des Spielers. Wenn du etwas vor dem Spieler platzieren willst, musst du Sinus- und Kosinusfunktionen verwenden. Dafür kannst du das Skript verwenden, wie es bei Summon Object steht.
 
  • Like
Reaktionen: V0g3I
Hmm es klappt trotzdem nicht ich habe den script jetzt übernommen und nur die variablen ausgetauscht aber es klappt nicht. Das portal habe ich platziert und ihm die refid portal2 gegeben. Das portal ist ein activator.

Code:
scn 001summonportalscript

float pos
float ang ;(the measure of the angle, first deg, then radians)
float ang2 ;(ang^2) Just for convenience. Could use ang*ang directly.
float ang4 ;(ang^4) Just for convenience. Could use ang*ang*ang*ang directly.
float sign ;sign correction
float sin ;(sine of the angle)
float cos ;(cosine of the angle)

begin scriptEffectStart
        portal2.disable
end

begin scriptEffectFinish
        set sign to 1
    set ang to player.getAngle z
    if ang > 270
        set ang to ang - 360
    elseif ang > 90
        set ang to ang - 180
        set sign to -1
    endif
    set ang to 0.017453*ang 
    set ang2 to ang * ang
    set ang4 to ang2 * ang2
    set sin to sign*ang*(1 - 0.16605*ang2 + 0.00761*ang4)
    set cos to sign*(1 - 0.4967*ang2 + 0.03705*ang4)

       portal2.moveTo player 

    set pos to player.getPos x + 150*sin
    portal2.setPos x pos
    
    set pos to player.getPos y + 150*cos
    portal2.setPos y pos

    set pos to player.getPos z + 55 ;--Tweak offset to put object on ground.
    portal2.setPos z pos

    
    set ang to player.getAngle z + 90
    portal2.setAngle x 0
    portal2.setAngle y 0
    portal2.setAngle z ang

      portal2.enable
end
 
Hi,
hab ein kleines Skript-Problem. Wenn man eine Tür aktiviert, wird eine Variable abgefragt, die Bedingung ist erfüllt, dann kommt eine Messagebox mit einer Auswahlmöglichkeit und zuletzt wird der Player nach dem wegklicken der MB mit moveto weggebracht. Die Messagebox kommt allerdings immer wieder, hab auch versucht die Variable zu ändern, aber sie geht trotzdem nicht weg, sozusagen eine Endlosschleife. Weiß einer woran das liegt? :huh:
 
Hmm versuchsmal so , das script legst du auf deine Tür

Code:
scn scriptname

short abfrage
short button


begin onactivate
    if abfrage == 0
        messagebox "deintext" ,"deine auswahl1", "deineauswahl2"
        set abfrage to 1
    endif
end

begin gamemode
    set button to getbuttonpressed
        if button == 0
            ;deine action die passieren soll
        elseif button == 1
            ; deine andere action die passieren soll
    endif
    player.moveto deinziel
end

probier es mal so aus.
 
  • Like
Reaktionen: killerkarotte
Wird die Variable nach dem "moveTo" geändert? Auf den Spieler wirkt "moveTo" nämlich wie ein "return". Also
Code:
set <Variable> to x
player.moveTo <Ref>
statt
Code:
player.moveTo <Ref>
set <Variable> to x


@V0g3I: Kann ich mir jetzt nicht erklären. Versuch es stattdessen mal mit der Math Library. Die funktioniert bei mir immer.
 
  • Like
Reaktionen: killerkarotte
Hallo, ich habe ein Script Problem. In meinem Script steht

..xyREF.cast zauberID player

Aber es passiert einfach nix. Der Rest der zum Script gehört funzt aber einwandfrei. Das Script soll u.a. bewirken, dass ein Effekt in einem Raum erscheint und deshalb auf den Player gesprochen wird. Der Zauber hat keinen "materiellen" Effekt sondern nur einen visuellen. Den passenden Zauber dazu habe ich auch schon erstellt.

Was habe ich falsch gemacht??