Moin,
dieses Tutorial ist für all diejenigen denen es ging und geht wie mir.
Man hat einen kleinen Mod gemacht und will jetzt noch einige kleine Änderungen durch das Skript lösen, hat aber keine Ahnung davon wie das geht.
Das Forum hier, die Zone oder twc haben zwar für fast alles eine Lösung aber bis man die teilweise gefunden hat, ist man alt und grau.
Darum hier einige Grundlegende Scripte die das Leben erleichtern sollen.
Bisher angesprochen:
ZitatAlles anzeigenNachricht über neue Prinzessin
Automatischer Namenswechseln von Städten
Unruhen in Städten
Armeen erschaffen
Armeen angreifen lassen
Events nur für bestimmte Fraktionen
Meldung über neuen KI Anführer
Zerstörung religiöser Gebäude
Fangen wir an.
NEUE PRINZESSIN
Benötigte Dateien:
campaign_script.txt im Ordner data/world/maps/campaign/imperial_campaign
historic_events im Ordner data/text
Für ein eigenes Bild (nicht notwendig da das Spiel einfach auf das Bild
des historischen Ereignisses zurückgreift wenn keines hinterlegt ist)
einfach eines im den Ordner eventpics in data/ui/southern_european hinterlegen.
Wem ist es nicht schon passiert, dass er 100 Runden gespielt hat und irgendwann in der Zeit vergessen hat regelmäßig nach dem Stammbaum zu schauen ob vielleicht ne Prinzessin volljährig geworden und damit als Handelsware zur Verfügung steht?
Hier die Lösung. In die campaign_script.txt kommt folgender Eintrag:
monitor_event CharacterComesOfAge FactionIsLocal ;volljaehrigkeit einer Person der eigenen Seite
and AgentType = princess ;Person ist eine Prinzessin
add_events
event historic princess_local ;Name des Events hier princess_local
date 0
end_add_events
end_monitor
In der Datei text/historic_events muß nun noch ein Eintrag für das event princess_local
z.B.
{PRINCESS_LOCAL_BODY}Frau sucht Mann mit Pferdeschwanz. Frisur egal
{PRINCESS_LOCAL _TITLE}Eine Prinzessin
Mit diesem kleinen Monitor bekommt ihr jetzt jedes Mal wenn eine eurer Prinzessinnen Volljährig wird eine Nachricht. Ihr könnt auch noch ein Bild im Ordner data/ui/southern_european/eventpics hinterlegen. Der name des Bildes muß derselbe sein wie der des Events. Hier eben: princess_local
Und weil es so schön war, auch gleich die verschärfte Version.
Wenn ihr auch einen Meldung bekommen wollt wenn eine Prinzessin einer anderen Fraktion volljährig wird dann braucht ihr wieder dieselben Dateien wie oben:
campaign_script.txt im Ordner data/world/maps/campaign/imperial_campaign
historic_events im Ordner data/text
Für ein eigenes Bild ( wie bereits erklärt nicht notwendig da das Spiel einfach auf das Bild des historischen Ereignisses zurückgreift wenn keines hinterlegt ist) einfach eines im den Ordner eventpics in data/ui/southern_european hinterlegen.
In die campaign_script.txt kommt folgender Eintrag:
monitor_event CharacterComesOfAge not FactionIsLocal ;volljaehrigkeit einer Person die nicht zur eigenen Seite gehört
and AgentType = princess ;Person ist eine Prinzessin
and FactionType england ;Gehört zur Fraktion England
add_events
event historic princess_england ;Name des Events hier princess_england
date 0
end_add_events
end_monitor
Dies einfach für alle Fraktionen machen, für die man eine Meldung bekommen will. Bei Frankreich natürlich "and FactionType france" und "event historic princess_france"
Danach auch wieder für alle Im Ordner data/text/historic_events einen Eintrag hinterlegen.
Für die englische Prinzessin aus dem Beispiel:
{PRINCESS_ENGLAND_BODY}Eine Frau aus England sucht Mann mit Pferdeschwanz. Frisur egal.
{PRINCESS_ ENGLAND_TITLE}Eine englische Prinzessin
Für ein eigenes Bild es genauso machen wie bei ner eigenen Prinzessin. data/ui/southern_european/eventpics ein Bild mit dem Namen des Events hinterlegen. Hier eben princess_england
Dank an gigantus und weissnicht die mir das erklärt haben.
---------------------------------------------------------------------------------------------------------------------------------
Und schon kommt das Nächste.
AUTOMATISCHER NAMENSWECHSEL DER STÄDTE
Benötigte Dateien:
campaign_script.txt im Ordner data/world/maps/campaign/imperial_campaign
expanded.txt im Ordner data/text
Schon zu Zeiten von Rome haben mich immer die starren Namen der Städte gestört. Warum sollte als Brite meine Stadt Londinum heißen wo doch die Römer noch gar nicht da waren. Warum heißt es immer noch Smyrna und nicht Izmir wenn die Türken die Stadt erobern.
Zwar konnte man seit BI in der Stadtinfo seine eigenen Städte umbenennen, aber die KI macht so etwas nicht.
Hier eine Lösung am Beispiel Trebizond:
ZitatAlles anzeigenmonitor_event FactionTurnEnd FactionType slave ;Test am Ende des Zuges der Rebellen
if I_SettlementOwner Trebizond = turks ;wenn die Stadt Trebizond im Besitz der turks
change_settlement_name Trebizond Trebizond2 ;umbenennung der Stadt Trebizond in Trebizond2
end_if
if I_SettlementOwner Trebizond = moors ;wenn die Stadt Trebizond im Besitz der moors
change_settlement_name Trebizond Trebizond2 ;umbenennung der Stadt Trebizond in Trebizond2
end_if
if I_SettlementOwner Trebizond = egypt ;wenn die Stadt Trebizond im Besitz der egypt
change_settlement_name Trebizond Trebizond2 ;umbenennung der Stadt Trebizond in Trebizond2
end_if
if I_SettlementOwner Trebizond = timurids ;wenn die Stadt Trebizond im Besitz der timurids
change_settlement_name Trebizond Trebizond2 ;umbenennung der Stadt Trebizond in Trebizond2
end_if
if I_SettlementOwner Trebizond = byzantium ;wenn die Stadt Trebizond im Besitz von byzantium
change_settlement_name Trebizond Trebizond ;umbenennung der Stadt Trebizond in Trebizond
end_if
if not I_SettlementOwner Trebizond = byzantium ;wenn die Stadt Trebizond nicht im Besitz von byzantium
and not I_SettlementOwner Trebizond = turks ;und nicht im Besitz der turks
and not I_SettlementOwner Trebizond = moors ;und nicht im Besitz der moors
and not I_SettlementOwner Trebizond = egypt ;und nicht im Besitz der egypt
and not I_SettlementOwner Trebizond = timurids ;und nicht im Besitz der timurids
change_settlement_name Trebizond Trebizond3 ;umbenennung der Stadt Trebizond in Trebizond3
end_if
end_monitor
So funktioniert es aber noch nicht. Die Namen der Städte müssen noch in die expanded.txt im Ordner data/txt eingetragen werden. In dem Fall hier:
Kurz erklärt: Wenn die Stadt unter der Kontrolle der turks, moors, egypt, oder tumurids ist (grün), wird für die Stadt Trebizond der Name Trebizond2 verwendet und auf der Karte der Name Trabzon angezeigt.
Ist die Stadt unter der Kontrolle der Byzantiner (lila) der Name Trebizond verwendet und Trapezos auf der Karte gezeigt.
Sollte keine der genannten Fraktionen die Stadt kontrollieren (rot), bekommt sie den Namen Trebizond3 und Trapezund ist zu sehen.
Ich benenne hier am Ende des Zuges der Rebellen/Aufständischen (slave) um. Man könnte es auch nach Ende des eigenen machen. Dann heißt es monitor_event FactionTurnEnd FactionIsLocal Kann jeder machen wie er will.
Hinweis:
Hinweis für Namenswechsel in Städtenamen welche nicht die "normalen" Buchstaben benutzen und oder Sonderzeichen verwenden.
Es kann passieren, daß diese Namen zwar auf der Strategiekarte korrekt angezeigt werden, aber in der Schriftrolle der betreffenden Stadt garnicht oder nur teilweise gezeigt werden.
Es bleibt einem da wohl nicht anderes übrig als die Buchstaben bzw. Sonderzeichen zu ersetzen bzw. ganz zu entfernen oder auf die korrekte Schreibweise in der Stadtansicht zu verzichten.
-----------------------------------------------------------------------------------------------------------------------------------
Noch ist etwas Platz, nutzen wir ihn.
UNRUHEN ERSCHAFFEN
Benötigte Dateien:
campaign_script.txt im Ordner data/world/maps/campaign/imperial_campaign
Das ist etwas Lustiges.
Man übernimmt ne Siedlung, lässt einige Köpfe rollen, aber
statt Dankbarkeit für unsere neue gerechte Regierung, werden die Einwohner
unzufrieden und aufständisch.
So etwas kommt auch im normalen Spiel vor? Sicher, Aber wie
währe es wenn ganze Landstriche so sind? So etwas kann einen ganzen Feldzug
ausbremsen, wenn man ständig starke Besatzungstruppen zurücklassen muss.
Und wir erreichen das, mit einem kleinen monitor der in die campaign_script.txt kommt:
monitor_event GeneralCaptureSettlement SettlementName Athen ;Test wenn die Stadt Athen erobert wird
and not FactionType byzantium ;und es nicht byzantium war
add_settlement_turmoil Athen 25 ;Aufruhr erzeugen
end_monitor
Damit wird in der Stadt Athen nach der Eroberung einer
Fraktion die nicht byzantium ist ein Tumult/Aufruhr erzeugt, der sich langsam Runde für
Runde abbaut. Das ist für alle Städte möglich, oder nur für ausgewählte Gebiete.
Bis die Zufriedenheit wieder auf normal ist, wird man nicht darum hin kommen, Besatzungstruppen zurücklassen. Nichts da mehr mit: Stadt massakrieren 2 Einheiten zurücklassen und weiterziehen. Wenn man böse ist, könnte man das auch noch mit ner gespawnten Armee kombinieren, welche die Stadt angreift falls man zu früh zu viele Truppen herausnimmt und so eine niedrige Zufriedenheit hat.
Dazu aber später mehr.
--------------------------------------------------------------------------------------------------------------------------------
Das war es erstmal.
Wenn ich lustig bin und es gewünscht wird schreib ich ein ander mal weiter.
Ein kleiner Tipp. Wer etwas in sein Script einbaut, immer erst Eines nach dem Anderen eingeben und testen. Dadurch lassen sich Fehler besser finden und korrigieren als später.
Zum Schluss noch einige Worte.
Alle Beispiele hier sind das was der Name sagt – Beispiele.
Alles was ich geschrieben habe, ist in meinen privaten mods so oder in abgewandelter Form vorhanden und funktioniert!
Selbstverständlich kann man es auch so und so schreiben und die und die Vorraussetzung noch einbauen. Das kann auch jeder gerne machen wie er möchte. Ich hab es versucht einfach zu halten und zu erklären, um das
massive durchsuchen zu erleichtern.
Aber selbstverständlich können beim Schreiben und Kopieren
Fehler auftreten. Dann bitte Bescheid sagen wenn ich absoluten Mist geschrieben
hab.
Wird fortgesetzt
Zur Diskussion bitte hier entlang