Construction Set Skriptthread zum Construction Set

Ich hab mich jetzt auch mal an einem Script versuch

Code:
scn AAscript2 

short Button

Begin OnActivate player

set button to -1
MessageBox "Rüstkammer" , "Helm" "Harnisch" "Handschuhe" "Beinschinen" "Stiefel" "Schild"

End

Begin Gamemode

set button to GetButtonPressed
if ( button == 0 )
player.additem Yarn01 1 ; [COLOR="Red"]Testitem für den Ersten Button [/COLOR]
elseif ( button == 1 ) 
player.additem Yarn01 2 ;[COLOR="Red"]Testitem für den Zweiten Button[/COLOR]
elseif ( button == 2 )
player.additem Yarn01 3 ; [COLOR="Red"]Testitem für den Dritten Button[/COLOR]
elseif ( button == 3 )
player.additem Yarn01 4 ;[COLOR="Red"]Testitem für den Vierten Button[/COLOR]
elseif ( button == 4 )
player.additem Yarn01 5 ;[COLOR="Red"]Testitem für den Fünften Button[/COLOR]
elseif ( button == 5 )
player.additem Yarn6 ;[COLOR="Red"]Testitem für den Sechsten Button  [/COLOR][COLOR="Red"][/COLOR]
endif

end

End

Dann kommt aber immer die nachricht: End without matching Begin und ich als totaler Anfänger hab keinen Plan was das heißt. Kann mir jemand helfen?
 
Du hast am Ende zweimal "end" stehen, obwohl du nur eins brauchst. Außerdem ist "onActivate player" falsch. Das "player" kannst du weglassen und dafür "if isActionRef player == 1" benutzen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ichich
Danke, aber da ich noch ein totaler Anfänger bin, hab ich keine Ahnung wo ich das if isActionRef player == 1 hinsetzen muss
 
In den "onActivate"-Block.

Edit:
@ OblivionBee:
Ich habs jetzt nicht ausprobiert, aber du kannst es ja mal so versuchen:
Code:
scn name          [COLOR="Red"];ein Questskript[/COLOR]

short doonce
long n
float fQuestDelayTime

short state
short numActors
short count
ref actorRef

Begin GameMode

if doonce
 set n to 49
 set fQuestDelayTime to 0.001
endif

if onKeyDown n
 if state == 0
  set state to 1
  set numActors to player.getNumRefs 69 1
 endif
endif

if state
 set actorRef to player.getFirstRef 69 1
 label
 if count < numActors
  set count to (count + 1)
  if actorRef.getDistance player <= 1750       [COLOR="Red"];ca. 25 Meter[/COLOR]
   actorRef.setAV aggression 100
   actorRef.modDisposition player -100
   actorRef.startCombat player
  endif
  player.getNextRef 69 1
  goto
 else
  set state to 0
  return
 endif
endif

end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: SkyrimBee und ichich
In den "onActivate"-Block.

Edit:
@ OblivionBee:
Ich habs jetzt nicht ausprobiert, aber du kannst es ja mal so versuchen:
Code:
scn name          ;ein Questskript

short doonce
long n
float fQuestDelayTime

short state
short numActors
short count
ref actorRef

Begin GameMode

if doonce
 set n to 49
 set fQuestDelayTime to 0.001
endif

if onKeyDown n
 if state == 0
  set state to 1
  set numActors to getNumRefs 69 1
 endif
endif

if state
 label
 if count < numActors
  goto
 else
  set state to 0
  return
 endif
 set actorRef to getFirstRef 69 1
 set count to (count + 1)
 if actorRef.getDistance player <= 1750  ;ca. 25 Meter
  actorRef.setAV aggression 100
  actorRef.modDisposition player -100
  actorRef.startCombat player
 endif
endif

end
Was fürn Script-Typ ist das denn? Also Magiceffect, Object oder Quest? Und wo muss ich das drauflegen?
 
Zuletzt bearbeitet:
Oh, habs net gesehen:oops:

Also muss ich eine Quest mit dem Script erstellen und dann?
Wahrscheinlich im Spiel die Taste "N" drücken und dann werd ich gekillt?
 
Zuletzt bearbeitet:
werds gleich mal ausprobieren.

EDIT:
Also ich habe jetzt keine Queststages und Topics und so weiter eingefügt nur name priority (20) und das script. Das klappt aber nicht. Hab ich was falsch gemacht?
 
Zuletzt bearbeitet:
Du könntest 5 Variablen machen und 5 Werte benutzen.
Also sagen wir, wenn der 1ste Druckvesuch auf Schalter 1 geht, setzt du Variable 1 auf 1, bei Schalter 2 auf 2 usw.

Sorry, wenn ich grad keinen fertigen Script hinlege, aber hab' anderweitig zu tun :p
 
Ich mach mal ein Beispiel
Das sind die fünf Runden, wo man auf die Schalter drückt (vorrausgesetzt man muss überhaupt alle 5 drücken)

I
II
III
IV
V

Jeder dieser Schalter hat ein Feld, wo was rein kann.

I []
II []
III []
IV []
V []

Wenn man auf Schalter 1 drückt, kommt 1 rein. Auf 2, 2. Auf 3,3. Usw.

Also wenn ich jetzt 1,3,5,2,4 drücken würde, käme das.

I [1]
II [3]
III [5]
IV [2]
V [4]

Hoffe, es ist klar geworden.
 
Kann man den in den Skripts von Oblivion Felder erstellen? Ich dachte,diese Java-Funktion würde nicht untersützt werden... Oder ist es vllt mit OBSE möglich?
 
Achso,OK :)
Wäre cool gewesen,wenn es ginge - Hätte vor allem viel Platz gespart ;)
Naja ich denke,ich werd das Skript für die Schaltre hier rein editieren^^

Edit:
Ich glaube ,dass es mit 5 neu eingeführten Globals einfacher zu gestalten ist. Also Raistlin du erstellst 5 Globals
(Bsp.: "FirstPressed","SecondPressed","ThirdPressed","FourthPressed" und "FifthPressed")
Code:
scn Schalter1Script
short once

begin onactivate
If once==0
  If FirstPressed==0
  Set FirstPressed to 1

  ElseIf SecondPressed==0
  Set SecondPressed to 1

  ElseIf ThirdPressed==0
  Set ThirdPressed to 1

  ElseIf FourthPressed==0
  Set FourthPressed to 1

  ElseIf FifthPressed==0
  Set FifthPressed to 1
  endif
set once to 1
endif
end
Für die Skripts der anderen Schalter musst du dann einfach nur alle 1er in 2er ändern,dann alle in 3er usw...
Ich werd das Skript gleich mal ausprobieren und bescheid geben,obs klappt ;)

Edit2: So es klapp ganz hervorragend :) Hier noch ein Skript für einen Activator,der den Code überprüft:
Code:
scn SchalterControlScript

begin onactivate
if FirstPressed==4 && SecondPressed==2 && ThirdPressed==1 && FourthPressed==5 && FifthPressed==3
messagebox "Code richtig! 42153"
else
messagebox "Code falsch! Versucht es erneut"
set FirstPressed to 0
set SecondPressed to 0
set ThirdPressed to 0
set FourthPressed to 0
set FifthPressed to 0
set AAASchalter1ref.once to 0
set AAASchalter2ref.once to 0
set AAASchalter3ref.once to 0
set AAASchalter4ref.once to 0
set AAASchalter5ref.once to 0
endif
end
 
Zuletzt bearbeitet:
Hi,

ich brauche mal etwas Hilfe.

Und zwar will ich in meine Mod einbauen, das wenn man das Spiel anmacht und man in den Marktbezirk geht eine Person kommt, die nur kurz etwas sagt und dann einem einen Zettel gibt. Wie macht man das?