
Сообщение от
Snake_B
можешь сделать пример какой-нибудь?
а там я уже по аналогии разобрался бы...
Файл Assets\Python\CvEventManager.py
Функция onUnitBuilt (постройка юнита в городе)
Код:
pCity = argsList[0]
pUnit = argsList[1]
# начало изменений
if pUnit.getUnitClassType() == gc.getInfoTypeForString('UNITCLASS_ARCHER'): # Если юнит принадлежит к класу лучников (<Class>UNITCLASS_ARCHER</Class> в Assets\XML\Units\CIV4UnitInfos.xml). Лучник и Вавилонский лучник.
if pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_IRON')) > 0: # Если если количество железа в городе больше 0 (<Type>BONUS_IRON</Type> в Assets\XML\Terrain\CIV4BonusInfos.xml)
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS'), true) # Дать юниту прокачку "Железные стрелы" (<Type>PROMOTION_IRON_AROWS</Type> в Assets\XML\Units\CIV4PromotionInfos.xml). Новую прокачку надо сделать самому
elif pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_COPPER')) > 0: # или если количество меди в городе больше 0
pUnit.pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), true) # Дать юниту прокачку "Бронзовые стрелы"
# конец изменений
Файл Assets\Python\CvEventManager.py
Функция onUnitSetXY (изменение координат юнита)
Код:
pPlot,pUnit = argsList
# начало изменений
if pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS')) or pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS')): # Если у юнита есть такие прокачки
if pUnit.getUnitClassType() != gc.getInfoTypeForString('UNITCLASS_ARCHER'): # И юнит не принадлежит к класу лучников
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS'), false) # Удаляем прокачку
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), false) # Удаляем прокачку
if pPlot.isCity() and pPlot.getOwner() == pUnit.getOwner(): # Если тайл город и владелецы тайла и юнита совпадают
if pUnit.getUnitClassType() == gc.getInfoTypeForString('UNITCLASS_ARCHER') and not pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS')): # если у лучника нету "железных стрел"
pCity = pPlot.getPlotCity() # Город
if pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_IRON')) > 0:
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS'), true)
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), false) # Удаляем прокачку
elif pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_COPPER')) > 0:
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), true)
# конец изменений