Ich habe mir mal etwas Python vorgenommen, und es funktioniert überraschenderweise auch recht gut.
Wir wollten ja militärische Leader in unserem Scen haben. Ich habe daher versucht, bei einem gewonnenen Kampf mit einer einstellbaren Chance eine andere Einheit entstehen zu lassen, und eine Nachricht im Interface auszugeben. Das funktioniert soweit schon ganz gut.
Das Problem ist, dass ich die neu entstehende Einheit bisher nur auf einen festgelegten Punkt der Karte entstehen lassen kann, und nicht dort, wo gekämpft wurde. Ich weiß nicht, wie man die Kartenkoordinaten von der Einheit aufrufen kann...
Hier der Code:
PHP-Code:
def onCombatResult(self, argsList):
'Combat Result'
pWinner,pLoser = argsList
playerX = PyPlayer(pWinner.getOwner())
unitX = PyInfo.UnitInfo(pWinner.getUnitType())
playerY = PyPlayer(pLoser.getOwner())
unitY = PyInfo.UnitInfo(pLoser.getUnitType())
# Nach einem Kampf wird eine Zufallszahl generiert
iRndNum = gc.getGame().getSorenRandNum(100, 'SPQR - Random Leader Start')
# Einstellen der Wahrscheinlichkeit der Leader (Zum Testen 100%)
if iRndNum < 100:
# Ausgeben einer Nachricht:
message = "Leader erhalten"
CyInterface().addMessage(CyGame().getActivePlayer(), True, 10, message, None, 2, None, ColorTypes(8), 0, 0, False, False)
# Erstellen einer bestimmten Einheit von playerX (Sieger). Einheit Nr. 15 (in meinen XML der Krieger) am Punkt 10/10 der Karte
playerX.initUnit(15, 10, 10, UnitAITypes.NO_UNITAI)
(Fehlen ein paar Zeilen, die im Orginalevent drinstehen und auch hier dazugehören).