Tutorial: Marktplatzvariationen einzeln baubar machen

  • Auf besonderen Wunsch eines einzelnen Herrn veröffentliche ich heute dieses Tut. Es beschäftigt sich vor allem mit Gebäudebedüfnissen.
    Die Icons sind im Anhang.


    • Schritt: Assets.xml unter config\game öffnen (Wichtig: wer mit Addon spielt muss die Dateien unter addon\patch0.rda bearbeiten, wer ohne spielt unter maindata\patch2.rda modden)
    • Schritt: In den Assets folgende Dateien unter objects\player buildings\public kopieren und in eine Zwischenablage einfügen (nur die GUIDs sind angegeben):
      -34000
      -35336
    • Schritt: 34000 : Marktplatz 3x & 35336 : Basar 1x kopieren.
    • Schritt: Nun bei den Marktplätzen folgende Änderungen vornehmen:
      -Ganz unten, kurz vor Ende des Assets kann man die GUID festlegen. Für jeden der Marktplätze eine unterschiedliche GUID anlegen. (mein pers. System ist es, einfach GUID- Nummern über 200.000.000 zu nehmen, da kommt man auf keinen Fall irgendwo dazwischen, am besten die GUID notieren bzw. in der guids.txt eintragen)
      -Dann kann man folgende Änderungen vornehmen:
      -Marktplatz:

    <Asset>
    <Template>PublicBuilding</Template>
    <Values>
    <Blocking />
    <BuildCost>
    <MoneyCost>400</MoneyCost>Geldkosten
    <ProductCost>Baukosten
    <Wood>5000</Wood>
    <Tools>3000</Tools>
    </ProductCost>
    <NeedsIntermediateLevel>Peasantlevel</NeedsIntermediateLevel>Wann ist dieses Gebäude verfügbar
    </BuildCost>
    <Building>
    <BuildingLevel>Peasant</BuildingLevel>Zu welcher Zivilisationsstufe gehört dieses Gebäude
    <BuildingType>MarketPlace</BuildingType>
    <BuildSound>2847</BuildSound>
    <IsWaterSourceForFeedback>1</IsWaterSourceForFeedback>
    </Building>
    <Danger />
    <FeedbackEventEmitter>
    <FeedbackList>
    <Item>
    <Feedback>Marketplace</Feedback>
    <EventModule>Event_Marketplace</EventModule>
    </Item>
    <Item>
    <Feedback>Protest</Feedback>
    <AutoEmit>1</AutoEmit>
    <EmitterModule>Event_Emitter_Protest</EmitterModule>
    <EventModule>Resident_Protest</EventModule>
    </Item>
    <Item>
    <Feedback>Talk</Feedback>
    <AutoEmit>1</AutoEmit>
    <EmitterModule>Event_Talk</EmitterModule>
    <EventModule>none</EventModule>
    </Item>
    <Item>
    <Feedback>Romance</Feedback>
    <AutoEmit>1</AutoEmit>
    <EmitterModule>Event_Romance</EmitterModule>
    <EventModule>none</EventModule>
    </Item>
    <Item>
    <Feedback>Fight</Feedback>
    <AutoEmit>1</AutoEmit>
    <EmitterModule>Event_Fight</EmitterModule>
    <EventModule>none</EventModule>
    </Item>
    </FeedbackList>
    </FeedbackEventEmitter>
    <Hitpoints />
    <Influence>
    <InfluenceRadius>20</InfluenceRadius>Einflussradius des Gebäudes
    <InfluenceRadiusType>Residence</InfluenceRadiusType>
    <InfluenceRadiusTypeNeeded />
    </Influence>
    <InfoLayer />
    <KIModule>
    <ModuleCall>Marketplace()</ModuleCall>
    </KIModule>
    <MaintenanceCost>
    <ActiveCost>10</ActiveCost>Unterhaltskosten, beide Werte verändern
    <InactiveCost>10</InactiveCost>
    </MaintenanceCost>
    <Mesh>
    <DefaultIdleSequence>stand01</DefaultIdleSequence>
    <Ambient>4016</Ambient>
    <ShowGlyph>1</ShowGlyph>
    </Mesh>
    <Object>
    <Variations>
    <Item>Grafikdatei des Bauernmarktplatzes
    <Filename>data\graphics\buildings\public\north\market_place01\n_market_place01.cfg</Filename>
    </Item>
    <Item>Grafikdatei des Bürgermarktplatzes
    <Filename>data\graphics\buildings\public\north\market_place01\n_market_place02.cfg</Filename>
    </Item>
    <Item>Grafikdatei des Patriziermarktplatzes
    <Filename>data\graphics\buildings\public\north\market_place01\n_market_place03.cfg</Filename>
    </Item>
    <Item>Grafikdatei des Adligenmarktplatzes
    <Filename>data\graphics\buildings\public\north\market_place01\n_market_place04.cfg</Filename>
    </Item>
    </Variations>
    <VariationAllowedToBuild>0</VariationAllowedToBuild>
    </Object>
    <PublicBuilding>
    <BuildingDemandEfficiency>
    <Beggar_in_hospice>100</Beggar_in_hospice>Zu wie viel Prozent stellt dieses Gebäude Bettler zufrieden
    <Ruin_of_peasant>100</Ruin_of_peasant>Zu wie viel Prozent stellt dieses Gebäude Ruinen zufrieden
    <Peasant>100</Peasant>Zu wie viel Prozent stellt dieses Gebäude Bauern zufrieden
    <Citizen>100</Citizen>Zu wie viel Prozent stellt dieses Gebäude Bürger zufrieden
    <Patrician>100</Patrician>Zu wie viel Prozent stellt dieses Gebäude Patrizier zufrieden
    <Nobleman>100</Nobleman>Zu wie viel Prozent stellt dieses Gebäude Adlige zufrieden
    </BuildingDemandEfficiency>
    <BuildingDemandCategories>Company</BuildingDemandCategories>
    <BuildingDemandColor>-4009113</BuildingDemandColor>
    </PublicBuilding>
    <Selection>
    <GUIType>MarketPlace</GUIType>
    <PortraitForeground>data\config\gui\Backgrounds\Final\character_backgrounds\marketImage.bg2</PortraitForeground>
    </Selection>
    <Standard>
    <Name>Marketplace</Name>Name des Gebäudes
    <GUID>34000</GUID>GUID-Nummer des Gebäudes
    </Standard>
    <TradingPrice />
    <Upgradable />
    <Warehouse />
    </Values>
    </Asset>
    Zu den Geldkosten muss man wahrscheinlich nichts sagen, zu den Baukosten nur so
    viel: Wood = Holz, Tools = Werkzeug, Stone = Steine, Mosaic = Mosaik, Dummy = Stoffe, Silk = Seide. Das ist das was ich gebraucht habe. Bei IntermediateLevel wird es schon interessanter. Dazu muss man wissen wie viele Einwohner welcher Zivilisationsstufe welchem IntermediateLevel zugeordnet sind. Das erfährt man in den Properties.xml (Im selben Ordner wie die Assets.xml). Die Level sind in Zeile 12887-13291, Hier braucht man ein bisschen Englischkenntnisse falls man die Einwohnerzahlen nicht auswendig weiß. (Die meisten IAAM-Level sind bei AmabassadorLevel[XY], fragt mich nicht warum. Wer Mathe kann und noch weiß was ein Kreis ist, der sollte mit der nächsten Größe auch kein Problem haben. Die Zivilisationsstufe gilt (meines Wissens) nur für die Übersicht. Unterhaltskosten, tja, was soll ich sagen, einfach machen ;-). So, nun zu den Grafikdateien: Wer sich SDs Tut mal durchgelesen hat, weiß, dass dort alle Grafikdateien „zusammengepuzzelt“ werden. Alle Grafikdateien bis auf die gewünschte löschen. Die Bedürfniserfüllung macht in so fern Sinn: Wenn ein Bauernmarktplatz Bauern nur zu 50% zufriedenstellt, und man Bauern dann so definiert, dass sie nur bei 100%er Erfüllung aufsteigen können (was dann bei mir der Bürgermarktplatz übernimmt), hat man ein weiteres Aufstiegsbedürfnis. Die Aufsteigebedingungen kann man hier abstimmen: properties.xml\Zeile 13232 CategoryQuotes. Das sieht dann zum Beispiel so aus:
    <Peasant>
    <Category>
    <Food>
    <Citysize>
    <Small>
    <DowngradeQuote>1</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>55</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <DowngradeQuote>5</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>25</Efficiency>
    </Food>
    <Drink>
    <Citysize>
    <Small>
    <DowngradeQuote>1</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>50</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <DowngradeQuote>5</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>25</Efficiency>
    </Drink>
    <Clothes>
    <Citysize>
    <Small>
    <DowngradeQuote>5</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>50</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <DowngradeQuote>5</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>25</Efficiency>
    </Clothes>
    <Property>
    <Citysize>
    <Small>
    <DowngradeQuote>5</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>50</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <DowngradeQuote>5</DowngradeQuote>
    <MinQuote>10</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>25</Efficiency>
    </Property>
    <Company>
    <Citysize>
    <Small>
    <MinQuote>50</MinQuote>
    <UpgradeQuote>100</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <MinQuote>50</MinQuote>
    <UpgradeQuote>100</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>60</Efficiency>
    </Company>
    <Faith>
    <Citysize>
    <Small>
    <MinQuote>90</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <MinQuote>90</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>40</Efficiency>
    </Faith>
    <Amusement>
    <Citysize>
    <Small>
    <MinQuote>90</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </Small>
    <ExtraLarge>
    <MinQuote>90</MinQuote>
    <UpgradeQuote>95</UpgradeQuote>
    </ExtraLarge>
    </Citysize>
    <Efficiency>30</Efficiency>
    </Amusement>
    </Category>
    </Peasant>
    DowngradeQuote heißt: zu wie viel Prozent ist das Bedürfnis erfüllt, wenn das Gebäude absteigt, Min Quote, wann ist das Bedürfnis ausreichen erfüllt, UpgradeQuote, wann kann das Gebäude absteigen. Wir setzen also bei Company bei MinQuote 50 und bei UpgradeQuote 100. Citysize ist die Größe der Stadt, einigen ist sicherlich schon aufgefallen, dass 10000 Patrizier mehr Bier brauchen um zufrieden zu sein als 100 (und das gilt pro Kopf).
    Name und GUID hab´ich schon erklärt. Mit ein bischen Nachdenken lässt sich das dann auch auf einen Basar oder andere öffentliche Gebäude übertragen.


    5. Schritt: Vorabhilfe schaffen. Wir suchen in den Properties.xml (ich erklär das der Einfachkeit halber so) nach den GUIDs des Marktplatzes und fügen statt dessen alle von uns erstellten Occidentmarktplätze (Die GUIDs!) ein. Das gleiche mit dem Basar.


    6. Schritt: Dafür sorgen dass die Einwohner das Gebäude annehmen. Unter AI\buildings residentbuilding.csl im Abschnitt //Bedürfnis nach Gemeinschaft für jede GUID einmal diese Zeile einfügen:
    efficiency += _checkInfluenceBy([Hier Nummer einf.], _CATEGORY_Company)



    Zu guter Letzt noch eine Frage von mir: Ich hab´schon versuch bei UpgradeGuid eine ID einzufügen, klappt aber nicht mit dem Ausbau. Was muss ich da machen?

  • Hallo Marchiali, ganz toll. Du hast Dir wirklich sehr viel Mühe gegeben.


    Ich habe das ganze noch nicht ausprobiert, da ich derzeit an einem Wintermarktplatz bastele. Wobei es noch diverse Problemchen gibt.


    Wenn ich Deinen letzten Absatz richtig verstanden habe, funktioniert das mit dem Auf- und Absteigen des Marktplatzes in der von Dir gewünschten Form nicht. Ist das denn überhaupt möglich?


    Nach meinen Erfahrungen ist es nämlich ein Unterschied, ob ich einen Marktplatz oder Häuser baue. Der Marktplatz regelt ja irgendwie intern den Auf- bzw. Abstieg, in dem die entsprechenden, unter Variationen definierten cfg-Dateien herangezogen werden. Die Häuser benutzen dafür Up- bzw. Downgrade mit den entsprechenden GUIDs. Läßt sich beides miteinander verquicken?


    Vielleicht können unsere IAAM-Experten hierzu was schreiben(?)


    Gruß Günter

  • Danke :thankyou:


    Ich hab jetzt nicht verstanden ob du mich verstanden hast.
    Ich meine dass der Marktplatz ähnlich dem Kontor oder dem Markthaus aufsteigt. Wahrscheinlich gibt es eine Möglichkeit, da es mit den IAAM-Kontor-Hafenmeistereien auch geklappt hat. Aber das nächste Gebäude einzutragen reicht anscheinend nicht.

  • Ich meine, dass ich Dich richtig verstanden habe.


    Soeben habe ich mir im T1 die GUID 35100 : Kleines Markthaus angesehen. Dort wird der Aufstieg auch über UpgradeGUID geregelt - wie bei den Wohngebäuden. Wobei beim Marktplatz unter UpgradeGUID "0 : INVALID" eingetragen ist.


    Daraus ziehe ich den Schluß, dass der Marktplatz nicht mit den übrigen Gebäuden verglichen werden kann.


    S.D., Nayo, könnt Ihr dazu was sagen/schreiben? - Ihr seid doch die Experten.

  • der marktplatz ist ein, ich sag mal sondergebäude. wenn ihr aber die ki-module entfernt, dann könnt ich auch mit upgrade-guids arbeiten.
    nachteil hierbei ist aber das der marktplatz grundlegende funktionen verliert.

  • Hallo SD, zunächst einmal danke für die Info.


    Bevor ich Deinen Beitrag gelesen habe, war mir auch die Idee gekommen, dass Marketplace() unter KIModule\ModuleCall etwas damit zu tun haben könnte.


    Doch was den Inhalt des Moduls angeht, muß ich passe gehen. - Deshalb meine Frage: Reicht es nicht aus, einen bestimmten Teil des Moduls zu löschen um mit den UpgradeGUIDs arbeiten zu können ohne auf die übrigen grundlegenden Funktionen verzichten zu müssen?


    Edit: Wo wird denn genau der Aufstieg des Marktplatzes analog den Wohngebäuden geregelt? - Interessiert mich auch für meinen Wintermarktplatz.