Голосование

Как вы оцениваете Смуту?












Оформление



Пользователей
  • Всего: 28869
  • Последний: Adr3naline
Сейчас на форуме
Пользователи: 2
Гостей: 503
Всего: 505

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

Тема: Ai - не хочет осаждать замки\города  (Прочитано 2692 раз)

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

Прошу подсказать, если кто знает:
2 фракции и всего 3 деревни(которые есть только у первой), 5 городов и 15 замков.
Суть в том что маршалы 2ой фракции только и делают, что грабят деревни и ходят в патруль группами, но не осаждают ничего. Маршалы 1ой только ходят в патруль! Играл 2 игровых месяца.
Вопрос:
Почему они не хотят осаждать?
Я думаю, что дело в "process_hero_ai" или "begin_assault_on_center", но в чем именно не могу понять. Складывается впечатление, что они перебирают "villages_begin" до "villages_end" не находя ничего входят в ступор.

Возможно есть способ, заставить их осаждать замки\города?
« Последнее редактирование: 02 Мая, 2016, 03:15 от Strannuck »
  • Сообщений: 85
  • За создание технических проектов различного характера
    • Просмотр профиля
0
« Ответ #1 : 08 Января, 2017, 13:20 »
 В какой мод играл? В Натив? Или в другой?
  • Ник в Discord: Antony Jamestown#0721
  • Ник в M&B: Adoriano the Write Calradian Knight
  • Фракция: Темные охотники
  • Сообщений: 91
  • За создание технических проектов различного характера
    • Просмотр профиля
    • Profile
+2
« Ответ #2 : 09 Января, 2017, 23:51 »
Доброго времени суток.

Прошу подсказать, если кто знает:
2 фракции и всего 3 деревни(которые есть только у первой), 5 городов и 15 замков.
Суть в том что маршалы 2ой фракции только и делают, что грабят деревни и ходят в патруль группами, но не осаждают ничего. Маршалы 1ой только ходят в патруль! Играл 2 игровых месяца.
Вопрос:
Почему они не хотят осаждать?
Я думаю, что дело в "process_hero_ai" или "begin_assault_on_center", но в чем именно не могу понять. Складывается впечатление, что они перебирают "villages_begin" до "villages_end" не находя ничего входят в ступор.

Возможно есть способ, заставить их осаждать замки\города?

Хоть вопросу и пол-года, я попытаюсь ответить, может и не правильно, нужно проверять =)

В симпл_триггере "# Process siege ai", который раз в 3 часа проверяет осады, есть строка..
Цитата: module_simple_triggers.py
(gt, ":random_up_limit", -100), #never attack if the strength ratio is less than 150%

Перед этим, в коде считают соотношение сил защитников и атакующих ":strength_ratio". Если ":strength_ratio" меньше -100 - атака не происходит. Следовательно, если ваши войска не осаждают, значит у них равные силы и нужно играться с цифрой -100 или добавить сил одной из сторон..

Кратко порядок действий триггера выглядит так:
Цитата: module_simple_triggers.py
1. Проверяется каждый город/замок в списке [walled_centers_begin -> walled_centers_end]
2. Если у города есть осаждающая партия, сохраняется фракция атакеров и время осады.
3. Далее определяется партия маршала и его фракция.
4. Проверки продолжаются если фракции атакера и партии взятого маршала совпали
5. Продолжить, если состояние атакера "осада" или "помощь в осаде"
6. Далее продолжить если текущий город ":center_no" является целью атакующей партии (eq, ":opponent", ":center_no") или цель = -1
7. Считается сила атакующей партии (script_party_calculate_regular_strength => ":attacker_strength")
8. Продолжить, если сила больше 0 (gt, ":attacker_strength", 0)
9. (assign, ":defender_strength", reg0), # Получить силу защитников
10. (val_mul, ":attacker_strength", 2), # Если в осадном городе есть игрок, увеличить силу атакеров в 2 раза
11. Если игрок на стороне атакеров и выполняет квест "Следовать за маршалом", сила атакеров также поднимается в 2 раза
12. Далее считают соотношение_сил ":strength_ratio" = "сила атакера" * 100 / "силу защитников" и случайный_верхний_лимит ":random_up_limit" = ":strength_ratio" - 250
13. Если ":random_up_limit" > -100 к нему прибавляют коэфициент ":siege_begin_hours_effect" и делят на 5..
Значение -100 соотв. 150% соотношению_сил . Если ":strength_ratio" меньше -100 атака не происходит.
14. Затем считают случайный_нижний_лимит ":random_down_limit" = 175 - ":strength_ratio", а верхний делят на 5
15. Далее берут случайное число ":rand" от 0 до 100.
      Если оно меньше верхнего_лимита и с момента начала осады прошло более 24 часов => ":launch_attack" = 1. (начать атаку)
      Иначе, если ":rand" меньше нижнего_лимита => ":call_attack_back" = 1 (продолжить осаду)
16. При ":launch_attack" = 1 запускается script_begin_assault_on_center, в котором, для всех участвующих в атаке партий устанавливается цель и поведение = идти_к_цели
17. Если сработала проверка ":call_attack_back" = 1 для всех атакующих обновить состояние на продолжение атаки и начать новый отсчет суток осады

« Последнее редактирование: 10 Января, 2017, 00:02 от Shcherbyna »

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


Powered by SMF 2.0 | SMF © Simple Machines LLC