Scripting: Feldkostenscript (M2TW)

  • Schon länger in Planung, jetzt ist es endlich da: Ein Scripting-Tutorial zur Umsetzung eines Feldkostenscripts, dem eine Ja/Nein-Entscheidung vorrausgeht.
    An dieser Stelle möchte ich mich auch bei repman bedanken, der mir freundlicherweise die Erlaubniss gab, am Beispiel vom DLV-Feldkostenscript die Sache zu veranschaulichen und deutlich zu machen. Ich denke nämlich, dass dort die Sache sehr gut umgesetzt ist.


    Kurz zur Erklärung was ein Feldkostenscript überhaupt ist: Dieses Script sorgt dafür, dass dem Spieler ein bestimmter, festlegbarer Geldbetrag abgezogen wird pro Runde, für Armeen die sich nicht in Städten/Burgen befinden.
    Dabei gibt es noch die Unterscheidung ob sie sich im eigenen Land oder im feindlichen befinden. Sowie einige weitere Dinge.


    Dabei ist das Script eigentlich relativ simpel, und im Prinzip einfaches Copy + Paste. Man kann es sich aber auch schwer machen und es einfach alles selbst schreiben.
    Zudem gibt es bei DLV noch das nützliche Feature, dass man sich den genauen Kostenaufwand anzeigen lassen kann.
    Mit ein Grund warum ich genau dass von DLV als Beispiel nehme.
    Hinweis: Das Tutorial ist so angelegt, dass man das Script hier, einfach in sein eigenes kopieren kann.
    Nun aber gehts endlich los mit dem eigentlichen Tutorial:
    ----------------------------------------------------------------
    Was wird benötigt:


    campaign_script.txt ---> ([...]\Medieval II Total War\mods\[...]\data\world\maps\campaign\imperial_campaign)
    historic_events.txt ---> ([...]\Medieval II Total War\mods\[...]\data\text)
    Modfolder, eigene Mod oder Retrofit , entpacktes Vanilla
    ----------------------------------------------------------------


    Zuerst zum Entscheidungsevent, dies ist relativ einfach:


    Code
    monitor_event PreFactionTurnStart FactionIsLocal
    historic_event field_costs true
    terminate_monitor
    end_monitor


    Der Spieler bekommt hier, in der allersten Runde, direkt beim Start einer Kampagne die abfrage, ob er die Feldkosten aktivieren möchte oder nicht.
    Dies kommt ins campaign_script, in die historic_events kommt hierfür:


    Code
    {FIELD_COSTS_BODY}\n\nSie können sich nun entscheiden ob sie sich Sie gerne für sich die Kampagnenschwierigkeit etwas erhöhen wollen, bei Annehmen kommen zusätzliche Kosten auf sie zu:\n\nFür Armeen belaufen sich ihre Kosten auf: 200 Goldmünzen im eigenen Land, 500 in feindlichen Landen und 2000 bei Belagerungen.\nFür Agenten belaufen sich die Kosten auf:\n\nSpion 500 Goldmünzen, Attentäter 500 Goldmünzen, Priester 100 Goldmünzen, Diplomaten 100 Goldmünzen.\n\nWenn sie den Kostenaufwand für die Feldkosten erfahren wollen, können sie 1 mal Pro Runde auf ihre Finanzübersicht klicken, dann erscheint ein Fenster in dem sie über die Kosten informiert werden.\n\n   
    {FIELD_COSTS_TITLE}Feldkosten


    Der enthaltende Text ist nur ein Beispieltext.
    ----------------------------------------------------------------
    Dann zu den Kosten selbst, zuerst für Truppen:


    Die Kosten wenn sie in feindlichen Landen sind:
    [spoil]

    [/spoil]
    Wenn die Armee im eigenen Land ist:
    [spoil]

    [/spoil]
    Und für den Fall, dass sie eine feindliche Siedlung belagert:
    [spoil]

    [/spoil]
    ----------------------------------------------------------------
    Die meisten Sachen sollten eigentlich relativ einleuchtend sein.
    and not AgentType = XYZ schließt die Agentypen aus, and [not] InEnemyLands definiert den Standort, and [not] IsBesieging definiert, ob die Armee gerade eine Siedlung belagert, oder nicht.


    Die Kosten können/werden hier angepasst.
    console_command add_money -2000
    inc_counter field_cost 2000

    --->
    Die abgezogenen Kosten aus dem Staatsäckel.
    Darauf gehe ich später nochmal ein, hat was mit der möglichkeit zu tun, sich anzeigen zu lassen wie hoch die Kosten sind.

    ----------------------------------------------------------------
    Kommen wir zu den Agenten, hier habe ich als Grundeinstellung, dass man nur Geld abgezogen bekommt, wenn sie in feindlichen Landen sind.
    Hier kann man genau so, wie bei den Armeen, die Kosten anpassen. Nicht vergessen: Der counter-Wert muss auch angepasst werden, sonst stimmen nachher die angegebenen Werte nicht mehr.


    [spoil]

    [/spoil]
    Ich denke hier sind keine weiteren Erklärungen nötig, die einzelnen Werte/Befehle/Bedingungen sollten mitlerweile verständlich sein.
    Man kann natürlich bestimmte Kosten weglassen, zB. den Händler, oder den Diplomaten. Dann einfach den gesamten Eintrag entfernen der dazugehört.
    ----------------------------------------------------------------
    Das waren auch schon die eigentlichen Kosten.
    Damit wir nun aber Ingame auch wissen, was uns der ganze Spaß immer kostet, gibt es bei DLV das Feature das man einmal (Pro Runde) auf die Finanzübersicht (Geldtopf rechts unten) klicken kann, sogleich öffnet sich eine historische Nachricht in der der Spieler informiert wird, wie hoch die kosten sind.


    Fortsetzung siehe 2ten Post!

  • Folgende Einträge sollte man einfach kopieren.
    Kommen eben so wie alles obere ins campaign_script, zu finden sind diese Sachen im 2ten Post, da die mir zur Verfügung stehende Anzahl der Zeichen nicht ausreicht.


    [spoil]

    [/spoil]
    Nächstfolgende Dinge im 3ten Post!

  • Das wars auch schon mit dem campaign_script, nun brauchen wir aber auch einen Inhalt der Nachricht, deswegen öffnen wir nun die historic_events, und kopieren folgendes hinein:


    [spoil]

    [/spoil]

  • Fortsetzung, der Eintragungen in die historic_events, einfach anfügen.
    [spoil]

    [/spoil]


    Viel Text wie man sieht, wer einzelne Werte ändern möchte, hat viel zu tun.
    Auch hier empfehle ich, die Eintragungen einfach aus diesem Tutorial zu kopieren.


    Wenn ihr nun alles richtig gemacht habt, solltet ihr ein funktionierendes Ja/Nein-Feldkostenscript in eurer Mod haben.
    Ich hoffe euch hat dieses Tutorial gefallen.



    Fragen, Rückmeldungen und Kritik bitte im dafür vorgesehenen Diskussionsthread!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!