Beiträge von weissnicht

    Tutorial für ein Garnisonsscript



    Dieses Tutorial ist für Fortgeschrittene, die wissen wo alle Dateien liegen.




    Öffnet die campaign_script.txt


    Dies ist der Code, den wir einfügen:




    Als erstes setzten wir also den counter rom_belagert auf 0.
    Wenn nun Rom belagert wird ("I_SettlementUnderSiege Rome" ) und die stadt vom Papst kontrolliert wird ("if I_SettlementOwner Rome = papal_states"), werden 2 Bauern Einheiten ("num 2") mit 2 Erfahrung (maximalwert 9) 1 Waffenupgrade (Maximalwert 9) und keinen Rüstungsupgrade (Maximalwert 9) in Rom gespawnt.
    Nun setzten wir den counter das Rom belagert wird auf 1, damit in der nächsten Runde nicht noch einmal gespawnt wird.


    Hoffe dieses kleine nicht ausführliche tutorial hilft einigen =)


    Grüße weissnicht


    Diskussionen und Fragen bitte in diesem Thread

    Neue Einheit erstellen



    Um eine komplett neue Einheit zu ertstellen, sidn nur 3 Dateien nötig.


    data/export_descr_units
    data/text/export_units
    data/unit_models/battle_models.db


    1. Einbau in die model.db


    Als erstes kreieren wir zwei neue Ordner unter unit_models/_units.
    und zwar unit_models/_units/totalwar
    und unit_models/_units/totalwar/textures



    Natürlich kann man den Ordner nennen wie man will, man muss nur in der model.db den Ordnerpfad dann jeweils anpassen!


    Kopiert nun ein Speerträgereinheiten Model (z.b. die Speermiliz (spear_militia zu finden unter unit_models/_units/en_peasant_padded ) in den Ordner unit_models/_units/totalwar und nennt es in totalwar_einheit_lod0 um.


    nun kopiert ihr die textur ( bei der der Speermiliz en_peasant_padded_hre (oder _france, _england etc. je nachdem wie die Einheit aussehen soll. Wollt ihr die Einheit neu skinnen, ist es egal welche ihr nehmt)) in den Ordner unit_models/_units/totalwar/textures.


    Da unsere Einheit ja eine Speerträgereinheit ist, kopieren wir in der model.db eine beliebige Speerträgereinheit, z.B. die levy_spearmen.


    Hier sind die originalen EInträge der levy_spearmen



    Die Nummern vor jeder Zeile entsprechen der Anzahl der Ziffern und Buchstaben in dieser Reihe.
    z.B. "weissnicht" hat 10 Cuhstaben, also würden wir 10 weissnicht





    Hier ist der neue Eintrag:





    Code
    54 unit_models/_Units/totalwar/totalwar_einheit_lod0.mesh 6400


    Ich gehe mal genauer auf diese Zeile ein. lod0 gibt das level of detail an. Also wie detailliert das Model der Einheit ist.
    Die Zahl 6400 gibt an, bis zu welcher Entfernung das Model und ab wann nur noch sprites angezeigt werden.


    Ihr müsst in der ersten Reihe die Zahl 701 (der vanillawert) immer um eins erhöhen pro neues Model. (also auch bei Upgrades!)

    Code
    22 serialization::archive 3 0 0 0 0 701 0 0


    wird zu


    Code
    22 serialization::archive 3 0 0 0 0 702 0 0


    jetzt noch speichern und zum nächsten Schritt.



    2. Einbau in der EDU - export_descr_units


    Öffne die Datei export_descr_units zu finden im data ordner


    Auch da kopieren wir den EIntrag der levy_spearmen und ändern die Einträge hinter:


    type
    dictionary
    soldier
    armour_ug_models




    In Addis Grundlagen für Modeinsteiger wird erklärt, was die ganzen Zeilen bedeuten =)


    Speichern und Spiel starten und schon ist die neue Einheit im Spiel!





    3. Der Einheit einen Namen geben


    Wenn ihr nach Schritt 1 und 2 das Spiel startet, werdet ihr merken, dass die Einheit keinen Namen hat. Damit wird Abhilfe geschaffen, indem wir in der datei export_units (data/text -> muss vorher mit dem string.bin converter konvertiert werden. Nach dem einfach googlen)
    folgendes hinzufügen:


    Code
    {totalwar_einheit}Totalwar Berserker
    {totalwar_einheit_descr}Diese Einheit ist die absolute übereinheit und wird alle anderen besiegen. 
    {totalwar_einheit_descr_short}Diese Einheit ist nur durch Moddingtools zu erstellen



    4. Zusatzinformationen


    Ihr werdet sehen, dass nur ein Bauer als Einheitenkarte und Einheiteninfokarte zu sehen ist. Wie ihr den wegbekommt wird hier beschrieben:
    http://www.twcenter.net/forums/showthread.php?t=221097



    formatierte model.db:
    http://www.twcenter.net/forums/showthread.php?t=84043
    http://www.twcenter.net/forums/showthread.php?t=196382

    Nur ein paar Einheiten sind von DG. Ein paar sind von King Kong. :)
    Aber wie ich es immer sage, DG ist nunmal einer, wenn nicht der, beste Skinner der Total War Serie nomentan...



    Aber das es hammer aussieht, ist nicht zu bestreiten.
    Also in 1.5 werd ich Eridaor spielen :P

    Scripting - Arbeiten mit Countern



    Benötigte Dateien:


    campaign_script -> data/world/maps/campaign/imperial_campaign
    historic_events -> data/text



    I. Teil


    Ich habe mir überlegt, wozu lasse ich eigentlich eine Rodung bauen, wenn ich das Holz hinterher nicht verkaufen kann. Also schreiben wir heute ein kleines Script, womit wir das Holz auf dem internationalen Holzmarkt verkaufen können...


    So sieht es aus, wenns fertig ist:



    Als erstes setzten wir den Counter und dazu noch einen zufallsgenerator, der zwischen 1, 2, 3 und 4 auswählt.



    monitor_conditions I_TurnNumber = 0 -> Der Counter wird direkt zu Spielstart gesetzt.
    add_events -> Der EventCounter wird gesetzt. Es gibt auch den normalen Counter "declare_counter blabla" Dazu später mehr.
    event counter Rodung
    end_add_events
    terminate_monitor -> Der Monitor wird nur einmal pro Spiel gelesen
    end_monitor -> Jeder Monitor muss so enden


    monitor_event FactionTurnEnd FactionType slave -> Der Zufallsgenerator wird zum Ende der Rebellenrunde geprüft
    generate_random_counter Rodung 1 4 -> Hier wird eine zufällige Zahl zwischen 1 und 4 gewählt.
    end_monitor -> Jeder Monitor muss so enden

    Danach kommt das eigentliche Script:


    monitor_event GovernorBuildingCompleted SettlementBuildingFinished = farms -> Das Event feuert, wenn das gebäude farms errichtet wurde. Im deutschen Spiel also unsere "Rodung"
    and FactionType byzantium -> Das Event feuert aber nur, wenn die Fraktion, die das Gebäude errichtet hat Byzanz ist. Dieser Part des Scriptes muss für jede Fraktion wiederholt werden!
    if I_EventCounter Rodung = 1 -> Hier kommt unser Zufallsgenerator ins Spiel. Er hat aus dem Rodungs-counter eine 1 gewählt. Das heißt bis zum end_if treffen alle Bedingungen nur zu, wenn eine 1 gewählt wurde.
    add_money byzantium 400 -> Der Holzverkauf brachte 400 Goldstücke ein
    historic_event rodung_klein -> Und um den Spiele zu informieren gibts ein Event.
    end_if
    if I_EventCounter Rodung = 2 -> Wenn der Zufallsgenerator eine 2 wählt gibts 700 Goldstücke und ein anderes Event.
    add_money byzantium 700
    historic_event rodung_mittel
    end_if
    if I_EventCounter Rodung = 3 -> Da wir nicht zu viel Geld erhalten wollen, gibts 2mal 700 Goldstücke
    add_money byzantium 700
    historic_event rodung_mittel
    end_if
    if I_EventCounter Rodung = 4 -> Und wenn man Glück hat gibts 1100
    add_money byzantium 1100
    historic_event rodung_gross
    end_if
    end_monitor


    Jetzt fehlt nur noch der EIntrag in der historic_events für unsere Benachrichtigungen:





    II. Teil


    Hier erkläre ich nun, wie man Counter noch einsetzten kann. Zum Beispiel bei einem garnisonsscript:




    Hier benötigen wir einen Counter, damit nicht die ganze zeit Truppen gespawnt werden.


    Hiermit:


    Code
    monitor_conditions not I_SettlementUnderSiege Rome			
    set_counter rom_belagert 0
    end_monitor


    Wird der Counter, immer wenn Rom nicht belagert ist auf 0 gesetzt.
    Wird Rom dann belagert und der Counter ist auf 0, d.h. Rom war vorher nicht belagert, spawnen die Truppen:


    Code
    monitor_conditions I_SettlementUnderSiege Rome
    and I_CompareCounter rom_belagert = 0
    
    
    if I_SettlementOwner Rome = hre					
    	create_unit Rome, Town Militia, num 2, exp 0, arm 1, wep 0
    set_counter rom_belagert 1
    end_monitor



    ich hoffe ihr habt in ungefähr verstanden wofür die Counter alles zu gebrauchen sind. Es gibt mit Sicherheit andere/bessere Wege. ich habe hier die mir bekannten Wege gezeigt.


    :wave:

    Zitat

    Das Purpur ist also nur eine Modeerscheinung und hat historisch keinen Hintergrund, bis auf die Senatoren, mit ihren purpurnenen Tunikas. Die Farbe war halt damals die Teuerste.


    ja,das haben auch meine Recherchen ergeben.


    Rot mit goldenem XP ist das historisch korrekteste.
    Ist auch so im Spiel verbaut :)

    Außerdem bin ich immer noch für meine Theorie: Die besten Modder sind deutsche!


    King Kong
    repman
    Dimitri_Harkov
    konny
    Rheumafuzzy
    Adorno
    gigantus


    um nur einige der ganz Großen zu nennen.
    Natürlich gibt es im twc noch viele super andere Modder, doch das kann man denke ich wirklich mit der höheren Mitgliedszahl erklären.