Ак создать бота который будет сидеть в пушке и стрелять в танки врага

ак создать бота который будет сидеть в пушке и стрелять в танки врага

Увы ИИ пока что не может нормально управлять техникой. Тем более орудиями. Однако можно попытаться воссоздать все это. Увы не идеально. Можно создать ИИ технику, которое будет стрелять по определенным объектам, но при этом имеет другую коллизию и живучесть.

Способ с Scene.blk.

Для этого создаем builded_auto_turret и даем ему animchar__res техники. Например towed_at_pak40_char, анимчар противотанкового орудия. А также ставим команду (team), например 1 и убираем свечение, меняя turret__allyTeamLight и turret__enemyTeamLight. После этого сохраняем файл. И в папке userGameMods находим папку мода, а в нем файл scene.blk. В этом файле находим строку _template:t=“builded_auto_turret”. У объекта будет такой код:

entity{
  _template:t="builded_auto_turret"
  transform:m=[[...] [...] [...] [...]]
  animchar__res:t="towed_at_pak40_char"
  turret__enemyTeamLight:p4=0,0,0,0
  turret__allyTeamLight:p4=0,0,0,0
  team:i=1
}

Вместо будут цифры, свойство transform отвечает за размеры, поворот и местоположение объекта.

Чтобы он стрелял противотанковыми снарядами добавляем вот этот код:

  "turret_control__turretInfo:shared:array"{
    "turret_control__turretInfo:object"{
      gun:t="builded_sg_gun+enlist_tankgun_towed_at_pak40_movable+turret_with_several_types_of_shells+main_turret"
      turretGroup:t="main_turrets"
      turretName:t="turret_01"
      salt:i=1
    }
  }

  "turretsInitialComponents:array"{
    "turretsInitialComponents:object"{
      "gun__shellsAmmo:array"{
        gun__shellsAmmo:i=9999999
      }
    }
  }

Добавить код можно где угодно, но желательно перед закрытием кода тела объекта, то есть перед }.

Свойство turret_control__turretInfo отвечает за вооружение техники, а turretsInitialComponents за измененные свойства орудии, в данном случае изменено кол-во снарядов. Свойства можно узнать, посмотрев в меню свойств у орудии, которых можно найти через Find Entity.

Полный код.
entity{
  _template:t="builded_auto_turret"
  transform:m=[[1, 0, 0] [0, 1, 0] [0, 0, 1] [-66.5858, 21.4025, -75.0088]]
  animchar__res:t="towed_at_pak40_char"
  turret__enemyTeamLight:p4=0,0,0,0
  turret__allyTeamLight:p4=0,0,0,0
  team:i=1

  "turret_control__turretInfo:shared:array"{
    "turret_control__turretInfo:object"{
      gun:t="builded_sg_gun+enlist_tankgun_towed_at_pak40_movable+turret_with_several_types_of_shells+main_turret"
      turretGroup:t="main_turrets"
      turretName:t="turret_01"
      salt:i=1
    }
  }

  "turretsInitialComponents:array"{
    "turretsInitialComponents:object"{
      "gun__shellsAmmo:array"{
        gun__shellsAmmo:i=9999999
      }
    }
  }
}

Далее нам нужно дать цели тэг ai_target__targetForAiGunner, чтобы орудие стреляло по указанному объекту. Это можно сделать добавляя постфикс base_moon_soldier.

Для того, чтобы добавить этот постфикс уже расположенным на карте объектам, мы жмем на + в нижней панели свойств окна Properties Panel.
image
image

Для того, чтобы постфикс автоматом добавлялся к технике, на которой появляются игроки, то меняем свойство respbase__addTemplatesOnSpawn в точках появления.
image

Способ с entities.blk.

Файл создаем в папке, где scene.blk. Просто создаем текстовый файл и затем меняем формат файла с .txt на .blk. А далее в файле entities.blk пишем код объекта.

Код объекта.
ai_turret__towed_at_pak40{
  extends:t="builded_auto_turret"

  animchar__res:t="towed_at_pak40_char"
  turret__enemyTeamLight:p4=0,0,0,0
  turret__allyTeamLight:p4=0,0,0,0

  "turret_control__turretInfo:shared:array"{
    "turret_control__turretInfo:object"{
      gun:t="builded_sg_gun+enlist_tankgun_towed_at_pak40_movable+turret_with_several_types_of_shells+main_turret"
      turretGroup:t="main_turrets"
      turretName:t="turret_01"
      salt:i=1
    }
  }

  "turretsInitialComponents:array"{
    "turretsInitialComponents:object"{
      "gun__shellsAmmo:array"{
        gun__shellsAmmo:i=99999
        gun__shellsAmmo:i=99999
      }
    }
  }
}

Данный объект можно уже будет спокойно разместить на карте и настроить ему команду. А целям дать постфикс base_moon_soldier.

1 лайк