Da ich zu faul für großartige weitere Erklärungen bin , hab' ich's mal schnell versucht zusammen zu coden. Hab' allerdings direkt eine Bewegung der Einheit erzwungen, bin zu faul zu testen, ob noch ein freier Transporter auf dem Feld ist :
PHP-Code:
def onGoodyReceived(self, argsList):
'Goody received'
iPlayer, pPlot, pUnit, iGoodyType = argsList
####new code start
if pPlot.isWater():
if iGoodyType == gc.getInfoTypeForString("GOODY_WARRIOR"):
iMaxPlotUnit = pPlot.getNumUnits ()-1
for i in xrange(iMaxPlotUnit,0,-1):
pPlotUnit = pPlot.getUnit(i)
if pPlotUnit.getDomainType ()==gc.getInfoTypeForString("DOMAIN_LAND"):
if not pPlotUnit.isCargo ():
iX = pPlot.getX()
iY = pPlot.getY()
for iXLoop in xrange(iX-1,iX+2,1):
for iYLoop in xrange(iY-1,iY+2,1):
NewPlot = CyMap().plot(iXLoop,iYLoop)
if not NewPlot.isWater():
pGroup = pPlotUnit.getGroup ()
pGroup.pushMoveToMission(iXLoop,iYLoop)
break
###new code end
if (not self.__LOG_GOODYRECEIVED):
return
CvUtil.pyPrint('%s received a goody' %(gc.getPlayer(iPlayer).getCivilizationDescription(0)),)
einrückung ist wahrscheinlich falsch und ist auch nicht getestet .
Zu den Fragen:
1) geht, isWater() .
2) ja .
3) ja, kann man auch abfragen, allerdings muss man dann halt auch testen, wem der Transporter gehört und noch ein paar andere Sachen.
Teste erstmal das oben, dann sehen wir weiter.