Basically good news, the hull machine gun exists in the game, it only needs a simple change to enable it, and the model of War Thunder already includes this shooting node.
But there are still some problems. The angle of the machine gun on the body cannot be rotated. The node bound to the fire effect of the machine gun on the body does not exist, but the bullet can be fired from the correct position. This requires some fine-tuning by the development team.
I think this is relatively easy to implement technically, maybe only need to modify some models and add some code to control the angle of the machine gun.
I enabled the hull machine gun to be fired in the driver camera
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
}
}
}