Ich dacht mir ich schreib mal wieder ein Tutorial:
In diesem werde ich erläutern wie man ein einfaches historisches Event scriptet, verschiedene, einfache, Bedingungen hinzufügt und dann noch ein paar Spezifikationen einbaut, etwa das direkte Zoomen zu einer Position, dass Spawnen von Armeen etc..
Hinweis vorweg: monitor_conditions verwende ich hier nur, weil das Tutorial an Anfänger und unerfahrene gerichtet ist. Erfahrene Scripter werden wissen, in welchen speziellen Fällen monitor_conditions nötig sind. Für Anfänger reichen aber monitor_conditions, da sie recht simpel sind. Sobald man über etwas Erfahrung verfügt sollte man aber recht schnell zu monitor_event wechseln.
Was man braucht:
----------------------------------
campaign_script.txt ---> ([...]\Medieval II Total War\mods\[...]\data\world\maps\campaign\imperial_campaign
historic_events.txt ---> ([...]\Medieval II Total War\mods\[...]\data\text
Maus + Tastatur
Personal Computer
Modfolder, eigene Mod oder Retrofit , entpacktes Vanilla
Hände ---> (Sollten an deinen Armen irgendwie befestigt sein: [...]\Torso\Arme\Hände)
----------------------------------
Nun gut, legen wir los:
Man öffnet die campaign_script.txt und fügt dies ein:
----------------------------------
I_TurnNumber = "Runde in der das Event kommen soll"
Die Bedingung, hier in welcher Runde das Event kommen soll, weitere Bedingungen die Erfüllt werden müssten, werden hinzugefügt mit "and".
historic_event test
Was ausgeführt werden soll wenn die Bedingung (condition) erfüllt wird, hier eine historische Eventnachricht, die in den Dateien den Identifikationsnamen test verwendet.
----------------------------------
Hinweis: Die Zahl hinter "I_TurnNumber =" gibt die Anzahl der gespielten Runden wieder, da die Kampagne in Runde 1 startet müsst ihr für ein Event was Runde 50 kommen soll 49 angeben.
----------------------------------
Damit unser Event Ingame nun auch kommt und es keinen sauberen CtD geben soll.(Wenn, glücklicherweise mit Logeintrag wenn es daran liegt.) müssen wir noch folgendes tun:
Erstmal vielleicht einen Kaffe trinken nach dieser Anstrengung, danach aber auf jeden Fall die historic_events öffnen un folgendes hinzufügen:
Wichtig ist: Genau der gleiche Name wie im campaign_script angegeben, nur Groß geschrieben und danach _TITLE oder _BODY.
Übrigens: Einen Absatz macht man mit \n und eine Leerzeile mit \n\n.
----------------------------------
Dies wäre die einfachste Form eines Events Ingame, eine einfache Nachricht, die in einer bestimmten Runde im Spiel erscheint, hier in der Zweiten. Dabei käme sie für jede Fraktion.
----------------------------------
Das reicht uns natürlich nicht, wir wollen das Event auch für eine Fraktion spezifizieren, also tun wir folgendes:
monitor_conditions I_TurnNumber = 1
and I_LocalFaction denmark
historic_event test
terminate_monitor
end_monitor
and I_LocalFaction denmark
Diese Zeile fügt die Bedingung hinzu, dass man eine Bestimmte Fraktion spielt, hier Dänemark.
Die "Labels" der Fraktionen, die man angeben muss, sind folgende:
[spoil]Crusades
egypt turks antioch jerusalem byzantium slave venice mongols
Americas
spain aztecs chichimeca tlaxcalans tarascans apachean mayans slave england
Britannia
france norway scotland england ireland wales
Teutonic
teutonic_order lithuania hre denmark poland novgorod slave venice
M2TW
sicily milan denmark egypt scotland aztecs turks france hre england portugal poland byzantium moors russia spain hungary papal_states slave
(Danke an Ladegos für die "freiwilige" zur Verfügung Stellung, entommen aus diesem Post.)
[/spoil]
----------------------------------
Als weitere Bedingung könnte man noch hinzufügen, dass die jeweilige Fraktion eine bestimmte Stadt hält:
monitor_conditions I_TurnNumber = 1
and I_LocalFaction denmark
and I_SettlementOwner Arhus = denmark
historic_event test
terminate_monitor
end_monitor
and I_SettlementOwner Arhus = denmark
Oben bereits erwähnte, zusätzliche Bedingung. Arhus, Name der betreffenden Stadt. Name der Fraktion die die Stadt halten muss, denmark in diesem Fall.
----------------------------------
Das wars auch erstmal an "Standard"-Bedingungen. Es gibt da natürlich noch einige weitere, aber die 3 sollten erstmal genügen.
----------------------------------
Da wird jetzt aber oben leider nur ein Standard Bild haben und das natürlich auch ändern wollen machen wir folgendes:
Wir gehen in den Pfad:
([...]:\SEGA\Medieval II Total War\mods\[...]\data\ui\southern_european\eventpics\)
Und dort können wir ein tga-Bildchen reinmachen das genau den gleichen Namen haben muss wie das historic_event, in diesem Fall: test.
Fertig, Eventbilder brauchen nur bei southern_european rein.
----------------------------------
Kommen wir zu weiteren Auswirkungen, neben dem historischen Event wollen wir aber noch dass es zu einem Bevölkerungsabzug kommt:
monitor_conditions I_TurnNumber = 1
historic_event test
console_command add_population Arhus, -700
terminate_monitor
end_monitor
console_command add_population Arhus, -700
Exakter Name der betreffenden Stadt, hier Arhus. Anzahl der abgezogenen Bewohner, macht das Minus weg wenn ihr einen Bevölkerungszuwachs erreichen wollt.
----------------------------------
Wollt ihr gerne eine Armee spawnen könnt ihr folgendes machen:
monitor_conditions I_TurnNumber = 1
historic_event test
spawn_army
faction hre
characterrandom_name, named character, age 45, x 240, y 164, direction N
traits LoyaltyStarter 1 , GoodCommander 2 , ReligionStarter 1
unitNE Bodyguardexp 8 armour 0 weapon_lvl 0
unitTown Militiaexp 5 armour 0 weapon_lvl 0
end
terminate_monitor
end_monitor
Alles anzeigen
faction hre
character random_name, named character, age 45, x 240, y 164, direction N
traits LoyaltyStarter 1 , GoodCommander 2 , ReligionStarter 1
unit NE Bodyguard exp 8 armour 0 weapon_lvl 0
unit Town Militia exp 5 armour 0 weapon_lvl 0
Entsprechende Fraktion, Hier ein zufälliger Name, Koordinate mit Ausrichtung, hier Norden.
Dadrunter finden sich noch ein paar Traits, dann beginnt die auflistung der genauen EInheiten.
Den genauen Script-Eintrag oben aus dem Code-Fenster entnehmen, dort kann man aber leider nichts Farbig machen.
----------------------------------
Diese X und Y Angabe lässt sich Ingame leicht herausfinden, auch mit Gimp gibt es eine Möglichkeit, leider vergess ich dort aber immer welche Zahlen man abziehen muss von der unten angegebenen Position, desshalb hier die Ingame-Variante:
Haltet den Mauszeiger direkt über die Position die ihr haben wollt und öffnet mit "ö" die Konsole. Tippt dort ein:
show_cursorstat
Umgehend werden euch dann alle nötigen Info´s angezeigt, neben dem Regionsnamen auch die passende Position des Mauszeigers auf der X und Y - Achse.
----------------------------------
Kommen wir noch zu ein paar netten Features, wie etwa den Zoom der Kamera auf eine bestimmte Position:
monitor_conditions I_TurnNumber = 1
historic_event test
snap_strat_camera 206, 110
terminate_monitor
end_monitor
snap_strat_camera 206, 110
Gibt die genaue Koordinate an. Zoomt die Kamera direkt dorthin, hier kann man auch "move" verwenden, dann wird die Kamera bei Auslösung des Scripts langsam dorthin bewegt, Nachteil: Bewegt der Spieler die Maus an den Bildschirmrand oder drückt die Pfeiltasten wird diese Bewegung abgebrochen.
----------------------------------
Nun können wir so toll die Kamera an eine Position bewegen, doch ist sie vom Nebel des Krieges verdeckt und der Spieler sieht nichts außer Schwarz, kein Problem:
monitor_conditions I_TurnNumber = 1
historic_event test
reveal_tile 206, 110
terminate_monitor
end_monitor
reveal_tile 206, 110
Wiedermals die genaue Position.
Dieser Befehl deckt die entsprechende Position auf und lässt sie auch immer sichtbar.
----------------------------------
Es gibt noch viele, viele weitere Auswirkungen, diese alle zu erklären würde aber den Rahmen deutlich sprengen...
----------------------------------
Bei Fragen, Kritik, Anmerkungen oder auch Todesdrohungen bitte Pn an mich oder in diesem Thread schreiben!
Ich hoffe es hat euch gefallen
Diskussionen und Fragen bitte hier!