Handel einrichten
Der normale Handel (über Martkplatz/Lagerhaus) lässt sich nur per Script einrichten. Hingegen kann man den „automatischen“ Warenaustausch durch Handelsposten oder den Handel mit dem Hafen auch bequem per Quest einrichten.
Wie man die Scripts zum Bearbeiten auslagert, wurde ja schon besprochen. ⇒ Vorbereitung zum Mappen
Das Script
Hier ist der originale Scriptcode aus dem Scripttutorial von BB. (BB-Handbücher zum Download)
In der ersten Zeile wird die ID des Lagerhauses des Spielers ermittelt, der bei AIPlayerID (AI = KI = Künstliche Intelligenz) angegeben wird. Das sind die IDs, die den anderen Dörfern, Städten und Klöstern im Kartenassistenten zugewiesen wurden.
In der Zeile AddOffer (dt: füge Angebot hinzu) wird dann anhand der ermittelten ID die Menge (NumberOfOffers) und Art (GoodType) der zu verkaufenden Ware angegeben.
local traderId = Logic.GetStoreHouse(AIPlayerID) AddOffer( traderId, NumberOfOffers, GoodType )
Eine weitere Möglichkeit ist der Verkauf von Söldnern. Eine Einheit besteht dabei aus 3 Söldner, ist also kein vollwertiges Bataillon und auch nicht so kampfstark wie die normalen Truppen. Diese sollten der Klimazone der Map entsprechen.
Söldnerangebote werden mit dieser Zeile bereitgestellt:
AddMercenaryOffer( traderID, NumberOfOffers, EntityType )
Außerdem lassen sich auch Entertainer anbieten. Das geht mit folgender Funktion. Hier kann aber die Menge weggelassen werden, da es den Entertainer standardmäßig nur einmal gibt.
AddEntertainerOffer( traderID, EntityType)
Die Funktionen
Wer ganz genau wissen will wie die AddOffer-Funktionen aufgebaut sind, kann sich mal die folgenden Links ansehen.
Einzusetzende Angebote
AddOffer
Mit AddOffer bietet man Ressourcen und die Waren des täglichen Bedarfs zum Kauf an. Hier mal die üblichen. Es ließen sich auch bestimmte andere Sachen anbieten, die i.d.R. aber wenig Sinn machen.
| Ressourcen | |
|---|---|
| Goods.G_Carcass | erlegtes Wild/Tierkörper |
| Goods.G_Dye | Farbe |
| Goods.G_Grain | Getreide |
| Goods.G_Herb | Kräuter |
| Goods.G_HoneyComb | Honigwaben |
| Goods.G_Iron | Eisen |
| Goods.G_Milk | Milch |
| Goods.G_RawFish | roher Fisch |
| Goods.G_Salt | Salz |
| Goods.G_Stone | Steine |
| Goods.G_Wood | Holz |
| Goods.G_Wool | Wolle |
| ab Reich des Ostens (RdO) | |
| Goods.G_Gems | Edelsteine |
| Goods.G_MusicalInstrument | Musikinstrumente |
| Goods.G_Olibanum | Weihrauch |
| fertige Produkte | |
| Goods.G_Beer | Bier (Met) |
| Goods.G_Bread | Brot |
| Goods.G_Broom | Besen |
| Goods.G_Cheese | Käse |
| Goods.G_Clothes | Wollkleidung |
| Goods.G_Leather | Lederkleidung |
| Goods.G_Medicine | Medizin |
| Goods.G_Sausage | Metzgerwaren |
| Goods.G_SmokedFish | Räucherfisch |
| Goods.G_Soap | Seife |
| Tiere | |
| Goods.G_Cow | Kühe |
| Goods.G_Sheep | Schafe |
AddMercenaryOffer
AddMercenaryOffer dient dazu Söldner anzubieten.
| Entities.U_MilitaryBandit_Melee_ME | Schwertkämpfer Mitteleuropa |
| Entities.U_MilitaryBandit_Ranged_ME | Bogenschützen Mitteleuropa |
| Entities.U_MilitaryBandit_Melee_NA | Schwertkämpfer Nordafrika |
| Entities.U_MilitaryBandit_Ranged_NA | Bogenschützen Nordafrika |
| Entities.U_MilitaryBandit_Melee_NE | Schwertkämpfer Nordeuropa |
| Entities.U_MilitaryBandit_Ranged_NE | Bogenschützen Nordeuropa |
| Entities.U_MilitaryBandit_Melee_SE | Schwertkämpfer Südeuropa |
| Entities.U_MilitaryBandit_Ranged_SE | Bogenschützen Südeuropa |
| ab Reich des Ostens (RdO) | |
| Entities.U_MilitaryBandit_Melee_AS | Schwertkämpfer Asia |
| Entities.U_MilitaryBandit_Ranged_AS | Bogenschützen Asia |
Auch U_MilitaryBow, U_MilitaryBow_RedPrince, U_MilitarySword, U_MilitarySword_RedPrince?
No, theones don't work. They give a „DEBUG: price not in table“ message. Also, you might want to mention that AddMercenaryOffer can't be used for cities.
AddEntertainerOffer
Und damit es den Siedlern nicht langweilig wird, kann man mit Entertainern für Abwechslung sorgen. Außerdem verbessert das den Ruf der Stadt.
| Entities.U_Entertainer_NA_StiltWalker | Stelzenläufer |
| Entities.U_Entertainer_NA_FireEater | Feuerschlucker |
| Entities.U_Entertainer_NE_StrongestMan_Stone | Gewichtheber mit Stein |
| Entities.U_Entertainer_NE_StrongestMan_Barrel | Gewichtheber mit Fässern |
| Entities.U_FireEater | Feuerschlucker auf Stelzen |
Script einbauen
Diese Scriptteile müssen jetzt in das globale Script eingefügt werden, und zwar fast ganz oben in den Abschnitt „function Mission_InitMerchants()“. Diese Funktion wird zu Spielbeginn ausgeführt und initialisiert den Handel.
Also im globalen Script steht folgende Zeilen:
function Mission_InitMerchants() end
Zwischen diese beiden Zeilen werden jetzt die Handelsangebote für jeden benötigten KI-Spieler eingetragen. Pro Spieler einmal die Zeile „local traderID = …“ und bis zu insgesamt 4 mal pro Spieler die Zeilen mit „AddOffer…“, „AddMercenaryOffer…“ und AddEntertainerOffer… . Wobei „AddMercenaryOffer…“ nur 2 mal pro Spieler erscheinen darf (gibt ja nur Bogenschützen und Schwertkämpfer).
Ein Beispiel gibt es unten.
Beispiel
Zwei Dörfer und ein Kloster sind nun auf der Map. Damit wir mit diesen auch Handel betreiben können, brauchen diese eine Vorgabe.
Wichtig! Es können insgesant nur bis zu 4 Angebote pro Spieler eingetragen werden.
function Mission_InitMerchants() local traderId = Logic.GetStoreHouse(2) -- ID2 Dorf Name Valium AddOffer( traderId, 5, Goods.G_Herb ) AddOffer( traderId, 6, Goods.G_Honeycomb ) local traderId = Logic.GetStoreHouse(3) -- ID3 Dorf Name Kasimir AddOffer( traderId, 5, Goods.G_Cow ) AddOffer( traderId, 5, Goods.G_Sheep ) AddMercenaryOffer( traderId, 2, Entities.U_MilitaryBandit_Melee_ME ) AddMercenaryOffer( traderId, 3, Entities.U_MilitaryBandit_Ranged_ME ) local traderId = Logic.GetStoreHouse(4) -- ID4 Kloster Name Braun AddOffer( traderId, 2, Goods.G_Wood ) AddOffer( traderId, 3, Goods.G_Herb ) AddOffer( traderId, 5, Goods.G_Carcass ) end
Wie bestimmt schon bemerkt, hab ich für Player1 keine Kühe oder Schafe eingesetzt. Diese sind also nur über den Handel zu bekommen. Um also bis in den höchsten Rang aufzusteigen, dadurch zu einem starken Heer zu kommen, müssen Kühe und Schafe gekauft werden.




