Голосование

Как вы относитесь к играм в жанре "симулятор колонии"?












Оформление



Пользователей
  • Всего: 29196
  • Последний: hoy545
Сейчас на форуме
Пользователи: 4
Гостей: 498
Всего: 502

0 Пользователей и 1 Гость просматривают эту тему.

Тема: Три варианта апгрейда юнита!(upgrade3(troops,"troop_1","troop_2","troop_3")  (Прочитано 2717 раз)

  • Сообщений: 161
    • Просмотр профиля
Доброго времени суток!

Заранее приношу свои извинения, если написал не в той ветке и прошу модератора перенести по месту назначения.

По сути вопроса:
Появилась у меня желание поменять дерево апгрейда войск в своем моде так, чтобы первого же рекрута можно было преобразовать в стрелка/пехотинца/всадника. Как известно в модульной системе варианты улучшений текущего юнита  декларируются функциями 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-й вариант тоже есть, но не виден из-за расположения кнопок с вариантами апрейда.

Прошу знающих людей подсказать, что делаю не так и как добиться нужных результатов.

«Цивилизация достигнет рассвета лишь в тот день, когда последний камень последнего храма рухнет на голову последнего жреца».

СиЧЪ Total War СиЧЪ Total War
Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.
Сайт работает на быстром VPS/VDS хостинге от FASTVPS


Powered by SMF 2.0 | SMF © Simple Machines LLC