Construction Set [MW] script frage

Lichtkrieger

Abenteurer
ich habe folgenden Script gemacht funzt der so:
Code:
Begin ZZ_Mine_Arbeiter_01

If ( GetJournalIndex "ZZ_Vul-Mine_01" < 10 )
Disable
else
If ( GetJournalIndex "ZZ_Vul-Mine_01" >= 10 )
Enable
AiFollow Player 0 0 0 0 0
EndIf
EndIf

if ( ZZ_Mine_Arbeiter_02 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0
Else
if ( ZZ_Mine_Arbeiter_03 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0
Else
if ( ZZ_Mine_Arbeiter_04 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0
Journal ZZ_Vul-Mine_01 15

EndIf
EndIf
EndIf

If ( ZZ_Mine_Arbeiter_02 -> OnDeath == 1 )
If ( ZZ_Mine_Arbeiter_03 -> OnDeath == 1 )
If ( ZZ_Mine_Arbeiter_04 -> OnDeath == 1 )
Journal ZZ_Vul-Mine_01 20
PcExpell "Gilde"
EndIf
EndIf
EndIf
end
das Script Liegt auf alle drei Arbeiter sie sollen mir folgen und wen sie ein beszimmten punkt erreicht haben soll ich ein tagebuch eintrag bekommen.
Es muss aber nur min. einer oder mehr das Ziel erreichen.
Wen alle sterben soll ich ein anderer Tagebucheintrag bekommen und ich soll dann aus der Gilde fliegen.
 
Zuletzt bearbeitet:
versuchs statt mit

...
Else
if (...)

mal mit

Elseif


--->

Begin ZZ_Mine_Arbeiter_01

If ( GetJournalIndex "ZZ_Vul-Mine_01" < 10 )
Disable

ElseIf ( GetJournalIndex "ZZ_Vul-Mine_01" >= 10 )
Enable
AiFollow Player 0 0 0 0 0
EndIf
EndIf

if ( ZZ_Mine_Arbeiter_02 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0

ElseIf ( ZZ_Mine_Arbeiter_03 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0

ElseIf ( ZZ_Mine_Arbeiter_04 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0
Journal ZZ_Vul-Mine_01 15

EndIf
EndIf
EndIf

If ( ZZ_Mine_Arbeiter_02 -> OnDeath == 1 )
If ( ZZ_Mine_Arbeiter_03 -> OnDeath == 1 )
If ( ZZ_Mine_Arbeiter_04 -> OnDeath == 1 )
Journal ZZ_Vul-Mine_01 20
PcExpell "Gilde"
EndIf
EndIf
EndIf
end
 
Ka. ist nur ein vorschlag ---> das einzige was mir hier so aufgefallen ist


WICHTIG!

Ein paar Endifs gehören dann auch weg^^


Begin ZZ_Mine_Arbeiter_01

If ( GetJournalIndex "ZZ_Vul-Mine_01" < 10 )
Disable

ElseIf ( GetJournalIndex "ZZ_Vul-Mine_01" >= 10 )
Enable
AiFollow Player 0 0 0 0 0
EndIf


if ( ZZ_Mine_Arbeiter_02 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0

ElseIf ( ZZ_Mine_Arbeiter_03 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0

ElseIf ( ZZ_Mine_Arbeiter_04 -> GetDistance "ZZ_Mine_Flagge_01" <= 500 )
AiWander 50 5 10 0 0 0 0 0 0 0 0
Journal ZZ_Vul-Mine_01 15

EndIf

If ( ZZ_Mine_Arbeiter_02 -> OnDeath == 1 )
If ( ZZ_Mine_Arbeiter_03 -> OnDeath == 1 )
If ( ZZ_Mine_Arbeiter_04 -> OnDeath == 1 )
Journal ZZ_Vul-Mine_01 20
PcExpell "Gilde"
EndIf
EndIf
EndIf
end
 
Code:
begin ZZ_Mine_Arbeiter_01

if ( GetJournalIndex ZZ_Vul-Mine_01 < 10 )
   disable
elseif ( GetJournalIndex ZZ_Vul-Mine_01 >= 10 )
   Enable
   AiFollow Player 0 0 0 0 0
endif

if ( ZZ_Mine_Arbeiter_02 -> GetDistance ZZ_Mine_Flagge_01 <= 500 )
   AiWander 50 5 10 0 0 0 0 0 0 0 0
elseif ( ZZ_Mine_Arbeiter_03 -> GetDistance ZZ_Mine_Flagge_01 <= 500 )
   AiWander 50 5 10 0 0 0 0 0 0 0 0
elseif ( ZZ_Mine_Arbeiter_04 -> GetDistance ZZ_Mine_Flagge_01 <= 500 )
   AiWander 50 5 10 0 0 0 0 0 0 0 0
   GetJournalIndex ZZ_Vul-Mine_01 15
endif

if ( ZZ_Mine_Arbeiter_02 -> OnDeath == 1 )
   if ( ZZ_Mine_Arbeiter_03 -> OnDeath == 1 )
      if ( ZZ_Mine_Arbeiter_04 -> OnDeath == 1 )
         Journal ZZ_Vul-Mine_01 20
         PcExpell "Gilde"
      endif
   endif
endif

end

Ich weiss jetz garnicht mehr was ich alles verändert hab (Ein paar Klammern - die if-Strukturen verbessert, etc.) aber ich schätz so klappts zumindest von den if-Strukturen, bei den Klammern war ich mir nicht sicher, aber ich gehe davon aus, dass man die an diesen Stellen nicht braucht. Wenn die Befehle und der Rest stimmt, sollte es so eigentlich funktionieren.

Und falls du das mit dem if und elseif und endif noch nicht verstanden hast, hab ich das gleich mal in eine Form gebracht, in der man sehr gut erkennen kann, aus welchen Strukturen das besteht.

Gewöhn dir das mit dem Einrücken doch einfach mal an: Ich seh ja, dass du zuviele endifs usw. hast, das würde dir nicht passieren, wenn du das ganze in einer sauberen Form hättest - und uns würde es auch helfen deinen Code zu verstehen...
 
Zuletzt bearbeitet:
Danke, das mit If habe ich verstanden (es wird nur 1mal abgefragt) ich wollte, dann nur schon wie oben, wo liegt der unterschied wen man
Else
If (...)
oder ElseIf benutzt. Was hatt das für vorteile.
 
Das hat den Vorteil dass ich mir bei ersterem sicher bin, dass es klappt und dass es platzsparender ist...

Und if heisst nicht zwingen "es wird nur einmal" abgefragt, if heisst "wenn" und wenn die bedingung in Klammern erfüllt ist, dann wird das was zwischen if und endif steht ausgeführt, das kann auch jeder Frame sein - ich versteh nicht wo das prob is... ich empfehl dir aber mal Scripting for Dummies, wenns um tes3 geht, da wird das denk ich auch nochmal erklärt - auf jedenfall ein pdf, das jeder Scripter haben sollte.
 
Drück lieber den Knopf, das hilft mir mehr ;)
(Dachte schon jetz kommt ein Post alá: "Soso, du hältst mich also für einen Dummi?" ;) - nein tu ich nicht - wie gesagt sollte das Ding jeder im Repertoire haben)
 
  • Like
Reaktionen: Lichtkrieger