Construction Set Skriptthread zum Construction Set

Habe ein Problem.
Schaut euch bitte mal dieses Script hier an.

SCN MCSMMinionScript

short menuState;
short inventory;
short myLevel;
short button;
short doOnce;
short prevPackage;
short updateFollow;
short realSpeed;
short realAthletics;
short realAggro;
short realResp;
short followSpeed;
short followAthletics;
short renderUpdate;
short myMinionNumber;
short resetAI;
short myFatigue;
short unHeal;
short myItems;
short itemQuantity;
short curHealth;
short maxHealth;
short curMagic;
short maxMagic;
short curFatigue;
short maxFatigue;
float pcZ;
float pFacing;
float npcZ;
ref target;
ref chest;
ref me;
ref currentItem;
ref myHead;
ref myTorso;
ref myLegs;
ref myHands;
ref myFeet;
ref myFullBody;


Begin MenuMode ; ***MENUMODE***

if ( isPlayerMovingIntoNewSpace == 1 )

set renderUpdate to 1;

if ( Me.GetCurrentAIPackage == 1 )

set resetAI to 1;

elseif ( Me.GetCurrentAIPackage == 13 )

if ( Me.GetIsCurrentPackage MCSMMinionPatrolPackage == 1 )

set resetAI to 2;

else

set resetAI to 3;

endif

endif

endif

END

Begin OnActivate

if ( GetDead == 1 )

set myFullBody to Me.AddItem MCSMFullBody 1;

set myHead to Me.AddItem MCSMHead 1;

EquipItem MCSMFullBody;

EquipItem MCSMHead;

activate;

endif

if ( GetDead == 0 )

if ( IsActionRef player == 1 )

if ( MenuState == 0 )

set MyLevel to Me.GetLevel;

set curHealth to GetAV Health;

set curMagic to GetAV Magicka;

set curFatigue to GetAV Fatigue;

set maxHealth to GetBaseAV Health;

set maxMagic to GetBaseAV Magicka;

set maxFatigue to GetBaseAV Fatigue;

set menuState to 1;

if ( Me.GetIsID MCSMArcherMinion == 1 )

MessageBox "Skelettbogenschütze Level %.0f Gesundheit: %.0f / %.0f Magicka: %.0f / %.0f Ausdauer %.0f / %.0f Was wünscht du für deinen Diener?", MyLevel, curHealth, maxHealth, curMagic, maxMagic, curFatigue, maxFatigue, "Inventar betrachten" "Status ansehen" "Kommando" "Egal" ;

elseif ( Me.GetIsID MCSMMageMinion == 1 )

Messagebox "Skelettmagier Level %.0f Gesundheit: %.0f / %.0f Magicka: %.0f / %.0f Ausdauer %.0f / %.0f Was wünscht du für deinen Diener?", MyLevel, curHealth, maxHealth, curMagic, maxMagic, curFatigue, maxFatigue, "Inventar betrachten" "Status ansehen" "Kommando" "Egal" ;

elseif ( Me.GetIsID MCSMWarriorMinion == 1 )

Messagebox "Skelettkrieger Level %.0f Gesundheit: %.0f / %.0f Magicka: %.0f / %.0f Ausdauer %.0f / %.0f Was wünscht du für deinen Diener?", MyLevel, curHealth, maxHealth, curMagic, maxMagic, curFatigue, maxFatigue, "Inventar betrachten" "Status ansehen" "Kommando" "Egal" ;

endif

endif

endif

endif

END

Begin OnStartCombat

set target to Me.GetCombatTarget;

if ( target == Player )

modDisposition Player 100;

SetIgnoreFriendlyHits 10;

stopCombat;

endif

if ( MCSMMinionQuest.isEvil == 1 )

if ( target.GetInFaction AnvilFaction || target.GetInFaction SkingradFaction || target.GetInFaction ImperialWatch || target.GetInFaction KvatchFaction || target.GetInFaction BravilFaction || target.GetInFaction BrumaFaction || target.GetInFaction ICFaction || target.GetInFaction CheydinhalFaction || target.GetInFaction ImperialLegion || target.GetInFaction LeyawiinFaction )

if ( Player.GetCrimeGold < 5000 )

Player.ModCrimeGold 5000;

endif

endif

endif

END

Begin OnDeath; ***DEATH***

Message "Du fühlst einen scharfen Schmerz und hörst einen spitzen Schrei in deinen Gedanken - einer deiner Skelett-Diener ist gestorben."

AddItem Bonemeal 1;

set MCSMMinionQuest.numMinions to ( MCSMMinionQuest.numMinions - 1 );

Player.RemoveSpell MCSMMinionMagicDrain00;

Player.RemoveSpell MCSMMinionMagicDrain01;

Player.RemoveSpell MCSMMinionMagicDrain02;

Player.RemoveSpell MCSMMinionMagicDrain03;

Player.RemoveSpell MCSMMinionMagicDrain04;

Player.RemoveSpell MCSMMinionMagicDrain05;

Player.RemoveSpell MCSMMinionMagicDrain06;

Player.RemoveSpell MCSMMinionMagicDrain07;

Player.RemoveSpell MCSMMinionMagicDrain08;

Player.RemoveSpell MCSMMinionMagicDrain09;

if ( MCSMMinionQuest.numMinions == 1 )

Player.AddSpell MCSMMinionMagicDrain00;

elseif ( MCSMMinionQuest.numMinions == 2 )

Player.AddSpell MCSMMinionMagicDrain01;

elseif ( MCSMMinionQuest.numMinions == 3 )

Player.AddSpell MCSMMinionMagicDrain02;

elseif ( MCSMMinionQuest.numMinions == 4 )

Player.AddSpell MCSMMinionMagicDrain03;

elseif ( MCSMMinionQuest.numMinions == 5 )

Player.AddSpell MCSMMinionMagicDrain04;

elseif ( MCSMMinionQuest.numMinions == 6 )

Player.AddSpell MCSMMinionMagicDrain05;

elseif ( MCSMMinionQuest.numMinions == 7 )

Player.AddSpell MCSMMinionMagicDrain06;

elseif ( MCSMMinionQuest.numMinions == 8 )

Player.AddSpell MCSMMinionMagicDrain07;

elseif ( MCSMMinionQuest.numMinions == 9 )

Player.AddSpell MCSMMinionMagicDrain08;

elseif ( MCSMMinionQuest.numMinions == 10 )

Player.AddSpell MCSMMinionMagicDrain09;

endif

if ( MCSMMinionQuest.numMinions <= 0 )

Player.RemoveSpell MCSMMinionCommandFollowSpell;

Player.RemoveSpell MCSMMinionCommandAttackSpell;

Player.RemoveSpell MCSMMinionCommandWaitSpell;

Player.RemoveSpell MCSMMinionCommandRampageSpell;

Player.RemoveSpell MCSMRepairMinionSpell;

endif

if ( myMinionNumber == 0 )

set MCSMMinionQuest.min00Taken to 0;

elseif ( myMinionNumber == 1 )

set MCSMMinionQuest.min01Taken to 0;

elseif ( myMinionNumber == 2 )

set MCSMMinionQuest.min02Taken to 0;

elseif ( myMinionNumber == 3 )

set MCSMMinionQuest.min03Taken to 0;

elseif ( myMinionNumber == 4 )

set MCSMMinionQuest.min04Taken to 0;

elseif ( myMinionNumber == 5 )

set MCSMMinionQuest.min05Taken to 0;

elseif ( myMinionNumber == 6 )

set MCSMMinionQuest.min06Taken to 0;

elseif ( myMinionNumber == 7 )

set MCSMMinionQuest.min07Taken to 0;

elseif ( myMinionNumber == 8 )

set MCSMMinionQuest.min08Taken to 0;

elseif ( myMinionNumber == 9 )

set MCSMMinionQuest.min09Taken to 0;

endif

END

Begin OnPackageEnd MCSMReturnToBasePackage

Me.RemoveScriptPackage MCSMReturnToBasePackage;

Me.AddScriptPackage MCSMMinionHoldPositionPackage;

Message "Dein Skelett-Diener ist zu deiner Basis zurückgekehrt."

END

Begin GameMode

if ( MCSMMinionQuest.setEvil == 1 )

set button to GetButtonPressed;

if ( button >= 0 )

if ( button == 0 )

set MCSMMinionQuest.isEvil to 1;

set MCSMMinionQuest.SetEvil to 2;

SetFactionReaction AnvilFaction MCSMMinionFaction -100;

SetFactionReaction BravilFaction MCSMMinionFaction -100;

SetFactionReaction BrumaFaction MCSMMinionFaction -100;

SetFactionReaction CheydinhalFaction MCSMMinionFaction -100;

SetFactionReaction ICFaction MCSMMinionFaction -100;

SetFactionReaction ImperialLegion MCSMMinionFaction -100;

SetFactionReaction ImperialWatch MCSMMinionFaction -100;

SetFactionReaction KvatchFaction MCSMMinionFaction -100;

SetFactionReaction LeyawiinFaction MCSMMinionFaction -100;

SetFactionReaction SkingradFaction MCSMMinionFaction -100;

SetFactionReaction MCSMMinionFaction AnvilFaction -100;

SetFactionReaction MCSMMinionFaction BravilFaction -100;

SetFactionReaction MCSMMinionFaction BrumaFaction -100;

SetFactionReaction MCSMMinionFaction CheydinhalFaction -100;

SetFactionReaction MCSMMinionFaction ICFaction -100;

SetFactionReaction MCSMMinionFaction ImperialLegion -100;

SetFactionReaction MCSMMinionFaction ImperialWatch -100;

SetFactionReaction MCSMMinionFaction KvatchFaction -100;

SetFactionReaction MCSMMinionFaction LeyawiinFaction -100;

SetFactionReaction MCSMMinionFaction SkingradFaction -100;

endif

if ( button == 1 )

set MCSMMinionQuest.isEvil to 0;

set MCSMMinionQuest.SetEvil to 2;

endif

endif

endif

if ( MenuState == 0 )

if ( Me.HasMagicEffect REHE == 1 ) ; Skeletons Cannot Be Healed

set unHeal to Me.GetTotalActiveEffectMagnitude REHE;

set unHeal to -(unHeal);

;Me.ModAV2 Health unHeal;

Me.DispelAllSpells;

Message "Heilzauber haben keine Wirkung auf deine Diener..."

endif

if ( renderUpdate == 1 ) ; Render Update - For use in solving the infamous double face bug...

Me.Disable;

set renderUpdate to 2;

elseif ( renderUpdate >= 2 ) && ( renderUpdate <= 5 )

set renderUpdate to ( renderUpdate + 1 );

elseif ( renderupdate > 5 )

Me.Enable;

if ( resetAI == 1 )

Me.RemoveScriptPackage;

Me.AddScriptPackage MCSMMinionFollowPackage;

elseif ( resetAI == 2 )

Me.RemoveScriptPackage;

Me.AddScriptPackage MCSMMinionPatrolPackage;

elseif ( resetAI == 3 )

Me.RemoveScriptPackage;

Me.AddScriptPackage MCSMMinionHoldPositionPackage;

endif

set renderUpdate to -1;

set resetAI to -1;

endif

if ( updateFollow == 1 )

set followSpeed to ( Player.GetAV Speed * 1.5 );

set followAthletics to ( Player.GetAV Athletics * 1.5 );

Me.SetAV Speed followSpeed;

Me.SetAV Athletics followAthletics;

setIgnoreFriendlyHits 100;

set updateFollow to 0;

endif

if ( updateFollow == 2 )

Me.SetAV Speed realSpeed;

Me.SetAV Athletics realAthletics;

set updateFollow to 0;

endif

if ( GetCurrentAIPackage == 1 ) ; ***FOLLOWING AI***

set pcZ to Player.GetPos Z;

set npcZ to Me.GetPos Z;

if ( GetDistance Player > 1024 ) || ( pcz > ( npcz + 200 )) || ( pcz < ( npcz - 200 )) ; Warp script. Special thanks to CM Partners Mod

set pfacing to Player.GetAngle z;

if pfacing < 90 ; northeasterly

MoveTo Player, -50, -50, 10;

elseif pfacing < 180 ; southeasterly

MoveTo Player, -50, 50, 10;

elseif pfacing < 270 ; southwesterly

MoveTo Player, 50, 50, 10;

else ; northwesterly

MoveTo Player, 50, -50, 10;

endif

endif

if ( Player.IsInCombat == 0 )

if ( Player.IsWeaponOut == 1 ) && ( Me.IsWeaponOut == 0 )

SetAlert 1;

elseif ( Player.IsWeaponOut == 0 ) && ( Me.IsWeaponOut == 1 )

SetAlert 0;

endif

if ( Player.IsSneaking == 1 ) && ( Me.IsSneaking == 0 )

SetForceSneak 1;

SetAV Aggression 5;

SetAV Responsibility 0;

elseif ( Player.IsSneaking == 0 ) && ( Me.IsSneaking == 1 )

SetForceSneak 0;

SetAV Aggression realAggro;

SetAV Responsibility realResp;

endif

endif

endif

endif

if ( MenuState == 1 ) ; ***COMMAND INTERFACE***

set button to getbuttonpressed;

if ( button >= 0 )

if ( button == 0 ) ; Access Inventory

chest.MoveTo Player 0, 0, -50;

chest.setownership;

Me.RemoveAllItems Chest;

set menuState to 2;

elseif ( button == 1 ) ; Show Stats

set menuState to 6;

elseif ( button == 2 ) ; Commands

set MenuState to 4;

elseif ( button == 3 )

set MenuState to 0;

return;

endif

endif

endif

if ( menuState == 2 )

Chest.Activate Player;

set menuState to 3;

elseif ( menuState == 3 ) && ( MenuMode == 0 )

chest.RemoveAllItems Me;

chest.PositionCell 0,0,0,0 MCSMDumpCell;

Me.SetLevel MyLevel;

set myItems to ( Me.GetNumItems - 1 );

Label 1; ***FOR REMOVAL OF NON-POISON POTIONS***

if ( myItems >= 0 )

set currentItem to ( Me.GetInventoryObject myItems )

if ( GetMagicItemType currentItem == 3 )

if ( IsPoison currentItem )

else

set itemQuantity to Me.GetItemCount currentItem;

Me.RemoveItem currentItem itemQuantity;

Player.AddItem currentItem itemQuantity;

Message "Deine Skelettdiener könnnen nur Gifte mit sich tragen...."

endif

endif

set myItems to ( myItems - 1 );

GoTo 1;

endif

set menuState to 0;

elseif ( MenuState == 4 )

MessageBox "Was wünscht du von deinem Diener?" "Folgen" "Position halten" "Patroullieren" "Diese Position als Basis makieren" "Zur Basis zurückehren" "Egal"

set MenuState to 5;

elseif ( MenuState == 5 )

set button to GetButtonPressed

if ( button >= 0 )

if ( button == 0 )

Message "Folge mir"

Me.RemoveScriptPackage;

AddScriptPackage MCSMMinionFollowPackage;

set updateFollow to 1;

set MenuState to 0;

elseif ( button == 1 )

Message "Warte hier"

Me.RemoveScriptPackage;

AddScriptPackage MCSMMinionHoldPositionPackage;

set updateFollow to 2;

set MenuState to 0;

elseif ( button == 2 )

Message "Patroulliere etwas herum"

Me.RemoveScriptPackage;

AddScriptPackage MCSMMinionPatrolPackage;

set updateFollow to 2;

set MenuState to 0;

elseif ( button == 3 )

Message "Basis für alle Diener nach hier verlegt."

MCSMMinionBaseMarker.MoveTo Player;

set MenuState to 0;

elseif ( button == 4 )

if ( MCSMMinionBaseMarker.GetInCell MCSMDumpCell == 0 )

Message "Kehre zur Basis zurück."

Me.RemoveScriptPackage;

AddScriptPackage MCSMReturnToBasePackage;

set updateFollow to 2;

set MenuState to 0;

else

Message "Du hast noch keine Basis ausgewählt"

set MenuState to 0;

endif

else if ( button == 5 )

set MenuState to 0;

endif

endif

elseif ( MenuState == 6 )

Me.AddItem MCSMStatsToken 1;

set MenuState to 0;

endif

if ( doOnce == 0 ) ;***SPAWNING***

set Me to GetSelf;

set myMinionNumber to -1;

set chest to MCSMMinionInventory;

set realSpeed to GetBaseAV Speed;

set realAthletics to GetBaseAV Athletics;

set realAggro to GetBaseAV Aggression;

set realResp to GetBaseAV Responsibility;

set myFatigue to Me.GetAV Fatigue;

set myFatigue to -( myFatigue + 20 );

Me.ModAV2 Fatigue myFatigue;

AddScriptPackage MCSMMinionFollowPackage;

set updateFollow to 1;

if ( MCSMMinionQuest.min00Taken == 0 )

set MCSMMinionQuest.Minion00 to GetSelf;

set MCSMMinionQuest.min00Taken to 1;

set myMinionNumber to 0;

elseif ( MCSMMinionQuest.min01Taken == 0 )

set MCSMMinionQuest.Minion01 to GetSelf;

set MCSMMinionQuest.min01Taken to 1;

set myMinionNumber to 1;

elseif ( MCSMMinionQuest.min02Taken == 0 )

set MCSMMinionQuest.Minion02 to GetSelf;

set MCSMMinionQuest.min02Taken to 1;

set myMinionNumber to 2;

elseif ( MCSMMinionQuest.min03Taken == 0 )

set MCSMMinionQuest.Minion03 to GetSelf;

set MCSMMinionQuest.min03Taken to 1;

set myMinionNumber to 3;

elseif ( MCSMMinionQuest.min04Taken == 0 )

set MCSMMinionQuest.Minion04 to GetSelf;

set MCSMMinionQuest.min04Taken to 1;

set myMinionNumber to 4;

elseif ( MCSMMinionQuest.min05Taken == 0 )

set MCSMMinionQuest.Minion05 to GetSelf;

set MCSMMinionQuest.min05Taken to 1;

set myMinionNumber to 5;

elseif ( MCSMMinionQuest.min06Taken == 0 )

set MCSMMinionQuest.Minion06 to GetSelf;

set MCSMMinionQuest.min06Taken to 1;

set myMinionNumber to 6;

elseif ( MCSMMinionQuest.min07Taken == 0 )

set MCSMMinionQuest.Minion07 to GetSelf;

set MCSMMinionQuest.min07Taken to 1;

set myMinionNumber to 7;

elseif ( MCSMMinionQuest.min08Taken == 0 )

set MCSMMinionQuest.Minion08 to GetSelf;

set MCSMMinionQuest.min08Taken to 1;

set myMinionNumber to 8;

elseif ( MCSMMinionQuest.min09Taken == 0 )

set MCSMMinionQuest.Minion09 to GetSelf;

set MCSMMinionQuest.min09Taken to 1;

set myMinionNumber to 9;

endif

if ( Player.HasSpell MCSMMinionCommandFollowSpell )

else

Player.AddSpell MCSMMinionCommandFollowSpell;

Player.AddSpell MCSMMinionCommandAttackSpell;

Player.AddSpell MCSMMinionCommandWaitSpell;

Player.AddSpell MCSMMinionCommandRampageSpell;

Player.AddSpell MCSMRepairMinionSpell;

endif

set MCSMMinionQuest.numMinions to ( MCSMMinionQuest.numMinions + 1 );

Player.RemoveSpell MCSMMinionMagicDrain00;

Player.RemoveSpell MCSMMinionMagicDrain01;

Player.RemoveSpell MCSMMinionMagicDrain02;

Player.RemoveSpell MCSMMinionMagicDrain03;

Player.RemoveSpell MCSMMinionMagicDrain04;

Player.RemoveSpell MCSMMinionMagicDrain05;

Player.RemoveSpell MCSMMinionMagicDrain06;

Player.RemoveSpell MCSMMinionMagicDrain07;

Player.RemoveSpell MCSMMinionMagicDrain08;

Player.RemoveSpell MCSMMinionMagicDrain09;

if ( MCSMMinionQuest.numMinions == 1 )

Player.AddSpell MCSMMinionMagicDrain00;

elseif ( MCSMMinionQuest.numMinions == 2 )

Player.AddSpell MCSMMinionMagicDrain01;

elseif ( MCSMMinionQuest.numMinions == 3 )

Player.AddSpell MCSMMinionMagicDrain02;

elseif ( MCSMMinionQuest.numMinions == 4 )

Player.AddSpell MCSMMinionMagicDrain03;

elseif ( MCSMMinionQuest.numMinions == 5 )

Player.AddSpell MCSMMinionMagicDrain04;

elseif ( MCSMMinionQuest.numMinions == 6 )

Player.AddSpell MCSMMinionMagicDrain05;

elseif ( MCSMMinionQuest.numMinions == 7 )

Player.AddSpell MCSMMinionMagicDrain06;

elseif ( MCSMMinionQuest.numMinions == 8 )

Player.AddSpell MCSMMinionMagicDrain07;

elseif ( MCSMMinionQuest.numMinions == 9 )

Player.AddSpell MCSMMinionMagicDrain08;

elseif ( MCSMMinionQuest.numMinions == 10 )

Player.AddSpell MCSMMinionMagicDrain09;

endif

set doOnce to 1;

elseif ( doOnce >= 1 ) && ( doOnce < 60 )

set doOnce to ( doOnce + 1 );

elseif ( doonce >= 60 )

set pfacing to Player.GetAngle z;

if pfacing < 90 ; northeasterly

MoveTo Player, 80, 80, 10;

elseif pfacing < 180 ; southeasterly

MoveTo Player, 80, -80, 10;

elseif pfacing < 270 ; southwesterly

MoveTo Player, -80, -80, 10;

else ; northwesterly

MoveTo Player, -80, 80, 10;

endif

Me.SetActorAlpha 1;

Me.PMS effectReanimate 5;

set doOnce to -1;

if ( MCSMMinionQuest.setEvil == 0 )

MessageBox "Sollen du und deine Diener als 'Böse' gelten und deswegen von Wachen und der Bevölkerung angegriffen werden?" "Ja" "Nein"

set MCSMMinionQuest.setEvil to 1;

endif

endif
END

Es geht eigentlich nur um diesen Teil hier.
Code:
                MessageBox "Skelettbogenschütze   Level %.0f   Gesundheit: %.0f / %.0f   Magicka: %.0f / %.0f   Ausdauer %.0f / %.0f    Was wünscht du für deinen Diener?", MyLevel, curHealth, maxHealth, curMagic, maxMagic, curFatigue, maxFatigue, "Inventar betrachten" "Status ansehen" "Kommando" "Egal" ;

            elseif ( Me.GetIsID MCSMMageMinion == 1 )

                Messagebox "Skelettmagier                                             Level %.0f                 Gesundheit: %.0f / %.0f          Magicka: %.0f / %.0f                     Ausdauer %.0f / %.0f                                                                                       Was wünscht du für deinen Diener?", MyLevel, curHealth, maxHealth, curMagic, maxMagic, curFatigue, maxFatigue, "Inventar betrachten" "Status ansehen" "Kommando" "Egal" ;

            elseif ( Me.GetIsID MCSMWarriorMinion == 1 )

                Messagebox "Skelettkrieger                                           Level %.0f                  Gesundheit: %.0f / %.0f           Magicka: %.0f / %.0f                    Ausdauer %.0f / %.0f                                                                                      Was wünscht du für deinen Diener?", MyLevel, curHealth, maxHealth, curMagic, maxMagic, curFatigue, maxFatigue, "Inventar betrachten" "Status ansehen" "Kommando" "Egal" ;

Nun zu meinem Problem.
Durch die unterschiedlichen Wortlängen Englisch --> Deutsch habe ich innerhalb der Messageboxen Verschiebungen.

Da ich (schande über mich) zu faul bin, zig mal zu probieren, wollte ich mithilfe des OBSE-Befehls MessageBoxEx ( http://cs.elderscrolls.com/constwiki/index.php/MessageBoxEx ) Absätze schaffen, damit es schön übersichtlich ist.

Nun verstehe ich aber nicht genau, was ich da ändern soll?
Kann mir jemand mal das oben genannte für MessageBoxEx umschreiben?
 
Hi,
Ich würde gerne wissen, wie ich die "reference" des NPCs, mit dem ich gerade rede, rauskriege. Ich bräuchte es für folgende Funktion:
reference.
GetTrainerSkill npc:ref
Vielen Dank im Vorraus !
 
Du doppelklickst auf deinen NPC im RenderWindow. Dann öffnet sich ein Fenster. Oben ist eine leere, weiße Fläche, in die schreibst du die Referenz des NPCs/Items/whatever. Der NPC hat zwar schon eine Referenz, aber diese Nummer kann sich eh keiner merken, da ist es einfacher, eine Referenz einzugeben, z.B. MyNPCRef oder so... die Ref kann aber auch "Kloake" oder "HeilierGral" lauten, das ist egal. Sie darf nur nicht schon im Spiel/CS vorkommen.

Dann klickst du unten in diesem Fenster auf "OK" und schon kannst du die Ref verwenden :)
 
Er will, glaube ich, dass das mit jedem x-beliebigen NPC geht. Hab` ich Recht?
Dann würde ich es mit den "GetCrossHairRef"- und dem "GetActiveMenuMode"-Befehlen machen. ;)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Hansebenger
Ich glaube zwar nicht, dass hier jemand weiß, wie das geht, aber ich frage trotzdem mal:
Eigentlich will ich Oblivion dazu bringen, wenn ich ins Trainingmenü gehe, das Game Setting "FTrainingCostMult" neueinzulesen. Ich schätze mal das geht nicht !?

Als Workaround würde ich gerne folgendes machen: Sobald man ins Trainingsmenü geht startet ein Skript, das den Dialog mit dem Trainer-NPC beendet, den Dialog wieder aufnimmt und wieder ins Trainingmenü geht. Durch die kurze Zeit im GameMode wäre FTrainingCostMult geupdatet. Habt ihr vielleicht ne Ahnung wie das funktionieren könnte ?
(Wenn ihr nicht wisst was ich meine bitte fragen)
 
@Darkruler:

Code:
              MessageBoxEx "Skelettbogenschütze   %rLevel %.0f   %rGesundheit: %.0f / %.0f   %rMagicka: %.0f / %.0f   %rAusdauer %.0f %r/ %.0f    %rWas wünscht du für deinen Diener?: |Inventar betrachten |Status ansehen |Kommando |Egal" MyLevelcurHealth maxHealth curMagic maxMagic curFatigue maxFatigue

Ausgabe:
Code:
Skelettbogenschütze
Level
Gesundheit
Magicka
Ausdauer
Waswünscht du für deinen Diener?:
[Inventar betrachten]
[Status ansehene]
[Kommando]
[Egal]
 
  • Like
Reaktionen: TheDarkRuler
Danke.
Es wird zumindest abgespeichert (man musste nur noch eine Leerstelle zwischen MyLevel und curHealth setzen)

Nur noch eine Frage.
Wo werden die Zahlen stehen?

Also zum Beispiel bei Gesundheit 44/55?
 
Ich glaube zwar nicht, dass hier jemand weiß, wie das geht, aber ich frage trotzdem mal:
Eigentlich will ich Oblivion dazu bringen, wenn ich ins Trainingmenü gehe, das Game Setting "FTrainingCostMult" neueinzulesen. Ich schätze mal das geht nicht !?

Warum denn nicht? Du solltest dafür eine Quest erstellen und ihr ein Skript zuweisen, dass in etwa so aussieht:
Code:
scn name

float fQuestDelayTime

Begin GameMode

if fQuestDelayTime == 1
 return
else
 set fQuestDelayTime to 1
endif
return

end

Begin MenuMode 1009

if fQuestDelayTime == 0.1
 return
else
 set fQuestDelayTime to 0.1
endif
return

end

Begin MenuMode 1028

set fTrainingCostMult to x ;hier gewünschten Wert eintragen

end

Gibt es eine Möglichkeit, ins Trainingsmenü zu kommen, ohne vorher einen Dialog anzufangen? Wenn ja, dann ist dieses Skript nicht ganz zuverlässig.

Edit: Ach, so meinst du das...
 
Zuletzt bearbeitet:
Ich wollte jetzt meine neueste Übersetzung testen, aber als ich durch eine Tür gehen wollte, kam die Meldung, dass OBSE einen Fehler festgestellt hätte und ich in die OBSE.log gucken soll.

Das ist der Entry bezüglich des Fehlers.
** Script Error: Script 4d00ef70 in file "Moriarcis.esp" **
Too few args for format specifier


Und das hier ist der Script, welcher auf der Tür liegt und welcher wohl fehlerhaft war. Was jedoch am mMn verwunderlichsten ist, ist die Tatsache, dass es in der EV keinen Fehler gab. Er muss also von mir stammen :oops:

Code:
SCN MCSMMainDoorScript

short doOnce;
short choosing;
short choice;
short unlocked;


Begin OnActivate

    if ( unlocked == 0 )

        MessageBoxEX "Für die, die's wagen zu suchen, zu schreiten,% Zwischen den Lebenden und den Toten,%r%r Der brennende Schädel muss sein gefüttert, %rwenn's dein Ziel ist, fortzufahren. %r%r die, die ihr fleisch'gen Händ' haben erhoben vom Grabe, %r das Feuer müssen füttern, %r%r zusamm' mit Kraft der alten Knochen, %r ein Zauber muss gesprochen.%r%r Auf den Schädel muss er sein gewirkt. %r Wenn's dein Wunsch ist, zu passieren. %r%r Schlag Schädel mit des Untod's Furcht, %r dann Weg ins Dunkel dir sei offen."
        
        set choice to -1;

        set choosing to 1;

    else if ( unlocked == 1 )

        if ( GetStage MCSMStoryQuest == 50 )

            MessageBox "Etwas hält die Tür fest verschlossen. Myrk will offensichtlich deine Fähigkeiten testen."

        else

            Activate, Player;

        endif

    endif

END

Begin GameMode

    if ( unlocked == 0 )

        if ( choosing == 1 )

            set choice to GetButtonPressed;

            if ( choice == 0 )

                MCSMBurningSkullRef.Activate, Player;

                if ( doOnce == 0 )

                    SetStage MCSMStoryQuest 30;

                    set doOnce to 1;

                endif

            endif

        endif

    endif

END

Begin OnMagicEffectHit TURN 

    if ( unlocked == 0 )

        if ( MCSMBurningSkullRef.GetItemCount MortFlesh >=1 && MCSMBurningSkullRef.GetItemCount Bonemeal>= 1 )

            MCSMBurningSkullFlames.Disable;

            set MCSMStoryQuest.doorUnlocked to 1;

            set unlocked to 1;

            Return;

        else

            MCSMBurningSkullRef.Cast StandardFireDamageTarget5Master Player;

            Return;

        endif

    endif

END

Begin OnMagicEffectHit 

    if ( unlocked == 0 )

        if ( HasMagicEffect TURN )

            if ( MCSMBurningSkullRef.GetItemCount MortFlesh >=1 && MCSMBurningSkullRef.GetItemCount Bonemeal>= 1 )

                MCSMBurningSkullFlames.Disable;

                set MCSMStoryQuest.doorUnlocked to 1;

                set unlocked to 1;

            else

                MCSMBurningSkullRef.Cast StandardFireDamageTarget5Master Player;

            endif

        else

            MCSMBurningSkullRef.Cast StandardFireDamageTarget5Master Player;

        endif

    endif

END
 
1) Zum einen solltest du dich vergewissern, dass dieses Skript auch wirklich das ist, welches dir gemeldet wird und nicht auf Verdacht eins nehmen, welches gerade ausgeführt wird.
2) Du solltest "elseif" (Z.19) zusammenschreiben.
3) Ergänze die lange Messagebox mal um eine Auswahlmöglichkeit. Womöglich kann "getButtonPressed" nicht auf die Standardantwort ausgeführt werden.
4) Den zweiten "onMagicEffectHit"-Block kannst du zumindest stark verkürzen. Zum einen ist es doppeltgemoppelt und zum anderen kann es angehen, dass Zauber auf Türen nicht wirken, sodass "hasMagicEffect" nicht funktioniert.
 
  • Like
Reaktionen: TheDarkRuler
Durch was soll er ausgelöst werden?
Ich schreib` mal den Rohbau:

Code:
Begin GameMode
float timer
set timer to timer + getsecondspassed
      if(timer >= 120)
                 if(<WandRef>.getdisabled == 0)
                           <wandref>.disable
                           set timer to 0
                       return
            else
                             <wandref>.enable
                             set timer to 0
                        return
              endif
      endif

end
 
  • Like
Reaktionen: Almalexian
Kommt darauf an, auf was der Script liegt. Liegt der Script auf einer Quest, wird der Script alle 5 Sekunden durchlaufen (kannste mit "fquestdelaytime" ändern).
Wenn er aber auf einem Gegenstand oder Activator liegt, dann wir der Script in jedem Frame ausgeführt. ;)
 
  • Like
Reaktionen: Almalexian
Liegt auf nem gegenstand (Wand halt), wollte, dass die sich ändert, dann 2 Minuten nichts tut und sich dann wieder ändert, ist das auch iwie möglich?