Den kannst du gar nicht bestimmen, das macht das Programm. Es sucht für die Einheit den nächstgelegenen Gültigen Ort aus und verschiebt sie nach dort.
Wie du die Einheit bekommst...
Leider gibt es bei OnImprovementBuild keine direkte Möglichkeit, auf die Einheiten zuzugreifen.
Die Barbaren brauche ich für den Start nicht unbedingt. Habe es einmal mit der Moderne jetzt versucht: Man bekam drei Infanterieeinheiten und drei Einheiten mit hoher Bewegung, wenn die am Anfang gegen alle Barbaren, die aus den Vorzeitaltern durch Techs entstehen antreten müssen ist das nicht sehr lustig.
Noch ein Problem tritt bei Start im späteren Zeitalter auf:
PHP-Code:
#### Kathy's Tech-Bonus Feature Start --------------------
if iPlayer > -1:
if iTechType == gc.getInfoTypeForString("TECH_ELECTRONIC"):
iBonusType = gc.getInfoTypeForString("BONUS_COPPER")
elif iTechType == gc.getInfoTypeForString("TECH_MASCHINENBAU"):
iBonusType = gc.getInfoTypeForString("BONUS_IRON")
elif iTechType == gc.getInfoTypeForString("TECH_CHEMIEWAR"):
iBonusType = gc.getInfoTypeForString("BONUS_SULPHUR")
elif iTechType == gc.getInfoTypeForString("TECH_BANKING"):
iBonusType = gc.getInfoTypeForString("BONUS_SILVER")
elif iTechType == gc.getInfoTypeForString("TECH_FUTURE_MATERIALS"):
iBonusType = gc.getInfoTypeForString("BONUS_COAL")
elif iTechType == gc.getInfoTypeForString("TECH_COMPOSITES"):
iBonusType = gc.getInfoTypeForString("BONUS_OIL")
# usw....
else: iBonusType = -1
if iBonusType > -1:
pPlayer = gc.getPlayer(iPlayer)
iTeam = pPlayer.getTeam()
isTeamFirst = True
iMaxTeams = gc.getMAX_CIV_TEAMS ()
for i in range(iMaxTeams):
if i == iTeam:continue
pCurTeam = gc.getTeam(i)
if pCurTeam.isHasTech(iTechType):
isTeamFirst = False
break
if isTeamFirst:
iMapW = gc.getMap().getGridWidth()
iMapH = gc.getMap().getGridHeight()
BonusPlotArray = []
for x in range(iMapW):
for y in range(iMapH):
loopPlot = gc.getMap().plot(x,y)
if loopPlot != None and not loopPlot.isNone() and loopPlot.getBonusType(iTeam) == iBonusType and loopPlot.getOwner() == iPlayer:
BonusPlotArray.append(loopPlot)
# Bonusresi soll verschwinden
if len(BonusPlotArray) > 0:
# Die mittlere Resi nehmen
iPlot = len(BonusPlotArray) / 2
# Resi entfernen
BonusPlotArray[iPlot].setBonusType(-1)
# Meldung an den Spieler
if gc.getPlayer(iPlayer).isHuman():
# Bsp: Durch die Entdeckung der Technologie %s2 wurde ein %s1 - Vorkommen abgebaut!
CyInterface().addMessage(iPlayer, True, 5, CyTranslator().getText("TXT_KEY_INFO_TECH_BONUS_LOSS",(gc.getBonusInfo(iBonusType).getDescription(),gc.getTechInfo(iTechType).getDescription())),None,2,gc.getBonusInfo(iBonusType).getButton(),ColorTypes(7),BonusPlotArray[iPlot].getX(),BonusPlotArray[iPlot].getY(),True,True)
#### Kathy's Tech-Bonus Feature End --------------------
In dieser Zeile behauptet er: 'BonusPlotArray' reffered before assignment.
PHP-Code:
if len(BonusPlotArray) > 0:
Dabei wird es sieben Zeilen darüber doch definiert.
Edit: Problem gelöst. Ich habe es einfach noch ein paar Zeilen vorher definiert.