Construction Set Skriptthread zum Construction Set

Danke. Ich werde trotzdem noch eine zeit lang beim Oblivion CS bleiben und euch hier mit Fragen löchern und wahrscheinlich auch nerven (bitte verzeiht einem Noob). Mit dem scripten mach ich gute Fortschritte, aber ich kann mir mit meinem (noch) begrenzten Wissen nicht vorstellen, wie das Script eines Gegenstandes aussieht, der erst ab einem gewissen Questfortschritt (zB. Index 40) erscheinen soll. Eventuelle Vorschläge?
 
Code:
begin GameMode

if (getstage MeineQuest == 40)

Gegenstand.enable

endif

end
 
Irgendwas mache ich mit dem Gegenstand falsch. Es ist eine Notiz , 00Anvilhausnotiz2, aber wenn ich "00Anvilhausnotiz2.Enable" eingebe, ist das ein Syntax error...
 
Zuletzt bearbeitet:
Er erwartet eine ObjektID, nicht die EditorID ;)
Erstere kannst du nach einem Doppelklick auf das Objekt im Renderfenster, in der obersten Zeile vergeben. Danach muss nur noch dass Häkchen bei "Persistent Reference" gesetzt werden.
 
Der Weg zum Wissen ist ein langer...
Bei meinen Suchen hab ich zwar das Syntax [CallingRef].Enable gefunden, dass aber heißt, dass man die ObjektID eingeben muss wusste ich nicht...
Danke, ich hoffe, es funkt jetzt

Edit: nur um sicher zu gehen: die ObjektID gibt man im Referenzfenster bei Referenz EditorID ein, oder?
 
Zuletzt bearbeitet:
Meine Erfahrungen so allgemein zum Scripten

Nachdem ich die Grundkenntnisse dazu in Oblivion erlangt hatte. Zu mindestens die einfachen Dinge, dachte ich das könnte auch für Fallout gehen. Pustekuchen. Dem war nicht so. Zwar ist die Grundidee meist die Selbe, doch die Befehle werden doch irgendwie in anderem Zusammenhang benutzt. Bzw. da es bei Fallout ein anderes OBSE (FOSE) gibt, sind dort auch andere Befehle aufgetaucht oder andere wurden nicht erkannt.

Als dann NewVegas kam, war das Spiel wieder das selbe. Bekannte Befehle gab es nicht mehr oder hiessen anders. NVSE nutzt wieder viele andere Befehle.

Ich denke mal auch wenn ich Skyrim nicht habe das es dort auch ganz anders sein wird.

@ Froggy Ich weiss nicht ob du diesen CSE
http://forums.bethsoft.com/topic/1250150-rel-construction-set-extender/page__st__30
nutzt. Kann ich dir aber nur ans Herz legen. Da der Scripteditor unglaublich intelligent ist. Es wird einem sehr viel geholfen. Fehler werden beim Speichern schön aufgezeigt. Und es gibt im Gegensatz zum einfachen Editor viele tolle Funktionen. Aber nicht nur der Editor sondern das ganze CS wird komplett verbessert. Ach was rede ich. Es ist kein Vergleich zu vorher.

Zur ID
Die Id ist der Name des Objects (Damit du das Object im CS auch findest) welches der Idnummer ( Originale haben immer die 00 am Anfang) zugewisen ist. Dann gibt es noch den Objectnamen der im Spiel zu sehen ist. So ist jedes Object aufgebaut. Statics haben dagegen meist keinen Objectnamen.

Die besagte RefferenzId ist eine Bezeichnung die nur gebraucht wird, wenn das Object in einem Script oder über andere externe Aufrufe, Abfragen wie Packages und Topics genutzt wird. Dazu muss das Object auf Persidenz Refferenz gestellt sein.
Ist keine RefId vergeben oder das Kreuz nicht gesetzt, kommt die Fehlermeldung Referenzid nicht gefunden....

zu Befehlen. (Das hier- Ist übrigens ne geniale Seite dieses Ei. Kannte ich so auch noch nicht.)
http://www.egg-of-time.us/wiki/index.php?title=Oblivion:If
Zeigt so ziemlich das was du wissens olltest. Da es so gut wie in jedem Script vorkommt. Diese ganzen anderen Sachen die unter Funktionsbefehle stehen, sieht man eher selten. Aber interessant was alle so möglich ist.

@ Diarrhoe
Danke dir Diarrhoe für die tollen Erklärungen zu den Funktionen. Werde das mal ausprobieren. Denke mal in der Praxis versteht man das viel besser.

Leider hat das mit dem anderem Script für die Münze doch nicht geklappt. Trotz diesem Stepp stürzt Oblivion bei der Umwandlung der Münze ab. Habs jetzt auf alterstümliche Art über eine Quest gesteuert. Funktioniert tadellos.
 
Zuletzt bearbeitet:
Ich erwarte nicht, dass das Scripen bei Skyrim dasselbe sein wird wie bei Oblivion..doch das Grundsystem (vor allem Variablen, Parameter, If-Befehle,...) wird wohl für beide Spiele gelten, und davon versteh ich, obwohl ich mir mit Word schon 16 volle Seiten mit Erklärungen (hauptsächlich aus dem Ei-der-Zeit) zusammengeschrieben habe, noch wenig genug. Ich habe aber vor, mir Skyrim zum 16. Geburtstag zu schenken, und bis dahin hab ich noch 1 1/2 Monate Zeit, um den Großteil zu verstehen (Oder??).
Zu dem CSE: meinst du damit diese Seite oder eine verbesserte Version vom CS? Ich habe mir das nicht alles durchgelesen, weil ich kein großer Englischfan bin und leider (******* Schule) wichtiges zu tun habe.
Nichtsdestotrotz arbeite ich an einer Mod, wo man über eine kleine Quest in einen großen Raum kommt, wo sämtliche normalen Waffen und Rüstungen sind (vielleicht auch ein paar spezielle Amulette oder Sigil-Steine), falls einer zu faul ist, alles in verschiedenen Dungeons zusammen zu suchen bzw. zu kaufen. Darin möchte ich die ganzen Tutorials, die ich gemacht habe und machen werde einbauen. Auch wenn sich, ein halbes Jahr nachdem Skyrim erschienen ist, sowieso keiner mehr dafür interessieren wird...
 
Es handelt sich um eine Verbesserungsmodifikation mit Hilfe von OBSE für den CS. Du brauchst nicht die Seiten zu lesen. Gleich am Anfang kannst du die Modifikation herunterladen. Zu deiner Mod. Die Entwickler haben das schon gebaut. Es gibt mehrere TestCellen in dem Alles zu finden ist. Aber frag da mal im Thread für den CS. Hier ist ja der Scriptthread.
 
Zuletzt bearbeitet:
Soviel ich weiß ist das ein Cheat. Ich möchte das mal so aus Spaß und zum lernen etwas eleganter lösen. Aber wie du schon sagtest, gehört alles weitere nicht hierher...
 
Ok, hier mal wieder ne Scriptfrage:
Ich habe das Abacusskilltagebuch und eine eigene Rasse, die meiner Spielweise angepasst ist. Leider funkt das Teil nur mit den Standartrassen. Ich hab den Script zwar gefunden, habe aber noch keine Ahnung, wie man ihn so ändern kann, dass eine eigene Rasse auch akzeptiert wird. Es sollte aber möglich sein, oder?
Hier der Script:
ScriptName SDSkillDiaryScript


Short Button
Short CurrentMenu


Short Value1
Short Value2
Short Value3
Short Value4
Short Value5
Short Value6
Short Value7
Short Value8
Short VampireModifier
Short OriginGrayPrinceModifier


Short OriginGrayPrinceFix


Begin OnActivate


;If the SD system has not been initialised do so now.
If SDSkillDiaryQuest.Initialised == 0
;Start the processing for the book


StartQuest SDSkillDiaryQuest
EndIf


;Allow the skill diary to be picked up
Activate
End


Begin OnEquip
;Begin the menu


If SDSkillDiaryQuest.Initialised == 0
;The diary still needs to be initialised
StartQuest SDSkillDiaryQuest
Else
If OriginGrayPrinceFix == 0


;We need to check if the base info recorded is currently incorrect and fix this.
;This is being done here since the check will run much less often, and the main quest script is severely short on space.
Set OriginGrayPrinceFix to 1
If GetStageDone MS52 100


;The player has gotten the bonus so correct existing values.
Set SDSkillDiaryQuest.MCurrentCount to Player.GetBaseActorValue Block * SDSkillDiaryQuest.MBlock + Player.GetBaseActorValue Armorer * SDSkillDiaryQuest.MArmorer + Player.GetBaseActorValue HeavyArmor * SDSkillDiaryQuest.MHeavyArmor + Player.GetBaseActorValue Blunt * SDSkillDiaryQuest.MBlunt + Player.GetBaseActorValue Blade * SDSkillDiaryQuest.MBlade + Player.GetBaseActorValue Athletics * SDSkillDiaryQuest.MAthletics + Player.GetBaseActorValue HandToHand * SDSkillDiaryQuest.MHandToHand
Set SDSkillDiaryQuest.MCurrentCount to SDSkillDiaryQuest.MCurrentCount + Player.GetBaseActorValue Destruction * SDSkillDiaryQuest.MDestruction + Player.GetBaseActorValue Alteration * SDSkillDiaryQuest.MAlteration + Player.GetBaseActorValue Illusion * SDSkillDiaryQuest.MIllusion + Player.GetBaseActorValue Conjuration * SDSkillDiaryQuest.MConjuration + Player.GetBaseActorValue Mysticism * SDSkillDiaryQuest.MMysticism + Player.GetBaseActorValue Restoration * SDSkillDiaryQuest.MRestoration
Set SDSkillDiaryQuest.MCurrentCount to SDSkillDiaryQuest.MCurrentCount + Player.GetBaseActorValue Alchemy * SDSkillDiaryQuest.MAlchemy + Player.GetBaseActorValue Security * SDSkillDiaryQuest.MSecurity + Player.GetBaseActorValue Sneak * SDSkillDiaryQuest.MSneak + Player.GetBaseActorValue Acrobatics * SDSkillDiaryQuest.MAcrobatics + Player.GetBaseActorValue LightArmor * SDSkillDiaryQuest.MLightArmor + Player.GetBaseActorValue Marksman * SDSkillDiaryQuest.MMarksman
Set SDSkillDiaryQuest.MCurrentCount to SDSkillDiaryQuest.MCurrentCount + Player.GetBaseActorValue Mercantile * SDSkillDiaryQuest.MMercantile + Player.GetBaseActorValue Speechcraft * SDSkillDiaryQuest.MSpeechcraft


Set Value1 to Player.GetActorValue Vampirism / 5
Set Value2 to (SDSkillDiaryQuest.MBlade + SDSkillDiaryQuest.MBlock + SDSkillDiaryQuest.MAthletics) * 3
Set SDSkillDiaryQuest.MCurrentCount to SDSkillDiaryQuest.MCurrentCount - (SDSkillDiaryQuest.MAcrobatics + SDSkillDiaryQuest.MAthletics + SDSkillDiaryQuest.MDestruction + SDSkillDiaryQuest.MHandToHand + SDSkillDiaryQuest.MIllusion + SDSkillDiaryQuest.MMysticism + SDSkillDiaryQuest.MSneak) * Value1 - Value2


Set SDSkillDiaryQuest.CurrentLevel to (SDSkillDiaryQuest.MCurrentCount - SDSkillDiaryQuest.MBaseCount) / 10 + 2

Set SDSkillDiaryQuest.InvalidTillLevelUp to 1

EndIf
EndIf


If SDSkillDiaryQuest.InvalidTillLevelUp == 0
Set Value1 to (SDSkillDiaryQuest.MCurrentCount - SDSkillDiaryQuest.MBaseCount) % 10
Set Value2 to SDSkillDiaryQuest.CurrentLevel
MessageBox "Du hast %.0f/10tel von Level %.0f. Wähle ein Attribut um die Veränderungen der dazugehörenden Skills zu sehen", Value1, Value2, "Stärke", "Intelligenz", "Willenskraft", "Geschicklichkeit", "Schnelligkeit", "Konstitution", "Charisma", "Übersicht", "Fertig!"
Set CurrentMenu to 1
Else
Set CurrentMenu to 0
MessageBox "Du musst deine Hauptfertigkeiten zum nächsten Level weiterentwickeln bevor du mich verwenden kannst!"
EndIf
EndIf


End




Begin MenuMode 1026
;This will process the menus for the skill diary

Set Button to GetButtonPressed

If Button != -1
Set VampireModifier to Player.GetActorValue Vampirism / 5
Set OriginGrayPrinceModifier to 3 * GetStageDone MS52 100
If CurrentMenu == 1
;Attribute selection menu
If Button == 0
Set Value1 to Player.GetBaseActorValue Blade - SDSkillDiaryQuest.BBlade - OriginGrayPrinceModifier
Set Value2 to Player.GetBaseActorValue Blunt - SDSkillDiaryQuest.BBlunt
Set Value3 to Player.GetBaseActorValue HandToHand - SDSkillDiaryQuest.BHandToHand - VampireModifier
MessageBox "Stärke Skills: Schwertkampf - %.0f Stumpfe Waffen - %.0f Nahkampf - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 2


ElseIf Button == 1
;Intelligence
Set Value1 to Player.GetBaseActorValue Alchemy - SDSkillDiaryQuest.BAlchemy
Set Value2 to Player.GetBaseActorValue Conjuration - SDSkillDiaryQuest.BConjuration
Set Value3 to Player.GetBaseActorValue Mysticism - SDSkillDiaryQuest.BMysticism - VampireModifier
MessageBox "Intelligenz Skills: Alchemie - %.0f Beschwörung - %.0f Mystik - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 3

ElseIf Button == 2
;Willpower
Set Value1 to Player.GetBaseActorValue Alteration - SDSkillDiaryQuest.BAlteration
Set Value2 to Player.GetBaseActorValue Destruction - SDSkillDiaryQuest.BDestruction - VampireModifier
Set Value3 to Player.GetBaseActorValue Restoration - SDSkillDiaryQuest.BRestoration
MessageBox "Willenskraft Skills: Veränderung - %.0f Zerstörung - %.0f Wiederherstellung - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 4

ElseIf Button == 3
;Agility
Set Value1 to Player.GetBaseActorValue Marksman - SDSkillDiaryQuest.BMarksman
Set Value2 to Player.GetBaseActorValue Security - SDSkillDiaryQuest.BSecurity
Set Value3 to Player.GetBaseActorValue Sneak - SDSkillDiaryQuest.BSneak - VampireModifier
MessageBox "Geschicklichkeit Skills: Schütze - %.0f Sicherheit - %.0f Schleichen - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 5

ElseIf Button == 4
;Speed
Set Value1 to Player.GetBaseActorValue Acrobatics - SDSkillDiaryQuest.BAcrobatics - VampireModifier
Set Value2 to Player.GetBaseActorValue Athletics - SDSkillDiaryQuest.BAthletics - VampireModifier - OriginGrayPrinceModifier
Set Value3 to Player.GetBaseActorValue LightArmor - SDSkillDiaryQuest.BLightArmor
MessageBox "Schnelligkeit Skills: Akrobatik - %.0f Athletik - %.0f Leichte Rüstung - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 6

ElseIf Button == 5
;Endurance
Set Value1 to Player.GetBaseActorValue Armorer - SDSkillDiaryQuest.BArmorer
Set Value2 to Player.GetBaseActorValue Block - SDSkillDiaryQuest.BBlock - OriginGrayPrinceModifier
Set Value3 to Player.GetBaseActorValue HeavyArmor - SDSkillDiaryQuest.BHeavyArmor
MessageBox "Konstitution Skills: Waffenschmied - %.0f Blocken - %.0f Schwere Rüstung - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 7

ElseIf Button == 6
;Personality
Set Value1 to Player.GetBaseActorValue Illusion - SDSkillDiaryQuest.BIllusion - VampireModifier
Set Value2 to Player.GetBaseActorValue Mercantile - SDSkillDiaryQuest.BMercantile
Set Value3 to Player.GetBaseActorValue Speechcraft - SDSkillDiaryQuest.BSpeechcraft
MessageBox "Charisma Skills: Illusion - %.0f Handelsgeschick - %.0f Wortgewandtheit - %.0f", Value1, Value2, Value3, "Zurück", "Fertig"
Set CurrentMenu to 8

ElseIf Button == 7
;Summary
Set Value1 to SDSkillDiaryQuest.CurrentLevel
Set Value2 to Player.GetBaseActorValue Blade - SDSkillDiaryQuest.BBlade + Player.GetBaseActorValue Blunt - SDSkillDiaryQuest.BBlunt + Player.GetBaseActorValue HandToHand - SDSkillDiaryQuest.BHandToHand - VampireModifier - OriginGrayPrinceModifier
Set Value3 to Player.GetBaseActorValue Alchemy - SDSkillDiaryQuest.BAlchemy + Player.GetBaseActorValue Conjuration - SDSkillDiaryQuest.BConjuration + Player.GetBaseActorValue Mysticism - SDSkillDiaryQuest.BMysticism - VampireModifier
Set Value4 to Player.GetBaseActorValue Alteration - SDSkillDiaryQuest.BAlteration + Player.GetBaseActorValue Destruction - SDSkillDiaryQuest.BDestruction + Player.GetBaseActorValue Restoration - SDSkillDiaryQuest.BRestoration - VampireModifier
Set Value5 to Player.GetBaseActorValue Marksman - SDSkillDiaryQuest.BMarksman + Player.GetBaseActorValue Security - SDSkillDiaryQuest.BSecurity + Player.GetBaseActorValue Sneak - SDSkillDiaryQuest.BSneak - VampireModifier
Set Value6 to Player.GetBaseActorValue Acrobatics - SDSkillDiaryQuest.BAcrobatics + Player.GetBaseActorValue Athletics - SDSkillDiaryQuest.BAthletics + Player.GetBaseActorValue LightArmor - SDSkillDiaryQuest.BLightArmor - VampireModifier * 2 - OriginGrayPrinceModifier
Set Value7 to Player.GetBaseActorValue Armorer - SDSkillDiaryQuest.BArmorer + Player.GetBaseActorValue Block - SDSkillDiaryQuest.BBlock + Player.GetBaseActorValue HeavyArmor - SDSkillDiaryQuest.BHeavyArmor - OriginGrayPrinceModifier
Set Value8 to Player.GetBaseActorValue Illusion - SDSkillDiaryQuest.BIllusion + Player.GetBaseActorValue Mercantile - SDSkillDiaryQuest.BMercantile + Player.GetBaseActorValue Speechcraft - SDSkillDiaryQuest.BSpeechcraft - VampireModifier
MessageBox "Derzeitige Skillerhöhungen bis Level %.0f: Stärke - %.0f Intelligenz - %.0f Willenskraft - %.0f Geschicklichkeit - %.0f Schnelligkeit - %.0f Konstitution - %.0f Charisma - %.0f", Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, "Zurück", "Fertig"
Set CurrentMenu to 9


ElseIf Button == 8
;Done
Set CurrentMenu to 0
EndIf

ElseIf CurrentMenu >= 2 && CurrentMenu <= 9
;We are on one of the Attribute pages, or the Summary page (note that there was not enough room to pass a done button here so we can only go back)
If Button == 0
;Back
Set Value1 to (SDSkillDiaryQuest.MCurrentCount - SDSkillDiaryQuest.MBaseCount) % 10
Set Value2 to SDSkillDiaryQuest.CurrentLevel
MessageBox "Du hast %.0f/10tel von Level %.0f. Wähle ein Attribut um die Veränderungen der dazugehörenden Skills zu sehen", Value1, Value2, "Stärke", "Intelligenz", "Willenskraft", "Geschicklichkeit", "Schnelligkeit", "Konstitution", "Charisma", "Übersicht", "Fertig!"
Set CurrentMenu to 1

ElseIf Button == 1
;Done
Set CurrentMenu to 0

EndIf
EndIf
EndIf

End

Edit: sorry, dass das Teil mehr oder weniger in einer Wurst steht, ich kann mir den Grund dafür nicht erklären, da es doch, als ich es hier eingefügt habe in wunderbarer Gliederung stand (und beim bearbeiten noch immer steht)

EEdid: nach langer Suche hab ich ein zweites Script gefunden, wo auch die Rassen aufgeführt sind:
ScriptName SDQuestScript

Short Initialised
Short InitialisationStage
Short MCount
Short MBaseCount
Short MCurrentCount
Short SpecialCount
Float fQuestDelayTime
Short HasRunOnce
Short Button
Short CurrentMenu
Short SkillIncreases
Short Value1
Short Value2


Short CurrentLevel
Short CalcLevel
Short InvalidTillLevelUp


Short SkillCombat
Short SkillMagic
Short SkillStealth


;These variables record which is the specialisation
Short SpecialCombat
Short SpecialMagic
Short SpecialStealth


;These variables record the stat at the start of the level
Short BBlock
Short BArmorer
Short BHeavyArmor
Short BBlunt
Short BBlade
Short BAthletics
Short BHandToHand


Short BDestruction
Short BAlteration
Short BIllusion
Short BConjuration
Short BMysticism
Short BRestoration
Short BAlchemy


Short BSecurity
Short BSneak
Short BAcrobatics
Short BLightArmor
Short BMarksman
Short BMercantile
Short BSpeechcraft


;These variables record which stats are major stats
Short MBlock
Short MArmorer
Short MHeavyArmor
Short MBlunt
Short MBlade
Short MAthletics
Short MHandToHand


Short MDestruction
Short MAlteration
Short MIllusion
Short MConjuration
Short MMysticism
Short MRestoration
Short MAlchemy


Short MSecurity
Short MSneak
Short MAcrobatics
Short MLightArmor
Short MMarksman
Short MMercantile
Short MSpeechcraft


;Calculation vars
Short CBlock
Short CArmorer
Short CHeavyArmor
Short CBlunt
Short CBlade
Short CAthletics
Short CHandToHand


Short CDestruction
Short CAlteration
Short CIllusion
Short CConjuration
Short CMysticism
Short CRestoration
Short CAlchemy


Short CSecurity
Short CSneak
Short CAcrobatics
Short CLightArmor
Short CMarksman
Short CMercantile
Short CSpeechcraft






Begin GameMode


If HasRunOnce == 0
Set fQuestDelayTime to .01
Set HasRunOnce to 1
StopQuest SDSkillDiaryQuest
Return
EndIf


If Initialised == 1
;Every 2s check for a change to major skills
Set fQuestDelayTime to 2


If GetPCMiscStat 2 > SkillIncreases
Set SkillIncreases to GetPCMiscStat 2


Set MCurrentCount to Player.GetBaseActorValue Block * MBlock + Player.GetBaseActorValue Armorer * MArmorer + Player.GetBaseActorValue HeavyArmor * MHeavyArmor + Player.GetBaseActorValue Blunt * MBlunt + Player.GetBaseActorValue Blade * MBlade + Player.GetBaseActorValue Athletics * MAthletics + Player.GetBaseActorValue HandToHand * MHandToHand
Set MCurrentCount to MCurrentCount + Player.GetBaseActorValue Destruction * MDestruction + Player.GetBaseActorValue Alteration * MAlteration + Player.GetBaseActorValue Illusion * MIllusion + Player.GetBaseActorValue Conjuration * MConjuration + Player.GetBaseActorValue Mysticism * MMysticism + Player.GetBaseActorValue Restoration * MRestoration + Player.GetBaseActorValue Alchemy * MAlchemy
Set MCurrentCount to MCurrentCount + Player.GetBaseActorValue Security * MSecurity + Player.GetBaseActorValue Sneak * MSneak + Player.GetBaseActorValue Acrobatics * MAcrobatics + Player.GetBaseActorValue LightArmor * MLightArmor + Player.GetBaseActorValue Marksman * MMarksman + Player.GetBaseActorValue Mercantile * MMercantile + Player.GetBaseActorValue Speechcraft * MSpeechcraft


Set Value1 to Player.GetActorValue Vampirism / 5
Set Value2 to 3 * GetStageDone MS52 100
Set MCurrentCount to MCurrentCount - (MAcrobatics + MAthletics + MDestruction + MHandToHand + MIllusion + MMysticism + MSneak) * Value1 - (MBlade + MBlock + MAthletics) * Value2


Set CalcLevel to (MCurrentCount - MBaseCount) / 10 + 2
If CalcLevel > CurrentLevel
;The level has been locked the next level is now being calculated
Set CurrentLevel to CalcLevel


;Record each of the stats at the start of the level.
Set BBlock to Player.GetBaseActorValue Block - Value2
Set BArmorer to Player.GetBaseActorValue Armorer
Set BHeavyArmor to Player.GetBaseActorValue HeavyArmor
Set BBlunt to Player.GetBaseActorValue Blunt
Set BBlade to Player.GetBaseActorValue Blade - Value2
Set BAthletics to Player.GetBaseActorValue Athletics - Value1 - Value2
Set BHandToHand to Player.GetBaseActorValue HandToHand - Value1


Set BDestruction to Player.GetBaseActorValue Destruction - Value1
Set BAlteration to Player.GetBaseActorValue Alteration
Set BIllusion to Player.GetBaseActorValue Illusion - Value1
Set BConjuration to Player.GetBaseActorValue Conjuration
Set BMysticism to Player.GetBaseActorValue Mysticism - Value1
Set BRestoration to Player.GetBaseActorValue Restoration
Set BAlchemy to Player.GetBaseActorValue Alchemy


Set BSecurity to Player.GetBaseActorValue Security
Set BSneak to Player.GetBaseActorValue Sneak - Value1
Set BAcrobatics to Player.GetBaseActorValue Acrobatics - Value1
Set BLightArmor to Player.GetBaseActorValue LightArmor
Set BMarksman to Player.GetBaseActorValue Marksman
Set BMercantile to Player.GetBaseActorValue Mercantile
Set BSpeechcraft to Player.GetBaseActorValue Speechcraft


Set InvalidTillLevelUp to 0
EndIf
EndIf
EndIf
End




Begin MenuMode

If Initialised == 1
;Every 1s check for a change to major skills
Set fQuestDelayTime to 1


If GetPCMiscStat 2 > SkillIncreases
Set SkillIncreases to GetPCMiscStat 2


Set MCurrentCount to Player.GetBaseActorValue Block * MBlock + Player.GetBaseActorValue Armorer * MArmorer + Player.GetBaseActorValue HeavyArmor * MHeavyArmor + Player.GetBaseActorValue Blunt * MBlunt + Player.GetBaseActorValue Blade * MBlade + Player.GetBaseActorValue Athletics * MAthletics + Player.GetBaseActorValue HandToHand * MHandToHand
Set MCurrentCount to MCurrentCount + Player.GetBaseActorValue Destruction * MDestruction + Player.GetBaseActorValue Alteration * MAlteration + Player.GetBaseActorValue Illusion * MIllusion + Player.GetBaseActorValue Conjuration * MConjuration + Player.GetBaseActorValue Mysticism * MMysticism + Player.GetBaseActorValue Restoration * MRestoration + Player.GetBaseActorValue Alchemy * MAlchemy
Set MCurrentCount to MCurrentCount + Player.GetBaseActorValue Security * MSecurity + Player.GetBaseActorValue Sneak * MSneak + Player.GetBaseActorValue Acrobatics * MAcrobatics + Player.GetBaseActorValue LightArmor * MLightArmor + Player.GetBaseActorValue Marksman * MMarksman + Player.GetBaseActorValue Mercantile * MMercantile + Player.GetBaseActorValue Speechcraft * MSpeechcraft


Set Value1 to Player.GetActorValue Vampirism / 5
Set Value2 to 3 * GetStageDone MS52 100
Set MCurrentCount to MCurrentCount - (MAcrobatics + MAthletics + MDestruction + MHandToHand + MIllusion + MMysticism + MSneak) * Value1 - (MBlade + MBlock + MAthletics) * Value2


Set CalcLevel to (MCurrentCount - MBaseCount) / 10 + 2
If CalcLevel > CurrentLevel
;The level has been locked the next level is now being calculated
Set CurrentLevel to CalcLevel


;Record each of the stats at the start of the level.
Set BBlock to Player.GetBaseActorValue Block - Value2
Set BArmorer to Player.GetBaseActorValue Armorer
Set BHeavyArmor to Player.GetBaseActorValue HeavyArmor
Set BBlunt to Player.GetBaseActorValue Blunt
Set BBlade to Player.GetBaseActorValue Blade - Value2
Set BAthletics to Player.GetBaseActorValue Athletics - Value1 - Value2
Set BHandToHand to Player.GetBaseActorValue HandToHand - Value1


Set BDestruction to Player.GetBaseActorValue Destruction - Value1
Set BAlteration to Player.GetBaseActorValue Alteration
Set BIllusion to Player.GetBaseActorValue Illusion - Value1
Set BConjuration to Player.GetBaseActorValue Conjuration
Set BMysticism to Player.GetBaseActorValue Mysticism - Value1
Set BRestoration to Player.GetBaseActorValue Restoration
Set BAlchemy to Player.GetBaseActorValue Alchemy


Set BSecurity to Player.GetBaseActorValue Security
Set BSneak to Player.GetBaseActorValue Sneak - Value1
Set BAcrobatics to Player.GetBaseActorValue Acrobatics - Value1
Set BLightArmor to Player.GetBaseActorValue LightArmor
Set BMarksman to Player.GetBaseActorValue Marksman
Set BMercantile to Player.GetBaseActorValue Mercantile
Set BSpeechcraft to Player.GetBaseActorValue Speechcraft


Set InvalidTillLevelUp to 0
EndIf
EndIf
EndIf
End


Begin MenuMode 1026
;The book is always open during initialisation


If Initialised == 0
If InitialisationStage == 0
Set Button to GetButtonPressed
If CurrentMenu == 0
MessageBox "Hallo!! Ich bin Abacus das Skill Tagebuch. Ich werde Dich über Deine Entwicklung im Detail auf dem laufenden halten. Doch zunächst möchte ich mehr über Deine Hauptfertigkeiten und Deine Spezialisierung erfahren.", "Na klar immer doch!"
Set CurrentMenu to 1
Return
ElseIf CurrentMenu == 1
If Button == -1
Return
EndIf
Set CurrentMenu to 0
EndIf


Set Value1 to Player.GetActorValue Vampirism / 5
Set Value2 to 3 * GetStageDone MS52 100
Set BBlock to Player.GetBaseActorValue Block - Value2
Set BArmorer to Player.GetBaseActorValue Armorer
Set BHeavyArmor to Player.GetBaseActorValue HeavyArmor
Set BBlunt to Player.GetBaseActorValue Blunt
Set BBlade to Player.GetBaseActorValue Blade - Value2
Set BAthletics to Player.GetBaseActorValue Athletics - Value1 - Value2
Set BHandToHand to Player.GetBaseActorValue HandToHand - Value1


Set BDestruction to Player.GetBaseActorValue Destruction - Value1
Set BAlteration to Player.GetBaseActorValue Alteration
Set BIllusion to Player.GetBaseActorValue Illusion - Value1
Set BConjuration to Player.GetBaseActorValue Conjuration
Set BMysticism to Player.GetBaseActorValue Mysticism - Value1
Set BRestoration to Player.GetBaseActorValue Restoration
Set BAlchemy to Player.GetBaseActorValue Alchemy


Set BSecurity to Player.GetBaseActorValue Security
Set BSneak to Player.GetBaseActorValue Sneak - Value1
Set BAcrobatics to Player.GetBaseActorValue Acrobatics - Value1
Set BLightArmor to Player.GetBaseActorValue LightArmor
Set BMarksman to Player.GetBaseActorValue Marksman
Set BMercantile to Player.GetBaseActorValue Mercantile
Set BSpeechcraft to Player.GetBaseActorValue Speechcraft

Set InitialisationStage to 1
EndIf


If InitialisationStage == 1
;Get Race bonuses
If GetPCIsRace Argonian
Set CAlchemy to 5
Set CBlade to 5
Set CHandToHand to 5
Set CIllusion to 5
Set CMysticism to 5
Set CAthletics to 10
Set CSecurity to 10


ElseIf GetPCIsRace Breton
Set CAlchemy to 5
Set CAlteration to 5
Set CIllusion to 5
Set CConjuration to 10
Set CMysticism to 10
Set CRestoration to 10


ElseIf GetPCIsRace DarkElf
Set CAthletics to 5
Set CBlunt to 5
Set CLightArmor to 5
Set CMarksman to 5
Set CMysticism to 5
Set CBlade to 10
Set CDestruction to 10


ElseIf GetPCIsRace HighElf
Set CAlchemy to 5
Set CConjuration to 5
Set CIllusion to 5
Set CAlteration to 10
Set CDestruction to 10
Set CMysticism to 10


ElseIf GetPCIsRace Imperial
Set CBlade to 5
Set CBlunt to 5
Set CHandToHand to 5
Set CHeavyArmor to 10
Set CMercantile to 10
Set CSpeechcraft to 10


ElseIf GetPCIsRace Khajiit
Set CAthletics to 5
Set CBlade to 5
Set CLightArmor to 5
Set CSecurity to 5
Set CSneak to 5
Set CAcrobatics to 10
Set CHandToHand to 10


ElseIf GetPCIsRace Nord
Set CArmorer to 5
Set CBlock to 5
Set CRestoration to 5
Set CBlade to 10
Set CBlunt to 10
Set CHeavyArmor to 10


ElseIf GetPCIsRace Orc
Set CHandToHand to 5
Set CArmorer to 10
Set CBlock to 10
Set CBlunt to 10
Set CHeavyArmor to 10


ElseIf GetPCIsRace Redguard
Set CLightArmor to 5
Set CHeavyArmor to 5
Set CMercantile to 5
Set CAthletics to 10
Set CBlade to 10
Set CBlunt to 10


ElseIf GetPCIsRace WoodElf
Set CAcrobatics to 5
Set CAlteration to 5
Set CLightArmor to 5
Set CAlchemy to 10
Set CMarksman to 10
Set CSneak to 10


Else
Set InitialisationStage to 0
Set CurrentMenu to 0
MessageBox "Ich weiss nur etwas über Standardrassen, tut mir leid."
StopQuest SDSkillDiaryQuest
Return
EndIf


Set InitialisationStage to 2
EndIf


If InitialisationStage == 2
;Begin auto detection
Set MBlock to 0
Set MArmorer to 0
Set MHeavyArmor to 0
Set MBlunt to 0
Set MBlade to 0
Set MAthletics to 0
Set MHandToHand to 0


Set MDestruction to 0
Set MAlteration to 0
Set MIllusion to 0
Set MConjuration to 0
Set MMysticism to 0
Set MRestoration to 0
Set MAlchemy to 0


Set MSecurity to 0
Set MSneak to 0
Set MAcrobatics to 0
Set MLightArmor to 0
Set MMarksman to 0
Set MMercantile to 0
Set MSpeechcraft to 0


Set MCount to 0


If BBlock - CBlock >= 25
Set MBlock to 1
Set MCount to MCount + 1
EndIf
If BArmorer - CArmorer >= 25
Set MArmorer to 1
Set MCount to MCount + 1
EndIf
If BHeavyArmor - CHeavyArmor >= 25
Set MHeavyArmor to 1
Set MCount to MCount + 1
EndIf
If BBlunt - CBlunt >= 25
Set MBlunt to 1
Set MCount to MCount + 1
EndIf
If BBlade - CBlade >= 25
Set MBlade to 1
Set MCount to MCount + 1
EndIf
If BAthletics - CAthletics >= 25
Set MAthletics to 1
Set MCount to MCount + 1
EndIf
If BHandToHand - CHandToHand >= 25
Set MHandToHand to 1
Set MCount to MCount + 1
EndIf


If BDestruction - CDestruction >= 25
Set MDestruction to 1
Set MCount to MCount + 1
EndIf
If BAlteration - CAlteration >= 25
Set MAlteration to 1
Set MCount to MCount + 1
EndIf
If BIllusion - CIllusion >= 25
Set MIllusion to 1
Set MCount to MCount + 1
EndIf
If BConjuration - CConjuration >= 25
Set MConjuration to 1
Set MCount to MCount + 1
EndIf
If BMysticism - CMysticism >= 25
Set MMysticism to 1
Set MCount to MCount + 1
EndIf
If BRestoration - CRestoration >= 25
Set MRestoration to 1
Set MCount to MCount + 1
EndIf
If BAlchemy - CAlchemy >= 25
Set MAlchemy to 1
Set MCount to MCount + 1
EndIf


If BSecurity - CSecurity >= 25
Set MSecurity to 1
Set MCount to MCount + 1
EndIf
If BSneak - CSneak >= 25
Set MSneak to 1
Set MCount to MCount + 1
EndIf
If BAcrobatics - CAcrobatics >= 25
Set MAcrobatics to 1
Set MCount to MCount + 1
EndIf
If BLightArmor - CLightArmor >= 25
Set MLightArmor to 1
Set MCount to MCount + 1
EndIf
If BMarksman - CMarksman >= 25
Set MMarksman to 1
Set MCount to MCount + 1
EndIf
If BMercantile - CMercantile >= 25
Set MMercantile to 1
Set MCount to MCount + 1
EndIf
If BSpeechcraft - CSpeechcraft >= 25
Set MSpeechcraft to 1
Set MCount to MCount + 1
EndIf


If MCount != 7
MessageBox "Du musst Deine Hauptfertigkeiten und Deine Spezialisierung eintragen.", "Mach ich!", "Nö keine Lust!"
Set InitialisationStage to 5
Set CurrentMenu to 0
Else
Set InitialisationStage to 3
EndIf
EndIf


If InitialisationStage == 3
;Auto detect specialisation
Set SpecialCombat to 0
Set SpecialMagic to 0
Set SpecialStealth to 0
Set SpecialCount to 0


Set Value1 to MBlock + MArmorer + MHeavyArmor + MBlunt + MBlade + MAthletics + MHandToHand
Set SkillCombat to BBlock + BArmorer + BHeavyArmor + BBlunt + BBlade + BAthletics + BHandToHand - (4*Value1 + 7) * 5 - CBlock - CArmorer - CHeavyArmor - CBlunt - CBlade - CAthletics - CHandToHand
Set Value1 to MDestruction + MAlteration + MIllusion + MConjuration + MMysticism + MRestoration + MAlchemy
Set SkillMagic to BDestruction + BAlteration + BIllusion + BConjuration + BMysticism + BRestoration + BAlchemy - (4*Value1 + 7) * 5 - CDestruction - CAlteration - CIllusion - CConjuration - CMysticism - CRestoration - CAlchemy
Set Value1 to MSecurity + MSneak + MAcrobatics + MLightArmor + MMarksman + MMercantile + MSpeechcraft
Set SkillStealth to BSecurity + BSneak + BAcrobatics + BLightArmor + BMarksman + BMercantile + BSpeechcraft - (4*Value1 + 7) * 5 - CSecurity - CSneak - CAcrobatics - CLightArmor - CMarksman - CMercantile - CSpeechcraft


If SkillCombat >= 35
Set SpecialCombat to 1
Set SpecialCount to SpecialCount + 1
Endif


If SkillMagic >= 35
Set SpecialMagic to 1
Set SpecialCount to SpecialCount + 1
EndIf


If SkillStealth >= 35
Set SpecialStealth to 1
Set SpecialCount to SpecialCount + 1
EndIf


Set CurrentMenu to 0
If SpecialCount != 1
MessageBox "Du musst Deine Hauptfertigkeiten und Deine Spezialisierung eintragen.", "Mach ich", "Nö keine Lust"
Set InitialisationStage to 5
Else
Set InitialisationStage to 4
MessageBox "Ich kann Deine Hauptfertigkeiten und Deine Spezialisierung auch suchen, möchtest du das?", "Sicher", "Dazu brauch ich kein verf.... Buch", "Ich machs manuell! Partyyyyy!!", "Ach halts Maul"
EndIf
EndIf

If InitialisationStage == 4
;Check what the player wants to do now that settings are done
Set Button to GetButtonPressed


If Button == 0
;Confirm
Set InitialisationStage to 7
Set CurrentMenu to 0
MessageBox "Deine Hauptfertigkeiten sind...", "Ja was denn nun?"
ElseIf Button == 1
;Finish
Set InitialisationStage to 8
Set CurrentMenu to 0
ElseIf Button == 2
;Manually set them
MessageBox "Du musst Deine Hauptfertigkeiten und Deine Spezialisierung eintragen.", "Mach ich", "Nö keine Lust"
Set InitialisationStage to 5
Set CurrentMenu to 0
ElseIf Button == 3
;Cancel
Set CurrentMenu to 0
Set InitialisationStage to 0
StopQuest SDSkillDiaryQuest
Return
EndIf
EndIf




If InitialisationStage == 5
;Enter Majors
Set Button to GetButtonPressed


If Button == -1
Return
EndIf


If CurrentMenu == 0
;The Continue/Cancel menu
If Button == 0
;Continue
Set CurrentMenu to 1
Set Button to 7

;First reset all the vars for the majors
Set MBlock to 0
Set MArmorer to 0
Set MHeavyArmor to 0
Set MBlunt to 0
Set MBlade to 0
Set MAthletics to 0
Set MHandToHand to 0


Set MDestruction to 0
Set MAlteration to 0
Set MIllusion to 0
Set MConjuration to 0
Set MMysticism to 0
Set MRestoration to 0
Set MAlchemy to 0


Set MSecurity to 0
Set MSneak to 0
Set MAcrobatics to 0
Set MLightArmor to 0
Set MMarksman to 0
Set MMercantile to 0
Set MSpeechcraft to 0


Set MCount to 0


ElseIf Button == 1
;Cancel
Set Button to 8
EndIf

ElseIf CurrentMenu == 1
;The menu for Combat skills
If Button == 0
;Block
Set CurrentMenu to 1 + 3 * MBlock
Set MCount to MCount + 1 - MBlock
Set MBlock to 1
ElseIf Button == 1
;Armorer
Set CurrentMenu to 1 + 3 * MArmorer
Set MCount to MCount + 1 - MArmorer
Set MArmorer to 1
ElseIf Button == 2
;Heavy Armor
Set CurrentMenu to 1 + 3 * MHeavyArmor
Set MCount to MCount + 1 - MHeavyArmor
Set MHeavyArmor to 1
ElseIf Button == 3
;Blunt
Set CurrentMenu to 1 + 3 * MBlunt
Set MCount to MCount + 1 - MBlunt
Set MBlunt to 1
ElseIf Button == 4
;Blade
Set CurrentMenu to 1 + 3 * MBlade
Set MCount to MCount + 1 - MBlade
Set MBlade to 1
ElseIf Button == 5
;Athletics
Set CurrentMenu to 1 + 3 * MAthletics
Set MCount to MCount + 1 - MAthletics
Set MAthletics to 1
ElseIf Button == 6
;Hand To Hand
Set CurrentMenu to 1 + 3 * MHandToHand
Set MCount to MCount + 1 - MHandToHand
Set MHandToHand to 1
ElseIf Button == 7
;Next Page
Set CurrentMenu to 2
EndIf



ElseIf CurrentMenu == 2
;The menu for magic skills
If Button == 0
;Destruction
Set CurrentMenu to 2 + 3 * MDestruction
Set MCount to MCount + 1 - MDestruction
Set MDestruction to 1
ElseIf Button == 1
;Alteration
Set CurrentMenu to 2 + 3 * MAlteration
Set MCount to MCount + 1 - MAlteration
Set MAlteration to 1
ElseIf Button == 2
;Illusion
Set CurrentMenu to 2 + 3 * MIllusion
Set MCount to MCount + 1 - MIllusion
Set MIllusion to 1
ElseIf Button == 3
;Conjuration
Set CurrentMenu to 2 + 3 * MConjuration
Set MCount to MCount + 1 - MConjuration
Set MConjuration to 1
ElseIf Button == 4
;Mysticism
Set CurrentMenu to 2 + 3 * MMysticism
Set MCount to MCount + 1 - MMysticism
Set MMysticism to 1
ElseIf Button == 5
;Restoration
Set CurrentMenu to 2 + 3 * MRestoration
Set MCount to MCount + 1 - MRestoration
Set MRestoration to 1
ElseIf Button == 6
;Alchemy
Set CurrentMenu to 2 + 3 * MAlchemy
Set MCount to MCount + 1 - MAlchemy
Set MAlchemy to 1
ElseIf Button == 7
;Next Page
Set CurrentMenu to 3
EndIf



ElseIf CurrentMenu == 3
If Button == 0
;Security
Set CurrentMenu to 3 + 3 * MSecurity
Set MCount to MCount + 1 - MSecurity
Set MSecurity to 1
ElseIf Button == 1
;Sneak
Set CurrentMenu to 3 + 3 * MSneak
Set MCount to MCount + 1 - MSneak
Set MSneak to 1
ElseIf Button == 2
;Acrobatics
Set CurrentMenu to 3 + 3 * MAcrobatics
Set MCount to MCount + 1 - MAcrobatics
Set MAcrobatics to 1
ElseIf Button == 3
;Light Armor
Set CurrentMenu to 3 + 3 * MLightArmor
Set MCount to MCount + 1 - MLightArmor
Set MLightArmor to 1
ElseIf Button == 4
;Marksman
Set CurrentMenu to 3 + 3 * MMarksman
Set MCount to MCount + 1 - MMarksman
Set MMarksman to 1
ElseIf Button == 5
;Mercantile
Set CurrentMenu to 3 + 3 * MMercantile
Set MCount to MCount + 1 - MMercantile
Set MMercantile to 1
ElseIf Button == 6
;Speechcraft
Set CurrentMenu to 3 + 3 * MSpeechcraft
Set MCount to MCount + 1 - MSpeechcraft
Set MSpeechcraft to 1
ElseIf Button == 7
;Next Page
Set CurrentMenu to 1
EndIf


ElseIf CurrentMenu >= 4
;The error menus
If Button == 0
;Re-Select Skill
Set CurrentMenu to CurrentMenu - 3
ElseIf Button == 1
;Cancel
Set Button to 8
EndIf
EndIf


If Button == 8
;Quit the initialisation process
Set CurrentMenu to 0
Set InitialisationStage to 0
StopQuest SDSkillDiaryQuest
Return
EndIf

If Mcount < 7
Set Value1 to MCount + 1
If CurrentMenu == 1
;Show Combat skill menu
MessageBox "Wähle Hauptfertigkeit Nr. %.0f:", Value1, "Blocken", "Waffenschmied", "Schwere Rüstung", "Stumpfe Waffen", "Schwertkampf", "Athletik", "Nahkampf", "Nächste Seite", "Stop"
ElseIf CurrentMenu == 2
;Show Magic skill menu
MessageBox "Wähle Hauptfertigkeit Nr. %.0f:", Value1, "Zersörung", "Veränderung", "Illusion", "Beschwörung", "Mystik", "Wiederherstellung", "Alchemie", "Nächste Seite", "Stop"


ElseIf CurrentMenu == 3
;Show Stealth skill menu
MessageBox "Wähle Hauptfertigkeit Nr. %.0f:", Value1, "Sicherheit", "Schleichen", "Akrobatik", "Leichte Rüstung", "Schütze", "Handelsgeschick", "Wortgewandtheit", "Erste Seite", "Stop"


ElseIf CurrentMenu >= 4
;Show invalid data menu
MessageBox "Du hast das bereits als Hauptfertigkeit eingetragen.", "Dann eben was anderes!", "Ups dann nich!"
EndIf

Else
;We are done lets go to the specialisation selection
Set InitialisationStage to 6
Set CurrentMenu to 0
MessageBox "Wähle deine Spezialisierung: ", "Kampf", "Magie", "Diebesfähigkeit", "Ich wähl lieber die FDP..und geh!"
EndIf


EndIf


If InitialisationStage == 6
;Get the specialisation
Set Button to GetButtonPressed


If Button == -1
Return
EndIf

;Reset the specialisation vars
Set SpecialCombat to 0
Set SpecialMagic to 0
Set SpecialStealth to 0
Set SpecialCount to 0


If CurrentMenu == 0
If Button == 0
;Combat
Set SpecialCombat to 1
ElseIf Button == 1
;Magic
Set SpecialMagic to 1
ElseIf Button == 2
;Stealth
Set SpecialStealth to 1
ElseIf Button == 3
;Cancel
Set InitialisationStage to 0
Set CurrentMenu to 0
StopQuest SDSkillDiaryQuest
Return
EndIf
EndIf


Set InitialisationStage to 4
Set CurrentMenu to 0
MessageBox "Sicher das alle Angaben Korrekt sind?" "Ja zur Hölle", "Nein ich will LESEN! JETZT!", "Von vorn", "Hau doch ab"
EndIf


If InitialisationStage == 7
;Confirm the settings here
Set Button to GetButtonPressed
If Button == -1
Return
ElseIf Button == 1
;Incorrect
MessageBox "Gib Deine Hauptfertigkeiten und Deine Spezialisierung ein.", "Zu Befehl", "Nix gibts!"
Set InitialisationStage to 5
Set CurrentMenu to 0
Return
EndIf


If MBlock == 1 && CurrentMenu < 1
MessageBox "Blocken", "Du kommscht hier ned rein!", "Die Mauer muss weg!"
Set CurrentMenu to 1
ElseIf MArmorer == 1 && CurrentMenu < 2
MessageBox "Waffenschmied", "Japp", "Bin ichn Zwerg oder was?"
Set CurrentMenu to 2
ElseIf MHeavyArmor == 1 && CurrentMenu < 3
MessageBox "Schwere Rüstung", "Des isn Klacks!", "Da heb mir nur nen Bruch"
Set CurrentMenu to 3
ElseIf MBlunt == 1 && CurrentMenu < 4
MessageBox "Stumpfe Waffen", "SIND DER HAMMER!", "Nö echt nich!"
Set CurrentMenu to 4
ElseIf MBlade == 1 && CurrentMenu < 5
MessageBox "Schwertkampf", "Yeah! Nenn mich den Schnetzler", "Viel zu scharf!"
Set CurrentMenu to 5
ElseIf MAthletics == 1 && CurrentMenu < 6
MessageBox "Athletik", "Arni isn ******* gegen mich!", "GÄHN..wasis?"
Set CurrentMenu to 6
ElseIf MHandToHand == 1 && CurrentMenu < 7
MessageBox "Nahkampf", "Jaaa! Voll auf die Kauleiste!", "Und meine Nägel?"
Set CurrentMenu to 7


ElseIf MDestruction == 1 && CurrentMenu < 8
MessageBox "Zerstörung", "Brenn du sau!", "Ich will aber Feuerwehrmann werden!"
Set CurrentMenu to 8
ElseIf MAlteration == 1 && CurrentMenu < 9
MessageBox "Veränderung", "...ist Leben! Jawoll!", "Ich bleib so wie ich bin"
Set CurrentMenu to 9
ElseIf MIllusion == 1 && CurrentMenu < 10
MessageBox "Illusion", "Ghost! Nachricht von Septim!", "Ich hab Angst vor sowas!"
Set CurrentMenu to 10
ElseIf MConjuration == 1 && CurrentMenu < 11
MessageBox "Beschwörung", "Ich Spawn mir mal ne Lustsklavin!", "Ich HASSE die Viecher!"
Set CurrentMenu to 11
ElseIf MMysticism == 1 && CurrentMenu < 12
MessageBox "Mystik", "Schweb mer noch ne Runde?", "Des is mir zu hoch!"
Set CurrentMenu to 12
ElseIf MRestoration == 1 && CurrentMenu < 13
MessageBox "Wiederherstellung", "Genau! Erst Scribmus...dann Förmchen!", "Nix was hin is, is hin!"
Set CurrentMenu to 13
ElseIf MAlchemy == 1 && CurrentMenu < 14
MessageBox "Alchemie", "Ah diese Farbeeen...", "Drogen sind *******e!"
Set CurrentMenu to 14


ElseIf MSecurity == 1 && CurrentMenu < 15
MessageBox "Sicherheit", "Hehe der Keuschheitsgürtelknacker!", "Hab zwei linke Hände!"
Set CurrentMenu to 15
ElseIf MSneak == 1 && CurrentMenu < 16
MessageBox "Schleichen", "Spanner von Beruf!", "Und zwei linke Füße!"
Set CurrentMenu to 16
ElseIf MAcrobatics == 1 && CurrentMenu < 17
MessageBox "Akrobatik", "Doing! Doing! Doing!", "Da wird mir schlecht von!"
Set CurrentMenu to 17
ElseIf MLightArmor == 1 && CurrentMenu < 18
MessageBox "Leichte Rüstung", "Jawoll Latexrobe!", "Nixda! Ebenerzpanzer Rulez!"
Set CurrentMenu to 18
ElseIf MMarksman == 1 && CurrentMenu < 19
MessageBox "Schütze", "Legolas himself YEAH!", "Ich steh ned auf Federn!"
Set CurrentMenu to 19
ElseIf MMercantile == 1 && CurrentMenu < 20
MessageBox "Handelsgeschick", "Ich hab da mal was vorbereitet...", "No Money, No Problems!"
Set CurrentMenu to 20
ElseIf MSpeechcraft == 1 && CurrentMenu < 21
MessageBox "Wortgewandtheit", "Oh cherie deine augen sind so...", "Sorry! Ich lissspel!"
Set CurrentMenu to 21


ElseIf SpecialCombat == 1 && CurrentMenu < 22
MessageBox "Deine Spezialisierung ist Kampf", "Japp immer feste druff!", "Nene! Pazifist!"
Set CurrentMenu to 22
ElseIf SpecialMagic == 1 && CurrentMenu < 23
MessageBox "Deine Spezialisierung ist Magie", "Jo! Willst meinen Stab sehn?", "Schau ich aus wie Potter?"
Set CurrentMenu to 23
ElseIf SpecialStealth == 1 && CurrentMenu < 24
MessageBox "Deine Spezialisierung ist Diebesfähigkeit", "Hey is meins isch schwör!", "Ungesetzliches Pack! Niemals!"
Set CurrentMenu to 24
Else
MessageBox "Möchtest du von vorne beginnen? Oder bist du fertig?", "Nochmal von gaaanz vorne ja?", "Fix und Fertisch!", "Nochmal vom Zweiten aus!", "Kein Bock mehr!"
Set CurrentMenu to 0
Set InitialisationStage to 4
EndIf


EndIf


If InitialisationStage == 8

Set MCurrentCount to BBlock * MBlock + BArmorer * MArmorer + BHeavyArmor * MHeavyArmor + BBlunt * MBlunt + BBlade * MBlade + BAthletics * MAthletics + BHandToHand * MHandToHand
Set MCurrentCount to MCurrentCount + BDestruction * MDestruction + BAlteration * MAlteration + BIllusion * MIllusion + BConjuration * MConjuration + BMysticism * MMysticism + BRestoration * MRestoration + BAlchemy * MAlchemy
Set MCurrentCount to MCurrentCount + BSecurity * MSecurity + BSneak * MSneak + BAcrobatics * MAcrobatics + BLightArmor * MLightArmor + BMarksman * MMarksman + BMercantile * MMercantile + BSpeechcraft * MSpeechcraft


Set BBlock to MBlock * 25 + CBlock + 5 * SpecialCombat - (5 * (MBlock - 1))
Set BArmorer to MArmorer * 25 + CArmorer + 5 * SpecialCombat - (5 * (MArmorer - 1))
Set BHeavyArmor to MHeavyArmor * 25 + CHeavyArmor + 5 * SpecialCombat - (5 * (MHeavyArmor - 1))
Set BBlunt to MBlunt * 25 + CBlunt + 5 * SpecialCombat - (5 * (MBlunt - 1))
Set BBlade to MBlade * 25 + CBlade + 5 * SpecialCombat - (5 * (MBlade - 1))
Set BAthletics to MAthletics * 25 + CAthletics + 5 * SpecialCombat - (5 * (MAthletics - 1))
Set BHandToHand to MHandToHand * 25 + CHandToHand + 5 * SpecialCombat - (5 * (MHandToHand - 1))


Set BDestruction to MDestruction * 25 + CDestruction + 5 * SpecialMagic - (5 * (MDestruction - 1))
Set BAlteration to MAlteration * 25 + CAlteration + 5 * SpecialMagic - (5 * (MAlteration - 1))
Set BIllusion to MIllusion * 25 + CIllusion + 5 * SpecialMagic - (5 * (MIllusion - 1))
Set BConjuration to MConjuration * 25 + CConjuration + 5 * SpecialMagic - (5 * (MConjuration - 1))
Set BMysticism to MMysticism * 25 + CMysticism + 5 * SpecialMagic - (5 * (MMysticism - 1))
Set BRestoration to MRestoration * 25 + CRestoration + 5 * SpecialMagic - (5 * (MRestoration - 1))
Set BAlchemy to MAlchemy * 25 + CAlchemy + 5 * SpecialMagic - (5 * (MAlchemy - 1))


Set BSecurity to MSecurity * 25 + CSecurity + 5 * SpecialStealth - (5 * (MSecurity - 1))
Set BSneak to MSneak * 25 + CSneak + 5 * SpecialStealth - (5 * (MSneak - 1))
Set BAcrobatics to MAcrobatics * 25 + CAcrobatics + 5 * SpecialStealth - (5 * (MAcrobatics - 1))
Set BLightArmor to MLightArmor * 25 + CLightArmor + 5 * SpecialStealth - (5 * (MLightArmor - 1))
Set BMarksman to MMarksman * 25 + CMarksman + 5 * SpecialStealth - (5 * (MMarksman - 1))
Set BMercantile to MMercantile * 25 + CMercantile + 5 * SpecialStealth - (5 * (MMercantile - 1))
Set BSpeechcraft to MSpeechcraft * 25 + CSpeechcraft + 5 * SpecialStealth - (5 * (MSpeechcraft - 1))


Set MBaseCount to BBlock * MBlock + BArmorer * MArmorer + BHeavyArmor * MHeavyArmor + BBlunt * MBlunt + BBlade * MBlade + BAthletics * MAthletics + BHandToHand * MHandToHand
Set MBaseCount to MBaseCount + BDestruction * MDestruction + BAlteration * MAlteration + BIllusion * MIllusion + BConjuration * MConjuration + BMysticism * MMysticism + BRestoration * MRestoration + BAlchemy * MAlchemy
Set MBaseCount to MBaseCount + BSecurity * MSecurity + BSneak * MSneak + BAcrobatics * MAcrobatics + BLightArmor * MLightArmor + BMarksman * MMarksman + BMercantile * MMercantile + BSpeechcraft * MSpeechcraft




Set CurrentLevel to (MCurrentCount - MBaseCount) / 10 + 2
If CurrentLevel > 2
Set InvalidTillLevelUp to 1
EndIf


Set fQuestDelayTime to 2
Set Initialised to 1
Return
EndIf
EndIf



End
ich nehm an, dass ich die selbst erstellte Rasse einfach im selben format zu den anderen dranhängen kann, oder?

EEEdit: Ich habe es einfach mal ausprobiert und beim ersten mal hat es sich, obwohl ich Script und allgemein gespeichert habe, nicht gespeichert. Das Tagebuch sagte mir weiterhin, dass es nur für Standartrassen sei.
Nachdem ich zum 2. Mal meine Rasse dazu geschrieben habe, reagierte das Skilltagebuch überhaupt nicht mehr (es verhielt sich also wie ein ganz normales Buch). Und als ich das CS öffnete erhielt ich folgende Nachricht:
SDSkillDiaryError.JPG
Da bin ich leider ratlos. Der Script existiert, aber das Objekt kenne ich nicht und es ist nicht das Skilltagebuch. Noch dazu wundert mich das, weil dieser Script der zugehörigen Quest zugeordnet ist und auch noch als solches dort steht. Kann mir jemand helfen und mir sagen, was ich verbockt habe? Das einzige, was ich wissentlich getan habe, war
ElseIf GetPCIsRace Frogwarior
Set CConjuration to 10
Set CMysticism to 10
Set CAlteration to 10
Set CMarksman to 10
Set CSpeechcraft to 10
Set CArmorer to 5
Set CHeavyArmor to 5
bei SDQuestScript beim Rassenabschnitt einzufügen und bei allen Rassen einen Tab-Abstand wegzunehmen, da das Zeichenmaximum schon erreicht war.

EEEEdit: so das ist jetzt das letzte Edit zu diesem Thema ;)
Ich habe das Problem gelöst. Da die Rasse nicht im Abacus-Plugin gespeichert ist, hat das Script die Rasse nicht akzeptiert. Die Abacus-Scripte, Quest und Buch in den Rassen-Plugin zu speichern war dann die einfachste Lösung und es hat funktioniert.
Ich hoffe, ich muss euch zumindest die nächsten paar Tage nicht mit mehr Fragen nerven :)
 
Zuletzt bearbeitet:
Ich komme bei folgender Sache einfach nicht weiter.
Das Ziel ist es eine brennende Fackel als Waffe benutzen zu können. Bisher habe ich es geschafft diese als 1 Hand Hiebwaffe umzuwandeln.
Klappt alles super, doch dass die Fackel ohne Feueranimation mit der Fackel mit Feueranimation automatisch beim Ziehen getauscht wird und beim Halftern wieder in Ihrem Urzustand zurück getauscht wird, klappt nicht.

Wie lässt sich das Abfragen, das der Spieler die Waffe nicht gezogen hat?

Bisher habe ich das so gescriptet.

Questscript
scriptname A00QuestMiscRemoveScript

short Waffeenequiped02FireON
short Waffeenequiped02FireOFF

begin gamemode
set fQuestDelayTime to 0.5

if Waffeenequiped02FireON ==1
Player.AddItemNS A0HiebAnders1x006FackelON 1
player.EquipItemNS A0HiebAnders1x006FackelON ; EDIT Darf keine Zahl haben, da sich die Waffe sonst nicht mehr wechseln lässt
Player.RemoveItemNS A0HiebAnders1x006FackelOFF 1
set Waffeenequiped02FireON to 2
endif

if Waffeenequiped02FireOFF ==1
Player.AddItemNS A0HiebAnders1x006FackelOFF 1
player.EquipItemNS A0HiebAnders1x006FackelOFF
Player.RemoveItemNS A0HiebAnders1x006FackelON 1
set Waffeenequiped02FireOFF to 0
endif

end

(Object Fackel Item Waffe ohne Feuer)
scn A0WaffeFackelOFF
; Script funktioniert- Sobald die Waffe gezogen wird wird diese ersetzt. Wunderbar

short Equiped

Begin OnEquip player
set Equiped to 1
End

Begin Gamemode

if Equiped ==1 && player.IsWeaponOut == 0
print "FackelOff an Hüfte"
set Equiped to 2
endif

if equiped== 2 && player.IsWeaponOut == 1
set A00MISCS.Waffeenequiped02FireON to 1
print "FackelOFF gezogen- ersetzen mit Fire"
set Equiped to 0
return
endif

End

(Object Fackel Item Waffe mit Feuer)
Script funktioniert nicht- Sobald die Waffe gezogen wird wird diese wieder weggesteckt
;und der Player hat keine Waffe mehr in der Hand

short Equiped

;==================Mit onUnequip funktioniert das Ganze schon mal besser. Nur wird erstmal
;zwischendurch die neue Waffe gezogen und dann die Fackeloff abermals gezogen.

EDIT
begin onunequip; dieser Befehl löst das Ereignis aus. Die Feuerfackel wechselt zurück zur Fackel ohne Feuer. Allerdings nur wenn ich einen Waffenwechsel vornehme.
; das ist also nicht der richtige Befehl. Wie lässt sich das Ereignis richtig auslösen.?

set equiped to 2
end

Begin Gamemode

if A00MISCS.Waffeenequiped02FireON==2
;playsound ITMTorchHeldLP
print "play Fackel"
;set equiped to 1
set A00MISCS.Waffeenequiped02FireON to 0
return
endif

if equiped ==2 && player.IsWeaponOut == 0
set A00MISCS.Waffeenequiped02FireOFF to 1
print "Waffeenequiped02FireOFF to 1 -Fackel an Hüfte ersetzen mit OFF"
set equiped to 0
return
endif

End

Was mache ich bloss falsch? Desweiteren klappt es nicht, das der Fackelsound wieder abgeschaltet wird. StopSound als Befehl gibt es wohl nicht.

EDIT:
Mir scheint es so, dass die Abfrage ob die Waffe nicht gezogen ist, nicht funktioniert. Mit welchem Befehl lässt sich abfragen, ob eine Waffe gezogen ist oder nicht?
 
Zuletzt bearbeitet:
Ich komme bei folgender Sache einfach nicht weiter.
Das Ziel ist es eine brennende Fackel als Waffe benutzen zu können. Bisher habe ich es geschafft diese als 1 Hand Hiebwaffe umzuwandeln.
Klappt alles super, doch dass die Fackel ohne Feueranimation mit der Fackel mit Feueranimation automatisch beim Ziehen getauscht wird und beim Halftern wieder in Ihrem Urzustand zurück getauscht wird, klappt nicht.

Wie lässt sich das Abfragen, das der Spieler die Waffe nicht gezogen hat?

Bisher habe ich das so gescriptet.

Questscript
scriptname A00QuestMiscRemoveScript

short Waffeenequiped02FireON
short Waffeenequiped02FireOFF

begin gamemode
set fQuestDelayTime to 0.5

if Waffeenequiped02FireON ==1
Player.AddItemNS A0HiebAnders1x006FackelON 1
player.EquipItemNS A0HiebAnders1x006FackelON ; EDIT Darf keine Zahl haben, da sich die Waffe sonst nicht mehr wechseln lässt
Player.RemoveItemNS A0HiebAnders1x006FackelOFF 1
set Waffeenequiped02FireON to 2
endif

if Waffeenequiped02FireOFF ==1
Player.AddItemNS A0HiebAnders1x006FackelOFF 1
player.EquipItemNS A0HiebAnders1x006FackelOFF
Player.RemoveItemNS A0HiebAnders1x006FackelON 1
set Waffeenequiped02FireOFF to 0
endif

end

(Object Fackel Item Waffe ohne Feuer)
scn A0WaffeFackelOFF
; Script funktioniert- Sobald die Waffe gezogen wird wird diese ersetzt. Wunderbar

short Equiped

Begin OnEquip player
set Equiped to 1
End

Begin Gamemode

if Equiped ==1 && player.IsWeaponOut == 0
print "FackelOff an Hüfte"
set Equiped to 2
endif

if equiped== 2 && player.IsWeaponOut == 1
set A00MISCS.Waffeenequiped02FireON to 1
print "FackelOFF gezogen- ersetzen mit Fire"
set Equiped to 0
return
endif

End

(Object Fackel Item Waffe mit Feuer)
Script funktioniert nicht- Sobald die Waffe gezogen wird wird diese wieder weggesteckt
;und der Player hat keine Waffe mehr in der Hand

short Equiped

;==================Mit onUnequip funktioniert das Ganze schon mal besser. Nur wird erstmal
;zwischendurch die neue Waffe gezogen und dann die Fackeloff abermals gezogen.

EDIT
begin onunequip; dieser Befehl löst das Ereignis aus. Die Feuerfackel wechselt zurück zur Fackel ohne Feuer. Allerdings nur wenn ich einen Waffenwechsel vornehme.
; das ist also nicht der richtige Befehl. Wie lässt sich das Ereignis richtig auslösen.?

set equiped to 2
end

Begin Gamemode

if A00MISCS.Waffeenequiped02FireON==2
;playsound ITMTorchHeldLP
print "play Fackel"
;set equiped to 1
set A00MISCS.Waffeenequiped02FireON to 0
return
endif

if equiped ==2 && player.IsWeaponOut == 0
set A00MISCS.Waffeenequiped02FireOFF to 1
print "Waffeenequiped02FireOFF to 1 -Fackel an Hüfte ersetzen mit OFF"
set equiped to 0
return
endif

End

Was mache ich bloss falsch? Desweiteren klappt es nicht, das der Fackelsound wieder abgeschaltet wird. StopSound als Befehl gibt es wohl nicht.

EDIT:
Mir scheint es so, dass die Abfrage ob die Waffe nicht gezogen ist, nicht funktioniert. Mit welchem Befehl lässt sich abfragen, ob eine Waffe gezogen ist oder nicht?

EDIT: Einfach die Abfragen alle in einer Quest mit einer Abfragegeschwindigkeit von 0.05 oder schneller plazieren. Dann klappt das auch wie gedacht.

Wie genial das nun geworden ist. Sobald die Feinheiten wie Akkustik und Effecte auch noch klappen gibts die Mod bald im Download bereich.
 
Hallo, ich habe nun auch mal wieder eine Frage:

ich möchte, dass ein NPC sofort einen Zauber ausführt, wenn ich das Interior betrete.

Wie lässt sich dies bewerkstelligen?

Danke
 
Ich ahbe jetzt ein größeres Problemchen...^^

Wenn man in einer Quest einen bestimmten Ausgang (Queststage == 200) wählt, dann soll man beim Verlassen einer Location, a.) nie mehr zurückkommen und b.) ein NPC soll auf nimmerwiedersehen verschwinden^^

Das funktioniert auch.
Was nicht funktioniert, ist die anschließende Dialogsequenz mit Folterschreien, die aus dem Haus klingen. Ich habe im Moment zwar keine Vertonung, aber SilentVoice-Files und ich hab ja den Subtitle-Flag in den befehlen an. Als "Gesprächspartner" dient hier die Tür, weil sie sowieso die einzige persistente Referenz in der Nähe ist.

PHP:
scn aaDROrd0NQ02TrigTorture

Short Once
Float Timer

Begin onTriggerActor Player
If ( Once == 0 ) && ( GetStage aaDROrdNQ002 == 200 )
	Set Once To 1
	DROrdNQ02DoorToEldaRoom.Lock 100
	DROrdenNQ02Eldariena.MoveTo DROrdNQ02EldaMarkerInside
Elseif ( Once == 1 )
	Set Once To 2
	Set Timer To ( DROrdNQ02DoorToEldaRoom.Say aaDROrdNQ02VikaTorture01 1 aaDROrd0NQ02Vika 1 )
Elseif ( Once == 2 )
	If ( Timer > 0 )
		Set Timer To ( Timer - GetSecondsPassed )
	Else
		Set Once To 3
	Endif
Elseif ( Once == 3 )
	Set Once To 4
	Set Timer To ( DROrdNQ02DoorToEldaRoom.Say aaDROrdNQ02VikaTorture02 1 aaDROrd0NQ02Eldariena 1 )
Elseif ( Once == 4 )
	If ( Timer > 0 )
		Set Timer To ( Timer - GetSecondsPassed )
	Else
		Set Once To 5
	Endif
Endif
End
 
Sollte so funktionieren.

Code:
SCN aaDROrd0NQ02TrigTorture 

Short count
Float timer

Begin OnTriggerActor Player

if(count == 0) && (getStage aaDROrdNQ002 == 200)
    set count to 1
    DROrdNQ02DoorToEldaRoom.lock 100
    DROrdenNQ02Eldariena.moveTo DROrdNQ02EldaMarkerInside
endif

End


Begin GameMode

if(count <= 0)
    return
else
    if(count == 1)
        set count to 2
        set timer to (DROrdNQ02DoorToEldaRoom.Say aaDROrdNQ02VikaTorture01 1 aaDROrd0NQ02Vika 1)
    elseif(count == 2)
        if(timer > 0)
            set timer to timer - getsecondspassed
        else
            set count to 3
        endif
    elseif(count == 3)
        set count to 4
        set timer to (DROrdNQ02DoorToEldaRoom.Say aaDROrdNQ02VikaTorture02 1 aaDROrd0NQ02Eldariena 1)
    elseif(count == 4)
        if(timer > 0)
            set timer to timer - getsecondspassed
        else
            set count to -1
        endif
    endif
endif

End
 
Sorry für die verspätete Antwort, aber ich sehe nicht wirklich WAS du getan hast, Kahmul außer eine wichtige Condition (Queststage == 200 ) einfach wegzulassen.
Kannst du mir das bitte erläutern?
 
Ich bin zwar etwas aus dem TES-Skripting raus, aber ich versuche es mal:
  1. Die Queststage ist bei Kahmul in Zeile 8 enthalten, so wie bei dir in Zeile 7.
  2. Dein Script wird durch einen Trigger gesteuert und enthält nur If-/ElseIf-Anweisungen.
Das bedeutet: Du musst für jede einzelne Stufe den Trigger auslösen. Beim ersten Auslösen wird der Raum verschlossen, beim zweiten Mal wird was gesagt, beim dritten Mal wird auf den Timer gewartet, ... Löst du denn den Trigger mehrfach aus oder liegt hier eventuell das Problem?

Kahmul ändert das, indem nur der erste Teil (Raum abschließen) über den Trigger läuft und der Rest im GameMode (also in jedem Frame, wenn ich mich nicht irre) abgefragt wird, sodass der Trigger eben nur einmal ausgelöst werden muss.