Logo AeK Script-Wiki Logo AeK Script-Wiki Logo AeK Script-Wiki

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.

AddOffer

AddMercenaryOffer

AddEntertainerOffer

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_Carcasserlegtes Wild/Tierkörper
Goods.G_DyeFarbe
Goods.G_GrainGetreide
Goods.G_HerbKräuter
Goods.G_HoneyCombHonigwaben
Goods.G_IronEisen
Goods.G_MilkMilch
Goods.G_RawFishroher Fisch
Goods.G_SaltSalz
Goods.G_StoneSteine
Goods.G_WoodHolz
Goods.G_WoolWolle
ab Reich des Ostens (RdO)
Goods.G_GemsEdelsteine
Goods.G_MusicalInstrumentMusikinstrumente
Goods.G_OlibanumWeihrauch
fertige Produkte
Goods.G_BeerBier (Met)
Goods.G_BreadBrot
Goods.G_BroomBesen
Goods.G_CheeseKäse
Goods.G_ClothesWollkleidung
Goods.G_LeatherLederkleidung
Goods.G_MedicineMedizin
Goods.G_SausageMetzgerwaren
Goods.G_SmokedFishRäucherfisch
Goods.G_SoapSeife
Tiere
Goods.G_CowKühe
Goods.G_SheepSchafe

AddMercenaryOffer

AddMercenaryOffer dient dazu Söldner anzubieten.

Entities.U_MilitaryBandit_Melee_MESchwertkämpfer Mitteleuropa
Entities.U_MilitaryBandit_Ranged_MEBogenschützen Mitteleuropa
Entities.U_MilitaryBandit_Melee_NASchwertkämpfer Nordafrika
Entities.U_MilitaryBandit_Ranged_NABogenschützen Nordafrika
Entities.U_MilitaryBandit_Melee_NESchwertkämpfer Nordeuropa
Entities.U_MilitaryBandit_Ranged_NEBogenschützen Nordeuropa
Entities.U_MilitaryBandit_Melee_SESchwertkämpfer Südeuropa
Entities.U_MilitaryBandit_Ranged_SEBogenschützen Südeuropa
ab Reich des Ostens (RdO)
Entities.U_MilitaryBandit_Melee_ASSchwertkämpfer Asia
Entities.U_MilitaryBandit_Ranged_ASBogenschützen Asia

FIXME Auch U_MilitaryBow, U_MilitaryBow_RedPrince, U_MilitarySword, U_MilitarySword_RedPrince?

No, the FIXME ones 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_StiltWalkerStelzenläufer
Entities.U_Entertainer_NA_FireEaterFeuerschlucker
Entities.U_Entertainer_NE_StrongestMan_StoneGewichtheber mit Stein
Entities.U_Entertainer_NE_StrongestMan_BarrelGewichtheber mit Fässern
Entities.U_FireEaterFeuerschlucker 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.


Anmeldung/ Registrierung

Passwort vergessen? Kein Problem: Sende neues Passwort

· Zuletzt geändert: 19/04/2009 17:00 von qt (1666 views)