Технически хорошая новость: корпусной пулемет в игре есть, нужно лишь внести небольшие изменения, чтобы включить его, а модель War Thunder уже включает в себя этот узел стрельбы.
Но есть еще некоторые проблемы. Угол расположения пулемета на корпусе нельзя поворачивать. Узел привязки к огневому действию пулемета на корпус отсутствует, но пуля может быть выпущена из правильного положения. Это требует некоторой тонкой настройки со стороны команды разработчиков.
Я думаю, что это относительно легко реализовать технически, возможно, нужно только изменить некоторые модели и добавить код для управления углом пулемета.
Я открыл корпусной пулемет в кабине и выстрелил.
path/to/yourmod/entities.blk
t_34_1941_hull_mg_03_7_62mm_dt{
_extends:t="tankgun_7_62mm_dt"
gun__shootNodeName:t="bone_mg_body"
"gun__shellsAmmo:array"{
ammo:i=1449
ammo:i=1449
}
}
ussr_t_34_1941_driver_cockpit{
_override:b=yes
"cockpit__slitIsGun:list<b>"{
slit:b=yes
}
}
base_t_34_1941{
_override:b=yes
"turret_gun_flash_fx__flashNodes:shared:array"{
node:t="emtr_gun_flame"
node:t="emtr_mg_flame_01"
node:t="emtr_fire_small_dmg_02"
}
"turret_gun_flash_fx__flashFx:shared:array"{
fx:t="muzzle_ground_80mm"
fx:t="muzzle_ground_8mm"
fx:t="muzzle_ground_8mm"
}
"turret_gun_flash_fx__flashFxScale:shared:array"{
scale:r=1.0
scale:r=1.0
scale:r=1.0
}
"turret_control__emitterNodes:shared:array"{
node:t="bone_gun_barrel"
node:t="bone_mg_gun_twin"
node:t="bone_mg_body"
}
"turret_control__animVars:shared:array"{
"vars:object"{
curYawParamName:t="turret_01_yaw"
curPitchParamName:t="gun_01_pitch"
aimActiveParamName:t="aim_01_active"
paramYawSpeed:t="turret_01_yaw_speed"
paramYawSpeedMul:t="turret_01_yaw_mul"
paramYawAccel:t="turret_01_yaw_accel"
paramMinYawAngle:t="turret_01_min_yaw_angle"
paramMaxYawAngle:t="turret_01_max_yaw_angle"
paramMinPitchAngle:t="turret_01_min_pitch_angle"
paramMaxPitchAngle:t="turret_01_max_pitch_angle"
paramPitchSpeed:t="gun_01_pitch_speed"
paramPitchSpeedMul:t="gun_01_pitch_mul"
paramPitchAccel:t="gun_01_pitch_accel"
wishYawParamName:t="gun_01_aim:targetYaw"
wishPitchParamName:t="gun_01_aim:targetPitch"
gunRecoilParamName:t="gun_01_recoil"
}
"vars:object"{
curYawParamName:t="turret_02_yaw"
curPitchParamName:t="gun_02_pitch"
}
"vars:object"{
curYawParamName:t="turret_03_yaw"
curPitchParamName:t="gun_03_pitch"
}
}
"turret_control__turretInfo:shared:array"{
"turretInfo:object"{
turretName:t="turret_01"
gun:t="t_34_1941_turret_01_76mm_f34+turret_with_several_types_of_shells+main_turret"
barrelDm:t="gun_barrel"
breechDm:t="cannon_breech"
verDriveDm:t="drive_turret_v"
horDriveDm:t="drive_turret_h"
salt:i=1
}
"turretInfo:object"{
turretName:t="turret_02"
gun:t="t_34_1941_turret_02_7_62mm_dt"
barrelDm:t="gun_barrel_01"
salt:i=1
}
"turretInfo:object"{
turretName:t="turret_03"
gun:t="t_34_1941_hull_mg_03_7_62mm_dt"
barrelDm:t="gun_barrel_01"
salt:i=1
}
}
}
ussr_t_34_1941_common{
_override:b=yes
"vehicle_seats__seats:shared:array"{
"seats:object"{
name:t="main_gunner"
locName:t="vehicle_seats/gunner"
attachNode:t="gunner"
ignoreAttachNodeRotation:b=yes
attachTm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [-0.25, -0.5, 0.0]]
seatComponent:t="isGunner"
nextSeat:t="driver"
shouldHideOwner:b=yes
receiveDamageFromDMPart:t="gunner"
cameraNodeName:t="bone_camera_gunner"
cockpitTemplate:t="ussr_t_34_1941_gunner_cockpit"
"turretNames:array"{
turret:t="turret_01"
turret:t="turret_02"
}
}
"seats:object"{
name:t="driver"
locName:t="vehicle_seats/driver"
seatOwnsEntityControl:b=yes
attachNode:t="driver"
ignoreAttachNodeRotation:b=yes
attachTm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [-0.25, -0.25, 0.0]]
seatComponent:t="isGunner"
nextSeat:t="main_gunner"
shouldHideOwner:b=yes
receiveDamageFromDMPart:t="driver"
cameraNodeName:t="bone_camera_driver"
cockpitTemplate:t="ussr_t_34_1941_driver_cockpit"
"turretNames:array"{
turret:t="turret_03"
}
}
"seats:object"{
name:t="commander"
attachNode:t="loader"
shouldHideOwner:b=yes
maxPosWithOpenHatch:r=1.2
locName:t="vehicle_seats/commander"
ignoreAttachNodeRotation:b=yes
attachTm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [-0.15, -0.5, 0.15]]
seatComponent:t="isDriver"
receiveDamageFromDMPart:t="loader"
cockpitTemplate:t="ussr_t_34_1941_commander_cockpit"
hatchRotationAxis:p3=1.4, 0.0, 0.0
"hatchNodes:array"{
node:t="hatch_01"
}
"loaderTurretNames:array"{
turret:t="turret_01"
}
}
"seats:object"{
locName:t="vehicle_seats/radioman"
attachNode:t="machine_gunner"
ignoreAttachNodeRotation:b=yes
attachTm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [-0.25, -0.5, 0.0]]
seatComponent:t="isPassenger"
shouldHideOwner:b=yes
receiveDamageFromDMPart:t="machine_gunner"
}
}
"vehicle_seats__canAcquireControls:shared:object"{
"driver:object"{
movement:b=yes
turrets:b=yes
camera:b=yes
}
"main_gunner:object"{
movement:b=yes
turrets:b=yes
camera:b=yes
}
"extra_gunner:object"{
movement:b=yes
turrets:b=yes
camera:b=yes
}
"machinegunner:object"{
movement:b=yes
turrets:b=yes
}
"commander:object"{
movement:b=yes
turrets:b=yes
camera:b=yes
}
"loader:object"{
movement:b=yes
turrets:b=yes
camera:b=yes
}
}
}