precision_bomber
13 years ago
I know I've had this topic before...
But it's a recurring issue lately for me.

I've got unit with 4 Turrets.

Two of the Turrets are On the Model of the unit...
The Other Two are an attachment, like of the Avengers'...

The Two On-model Turrets Work good.
The Other Two attachment turrets work, but they don't rotate...

The Two Attachment Turrets is one object data.
With a 'Turret' and an 'AltTurret'

Made it exactly like the avenger turret, only with two turrets.

QUESTIONS:
-DO I NEED TO STATE EVERY BONE OF THE ATTACHMENT TURRET ON THE MAIN OBJECT WITH EXTRAPUBLICBONE?
-DOES THE ATTACHMENT TURRETS HAVE TO HAVE A DIFFERENT BONE NAME FROM THE MAIN OBJECT'S TURRETS?

...to take things to extreme, if this problem maybe resolved, I'll go for 6 or more turrets.
Death Label:
Reduced back to 3 main factions(and a couple of extras).
Each faction can choose a(or all of them) tech-tree via General's Powers.
Angel Wings: Jets and Anti-Air, Helicopters and Missiles, Hovercraft and Lasers
Red Skulls: Armor Division, Mecha Armada, Drone Swarm
Earth's Saviors: Air Raid, Homeworld Security, Stealth
Sponsor
NewNightmare
13 years ago
Whats the point of caps ?
just look up how turret code is solved in avenger or overlord, they're working well, and they only have attachment bone specified via extrapublicbone...
and the portable structures are separate objects so bone names shouldn't matter, but since you have the model, its 2 minutes worth of work to check...
precision_bomber
13 years ago
Well, the CAPS are for Emphasis Only. So that we don't lose track of the question.

Second. If the portable structure has two turrets is my issue... I got them both to work, but the Portable Structure's turrets aren't rotating.
Death Label:
Reduced back to 3 main factions(and a couple of extras).
Each faction can choose a(or all of them) tech-tree via General's Powers.
Angel Wings: Jets and Anti-Air, Helicopters and Missiles, Hovercraft and Lasers
Red Skulls: Armor Division, Mecha Armada, Drone Swarm
Earth's Saviors: Air Raid, Homeworld Security, Stealth
NewNightmare
13 years ago
post portable's code - plain text code in a spoiler so it looks clean
precision_bomber
13 years ago


;---------------------------------------------------
Object NewBoss_CZMotherCommandTurret1

; *** ART Parameters ***
SelectPortrait = SNPropSpeaker_L
ButtonImage = SNPropSpeaker
UpgradeCameo1 = Upgrade_Nationalism
UpgradeCameo2 = Upgrade_ChinaUraniumShells
UpgradeCameo3 = Upgrade_ChinaNuclearTanks
; UpgradeCameo4 = NONE
UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
Draw = W3DDependencyModelDraw ModuleTag_01
OkToChangeModelColor = Yes
AttachToBoneInContainer = TURRET_CHASSIS01
ExtraPublicBone = ORIGIN
ExtraPublicBone = ORIGIN02
ExtraPublicBone = BOX01
ExtraPublicBone = BOX02
ExtraPublicBone = BOX03
ExtraPublicBone = BOX04
ExtraPublicBone = TURRET
ExtraPublicBone = TURRETEL
ExtraPublicBone = ALLTURRET
ExtraPublicBone = TURRETEL01
ExtraPublicBone = BARRELA01
ExtraPublicBone = BARRELA02
ExtraPublicBone = BARRELA03
ExtraPublicBone = BARRELA04
ExtraPublicBone = BARRELA05
ExtraPublicBone = BARRELA06
ExtraPublicBone = BARRELA07
ExtraPublicBone = BARRELA08
ExtraPublicBone = BARRELA09
ExtraPublicBone = BARRELA10
ExtraPublicBone = BARRELA11
ExtraPublicBone = BARRELA12
ExtraPublicBone = BARRELA13
ExtraPublicBone = BARRELA14
ExtraPublicBone = BARRELA15
ExtraPublicBone = BARRELA16
ExtraPublicBone = WEAPONA01
ExtraPublicBone = WEAPONA02
ExtraPublicBone = WEAPONB01
ExtraPublicBone = WEAPONB02
DefaultConditionState
Model = czdm_mothr_t1c
Turret = TURRET
TurretPitch = TURRETEL
AltTurret = ALTTURRET
AltTurretPitch = TURRETEL01
WeaponMuzzleFlash = PRIMARY WeaponA
WeaponFireFXBone = PRIMARY WeaponA
WeaponMuzzleFlash = SECONDARY WeaponB
WeaponFireFXBone = SECONDARY WeaponB
HideSubObject = WeaponA01 Weapon02 WeaponB01 WeaponB02
End
ConditionState = REALLYDAMAGED
Model = czdm_mothr_t1c
Turret = TURRET
TurretPitch = TURRETEL
AltTurret = ALTTURRET
AltTurretPitch = TURRETEL01
WeaponMuzzleFlash = PRIMARY WeaponA
WeaponFireFXBone = PRIMARY WeaponA
WeaponMuzzleFlash = SECONDARY WeaponB
WeaponFireFXBone = SECONDARY WeaponB
HideSubObject = WeaponA01 Weapon02 WeaponB01 WeaponB02
End
End
PlacementViewAngle = -45
; ***DESIGN parameters ***
Side = Boss
EditorSorting = SYSTEM
TransportSlotCount = 1
WeaponSet
Conditions = None
Weapon = PRIMARY NewBoss_CZMotherMinigun
Weapon = SECONDARY NewBoss_CZMotherMinigun
End
ArmorSet
Conditions = None
Armor = InvulnerableAllArmor ; We can't be hurt on the field. We share damage from the Avenger with his damage module
End
VisionRange = 200
; *** AUDIO Parameters ***
UnitSpecificSounds
TurretMoveStart = NoSound
TurretMoveLoop = NoSound ; TurretMoveLoop
End
; *** ENGINEERING Parameters ***
KindOf = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CLICK_THROUGH IGNORED_IN_GUI
Body = StructureBody ModuleTag_02
MaxHealth = 100.0
InitialHealth = 100.0
End
Behavior = AIUpdateInterface ModuleTag_03
Turret
TurretTurnRate = 80
TurretPitchRate = 80
FirePitch = 12 ; Instead of aiming pitchwise at the target, it will aim here
AllowsPitch = Yes
RecenterTime = 5000 ; how long to wait during idle before recentering
ControlledWeaponSlots = PRIMARY
End
AltTurret
TurretTurnRate = 80
TurretPitchRate = 80
FirePitch = 15 ; Instead of aiming pitchwise at the target, it will aim here
AllowsPitch = Yes
RecenterTime = 5000 ; how long to wait during idle before recentering
ControlledWeaponSlots = SECONDARY
End
TurretsLinked = Yes
AutoAcquireEnemiesWhenIdle = Yes
MoodAttackCheckRate = 500
End
Behavior = DestroyDie ModuleTag_05
;
End
Geometry = BOX
GeometryMajorRadius = 6.0
GeometryMinorRadius = 6.0
GeometryHeight = 10.0
GeometryIsSmall = No
Shadow = SHADOW_VOLUME
ShadowSizeX = 45 ; minimum elevation angle above horizon. Used to limit shadow length
End


Death Label:
Reduced back to 3 main factions(and a couple of extras).
Each faction can choose a(or all of them) tech-tree via General's Powers.
Angel Wings: Jets and Anti-Air, Helicopters and Missiles, Hovercraft and Lasers
Red Skulls: Armor Division, Mecha Armada, Drone Swarm
Earth's Saviors: Air Raid, Homeworld Security, Stealth
NewNightmare
13 years ago
code > plain text - just edit it so we can see the spacing and lines 🙂 you can put both together :P
EDIT:
ExtraPublicBone = ALLTURRET
is the altturret called ALLTURRET or ALTTURRET?
Also, since Ive seen your CCenter on Moddb are you sure the turrets should be linked?
TurretsLinked = Yes
I.E are they one on top of each other? bound by a link/child/parent tool?

Personal experience//lecturer tip from uni:
re-name the TURRETEL01 to ALTTURRETEL just to clean code up 😛
NewNightmare
13 years ago
OK, after a quick session of moddeling, I have made a QuadQuadTank with 4 turrets;
UserPostedImage
Works perfectly
Here's the code for main unit and its portable friend

;------------------------------------------------------------------------------
Object GLAQuadQuadTank

  ; *** ART Parameters ***
  SelectPortrait         = SNOverlord_L
  ButtonImage            = SNOverlord
  
  ;UpgradeCameo1 = Upgrade_ChinaUraniumShells
  ;UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  ;UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
  ;UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
  ;UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
  
  
  Draw = W3DOverlordTankDraw ModuleTag_01
    ConditionState        = NONE
      Model               = QQTnk
      Animation           = QQTnk.QQTnk
      AnimationMode       = LOOP
      Turret              = TURRET
      TurretPitch         = TURRETEL
         AltTurret              = ALTTURRET
         AltTurretPitch         = ALTTURRETEL
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
      WeaponFireFXBone    = SECONDARY AltM
      WeaponRecoilBone    = SECONDARY AltBarrel
      WeaponMuzzleFlash   = SECONDARY AltMFX
      WeaponLaunchBone    = SECONDARY AltM
    End
    ConditionState        = REALLYDAMAGED
      Model               = QQTnk
      Animation           = QQTnk.QQTnk
      AnimationMode       = LOOP
      Turret              = TURRET
      TurretPitch         = TURRETEL
         AltTurret              = ALTTURRET
         AltTurretPitch         = ALTTURRETEL
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
      WeaponFireFXBone    = SECONDARY AltM
      WeaponRecoilBone    = SECONDARY AltBarrel
      WeaponMuzzleFlash   = SECONDARY AltMFX
      WeaponLaunchBone    = SECONDARY AltM
    End

    ConditionState        = RUBBLE
      Model               = QQTnk
      Turret              = TURRET
      TurretPitch         = TURRETEL
         AltTurret              = TURRET
         AltTurretPitch         = TURRETEL
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
      WeaponFireFXBone    = SECONDARY AltM
      WeaponRecoilBone    = SECONDARY AltBarrel
      WeaponMuzzleFlash   = SECONDARY AltMFX
      WeaponLaunchBone    = SECONDARY AltM
    End

    TrackMarks           = EXTnkTrack.tga
    OkToChangeModelColor = Yes
    TreadAnimationRate = 2.0;  amount of tread texture to move per second
    TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
    TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:QuadQuadTank
  Side                = China
  EditorSorting       = VEHICLE
  TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions        = None 
    Weapon            = PRIMARY QQGun
    Weapon            = SECONDARY QQGun2
  End
  ArmorSet
    Conditions        = None
    Armor             = TankArmor
    DamageFX          = TankDamageFX
  End
  BuildCost       = 2000
  BuildTime       = 2.0          ;in seconds    
  VisionRange     = 150
  ShroudClearingRange = 200
  Prerequisites
    Object = AmericaWarFactory
  End

  ExperienceValue = 200 200 400 600   ;Experience point value at each level
  ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet = ChinaTankOverlordDefaultCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect = OverlordTankVoiceSelect
  SoundMoveStart = OverlordTankMoveStart
  SoundMoveStartDamaged = OverlordTankMoveStart
  VoiceMove = OverlordTankVoiceMove
  VoiceGuard = OverlordTankVoiceMove
  VoiceAttack = OverlordTankVoiceAttack

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate          = OverlordTankVoiceCreate
    TurretMoveStart = NoSound
    TurretMoveLoop = OverlordTankTurretMoveLoop
    VoiceCrush = OverlordTankVoiceCrush
    VoiceEnter = OverlordTankVoiceMove
    VoiceUnload     = OverlordTankVoiceUnload
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE
  
  Body = ActiveBody ModuleTag_02
    MaxHealth       = 1100.0
    InitialHealth   = 1100.0

    ; Subdual damage "Subdues" you (reaction defined by BodyModule) when it passes your max health.
    ; The cap limits how extra-subdued you can be, and the other numbers detemine how fast it drains away on its own.
    SubdualDamageCap = 2200
    SubdualDamageHealRate = 500
    SubdualDamageHealAmount = 50
  End

  Behavior = TransportAIUpdate ModuleTag_03
    Turret
      TurretTurnRate = 180 ;turn rate, in degrees per sec
      AllowsPitch = Yes
      TurretPitchRate = 120 ;pitch rate, in degrees per sec
      FiresWhileTurning = Yes
      NaturalTurretAngle = 45
      NaturalTurretPitch = 25
      ControlledWeaponSlots = PRIMARY
    End
    AltTurret
      TurretTurnRate = 180 ;turn rate, in degrees per sec
      AllowsPitch = Yes
      TurretPitchRate = 120 ;pitch rate, in degrees per sec
      FiresWhileTurning = Yes
      NaturalTurretAngle = -45
      NaturalTurretPitch = 25
      ControlledWeaponSlots = SECONDARY
    End
    AutoAcquireEnemiesWhenIdle = Yes
  End

  Locomotor = SET_NORMAL OverlordLocomotor

  Behavior = OverlordContain ModuleTag_06 ; Like Transport, but when full, passes transport queries along to first passenger (redirects like tunnel) 
    Slots                 = 1
    DamagePercentToUnits        = 100%
    AllowInsideKindOf     = PORTABLE_STRUCTURE
    PassengersAllowedToFire = Yes
    ExperienceSinkForRider = Yes ; I get the Exp for things my turret friend kills
  End

  Behavior = GrantUpgradeCreate ModuleTag_Upgrade
     UpgradeToGrant = Upgrade_AmericaAdvancedControlRods
  End

  Behavior = ObjectCreationUpgrade ModuleTag_07
    UpgradeObject = OCL_QQPortable
    TriggeredBy   = Upgrade_AmericaAdvancedControlRods
  End

  Behavior = ProductionUpdate ModuleTag_10
    MaxQueueEntries = 1; So you can't build multiple upgrades in the same frame
  End

  Behavior = PhysicsBehavior ModuleTag_14
    Mass = 50.0
  End

  ; Smoke for a bit then explode
;  Behavior = SlowDeathBehavior
;;    ProbabilityModifier = 25
;    DestructionDelay = 1500
;    DestructionDelayVariance = 500
;    FX  = INITIAL   FX_OverlordSmoke
;    OCL = FINAL     OCL_ChinaTankOverlordDebris
;    FX  = FINAL     FX_GenericTankDeathExplosion
;  End
  
  ; Catch fire, and explode death
;  Behavior = SlowDeathBehavior
;;    ProbabilityModifier = 25
;    DestructionDelay = 2000
;    DestructionDelayVariance = 300
;    FX  = INITIAL  FX_CrusaderCatchFire
;    OCL = FINAL    OCL_ChinaTankOverlordDebris
;    FX  = FINAL    FX_GenericTankDeathExplosion 
;  End

  ; Just explode death
  Behavior = SlowDeathBehavior ModuleTag_16
    ProbabilityModifier = 25
    DestructionDelay = 200
    DestructionDelayVariance = 100
    OCL = FINAL    OCL_ChinaTankOverlordDebris
    FX  = FINAL    FX_OverlordExplosionOneFinal
  End
  Behavior = CreateCrateDie ModuleTag_17
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End

  Behavior = TransitionDamageFX ModuleTag_18
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry = BOX
  GeometryMajorRadius = 26.0
  GeometryMinorRadius = 13.0
  GeometryHeight = 15.0     
  GeometryIsSmall = No
  Shadow = SHADOW_VOLUME     
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length

End


;------------------------------------------------------------------------------
Object QuadQuadTankPortableStructure

  ; *** ART Parameters ***
  SelectPortrait         = SNGatTower_L
  ButtonImage            = SNGatTower
  
  ;UpgradeCameo1 = Upgrade_Nationalism
  ;UpgradeCameo1 = Upgrade_ChinaUraniumShells
  ;UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = Upgrade_ChinaOverlordGattlingCannon
  
  
  Draw                    = W3DDependencyModelDraw ModuleTag_01
    OkToChangeModelColor  = Yes
    AttachToBoneInContainer = FIREPOINT01

    ConditionState        = NONE
      Model               = QQTnk_P
      Animation           = QQTnk_P.QQTnk_P
      AnimationMode       = LOOP
      Turret              = PTURRET
      TurretPitch         = PTURRETEL
         AltTurret              = PALTTURRET
         AltTurretPitch         = PALTTURRETEL
      WeaponFireFXBone    = PRIMARY PM
      WeaponRecoilBone    = PRIMARY PBarrel
      WeaponMuzzleFlash   = PRIMARY PMFX
      WeaponLaunchBone    = PRIMARY PM
      WeaponFireFXBone    = SECONDARY PAltM
      WeaponRecoilBone    = SECONDARY PAltBarrel
      WeaponMuzzleFlash   = SECONDARY PAltMFX
      WeaponLaunchBone    = SECONDARY PAltM
    End
    ConditionState        = REALLYDAMAGED
      Model               = QQTnk_P
      Animation           = QQTnk_P.QQTnk_P
      AnimationMode       = LOOP
      Turret              = PTURRET
      TurretPitch         = PTURRETEL
         AltTurret              = PALTTURRET
         AltTurretPitch         = PALTTURRETEL
      WeaponFireFXBone    = PRIMARY PM
      WeaponRecoilBone    = PRIMARY PBarrel
      WeaponMuzzleFlash   = PRIMARY PMFX
      WeaponLaunchBone    = PRIMARY PM
      WeaponFireFXBone    = SECONDARY PAltM
      WeaponRecoilBone    = SECONDARY PAltBarrel
      WeaponMuzzleFlash   = SECONDARY PAltMFX
      WeaponLaunchBone    = SECONDARY PAltM
    End

  End

  ; ***DESIGN parameters ***
  Side             = China
  EditorSorting    = SYSTEM
  TransportSlotCount = 1
  WeaponSet
    Conditions        = None 
    Weapon            = PRIMARY QQGun
    Weapon            = SECONDARY QQGun2
  End
  
  ArmorSet
    Conditions     = None
    Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
  End
  VisionRange     = 200

  ; *** AUDIO Parameters ***
  UnitSpecificSounds
    TurretMoveStart = NoSound
    TurretMoveLoop  = NoSound ;TurretMoveLoop
    VoiceRapidFire  = NoSound
  End

  ; *** ENGINEERING Parameters ***
  KindOf            = PRELOAD PORTABLE_STRUCTURE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CLICK_THROUGH IGNORED_IN_GUI
    Body            = StructureBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate = 180 ;turn rate, in degrees per sec
      AllowsPitch = Yes
      TurretPitchRate = 120 ;pitch rate, in degrees per sec
      FiresWhileTurning = Yes
      NaturalTurretAngle = 135
      NaturalTurretPitch = 25
      ControlledWeaponSlots = PRIMARY
    End
    AltTurret
      TurretTurnRate = 180 ;turn rate, in degrees per sec
      AllowsPitch = Yes
      TurretPitchRate = 120 ;pitch rate, in degrees per sec
      FiresWhileTurning = Yes
      NaturalTurretAngle = -135
      NaturalTurretPitch = 25
      ControlledWeaponSlots = SECONDARY
    End
    AutoAcquireEnemiesWhenIdle = Yes 
  End

  Behavior             = DestroyDie ModuleTag_04
    ;nothing
  End


  Geometry            = BOX
  GeometryMajorRadius = 8.0
  GeometryMinorRadius = 8.0
  GeometryHeight      = 9.0
  GeometryIsSmall     = No      
  Shadow              = SHADOW_VOLUME
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length

End

I know I could have used defaultconditionstate and delete deathmodules, but I was speeding
However!
I have spotted that non-centred (i.e not at 0,0,x) turrets tend to missaim slightly whenever they have to rotate large amounts, probably due to a fact turrets angle is calculated off either chassis pivot or origin, so the best possible solution is to create inception-style turrets, which I will attempt in a sec.
Here's an example with gat tank:
Red - where it aims
Green - where the Battlemaster'b pivot is (more or less)
Yellow - angle from Gatt's pivot to Battlemaster's pivot, which 'surprisingly' is parallel to red line
UserPostedImage
NewNightmare
13 years ago
Here's the analysis of QQTank (epic shortcut isnt it ?:D)
UserPostedImage
Red - current aim
Green - correct aim
Yellow - Aim from Pivot
Blue Dots - Pobject origin

Now:
The turrets on the right are aiming really badly because they're offset a lot from the origin located at the center of the unit.
The Turrets on the left hand side are aiming more or less well, this is because the upper left turret has origin right below it, while the lower left turret has pivot in front of itself, making a the angle of aim only slightly erroneous at that angle. The only solution would be to stack the turrets on top of each other... or go with inception style
NewNightmare
13 years ago
Hmmm... I dont think its possible to do it via portable structures one on top of another (code wise), since the origin changes with each structure....
The last thing to try would be Fire Base's transport module with no 'exit' button in commandset :)
Imma try that later.
NewNightmare
13 years ago
UserPostedImage
Ok, so its possible to do it via Fire Base system, but turrets are spawn with random rotation, and don't turn with chassis (i.e when chassis rotates, they keep aiming the same direction) - you could fix this by adding scan to aiupdateinterface since theyre automatic
       	    MinIdleScanAngle = real number
      	    MaxIdleScanAngle = real number
            MinIdleScanInterval = integer, milliseconds
            MaxIdleScanInterval = integer, milliseconds
EDIT:
Here's the code:

Objects:

;------------------------------------------------------------------------------
Object GLAQuadQuadTank2

  ; *** ART Parameters ***
  SelectPortrait         = SNOverlord_L
  ButtonImage            = SNOverlord
  
  ;UpgradeCameo1 = Upgrade_ChinaUraniumShells
  ;UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  ;UpgradeCameo3 = Upgrade_ChinaOverlordBattleBunker
  ;UpgradeCameo4 = Upgrade_ChinaOverlordGattlingCannon
  ;UpgradeCameo5 = Upgrade_ChinaOverlordPropagandaTower
  
  Draw = W3DTankDraw ModuleTag_01

    ExtraPublicBone = STATION01
    ExtraPublicBone = STATION02
    ExtraPublicBone = STATION03
    ExtraPublicBone = STATION04

    ConditionState        = NONE
      Model               = 2QQTnk
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
    End
    ConditionState        = REALLYDAMAGED
      Model               = 2QQTnk
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
    End

    ConditionState        = RUBBLE
      Model               = 2QQTnk
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
    End

    TrackMarks           = EXTnkTrack.tga
    OkToChangeModelColor = Yes
    TreadAnimationRate = 2.0;  amount of tread texture to move per second
    TreadDriveSpeedFraction = 0.3  ; fraction of locomotor speed below which treads stop moving.
    TreadPivotSpeedFraction = 0.6  ; fraction of locomotor speed below which we allow pivoting.
  End

  ; ***DESIGN parameters ***
  DisplayName         = OBJECT:QuadQuadTank
  Side                = China
  EditorSorting       = VEHICLE
  TransportSlotCount  = 3                 ;how many "slots" we take in a transport (0 == not transportable)
  WeaponSet
    Conditions        = None 
    Weapon            = PRIMARY QQGun2Dummy
  End
  ArmorSet
    Conditions        = None
    Armor             = TankArmor
    DamageFX          = TankDamageFX
  End
  BuildCost       = 2000
  BuildTime       = 2.0          ;in seconds    
  VisionRange     = 150
  ShroudClearingRange = 200
  Prerequisites
    Object = AmericaWarFactory
  End

  ExperienceValue = 200 200 400 600   ;Experience point value at each level
  ExperienceRequired = 0 400 600 1200  ;Experience points needed to gain each level
  IsTrainable = Yes             ;Can gain experience
  CrusherLevel           = 3  ;What can I crush?: 1 = infantry, 2 = trees, 3 = vehicles
  CrushableLevel         = 3  ;What am I?:        0 = for infantry, 1 = for trees, 2 = general vehicles
  CommandSet = ChinaTankOverlordDefaultCommandSet

  ; *** AUDIO Parameters ***
  VoiceSelect = OverlordTankVoiceSelect
  SoundMoveStart = OverlordTankMoveStart
  SoundMoveStartDamaged = OverlordTankMoveStart
  VoiceMove = OverlordTankVoiceMove
  VoiceGuard = OverlordTankVoiceMove
  VoiceAttack = OverlordTankVoiceAttack

  UnitSpecificSounds
    ; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
    VoiceCreate          = OverlordTankVoiceCreate
    TurretMoveStart = NoSound
    TurretMoveLoop = OverlordTankTurretMoveLoop
    VoiceCrush = OverlordTankVoiceCrush
    VoiceEnter = OverlordTankVoiceMove
    VoiceUnload     = OverlordTankVoiceUnload
  End

  ; *** ENGINEERING Parameters ***
  RadarPriority = UNIT
  KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS VEHICLE SCORE HUGE_VEHICLE GARRISONABLE_UNTIL_DESTROYED IMMUNE_TO_CAPTURE TRANSPORT 
  
  Body                 = HiveStructureBody ModuleTag_04;
    MaxHealth          = 1100.0
    InitialHealth      = 1100.0

    ; Subdual damage "Subdues" you (reaction defined by BodyModule) when it passes your max health.
    ; The cap limits how extra-subdued you can be, and the other numbers detemine how fast it drains away on its own.
    SubdualDamageCap = 2200
    SubdualDamageHealRate = 500
    SubdualDamageHealAmount = 100
    ;**Careful with these damage types -- because area damage types will already
    ;**damage slaves.
    ;PropagateDamageTypesToSlavesWhenExisting = NONE +SMALL_ARMS +SNIPER +POISON +RADIATION +SURRENDER
    ;SwallowDamageTypesIfSlavesNotExisting = NONE +SNIPER +POISON +SURRENDER; Take no damage if no one to pass this to
  End

  Behavior = AIUpdateInterface ModuleTag_03
    AutoAcquireEnemiesWhenIdle = Yes
    MoodAttackCheckRate        = 250
  End

  Locomotor = SET_NORMAL OverlordLocomotor

  Behavior = GarrisonContain ModuleTag_07
    ContainMax          = 4
    EnterSound          = GarrisonEnter
    ExitSound           = GarrisonExit
    DamagePercentToUnits = 100%
    ImmuneToClearBuildingAttacks  = Yes
    IsEnclosingContainer          = No
  End

  Behavior = GrantUpgradeCreate ModuleTag_Upgrade
     UpgradeToGrant = Upgrade_AmericaAdvancedControlRods
  End

  Behavior = ObjectCreationUpgrade ModuleTag_LoadCrew
    UpgradeObject = OCL_QQTTurrets
    TriggeredBy   = Upgrade_AmericaAdvancedControlRods
  End

  Behavior = ProductionUpdate ModuleTag_Prod
    MaxQueueEntries = 1
  End

  Behavior = PhysicsBehavior ModuleTag_14
    Mass = 50.0
  End

  ; Smoke for a bit then explode
;  Behavior = SlowDeathBehavior
;;    ProbabilityModifier = 25
;    DestructionDelay = 1500
;    DestructionDelayVariance = 500
;    FX  = INITIAL   FX_OverlordSmoke
;    OCL = FINAL     OCL_ChinaTankOverlordDebris
;    FX  = FINAL     FX_GenericTankDeathExplosion
;  End
  
  ; Catch fire, and explode death
;  Behavior = SlowDeathBehavior
;;    ProbabilityModifier = 25
;    DestructionDelay = 2000
;    DestructionDelayVariance = 300
;    FX  = INITIAL  FX_CrusaderCatchFire
;    OCL = FINAL    OCL_ChinaTankOverlordDebris
;    FX  = FINAL    FX_GenericTankDeathExplosion 
;  End

  ; Just explode death
  Behavior = SlowDeathBehavior ModuleTag_16
    ProbabilityModifier = 25
    DestructionDelay = 200
    DestructionDelayVariance = 100
    OCL = FINAL    OCL_ChinaTankOverlordDebris
    FX  = FINAL    FX_OverlordExplosionOneFinal
  End
  Behavior = CreateCrateDie ModuleTag_17
    CrateData = SalvageCrateData
    ;CrateData = EliteTankCrateData
    ;CrateData = HeroicTankCrateData
  End

  Behavior = TransitionDamageFX ModuleTag_18
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:SmokeSmallContinuous01
    ReallyDamagedFXList1 = Loc: X:0 Y:0 Z:0 FXList:FX_OverlordDamageTransition
  End

  Behavior = FlammableUpdate ModuleTag_21
    AflameDuration = 5000         ; If I catch fire, I'll burn for this long...
    AflameDamageAmount = 3       ; taking this much damage...
    AflameDamageDelay = 500       ; this often.
  End

  Geometry = BOX
  GeometryMajorRadius = 26.0
  GeometryMinorRadius = 13.0
  GeometryHeight = 15.0     
  GeometryIsSmall = No
  Shadow = SHADOW_VOLUME     
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length

End

;------------------------------------------------------------------------------
Object QuadQuadTankTurret

  ; *** ART Parameters ***
  SelectPortrait         = SNGatTower_L
  ButtonImage            = SNGatTower
  
  ;UpgradeCameo1 = Upgrade_Nationalism
  ;UpgradeCameo1 = Upgrade_ChinaUraniumShells
  ;UpgradeCameo2 = Upgrade_ChinaNuclearTanks
  ;UpgradeCameo4 = NONE
  ;UpgradeCameo5 = Upgrade_ChinaOverlordGattlingCannon
  
  Draw                    = W3DModelDraw ModuleTag_01
    OkToChangeModelColor  = Yes

    ConditionState        = NONE
      Model               = 2QQTnk_T
      Animation           = 2QQTnk_T.2QQTnk_T
      AnimationMode       = LOOP
      Turret              = TURRET
      TurretPitch         = TURRETEL
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
    End
    ConditionState        = REALLYDAMAGED
      Model               = 2QQTnk_T
      Animation           = 2QQTnk_T.2QQTnk_T
      AnimationMode       = LOOP
      Turret              = TURRET
      TurretPitch         = TURRETEL
      WeaponFireFXBone    = PRIMARY M
      WeaponRecoilBone    = PRIMARY Barrel
      WeaponMuzzleFlash   = PRIMARY MFX
      WeaponLaunchBone    = PRIMARY M
    End
  End

  ; ***DESIGN parameters ***
  Side             = China
  EditorSorting    = SYSTEM
  TransportSlotCount = 1
  WeaponSet
    Conditions        = None 
    Weapon            = PRIMARY QQGun2
    Weapon            = SECONDARY QQGun2Air

  End
  
  ArmorSet
    Conditions     = None
    Armor          = InvulnerableAllArmor ; We can't be hurt on the field.  We share damage from the Overlord with his damage module
  End
  VisionRange     = 200

  ; *** AUDIO Parameters ***
  UnitSpecificSounds
    TurretMoveStart = NoSound
    TurretMoveLoop  = NoSound ;TurretMoveLoop
    VoiceRapidFire  = NoSound
  End

  ; *** ENGINEERING Parameters ***
  KindOf            = PRELOAD INFANTRY CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CLICK_THROUGH IGNORED_IN_GUI
    Body            = StructureBody ModuleTag_02
    MaxHealth       = 100.0
    InitialHealth   = 100.0
  End

  Behavior = AIUpdateInterface ModuleTag_03
    Turret
      TurretTurnRate = 180 ;turn rate, in degrees per sec
      AllowsPitch = Yes
      TurretPitchRate = 120 ;pitch rate, in degrees per sec
      FiresWhileTurning = Yes
      ;NaturalTurretAngle = 135
      NaturalTurretPitch = 25
      ControlledWeaponSlots = PRIMARY
    End
    AutoAcquireEnemiesWhenIdle = Yes 
  End

  Behavior             = DestroyDie ModuleTag_04
    ;nothing
  End

  Geometry            = BOX
  GeometryMajorRadius = 8.0
  GeometryMinorRadius = 8.0
  GeometryHeight      = 9.0
  GeometryIsSmall     = No      
  Shadow              = SHADOW_VOLUME
  ShadowSizeX = 45  ; minimum elevation angle above horizon. Used to limit shadow length

End
OCL:
ObjectCreationList OCL_QQTTurrets
  CreateObject
    ObjectNames = QuadQuadTankTurret
    Count       = 4
    ContainInsideSourceObject = Yes
  End
End
I have managed to do his with help of "Amphibious Stinger Bases" map.ini file so thanks the author for solution :D

P.S Soz for long post, spoilers seem to fail me