Wo kann man die Werte für Bücher ändern?

Users who are viewing this thread

EScoot_LG

Regular
Wo kann man die Werte für Bücher ändern, in welcher txt? Einmal die Intelligenz Anforderungen und welche Skills erhöht werden. Die Texte sind in Strings.txt aber wo ist der Rest?
 
Die Werte für Bücher werden im Module System unter anderen im Skript game_get_skill_modifier_for_troop in module_scripts.py festgelegt, bei den Intelligenzanforderungen bin ich mir gerade nicht sicher. Das heißt, du müsstest in scripts.txt Ausschau halten oder wie die kompilierte Datei dann heißt. Kann aber sehr trickreich sein, nicht sicher, ob sich das so einfach in den txt-Dateien ändern lässt.
 
Mit der Antwort kann ich nicht so viel anfangen da ich mit Phyton (das ist ja einfach nur ein schwarzes DOS Fenster) oder module_system nicht umgehen kann, aber vielleicht muss ich das auch nicht. Im Grunde möchte ich da nämlich überhaupt nichts ändern sondern das Original zurück haben.

Wenn ich wüsste in welcher .txt (von der Mod, nicht module_systems.py) die Werte sind könnte ich einfach die Stelle aus dem original Native module zurück ersetzen.
In der scripts.txt gibt es auch ein "game_get_skill_modifier_for_troop" aber das scheint es nicht zu sein, wo sind dann die Werte?

Zur Erklärung: Ich hatte anfangs den Riesenfehler gemacht, nicht das Original Native module zu modden sondern eine andere native-enchancement oder eher bug-enchancement mod. In dieser Mod werden durch die Bücher nicht nur der eigentliche skill erhöht sondern auch ein weiterer skill. Im Text (sobald das Buch fertig gelesen ist) stand dann was von "...wisdom increased by ..." aber im Spiel gibt es ja kein wisdom, sondern was wirklich erhöht wurde war dann der throwing skill. Also habe ich stattdessen vorübergehend im Text hinzugefügt "...From_time_to_time_you_interrupted_your_reading_process_to_practice_some_knife_throwing,_so_your_throwing_skill_also_increased_by_..."
Würde den bug nun trotzdem gerne durch replace aus dem Original fixen.

Du hattest übrigens beim field maps bug Recht(wo die barrier fehlte), der Fehler lag in scenes.txt ich konnte durch diesen Tipp, diesen und einen weiteren bug durch o.g. Methode fixen, vielen dank dafür. Noch 3 solcher Hinweise und ich kann vielleicht bald eine bugfree version 1.0 uploaden.

Zurück zu meiner eigentlichen Frage, in welcher .txt (vom entsprechenden Module nicht module_systems.py) könnten die Bücherwerte sein?
 
Die Intelligenzanforderungen für Bücher werden für jedes individuell gesetzt mittels dem Wert in slot_item_intelligence_requirement. Der Slot hat laut module_constants.py den Wert 4:
Code:
slot_item_intelligence_requirement = 4

Das Skript game_get_skill_modifier_for_troop in module_scripts.py hat folgenden Skriptausschnitt:
Code:
  #script_game_get_item_extra_text:
  # This script is called from the game engine when an item's properties are displayed.
  # INPUT: arg1 = item_no, arg2 = extra_text_id (this can be between 0-7 (7 included)), arg3 = item_modifier
  # OUTPUT: result_string = item extra text, trigger_result = text color (0 for default)
  ("game_get_item_extra_text",
    [
      (store_script_param, ":item_no", 1),
      (store_script_param, ":extra_text_id", 2),
      (store_script_param, ":item_modifier", 3),
...
      (else_try),
        (is_between, ":item_no", readable_books_begin, readable_books_end),
        (try_begin),
          (eq, ":extra_text_id", 0),
          (item_get_slot, reg1, ":item_no", slot_item_intelligence_requirement),
          (set_result_string, "@Requires {reg1} intelligence to read"),
          (set_trigger_result, 0xFFEEDD),
        (else_try),
          (eq, ":extra_text_id", 1),
          (item_get_slot, ":progress", ":item_no", slot_item_book_reading_progress),
          (val_div, ":progress", 10),
          (assign, reg1, ":progress"),
          (set_result_string, "@Reading Progress: {reg1}%"),
          (set_trigger_result, 0xFFEEDD),
        (try_end),
Das heißt, du musst in scripts.txt reinschauen und dort nach game_get_skill_modifier_for_troop suchen. Es wird eine lange Zahlenkolonne haben. Du müsstest in item_kinds1.txt nachzählen, das wievielte Item jedes Buch ist und nach dieser Zahl suchen. In Native hat das erste Buch eine Zahl zwischen 80-85, bin mir nicht sicher, was bei dir alles hinzugefügt wurde. Da sollte dann auch irgendwo eine 4 dabei stehen für den Slot und in der Nähe die Zahl für die Intelligenzanforderung. Soweit die Theorie, in der Praxis ist mir dies nicht gelungen in Native.

Welche Skill erhöht wird, wird im Skript game_get_skill_modifier_for_troop festgelegt. Das scheint aber nur auf drei Bücher zuzutreffen, itm_book_wound_treatment_reference, itm_book_training_reference und itm_book_surgery_reference. Der Effekt der lesbaren Bücher wird in module_simple_triggers.py festgelegt (simple_triggers.txt ist das kompilierte Äquivalent):
Code:
  # Read books if player is resting.
  (1, [(neg|map_free),
       (gt, "$g_player_reading_book", 0),
       (player_has_item, "$g_player_reading_book"),
       (store_attribute_level, ":int", "trp_player", ca_intelligence),
       (item_get_slot, ":int_req", "$g_player_reading_book", slot_item_intelligence_requirement),
       (le, ":int_req", ":int"),
       (item_get_slot, ":book_reading_progress", "$g_player_reading_book", slot_item_book_reading_progress),
       (item_get_slot, ":book_read", "$g_player_reading_book", slot_item_book_read),
       (eq, ":book_read", 0),
       (val_add, ":book_reading_progress", 7),
       (item_set_slot, "$g_player_reading_book", slot_item_book_reading_progress, ":book_reading_progress"),
       (ge, ":book_reading_progress", 1000),
       (item_set_slot, "$g_player_reading_book", slot_item_book_read, 1),
       (str_store_item_name, s1, "$g_player_reading_book"),
       (str_clear, s2),
       (try_begin),
         (eq, "$g_player_reading_book", "itm_book_tactics"),
         (troop_raise_skill, "trp_player", "skl_tactics", 1),
         (str_store_string, s2, "@ Your tactics skill has increased by 1."),
       (else_try),
         (eq, "$g_player_reading_book", "itm_book_persuasion"),
         (troop_raise_skill, "trp_player", "skl_persuasion", 1),
         (str_store_string, s2, "@ Your persuasion skill has increased by 1."),
       (else_try),
         (eq, "$g_player_reading_book", "itm_book_leadership"),
         (troop_raise_skill, "trp_player", "skl_leadership", 1),
         (str_store_string, s2, "@ Your leadership skill has increased by 1."),
       (else_try),
         (eq, "$g_player_reading_book", "itm_book_intelligence"),
         (troop_raise_attribute, "trp_player", ca_intelligence, 1),
         (str_store_string, s2, "@ Your intelligence has increased by 1."),
       (else_try),
         (eq, "$g_player_reading_book", "itm_book_trade"),
         (troop_raise_skill, "trp_player", "skl_trade", 1),
         (str_store_string, s2, "@ Your trade skill has increased by 1."),
       (else_try),
         (eq, "$g_player_reading_book", "itm_book_weapon_mastery"),
         (troop_raise_skill, "trp_player", "skl_weapon_master", 1),
         (str_store_string, s2, "@ Your weapon master skill has increased by 1."),
       (else_try),
         (eq, "$g_player_reading_book", "itm_book_engineering"),
         (troop_raise_skill, "trp_player", "skl_engineer", 1),
         (str_store_string, s2, "@ Your engineer skill has increased by 1."),
       (try_end),
   
       (unlock_achievement, ACHIEVEMENT_BOOK_WORM),

       (try_begin),
         (eq, "$g_infinite_camping", 0),
         (dialog_box, "@You have finished reading {s1}.{s2}", "@Book Read"),
       (try_end),
           
       (assign, "$g_player_reading_book", 0),          
       ]),
Intuitive hätte ich also wieder nach der Zahl des Buches gesucht, hab aber selber für Native wieder nicht wirklich Erfolg gehabt.

Ich kann dir hier leider nicht wirklich weiterhelfen, ich hab noch nie wirklich nur mit txt Dateien gearbeitet und weiß nicht wirklich, wo man hier ansetzen sollte. Was hast du denn bisher alles insgesamt geändert? Vielleicht lässt sich ja das Pferd andersherum aufzäumen.

Ich kann dir an dieser Stelle auch nur empfehlen, den Sprung zum Module System zu machen, wenn du mehr vor hast als Items, Troops und Parties zu ändern. Es gibt nicht wirklich Leute, die mit txt Dateien mehr gemacht haben, weil es unglaublich aufwendig und zeitintensiv ist, die kompilierte Logik nachzuvollziehen und ein paar Zahlen zu verändern, während man es mit dem Module System relativ einfach machen kann. Für dein jetziges Projekt musst du das vielleicht nicht mehr machen, aber überlege es dir wirklich bei deinem nächsten. Es ist dann auch viel leichter, dir weiterzuhelfen. Bei mir ist hier jetzt auch schon wieder mindestens eine halbe Stunde draufgegangen, ohne dass ich dir eine Lösung geben kann.
 
Last edited:
"Was hast du denn bisher alles insgesamt geändert? Vielleicht lässt sich ja das Pferd andersherum aufzäumen."
Das wären ca. 3GB die ich zielgenau in ein frisches Native übertragen müsste, dazu hab ich alle Schreibfehler aus Native sowie aus Diplomacy korrigiert. Hier ein Auszug aus der Beschreibung (https://forums.taleworlds.com/index.php?threads/revolution-of-royals-native-enchancement-mod.444262/):
Inside:
-Over 1200 new Items (armors incl. female versions, weapons, horses, etc...), all edited, f.e. all helmets have visible eyes now (even tournier and native ones), replaced low texture items...

-Crouching enabled (with new crossbow reload animation), some npcs do crouch too.

-Character shout Orders

-Many small improvements like:
No searching for Guildmaster in towns/villages anymore, people in tavern, all lady face dublicates are changed (70% of Ladys have different faces now), you can sell all prisoners at once...

-Able to release imprisoned Lords.
-Replaced Arena Dagger with new Arena Short Sword (you can block with it).
-Prisoner Skill give +10 prisoner per Level now.
-Horse Whistle enabled.
-More Dialog options.

-...


Also ich hab alles mögliche in simple_triggers.txt usw. aus dem Original zurückersetzt aber dadurch entstehen nur neue Bugs während die Bücherwerte noch nicht mal zurück gesetzt werden. Mit dem "Module System" kann ich die Werte zurücksetzen?
Dann frag ich mal, wie lade ich überhaupt .py Dateien? Und wie mache ich aus der .py Datei eine .txt Datei?

Ich habe versucht Tutorials für Python zu lesen aber ich lese die ganze Zeit nur Sachen die ich nicht im geringsten brauche für meine eher speziellen Fragen und am Ende weiß ich nicht mal wie man eine .py Datei öffnet.

Was starte ich überhaupt, Module_system.bat oder Phyton.exe?

Wenn ich Module_system.bat starte, steht da Befehl python konnte nicht geladen werden.
Wenn ich Phyton.exe starte sehe ich ein schwarzes DOS Fenster und was mach ich weiter?
 
"Oh du moddest ohne Module system? Masochistische Veranlagungen?"
Ja und ging bisher viel schneller als 20 Seiten Tutorial durch zu lesen und trotzdem nicht weiter zu kommen als "Befehl python konnte nicht geladen werden" .
Wow, ich soll sogar eine "Systemvariable" in den tiefen der Erweiterten Systemsteuerung bearbeiten und einiges mehr bevor ich Phyton überhaupt benutzen kann. Versteht doch jedero_O?.
 
Ich arbeite noch daran, eine Methode zu finden, die den Einstieg für Neulinge erleichtert. Ich brauch da nur noch etwas. Das Problem ist halt, dass sich dir da langsam eine Modding-Hürde nähert, die du ohne das Module System nicht überspringen kannst.
 
Back
Top Bottom