Construction Set Skriptthread zum Construction Set

Hallo!

Ich bräuchte mal wider eure Hilfe! Ich möcht einen Script, der mir, wenn ich
xDarkBlade2 angelegt und gezogen hab, xDarkBlade2 entfernt, xDarkBlade hinzufügt und anlegt und zieht.
Wenn ich xDarkBlade dann wieder wegsteckt, soll es verschwinden, und xDarkBlade2 soll hinzugefügt und ausgerüstet (nicht gezogen) werden.

Ich hoffe ihr könnt mir helfen,
danke!!!
 
@Tach810i
Ich würde dir gerne helfen, aber ich weiß den Befehl nicht, der abfragt, ob der Player eine Waffe gezogen hat oder nicht. Würde mich aber auch mal interessieren. :)

@all
Ein Script bräuchte ich aber auch noch. Ich habs mal alleine versucht aber obwohl der Mist sich speichern lässt, klappt ingame gar nichts.

Also das Script liegt auf einer Tür. Aktiviert nun der Player die Tür, soll erstmal abgefragt werden, ob er einen bestimmten Schlüssel im Inventar hat. Wenn ja, soll eine MessageBox fragen:
"Was wollt ihr tun?" Antworten:
"Die Tür öffnen"
"Die Tür abschließen"
"Nichts"
Bei Auswahl eins soll die Tür ganz normal activated werden.
Bei Auswahl zwei soll die Tür mit Level 100 gelockt werden.
Bei Auswahl drei soll natürlich gar nix passieren.

Hat der Player den Schlüssel nicht, soll ebenfalls eine Messagebox auftauchen, Inhalt etwa:
"Ihr seid hier unbefugt eingedrungen!"
Dann sollen drei Gegner auftauchen, die den Player (und NUR den Player) sofort angreifen sollen. Und das soll JEDESMAL geschehen, wenn der Player ohne Schlüssel die Tür aktiviert.
Ich denke, hier mit PlaceAtMe zu arbeiten wäre nicht so gut, da dieser Befehl da die Savegames aufbläht. Also leere Cell mit Boden, Marker und Kreas. Bei Aktivierung Kreas zum Player, nach deren Tod wieder zurück zum Marker und Resurrecten. Richtig? ;)

Aktiviert nun ein anderer Actor oder eine Kreatur die Tür und hat den Schlüssel im Inventar soll die Tür einfach nur aufgehen (Messageboxen nicht die können die ja glaube ich gar nicht verarbeiten). Hat er sie nicht, sollen wieder die Gegner erscheinen und NUR DIESEN Actor/Krea angreifen.

So, das sollte erstmal reichen. :-D

MfG
Blacklands

PS: Ich hab zwar jetzt OBSE aber wenn möglich lasst bitte OBSE-Commands aus dem Script raus.
 
Zuletzt bearbeitet:
@Tach810i:
Einen ausgerüsteten Gegenstand kannst du mit GetEquipped abfragen.

@Blacklands:
Nur ein Ansatz und keine Garantie.

Code:
scn ...

short button
short right

begin OnActivate
if ( IsActionREF player == 1 ) && ( player.getitemcount [Schlüssel-ID] >= 1 ) && ( right == 0 )
messagebox "Was wollt ihr tun?" ,"Die Tür öffnen.", "Die Tür abschließen.", "Nichts."
set right to 1
elseif (IsActionREF player == 1 ) && ( player.getitemcount [Schlüssel-ID] == 0 ) && ( right == 0)
messagebox "Ihr seid hier unbefugt eingedrungen!"
[ID-Kreatur1].moveto player
[ID-Kreatur2].moveto player
[ID-Kreatur3].moveto player
[ID-Kreatur1].startcombat player
[ID-Kreatur2].startcombat player
[ID_Kreatur3].startcombat player
elseif ( IsActionREF player == 0 ) && ( getitemcount [Schlüssel-ID] >= 1 ) 
activate
elseif ( IsActionREF player == 0 ) && ( getitemcount [Schlüssel-ID] == 0 )
;Hier fehlt mir der Teil gerade. Da muss wohl eine weitere Variable her.
endif
end

begin GameMode
set button to GetButtonPressed
if right == 1
  if button == 0
  activate
  set right to 0
  elseif button == 1
  [ID-Tür].lock 100
  set right to 0
  elseif button == 2
  set right to 0
  endif
endif

Musst halt noch die IDs ersetzen und ein Script auf die Kreaturen legen, dass dafür sorgt, dass sie nach dem Sterben zurück in die Cell (X-Marker) teleportiert und wiederbelebt werden.
Wie der Teil bei einem NPC aussieht, weiß ich gerade nicht und natürlich weiß ich auch nicht, ob der Teil bisher so klappt.
 
Zuletzt bearbeitet:
Ich probier's auch mal:

Code:
scn Scriptname

short triggered
short button
ref target

Begin OnActivate
If ( isactionRef player == 1 ) && ( player.getitemcount [SchlüsselID] >= 0 ) && ( triggered == 0 )
Message "Ihr seid hier unbefugt eingedrungen!"
[KreaturREF1].enable
[KreaturREF2].enable
[KreaturREF3].enable
[KreaturREF1].moveto player
[KreaturREF2].moveto player
[KreaturREF3].moveto player
[KreaturREF1].startcombat player
[KreaturREF2].startcombat player
[KreaturREF3].startcombat player
set triggered to 1
Elseif ( isactionRef player == 1 ) && ( player.getitemcount [SchlüsselID] >= 1 )
Messagebox "Was wollt ihr tun?" "Die Tür öffnen" "Die Tür abschließen" "Nichts"
Else
set target to getactionref

If ( target.getitemcount [SchlüsselID] >= 0 ) && ( triggered == 0 )
[KreaturREF1].enable
[KreaturREF2].enable
[KreaturREF3].enable
[KreaturREF1].moveto target
[KreaturREF2].moveto target
[KreaturREF3].moveto target
[KreaturREF1].startcombat target
[KreaturREF2].startcombat target
[KreaturREF3].startcombat target
set triggered to 1
Elseif ( target.getitemcount [SchlüsselID] >= 1 )
activate
Endif

Endif
End

Begin GameMode
If ( triggered == 1 ) && ( [KreaturREF1].getdead == 1 ) && ( [KreaturREF2].getdead == 1 ) && ( [KreaturREF3].getdead == 1 )
[KreaturREF1].resurrect
[KreaturREF2].resurrect
[KreaturREF3].resurrect
[KreaturREF1].disable
[KreaturREF2].disable
[KreaturREF3].disable
set triggered to 0
Endif

set button to getbuttonpressed
If button == 0
activate
Elseif button == 1
lock 100
Endif
End
Sieht ein bisschen üppig aus im Gegensatz zum Resultat.
Ich hoffe, ich habe nichts übersehen.
 
Code:
scn Scriptname

short triggered
short button
ref target

Begin OnActivate
If ( isactionRef player == 1 ) && ( player.getitemcount [SchlüsselID] == 0 )   && ( triggered == 0 ) ; Wenn du >= 0 schreibst, wird das zweite nie eintresen
Message "Ihr seid hier unbefugt eingedrungen!"
[KreaturREF1].enable
[KreaturREF2].enable
[KreaturREF3].enable
[KreaturREF1].moveto player
[KreaturREF2].moveto player
[KreaturREF3].moveto player
[KreaturREF1].startcombat player
[KreaturREF2].startcombat player
[KreaturREF3].startcombat player
set triggered to 1
Elseif ( isactionRef player == 1 ) && ( player.getitemcount [SchlüsselID] >= 1 )
Messagebox "Was wollt ihr tun?" "Die Tür öffnen" "Die Tür abschließen" "Nichts"
Else
set target to getactionref

If ( target.getitemcount [SchlüsselID] >= 0 ) && ( triggered == 0 )
[KreaturREF1].enable
[KreaturREF2].enable
[KreaturREF3].enable
[KreaturREF1].moveto target
[KreaturREF2].moveto target
[KreaturREF3].moveto target
[KreaturREF1].startcombat target
[KreaturREF2].startcombat target
[KreaturREF3].startcombat target
set triggered to 1
Elseif ( target.getitemcount [SchlüsselID] >= 1 )
activate
Endif

Endif
End

Begin GameMode
If ( triggered == 1 ) && ( [KreaturREF1].getdead == 1 ) && ( [KreaturREF2].getdead == 1 ) && ( [KreaturREF3].getdead == 1 )
[KreaturREF1].resurrect
[KreaturREF2].resurrect
[KreaturREF3].resurrect
[KreaturREF1].disable
[KreaturREF2].disable
[KreaturREF3].disable
set triggered to 0
Endif

set button to getbuttonpressed
If button == 0
activate
Elseif button == 1
lock 100
Endif
End
 
Danke für's korriieren. Doch selbst da ist noch etwas unpassend.
Code:
If ( target.getitemcount [SchlüsselID] >= 0 ) && ( triggered == 0 )
;Diese Condition ist falsch, es müsste so heißen:
If ( target.getitemcount [SchlüsselID] == 0 ) && ( triggered == 0 )

Außerdem verstehe ich nicht, warum du die Abfrage "triggered == 0" im ersten If-block weggenommen hast. Das führt nämlich nur zu seltsamen Ergebnissen.
Es könnte ja durchaus sein, dass die 3 Kreaturen noch leben, und der Spieler die Tür ein zweites mal aktiviert. Dann würden die Kreaturen lebendig zu ihm teleportiert - das sähe komisch aus und zudem wäre es ungewollt.
 
Danke!

Und wie kann ich abfragen, ob die Waffe nicht nur angelegt, sondern auch noch gezogen ist?

Und noch eine Frage: Wie kann befehlen, dass die Waffe vom Player gezogen werden soll?
 
Danke!

Und wie kann ich abfragen, ob die Waffe nicht nur angelegt, sondern auch noch gezogen ist?

Und noch eine Frage: Wie kann befehlen, dass die Waffe vom Player gezogen werden soll?
Danke Knochkeule. Jetzt fehlt mir nur noch einer!
_________________________________________________________________

Ich habe das Skript jetzt geschrieben. (Frage oben besteht weiterhin!!!)
Code:
*/ claw01 = ausgefahren, gespreizt [normal]
*/ claw02 = eingefahren, eng [schleichen]
scn xxcclaw

short xxvar1

begin GameMode
 if ( player.issneaking ) && ( player.getequipped claw01 ) && ( player.isweaponout claw01 ) && ( xxvar1 == 0 )
  player.removeitem claw01 1
  player.additem claw02 1
  player.equip claw02
  */player.waffe ziehen claw02
  set xxvar1 to 1
 elseif ( player.issneaking 0 ) && ( player.getequipped claw02 ) && ( player.isweaponout claw02 ) && ( xxvar1 == 1)
  player.removeitem claw02
  player.additem claw02
  player.equip claw02
  */player.waffe ziehen claw01
  set xxvar1 to 0
 elseif ( player.issneaking 0 ) && ( player.getequipped claw02 ) && ( player.isweaponout claw02 0 ) && ( xxvar1 == 1)
  player.removeitem claw02
  player.additem claw02
  player.equip claw02
  set xxvar1 to 0
 elseif ( player.issneaking 0 ) && ( player.getequipped claw02 0 ) && ( player.isweaponout claw02 0 ) && ( xxvar1 == 1)
  player.removeitem claw02
  player.additem claw02
  set xxvar1 to 0
 endif
end

Könnt ihr mir sagen, ob das so gehen würde (wenn ich den einen Befehl hätte)???
->[vor allem das mit dem "actor.isweaponount id 0" und "actor.issneaking 0"]

DANKE!!!
 
Zuletzt bearbeitet von einem Moderator:
Also da muss auf alle Fälle noch ein Operator rein. Sowas wie "player.issneaking 0" dürfte nicht klappen, da sollte in dem Fall noch == rein, also "player.issneaking == 0".

Um die Waffe zu ziehen, würde ich mal "SetAlert 1" probieren.

Code:
*/ claw01 = ausgefahren, gespreizt [normal]
*/ claw02 = eingefahren, eng [schleichen]
scn xxcclaw

short xxvar1

begin GameMode
 if ( player.issneaking == 1 ) && ( player.getequipped claw01 == 1) && ( player.isweaponout claw01 == 1 ) && ( xxvar1 == 0 )
  player.removeitem claw01 1
  player.additem claw02 1
  player.equip claw02
  player.SetAlert 1
  set xxvar1 to 1
 elseif ( player.issneaking == 0 ) && ( player.getequipped claw02 == 1) && ( player.isweaponout claw02 == 1) && ( xxvar1 == 1)
  player.removeitem claw02
  player.additem claw02
  player.equip claw02
  player.SetAlert 1
  set xxvar1 to 0
 elseif ( player.issneaking == 0 ) && ( player.getequipped claw02 == 1 ) && ( player.isweaponout claw02 == 0 ) && ( xxvar1 == 1)
  player.removeitem claw02
  player.additem claw02
  player.equip claw02
  set xxvar1 to 0
 elseif ( player.issneaking == 0 ) && ( player.getequipped claw02 == 0 ) && ( player.isweaponout claw02 == 0 ) && ( xxvar1 == 1)
  player.removeitem claw02
  player.additem claw02
  set xxvar1 to 0
 endif
end

So könnte es klappen.
 
SetAlert geht nicht, ich hab es einmal mit SetAlert 0 versucht, gibt aber keine Reaktion, was sich einfach dadurch erklärt, das Oblivion nicht das Spielergehirn kontrolliert.

SetAlert hat ja eigentlich die Aufgabe den Npc in einen Alarmzustand zu versetzen, das mit dem Waffe ziehen ist nur ein Nebeneffekt.
 
Morgen!


Ich hab mir mal Gedanken gemacht und denke, dass es so kläppen KÖNNTE (außer das mit dem Waffe ziehen):

Code:
scn xxClawSkriptMain

short xxsneak
short xxitem1
short xxitem2
short xxequip1
short xxequip2
short xxout
short xxvar

begin GameMode
 set xxsneak to player.issneaking
 set xxitem1 to player.getitemcount claw01
 set xxitem2 to player.getitemcount claw02
 set xxequip1 to player.equipped claw01
 set xxequip2 to player.equipped claw02
 set xxout to player.isweaponout
end

begin GameMode
 if ( xxsneak == 1 ) && ( xxitem1 >= 1 ) && ( xxequip1 == 1 ) && ( xxout == 1 ) && ( xxvar == 0 )
  set xxvar to 1
  player.removeitem claw01 1
  player.additem claw02 1
  player.equip claw02
  player.[waffe ziehen]
 elseif ( xxsneak == 1 ) && ( xxitem1 >= 1 ) && ( xxequip1 == 1 ) && ( xxout == 0 ) && ( xxvar == 0 )
  set xxvar to 1
  player.removeitem claw01 1
  player.additem claw02 1
  player.equip claw02
 elseif ( xxsneak == 1 ) && ( xxitem1 >= 1 ) && ( xxequip1 == 0 ) && ( xxvar == 0 )
  set xxvar to 1
  player.removeitem claw01 1
  player.additem claw02 1
 endif

 if ( xxsneak == 0 ) && ( xxitem2 >= 1 ) && ( xxequip2 == 1 ) && ( xxout == 1 ) && ( xxvar == 1 )
  set xxvar to 0
  player.removeitem claw02 1
  player.additem claw01 1
  player.equip claw01
  player.[waffe ziehen]
 elseif ( xxsneak == 0 ) && ( xxitem2 >= 1 ) && ( xxequip2 == 1 ) && ( xxout == 0 ) && ( xxvar == 1 )
  set xxvar to 0
  player.removeitem claw02 1
  player.additem claw01 1
  player.equip claw01
 elseif ( xxsneak == 0 ) && ( xxitem2 >= 1 ) && ( xxequip2 == 0 ) && ( xxvar == 1 )
  set xxvar to 0
  player.removeitem claw02 1
  player.additem claw01 1
 endif
end

Bitte zeigt mir meine Fehler, sofern ich welche macht hab (Ich denke mal schon!:cry:, wenn nicht, is super :lol:)

___________________________________________________________


Könnt ihr mir helfen, ein Skript zu schreiben, das folgendes machen soll:
Wenn der Spieler <player> die Waffen claw02 gesogen hat
<player.equipped claw02 && player.isweaponout>, dann:
Jetzt kommts:
Ich möchte, dass dann, wenn der spieler schleicht und nicht gesehen
wird (von niemandem, außer von Kreaturen, bei denen ist es egal) und
einen NPC (nicht Kreatur) angreift, dass der dann stirbt <.kill>!

Ich hoffe, ihr könnt mir hierbei helfen!!! :)
 
Eine Überprüfung kannst du dir ja schon mal durch das CS holen. Einfach den Teil mit Waffe ziehen weg lassen (weil da noch kein richtiger Befehl ist und er auf alle Fälle meckern würde) und im CS mal einfügen und speichern. Syntaxfehler würden dann schonmal aufgezeigt.

So auffallen würde mir nichts. Ich denke zwar, dass ein GameMode-Block reichen würde, aber das sollte kaum einen Unterscheid machen.
 
zeile 24:
player.additem claw02 1

meckert er von wegen equip ist eine unbekannte funktion/variable,
dabei is die doh gar nicht in der zeile. Zeile 15 genau das gleiche! :(

-_____________________________________________________-

Code:
scn xxClawSkriptMain

short xxsneak
short xxitem1
short xxitem2
short xxequip1
short xxequip2
short xxout
short xxvar

begin GameMode
 set xxsneak to player.issneaking
 set xxitem1 to player.getitemcount claw01
 set xxitem2 to player.getitemcount claw02
 set xxequip1 to player.getequipped claw01
 set xxequip2 to player.getequipped claw02
 set xxout to player.isweaponout
end

begin GameMode
 if ( xxsneak == 1 ) && ( xxitem1 >= 1 ) && ( xxequip1 == 1 ) && ( xxout == 1 ) && ( xxvar == 0 )
  set xxvar to 1
  player.removeitem claw01 1
  player.additem claw02 1
  player.equipitem claw02 1
  player.[waffe ziehen]
 elseif ( xxsneak == 1 ) && ( xxitem1 >= 1 ) && ( xxequip1 == 1 ) && ( xxout == 0 ) && ( xxvar == 0 )
  set xxvar to 1
  player.removeitem claw01 1
  player.additem claw02 1
  player.equipitem claw02 1
 elseif ( xxsneak == 1 ) && ( xxitem1 >= 1 ) && ( xxequip1 == 0 ) && ( xxvar == 0 )
  set xxvar to 1
  player.removeitem claw01 1
  player.additem claw02 1
 endif

 if ( xxsneak == 0 ) && ( xxitem2 >= 1 ) && ( xxequip2 == 1 ) && ( xxout == 1 ) && ( xxvar == 1 )
  set xxvar to 0
  player.removeitem claw02 1
  player.additem claw01 1
  player.equipitem claw01 1
  player.[waffe ziehen]
 elseif ( xxsneak == 0 ) && ( xxitem2 >= 1 ) && ( xxequip2 == 1 ) && ( xxout == 0 ) && ( xxvar == 1 )
  set xxvar to 0
  player.removeitem claw02 1
  player.additem claw01 1
  player.equipitem claw01
 elseif ( xxsneak == 0 ) && ( xxitem2 >= 1 ) && ( xxequip2 == 0 ) && ( xxvar == 1 )
  set xxvar to 0
  player.removeitem claw02 1
  player.additem claw01 1
 endif
end

So gehts jetzt, (ohne waffe ziehen).
Fehler waren:
Befehl [actor].equipped heißt: [actor].getequipped bei [actor].equip [id] muss ans Ende noch eine 1 und nicht equip sondern equipitem.


-_____________________________________________________-

Noch eine ganz andere Frage:
was ist hier falsch???:
Code:
scn xxPushSpellSkript

short xxtimer

begin ScriptEffektStart
 set xx timer to 10
 set xx timer to timer - GetSecondsPassed
 player.PushActorAway Target 100
 if xxtimer == 7
  target.kill
 endif
 if xxtimer == 5
  target.PlayMagicShaderVisuals effectAtronachStorm
  target.resurrect
 endif
 if timer == 0
  target.StopMagicShaderVisuals effectAtronachStorm
  set timer to 10
 endif
end


-_____________________________________________________-
 
Zuletzt bearbeitet von einem Moderator:
Code:
scn xxPushSpellSkript

short xxtimer
short step
ref target

begin ScriptEffe[COLOR="Red"]c[/COLOR]tStart
 Set target to GetSelf
 set [COLOR="red"]xxtimer[/COLOR] to 10
 player.PushActorAway Target 100
 end

Begin ScriptEffectUpdate
 set [COLOR="red"]xxtimer[/COLOR] to [COLOR="Red"]xxtimer[/COLOR] - GetSecondsPassed

 if xxtimer <= 7 && step == 0
  target.kill
  Set step to 1
 endif
 if xxtimer <= 5 && step == 1
  target.PlayMagicShaderVisuals effectAtronachStorm
  target.resurrect
  Set step to 2
 endif
 if timer <= 0 && step == 2
  target.StopMagicShaderVisuals effectAtronachStorm
  set timer to 10
  set step to 0
 endif
end

Begin ScriptEffectFinish
End
 
Wie kann ich im Script den Befehl "Waffe ziehen" machen???

_____________________________

set target to getself ??! Ich will doch einen Gegner wegschießen! Soll das so?

_____________________________
 
Zuletzt bearbeitet von einem Moderator:
Was das mit dem "set target to geself" angeht:
Ja, das soll so. So weißt du dem Ziel eine Reference zu, die du mit PushActorAway auswählen kannst. Und da das ganze mit jedem Ziel passieren soll, ist das halt so gemacht. Sozusagen eine universelle Variable.

Zu dem anderen Punkt:
Da hab ich keine Ahnung. Ich fürchte, da gibt es keinen Befehl für. Zumindest kann ich so durch überlegen keinen in der Liste finden.