Ergebnis 1 bis 5 von 5
-
Wie der Name schon sagt, wollte ich die GameEvents eines ELEX SaveData-Savegamefiles loggen. Die Gameevents in der w_info.hdr(doc) sind boolsche Flags (0= false, 1= true), die den Ablauf der Story steuern (dadurch, dass eine bestimmte Dialogoption z.B. erst verfügbar ist oder eine Aktion erst ausgelöst wird, wenn der entsprechende Gameevent auf "true" gesetzt wurde). Leider hat PB in ELEX viele Gameevents mit "Name_Choice(Nummer)" benannt, so dass es dann ziemlich umständlich ist, ihre Auswirkung festzustellen (anders als bei "Ragnar_WasOnceTalkedTo = false" z.B.).
Erstes Resultat:Spoiler:(zum lesen bitte Text markieren)btw: "Loyalty_Duras 114" z.B. ist natürlich eher kein Gameevent, sondern eine normale Variable mit dem Wert 114. Wenn Duras einen verlassen sollte, falls dieser Wert zu gering wird, kann man ihn natürlich wieder als "Flag" (mit Grenzwertcharakter) ansehen.fnd: 0x9F0975
Weaponsmith_Angrim_BSK_GotTradeStuff_Rank_0 1
Ulbricht_LeaderOfHisBattle_PermNews 1
Tutorial_UseYourQuestlog 1
Sinda_Introduction 0
Sinda_HasProblems 0
Sinda_GotTradeStuff_Rank_0 1
Sinda_Choice4 0
Ragnar_WasOnceTalkedTo 0
Ragnar_LawAndOrder 0
Ragnar_Choice1b 0
Ragnar_Choice1a 0
Ragnar_Choice1 0
Player_FirstRuin 1
Player_FirstOldTechnology 1
Player_FirstExitOfObservationStation 1
Player_FirstEmotions 1
Player_FirstBerserkerTerritory 1
PlayerTriggered_Elevator_Evacuationvoice 1
PlayerTriggered_CSMeetFirstFighter 1
PlayerTriggered_CSFirstLookOnEdan 1
Ornir_ToldFromQuest 0
Ornir_PlayerDonstKnowsLaw 0
Ornir_KnowsPlayer 0
Ornir_HisDuties 0
Ornir_HasProblem 0
Ornir_Choice2b 0
Ornir_Choice2a 0
Ornir_Choice1 0
Orik_HisDuties 0
Orik_Choice1 0
NONE 1
Loyalty_Duras 114
Lennart_NeedsBowBack 0
Lennart_LostHisBow 0
Lennart_Choice2 0
Lennart_Choice1 0
Jora_NeedsMechanicalStuff 0
Jora_GoToConverter 0
Jora_Choice3a 0
Jora_Choice3 0
Jora_Choice2 0
Jora_Choice1a 0
Jora_Choice1 0
Irdor_NeedsFood 0
Irdor_CollectSomeFood 0
Irdor_Choice4 0
Irdor_Choice3 0
Irdor_Choice1 0
InteractCombatMode 0
Hakon_Choice1 0
Goliet_CrimeReport 0
Geron_HisDuties 0
Geron_GotTradeStuff_Rank_0 1
Geron_Choice1 0
Duras_WhoWasMurdered 0
Duras_TwoWaysNow 0
Duras_ReadyToTalkAboutSeparatists 0
Duras_OffersMurderQuest 0
Duras_OffersGuide4 0
Duras_OffersGuide3 0
Duras_OffersGuide1 0
Duras_HisDuties 0
Duras_Choice6 0
Duras_Choice4a 0
Duras_Choice4 0
Duras_Choice3a 0
Duras_Choice3 0
Duras_Choice2a 0
Duras_Choice2 0
Duras_Choice1 0
Duras_Candidates 0
DurasReadyForTutorial 0
Drog_ToldFromRagnar 0
Drog_ThoraldThere 0
Drog_GolietWorkingMarket 0
Drog_Choice2 0
CrewComment_PlayerActionGood1 1
CrewComment_PlayerActionBad1 1
CrewComment_LocationOld1 1
CrewComment_LocationGood1 1
CrewComment_LocationBad1 1
Caldrim_ToldAboutElexConversion 0
Caldrim_FeelsMana 0
Caldrim_Choice2b 0
Caldrim_Choice2a 0
CSMeetFirstFighter 1
CSFirstLookOnEdan 1
Born_NoMoreMutants 0
Born_NeedsHealingRoots 0
Born_HisDuties 0
Born_GavePlayerOrders 0
Born_Choice5 0
Born_Choice3 0
Born_Choice1 0
Bertram_Choice5 0
Barin_ThoraldThere 0
Barin_ThoraldPilgerNow 0
Barin_ThoraldElexManaStuff 0
BSK_PositivePoints 1
IKENI7_01795 18
"in der Erkundung dieser weiten und wunderbaren Welt" (post #70, höre link unten)
TAS for Elex 2 at ELEX II Nexus - Mods and Community (nexusmods.com)
Tuvok, scannen Sie den Planeten nach Mikroplastik!
"Hört mir bloß auf mit "Stormson".
"In Toussaint wird schon für kleinere Schmähungen als diese Satisfaktion verlangt."
Genug der "Blumensträuße". Ich WILL MadBob! Beugt die Realität!
-
So, hat tatsächlich 2 Wochen gedauert, bis ich endlich mal wieder etwas Zeit gefunden habe für das Projekt. Aus dem thread um die "Spieldauer" habe ich die Idee mitgebracht, den Questverlauf aus den savegames rauszuholen. Ist leider schwieriger als erst gedacht wegen der binären Daten, siehe Bild.
ASCII-mäßig geht's ganz gut, vielleicht kann ich den Binärkrams ja erstmal ignorieren:
Spoiler:(zum lesen bitte Text markieren)Quest count= 749
0. Player_ReportGarbageWar 2
Substrings: 0
1. Detlef_KillHim 2
Substrings: 1
Detlef, gEQuestActor_Target
2. Hakon_Berserker_ReportSuddenDeathOfNezol 2
Substrings: 1
Hakon, gEQuestActor_Target
3. Connor_BringHimMeat 2
Substrings: 0
4. Player_CollectElisStuff 2
Substrings: 0
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5. Richard_PayDebts 2
Substrings: 1
Richard, gEQuestActor_Client 0000
6. Ike_ReadyForArenaFight 2
Substrings: 1
Ike, gEQuestActor_Target
7. Player_CollectPBFoto20 2
Substrings: 0
8. Ragnar_Endgame 2
Substrings: 1
Ragnar, gEQuestActor_Target
9. Logan_KillKonrad 2
Substrings: 1
Konrad, gEQuestActor_Target
10. Player_FindGoodStuff 2
Substrings: 3
Ragnar, gEQuestActor_Target
William, gEQuestActor_Target
Reinhold, gEQuestActor_Target
11. Player_CollectGaurudium 2
Substrings: 1
It_Misc_Gaurudium_Falk, gEQuestActor_Target
12. Player_KillMainBanditForKLETrader 2
Substrings: 0
1 0 0 0 1 0 0 0 0 0 0 0
13. Alrik_BringHimSword 2
Substrings: 2
Alrik, gEQuestActor_Client 0000
It_Swd_1h_BSK_Sword_Ragnar, gEQuestActor_Target
14. Player_FindBarinsCasket 2
Substrings: 1
[Bild: ELEX_savegame_analyse_1.jpg]
Die whatever-structs konnte ich überspringen; so sieht schon ganz gut aus:
Spoiler:(zum lesen bitte Text markieren)14. Player_FindBarinsCasket [2] 0E10: 2
Substrings: 1
structs: 22
It_Con_Casket_Barin, gEQuestActor_Target
15. Ragnar_ReportBanditAmbush [2]
Substrings: 2
Ragnar, gEQuestActor_Client 0000
Thorgal, gEQuestActor_Target
16. Ray_ForAHandFullOfShards [2]
0E10: 1
Substrings: 2
structs: 46
Ray, gEQuestActor_Client 0000
Wyatt, gEQuestActor_Target
17. Smoke_DuelHim [2]
Substrings: 1
Smoke, gEQuestActor_Client 0000"in der Erkundung dieser weiten und wunderbaren Welt" (post #70, höre link unten)
TAS for Elex 2 at ELEX II Nexus - Mods and Community (nexusmods.com)
Tuvok, scannen Sie den Planeten nach Mikroplastik!
"Hört mir bloß auf mit "Stormson".
"In Toussaint wird schon für kleinere Schmähungen als diese Satisfaktion verlangt."
Genug der "Blumensträuße". Ich WILL MadBob! Beugt die Realität!Geändert von tombom81 (01.10.2018 um 23:04 Uhr)
-
Der Ansatz, den Savegame Gameevent Logger zu einem Questlogger zu erweitern, ist erstmal versandet beim Versuch, die Completed Quests zu finden.
Daher wandte ich mich wieder den Dialogen (in der w_info.hdrdoc) zu, und zwar denen, die gewissen Einschränkungen unterliegen, aber nicht über InfoConditions konditioniert sind.
146 (von 7679) infos erfordern nämlich einen Skill/Perk, ohne den die entsprechende Dialogoption nicht aktiviert werden kann.
Code:class bTObjArray<class gCRequiredPerk> RequiredPerks = [ class gCRequiredPerk { Version = 1; Properties { enum gESkill Perk = gESkill_Perk_Suggestion; int Value = 1; bool InvertTest = False; } ClassData { } }
22 x Skill_Survival
21 x Skill_Combat
19 x Skill_Crafting
24 x Skill_Soul
28 x Perk_Suggestion
Summe: 140, 6 noch nicht gefunden
Weitere 3 Perk_Suggestion als InfoCondition realisiert (hier aber enum gESkill Skill!):
------------------------------------------------------------
Code:class gCSkillValue SkillValue = class gCSkillValue { Version = 1; Properties { int Amount = 1; enum gESkill Skill = gESkill_Perk_Suggestion; bool InvertTest = False; } }
edit: wenigstens für Skill_Soul wollte ich es mal gemacht haben:
Kältewert maximal 49:
Spoiler:(zum lesen bitte Text markieren)215 "PANKRATZI7_00730" { "Thorald";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Den Hybriden zu vernichten scheint mir der einzige Weg zu sein, um diese Welt zu retten."
774 "PANKRATZI7_00742" { "Wardek";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"SO nennst du das? Du Schwein hast unser LEBEN zerstört... ALB!"
811 "PANKRATZI7_00770" { "Harley";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Der Gleiter ist die einzige Chance, die freien Menschen vor dem bevorstehenden Angriff der Albs zu retten."
1769 "PANKRATZI7_00678" { "Ulbricht";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Das Risiko, dass der oberste Judikator fällt, ist zu groß. Bleib hier und kämpfe mit uns zusammen."
2016 "PANKRATZI7_01260" { "Zardom";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Du wirst jetzt bezahlen für deinen Verrat."
2967 "PANKRATZI7_00819" { "Hybrid";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"DEINE Art ist gnadenlos und schlachtet Menschen ab."
2981 "PANKRATZI7_00232" { "Sestak";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Ich gehöre nicht mehr zum Volk der Albs."
3304 "PANKRATZI7_00762" { "Kallax";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Du bist mein BRUDER. Auch wenn es nur eine Lüge ist, haben wir doch ein ganzes Leben zusammen verbracht."
3643 "PANKRATZI7_00332" { "Zardom";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Das Risiko würde ich eingehen."
5333 "PANKRATZI7_00771" { "Harley";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Du tust, was ich dir sage oder ich schnalle dich beim Start vor meinen Antrieb."
5390 "PANKRATZI7_00830" { "Hybrid";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Ich glaube dir kein Wort."
7190 "PANKRATZI7_00370" { "Sestak";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Der Hybrid muss weg. Eine andere Möglichkeit sehe ich nicht."
7456 "PANKRATZI7_01164" { "Tarek";
enum gESkill Perk = gESkill_Soul;
int Value = 49;
bool InvertTest = True;
"Du bist verblendet. Der Hybrid hat deinen Geist vernebelt."
Kältewert mindestens 50
Spoiler:(zum lesen bitte Text markieren)326 "PANKRATZI7_00763" { "Kallax";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Irgendetwas stimmt nicht mit dem Hybriden. Das ist SO offensichtlich, dass selbst DU das einsehen musst."
1460 "PANKRATZI7_01166" { "Tarek";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Richtig. Doch müssen wir einige Modifizierungen vornehmen."
1902 "PANKRATZI7_00824" { "Hybrid";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Wenn das so ist, wann werde ich die nächste Evolutionsstufe erreichen?"
2311 "PANKRATZI7_00744" { "Wardek";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Die Vergangenheit ist irrelevant. Wenn wir erfolgreich sein wollen, müssen wir WEITERMACHEN."
2336 "PANKRATZI7_00772" { "Harley";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Nenn mir deinen Preis."
2394 "PANKRATZI7_00831" { "Hybrid";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Du bist wahrlich ein perfektes Wesen, wenn du all das vorausgesehen hast."
2940 "PANKRATZI7_00788" { "Sestak";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Nichts, was ich bisher hier draußen fand, hat je meine Loyalität zum Hybriden verändert."
3554 "PANKRATZI7_01262" { "Zardom";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Ich werde nicht gegen dich kämpfen.."
4765 "PANKRATZI7_00677" { "Ulbricht";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Effektivität muss unser Handeln bestimmen. Geh mit Reinhold und beschäftige das Hauptheer, bis wir da sind."
7334 "PANKRATZI7_00728" { "Thorald";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Für mich ist der Hybrid IMMER noch die Krone der Schöpfung."
7515 "PANKRATZI7_00233" { "Sestak";
enum gESkill Perk = gESkill_Soul;
int Value = 50;
bool InvertTest = False;
"Der Stärkere wird gewinnen.""in der Erkundung dieser weiten und wunderbaren Welt" (post #70, höre link unten)
TAS for Elex 2 at ELEX II Nexus - Mods and Community (nexusmods.com)
Tuvok, scannen Sie den Planeten nach Mikroplastik!
"Hört mir bloß auf mit "Stormson".
"In Toussaint wird schon für kleinere Schmähungen als diese Satisfaktion verlangt."
Genug der "Blumensträuße". Ich WILL MadBob! Beugt die Realität!Geändert von tombom81 (03.12.2018 um 18:35 Uhr)
-
-
Ich habe einen Quest-/Info-Checker für Gothic 3, den ich für ELEX umstricken will, früher oder später. Da geht es aber darum, vorhandene infos in ihren Abhängigkeiten darzustellen.
Ein Editor wäre natürlich cool; ich persönlich bearbeite die w_info.hdrdoc allerdings mit Notepad; habe nur einen kleinen "{}"-Checker erstellt, um zukünftig verschiedene mod_dialog.hdrdoc an die w_info anhängen zu können.
Nachtrag: (2 Jahre, 9 Monate später, wow):
Hier ist der Anhängskram umgesetzt (ELEX scripting "mod"):
https://www.nexusmods.com/elex/mods/...scription&BH=0"in der Erkundung dieser weiten und wunderbaren Welt" (post #70, höre link unten)
TAS for Elex 2 at ELEX II Nexus - Mods and Community (nexusmods.com)
Tuvok, scannen Sie den Planeten nach Mikroplastik!
"Hört mir bloß auf mit "Stormson".
"In Toussaint wird schon für kleinere Schmähungen als diese Satisfaktion verlangt."
Genug der "Blumensträuße". Ich WILL MadBob! Beugt die Realität!Geändert von tombom81 (25.09.2021 um 21:04 Uhr)