1
Обмен опытом (в помощь мододелу) / Три варианта апгрейда юнита!(upgrade3(troops,"troop_1","troop_2","troop_3")
« : 28 Февраля, 2023, 14:08 »
Доброго времени суток!
Заранее приношу свои извинения, если написал не в той ветке и прошу модератора перенести по месту назначения.
По сути вопроса:
Появилась у меня желание поменять дерево апгрейда войск в своем моде так, чтобы первого же рекрута можно было преобразовать в стрелка/пехотинца/всадника. Как известно в модульной системе варианты улучшений текущего юнита декларируются функциями upgrade и upgrade2 в модуле module_troops.py. Upgrade - безальтернативный апгрейд, upgrade2 - апгрейд в один из 2-х вариантов. Прошу помощи, в том как это сделать?
В header_troops.py нашел объявление функций
Понял, что первая часть проверяет вообще наличие таких юнитов и выводит ошибки в случае отсутствия. А вот что делает:
не понял, если честно.
По аналогии добавил:
В module_troops.py добавил
Удивительно, но компилятор "схавал".
В игре у юнита "sarranid_recruit" появилась возможность апгрейда в "sarranid_footman" и "sarranid_skirmisher". Возможно 3-й вариант тоже есть, но не виден из-за расположения кнопок с вариантами апрейда.
Прошу знающих людей подсказать, что делаю не так и как добиться нужных результатов.
Заранее приношу свои извинения, если написал не в той ветке и прошу модератора перенести по месту назначения.
По сути вопроса:
Появилась у меня желание поменять дерево апгрейда войск в своем моде так, чтобы первого же рекрута можно было преобразовать в стрелка/пехотинца/всадника. Как известно в модульной системе варианты улучшений текущего юнита декларируются функциями upgrade и upgrade2 в модуле module_troops.py. Upgrade - безальтернативный апгрейд, upgrade2 - апгрейд в один из 2-х вариантов. Прошу помощи, в том как это сделать?
В header_troops.py нашел объявление функций
Цитата
def upgrade(troops,troop1_id,troop2_id):
troop1_no = find_troop(troops,troop1_id)
troop2_no = find_troop(troops,troop2_id)
if (troop1_no == -1):
print "Error with upgrade def: Unable to find troop1-id: " + troop1_id
elif (troop2_no == -1):
print "Error with upgrade def: Unable to find troop2-id: " + troop2_id
else:
cur_troop = troops[troop1_no]
cur_troop_length = len(cur_troop)
if cur_troop_length == 11:
cur_troop[11:11] = [0, 0, 0, troop2_no, 0]
elif cur_troop_length == 12:
cur_troop[12:12] = [0, 0, troop2_no, 0]
elif cur_troop_length == 13:
cur_troop[13:13] = [0, troop2_no, 0]
else:
cur_troop[14:14] = [troop2_no, 0]
def upgrade2(troops,troop1_id,troop2_id,troop3_id):
troop1_no = find_troop(troops,troop1_id)
troop2_no = find_troop(troops,troop2_id)
troop3_no = find_troop(troops,troop3_id)
if (troop1_no == -1):
print "Error with upgrade2 def: Unable to find troop1-id: " + troop1_id
elif (troop2_no == -1):
print "Error with upgrade2 def: Unable to find troop2-id: " + troop2_id
elif (troop3_no == -1):
print "Error with upgrade2 def: Unable to find troop3-id: " + troop3_id
else:
cur_troop = troops[troop1_no]
cur_troop_length = len(cur_troop)
if cur_troop_length == 11:
cur_troop[11:11] = [0, 0, 0, troop2_no, troop3_no]
elif cur_troop_length == 12:
cur_troop[12:12] = [0, 0, troop2_no, troop3_no]
elif cur_troop_length == 13:
cur_troop[13:13] = [0, troop2_no, troop3_no]
else:
cur_troop[14:14] = [troop2_no, troop3_no]
Понял, что первая часть проверяет вообще наличие таких юнитов и выводит ошибки в случае отсутствия. А вот что делает:
Цитата
cur_troop = troops[troop1_no]
cur_troop_length = len(cur_troop)
if cur_troop_length == 11:
cur_troop[11:11] = [0, 0, 0, troop2_no, 0]
elif cur_troop_length == 12:
cur_troop[12:12] = [0, 0, troop2_no, 0]
elif cur_troop_length == 13:
cur_troop[13:13] = [0, troop2_no, 0]
else:
cur_troop[14:14] = [troop2_no, 0]
не понял, если честно.
По аналогии добавил:
Цитата
def upgrade3(troops,troop1_id,troop2_id,troop3_id,troop4_id):
troop1_no = find_troop(troops,troop1_id)
troop2_no = find_troop(troops,troop2_id)
troop3_no = find_troop(troops,troop3_id)
troop4_no = find_troop(troops,troop4_id)
if (troop1_no == -1):
print "Error with upgrade3 def: Unable to find troop1-id: " + troop1_id
elif (troop2_no == -1):
print "Error with upgrade3 def: Unable to find troop2-id: " + troop2_id
elif (troop3_no == -1):
print "Error with upgrade3 def: Unable to find troop3-id: " + troop3_id
elif (troop3_no == -1):
print "Error with upgrade3 def: Unable to find troop4-id: " + troop4_id
else:
cur_troop = troops[troop1_no]
cur_troop_length = len(cur_troop)
if cur_troop_length == 11:
cur_troop[11:11] = [0, 0, 0, troop2_no, troop3_no, troop4_no]
elif cur_troop_length == 12:
cur_troop[12:12] = [0, 0, troop2_no, troop3_no, troop4_no]
elif cur_troop_length == 13:
cur_troop[13:13] = [0, troop2_no, troop3_no, troop4_no]
else:
cur_troop[14:14] = [troop2_no, troop3_no, troop4_no]
В module_troops.py добавил
Цитата
upgrade3(troops,"sarranid_recruit","sarranid_footman","sarranid_skirmisher","sarranid_horseman")
Удивительно, но компилятор "схавал".
В игре у юнита "sarranid_recruit" появилась возможность апгрейда в "sarranid_footman" и "sarranid_skirmisher". Возможно 3-й вариант тоже есть, но не виден из-за расположения кнопок с вариантами апрейда.
Прошу знающих людей подсказать, что делаю не так и как добиться нужных результатов.