Сделать Волоколамск для рядовых крупных действий лучше №2: Мобильное ралли и мотопехота

Мобильное ралли мотопехоты

Повышена стратегическая ценность мотоциклетной техники и легкой бронетехники в игре.

Некоторые легкие бронемашины или небольшие танки, принадлежавшие танкам, классифицируются как моторизованные транспортные средства, и все они будут пользоваться правилами моторизованных транспортных средств.

Когда моторизованное транспортное средство размещается в точке сбора по умолчанию, оно заменяется транспортным грузовиком.

В то же время эти транспортные грузовики будут служить мобильным плацдармом, откуда можно будет перебросить пехоту.

Если будут развернуты вышеупомянутые точки сбора на передовой, вы получите стандартную вооруженную моторизованную машину.

Моторизованные транспортные средства не имеют ограничений на количество развертываний.

Теперь, даже если вы игрок высокого уровня, вы можете использовать в игре свои маленькие танки низкого уровня, и они сыграют уникальную роль в битве!

Вот список моторизованных транспортных средств:

- KS 750 (bike)
  • WLA (bike)

  • WD big 4 (bike)

  • WBM R75 (bike)

  • T-60

  • T-26

  • Gaz mm 72k

  • Ba-11

  • Pz.II C

  • Pz.III B

  • Flakpanzer I

  • A13 Mk2 1938

  • A13 Mk2 1939

  • AB-41

  • M13.40 (added in 662)

  • M14/41 (added in 662)

  • Daimler Mk II

  • M13 MGMC

  • M5A1

  • M3A1

  • M2A4

  • Type 98 試製対空戦車

  • 九八式軽戦車

  • 九五式軽戦車

  • 特二式内火艇

  • 特三式内火艇

Эта функция протестирована в многопользовательских играх.

Теперь он доступен в моде Big Action в версии 661.

https://sandbox.enlisted.net/post/lIXaTtfV9x0bZT61/

Цените ваш отзыв!

Благодаря вашим идеям было реализовано или улучшено множество захватывающих игровых механик.

Так что делитесь, предлагайте и оставляйте отзывы!

20 лайков

Не поверил, что можно так сделать и заставить работать в мультиплеере…



Попробовал. Один и тот же отряд. Разная техника. В мультиплеере… Я удивлен.

Если не секрет, то как ты это сделал? Можно ли какой-то пример?

1 лайк

outdated

entites.blk

mbs_desktop_stuff_a_binoculars{
  _override:b=yes
  _extends:t="resupply_for_ground_vehicle_zone"
  resupply_zone__team:i=1
  resupply_zone__resupplyFuel:b=yes
  sphere_zone__radius:r=36.0
  active:b=yes
  zone__icon:t="!ui/skin#bullets.svg"
  minimap__visibleRadius:r=5000.0
  minimap__visibleForAll:b=yes
  building_menu__image:t="medic"
  hud_icon__image:t="medic"
  _replicated:t="building_menu__image"
  _replicated:t="hud_icon__image"
  builder_info__team:i=-1

  "buildByPlayer:eid"{
  }

  "dependsOnBuildingEid:eid"{
  }
}

mbs_stool_a{
  _override:b=yes
  _extends:t="resupply_for_ground_vehicle_zone"
  resupply_zone__team:i=2
  resupply_zone__resupplyFuel:b=yes
  sphere_zone__radius:r=36.0
  active:b=yes
  zone__icon:t="!ui/skin#bullets.svg"
  minimap__visibleRadius:r=5000.0
  minimap__visibleForAll:b=yes
  building_menu__image:t="medic"
  hud_icon__image:t="medic"
  _replicated:t="building_menu__image"
  _replicated:t="hud_icon__image"
  builder_info__team:i=-1

  "buildByPlayer:eid"{
  }

  "dependsOnBuildingEid:eid"{
  }
}
mbs_ger_radio_kw_e_a{
  _override:b=yes
  minimap__visibleRadius:r=3000.0
  minimap__visibleForAll:b=no
  building_menu__image:t="medic"
  hud_icon__image:t="map_icon_bike"
  _replicated:t="building_menu__image"
  _replicated:t="hud_icon__image"
  builder_info__team:i=-1
  team:i=-1

  "buildByPlayer:eid"{
  }

  "dependsOnBuildingEid:eid"{
  }

  "additiveBuildings:array"{
    "item:object"{
      template:t="rally_point_respawn_base+respawnChooser+respMotorcycle+vehicle_resp_soft_ground_collision+shred_outside_battle_area"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [3.0, 1.2, -0.6]]
    }
  }
}

mbs_ger_radio_feld_fu{
  _override:b=yes
  minimap__visibleRadius:r=3000.0
  minimap__visibleForAll:b=no
  building_menu__image:t="medic"
  hud_icon__image:t="map_icon_tank"
  _replicated:t="building_menu__image"
  _replicated:t="hud_icon__image"
  builder_info__team:i=-1
  team:i=-1

  "buildByPlayer:eid"{
  }

  "dependsOnBuildingEid:eid"{
  }

  "additiveBuildings:array"{
    "item:object"{
      template:t="rally_point_respawn_base+respawnChooser+respVehicle+vehicle_resp_soft_ground_collision+shred_outside_battle_area"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [8.0, 1.6, 0.2]]
    }
  }
}

respVehicle{
  _override:b=yes
  disableCapturePointsRadius:r=330.0
  respawnsBeforeDestroy:i=5
  disableEnemyRadius:r=50.0

  "maxVehicleOnSpawn:i"{
    value:i=5
    _info:t="max_vehicle_on_spawn"
  }
}

respMotorcycle{
  _override:b=yes
  disableCapturePointsRadius:r=230.0
  disableEnemyRadius:r=39.0

  "maxVehicleOnSpawn:i"{
    value:i=-1
    _info:t="max_vehicle_on_spawn"
  }
}

ussr_rallypoint{
  _override:b=yes

  "additiveBuildings:array"{

    "item:object"{
      template:t="rally_point_respawn_base+forceRespawnPriority"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 1.0, 0.0]]
    }

    "item:object"{
      template:t="placed_medic_box_item+item_in_world+mbs_desktop_stuff_a_binoculars+replicating"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, -0.2, 0.0]]
    }

    "item:object"{
      template:t="mbs_ger_radio_feld_fu+replicating"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 0.0, 0.37]]
    }

    "item:object"{
      template:t="mbs_ger_radio_kw_e_a+replicating"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 0.0, -0.3]]
    }
  }
}

ger_rallypoint{
  _override:b=yes

  "additiveBuildings:array"{

    "item:object"{
      template:t="rally_point_respawn_base+forceRespawnPriority"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 1.0, 0.0]]
    }

    "item:object"{
      template:t="placed_medic_box_item+item_in_world+mbs_stool_a+replicating"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, -0.2, 0.0]]
    }

    "item:object"{
      template:t="mbs_ger_radio_feld_fu+replicating"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 0.0, 0.377]]
    }

    "item:object"{
      template:t="mbs_ger_radio_kw_e_a+replicating"
      tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 0.0, -0.3]]
    }
  }
}

// etc...
// Important!!!
// use to auto remove dead wrecks of vehicles!
// Important to save performance !!! Recycling garbage occupies memory.
willys_mb{
  _override:b=yes
  _extends:t="bonfire_effect_no_occluders"
  _extends:t="fire_timings"
  _extends:t="base_fortification_build"
  animchar__res:t="pv_gaz_67_char"
  collres__res:t="pv_gaz_67_collision"
  effect__name:t="fire_tank_small_cmps_fx"
  fire_source__startTime:r=0.0
  fire_source__fullForceTime:r=20.0
  fire_source__maxFullForceTime:r=23.0
  fire_source__fadeTime:r=6.0
  fire_source__scale:r=1.29

  "fire_source:tag"{
  }

  "zombieTriggerable:tag"{
  }

  "dmgzone__burningOffender:eid"{
  }

  // disable the spawn selector on dead vehchile
  "respawnOwnerEid:eid"{
  }

  "respawnIcon:eid"{
  }
}

gmc_353_a{
  _override:b=yes
 _extends:t="shred_outside_battle_area" // you dont want players spawn in the gray zone..
  _tracked:t="builder_info__team"
  builder_info__team:i=1 // requred for shred_outside_battle_area
  entity__recreateToOnDeath:t="willys_mb"
  inactiveDeleteTimer:r=230.0
  destroyTimerCheckDistance:r=100.0
  item__name:t="capzone/convoy"
  destroyIfNoCrewLeft:b=yes
  vehicle_seats__restrictToTeam:i=1
  vehicle_seats__autoDetectRestrictToTeam:b=no
  // collision_damage__canBeOffender:b=false
  // _replicated:t="attach_decorators__entities"
  // _replicated:t="attach_decorators__templates"

  //   properties to fix some error warnning

  "ammo_stowage__stowageTemplates:shared:list<t>"{
  }

  "dm_phys_parts__ammo:array"{
  }

  "dm_phys_parts__tracks:array"{
  }

  "turret_gun_flash_fx__flashNodes:shared:array"{
  }

  "turret_gun_flash_fx__flashFx:shared:array"{
  }

  "turret_gun_flash_fx__flashFxScale:shared:array"{
  }

  "turret_control__emitterNodes:shared:array"{
  }

  "turret_control__turretInfo:shared:array"{
  }

  // attach_decorators__entities not working in multiplayer games yet. 
  // or it would be a better way to implement this

  // _group{
  //   _tags:t="server"

  //   "attach_decorators__entities:list<eid>"{
  //   }

  //   "attach_decorators__templates:array"{
  //     "templates:object"{
  //       relativeTm:m=[[0.0, -1.0, 0.0] [1.0, -0.0, 0.0] [0.0, 0.0, 1.0] [0.5, -5.0, -0.0]]
  //       template:t="gun_game_respawn_base+respTeam1+replicating"
  //       nodeName:t="emtr_fire_engine"
  //     }
  //   }
  // }
}

opel_blitz_kfz_305{
  _override:b=yes
 _extends:t="shred_outside_battle_area"
  _tracked:t="builder_info__team"
  builder_info__team:i=2 // requred for shred_outside_battle_area
  entity__recreateToOnDeath:t="willys_mb"
  inactiveDeleteTimer:r=230.0
  destroyTimerCheckDistance:r=100.0
  item__name:t="capzone/convoy"
  destroyIfNoCrewLeft:b=yes
  vehicle_seats__restrictToTeam:i=2
  vehicle_seats__autoDetectRestrictToTeam:b=no
  // collision_damage__canBeOffender:b=false

  //   properties to fix some error warnning

  "ammo_stowage__stowageTemplates:shared:list<t>"{
  }

  "dm_phys_parts__ammo:array"{
  }

  "dm_phys_parts__tracks:array"{
  }

  "turret_gun_flash_fx__flashNodes:shared:array"{
  }

  "turret_gun_flash_fx__flashFx:shared:array"{
  }

  "turret_gun_flash_fx__flashFxScale:shared:array"{
  }

  "turret_control__emitterNodes:shared:array"{
  }

  "turret_control__turretInfo:shared:array"{
  }
}

// i defined a new template here
// but I cant directly use the new template in multiplayer games
big_action_attachableRespawnBase{
  _extends:t="respawnBase"
  _extends:t="respawnChooser"
  decor__id:i=-1
  decor__swapYZ:b=no
  active:b=no
  respawnsBeforeDestroy:i=999999
  respawnCooldown:r=10.0
  nextSpawnActivateAtTime:r=0.0
  disableEnemyRadius:r=20.0
  disableCapturePointsRadius:r=-1.0
  disableMissionRespawnPointsRadius:r=-1.0
  respawnBaseGroup:i=-1
  enemyCheckInterval:r=0.5
  nextEnemyCheckAtTime:r=1.0
  isEnemyAtRespawn:b=no
  respbase__validated:b=yes
  _tracked:t="respawnsBeforeDestroy"
  _tracked:t="nextSpawnActivateAtTime"
  _tracked:t="isEnemyAtRespawn"

  "node_attached__updateWtm:tag"{
  }

  "decor__canAttach:b"{
    value:b=no
    _tags:t="gameClient"
  }

  // "dependsOnBuildingEid:eid"{
  // }

  "autoSetRespawnGroup:tag"{
  }

  "customRespawnBase:tag"{
  }

  "respbase__noSpawnImmunity:b"{
    value:b=yes
    _tags:t="server"
  }

  "playerRespawnBase:tag"{
  }
}

// use a gun_game_respawn_base  to path our new properties
// as a carrier, because this tag exists on both the client and the server.
// you can use unused templates in your mod to add custom functions.
gun_game_respawn_base{
  _override:b=yes
  _extends:t="big_action_attachableRespawnBase"
}

// local tests
big_action_attachableRespawnBase_team1{
  _extends:t="big_action_attachableRespawnBase"
  team:i=1
}

big_action_attachableRespawnBase_team2{
  _extends:t="big_action_attachableRespawnBase"
  team:i=2
}

base_m13_40_serie_3{
  _override:b=yes
  canUseRespawnbaseType:t="motorcycle"
}

base_m14_41{
  _override:b=yes
  canUseRespawnbaseType:t="motorcycle"
}

// ...

Поскольку я не могу использовать attach_decorators__templates

Поэтому я могу наложитьxxx_respawn_base только непосредственно на автомобиль.

К моему приятному удивлению, это тоже дает хорошие результаты.

scene.blk


// Since I modified the `canUseRespawnbaseType` of some tanks, in order to ensure that these tanks can be deployed correctly.

// Each respVehicle and its selectGroup must correspond to a respMotorcycle with the same selectGroup

entity{
  _template:t="respawnChooser+respVehicle+vehicle_resp_soft_ground_collision"
  transform:m=[[0.200152, 0, -0.979765] [0, 1, 0] [0.979765, -0, 0.200152] [-512.929, 8.28614, -459.086]]
  groupName:t="s1"
  team:i=1
  maxVehicleOnSpawn:i=2
  respawnBaseGroup:i=997005
}

entity{
  _template:t="respawnChooser+respMotorcycle"
  transform:m=[[-0.652412, 0, -0.757864] [0, 1, 0] [0.757864, 0, -0.652412] [-583.632, 9.82787, -603.276]]
  team:i=1
  respawnBaseGroup:i=997005
  groupName:t="s1"

  "respbase__addTemplatesOnSpawn:list<t>"{
    item:t="vehicle_spawn_validation"
    item:t="vehicle_spawn_restriction"
    item:t="base_tgdgb_m40_lv" // match 6 wheels and help to fix camera issue
    item:t="gmc_353_a" // truck is here
    item:t="paratrooper_plane_camera"
    item:t="vehicle_display_marker_over_head"
    item:t="destroyOnDamageWithoutCrew"
    item:t="destroy_inactive_vehicle"
    item:t="gun_game_respawn_base" // patch our changed respawn poinit
    item:t="respawnChooser"
  }
}

entity{
  _template:t="respawnChooser+respVehicle+vehicle_resp_soft_ground_collision"
  transform:m=[[0.956992, 0, 0.290112] [0, 1, -0] [-0.290112, 0, 0.956992] [-1875.09, 1.40111, -788.972]]
  groupName:t="s1n1"
  team:i=2
  maxVehicleOnSpawn:i=7
  respawnBaseGroup:i=7011
}

entity{
  _template:t="respawnChooser+respMotorcycle"
  transform:m=[[0.758022, 0, -0.65223] [0, 1, 0] [0.65223, -0, 0.758022] [-1907.57, 1.40607, -753.874]]
  team:i=2
  respawnBaseGroup:i=7011
  groupName:t="s1"

  "respbase__addTemplatesOnSpawn:list<t>"{
    item:t="vehicle_spawn_validation"
    item:t="vehicle_spawn_restriction"
    item:t="base_ab_41" // 4 wheels and help to fix camera issue
    item:t="opel_blitz_kfz_305"
    item:t="paratrooper_plane_camera"
    item:t="vehicle_display_marker_over_head"
    item:t="destroyOnDamageWithoutCrew"
    item:t="destroy_inactive_vehicle"
    item:t="gun_game_respawn_base"
    item:t="respawnChooser"
  }
}
4 лайка

устаревший. Потому что additiveBuildings в этом методе не может правильно синхронизировать позиции объектов клиента и сервера.

willys_mb{
  _override:b=yes
  _extends:t="bonfire_effect_no_occluders"
  _extends:t="fire_timings"
  _extends:t="base_fortification_build"
  animchar__res:t="pv_gaz_67_char"
  collres__res:t="pv_gaz_67_collision"
  effect__name:t="fire_tank_small_cmps_fx"
  fire_source__startTime:r=0.0
  fire_source__fullForceTime:r=20.0
  fire_source__maxFullForceTime:r=23.0
  fire_source__fadeTime:r=6.0
  fire_source__scale:r=1.29

  "fire_source:tag"{
  }

  "zombieTriggerable:tag"{
  }

  "dmgzone__burningOffender:eid"{
  }
}

gmc_353_a{
  _override:b=yes
  entity__recreateToOnDeath:t="willys_mb"
  inactiveDeleteTimer:r=300.0
  destroyTimerCheckDistance:r=100.0
  item__name:t="capzone/convoy"
  destroyIfNoCrewLeft:b=yes
  vehicle_seats__restrictToTeam:i=1
  vehicle_seats__autoDetectRestrictToTeam:b=no
  xray_resource__modelName:t="tgdgb_m40_lv"

  "ammo_stowage__stowageTemplates:shared:list<t>"{
  }

  "dm_phys_parts__ammo:array"{
  }

  "dm_phys_parts__tracks:array"{
  }

  "turret_gun_flash_fx__flashNodes:shared:array"{
  }

  "turret_gun_flash_fx__flashFx:shared:array"{
  }

  "turret_gun_flash_fx__flashFxScale:shared:array"{
  }

  "turret_control__emitterNodes:shared:array"{
  }

  "turret_control__turretInfo:shared:array"{
  }

  _group{
    _tags:t="server"
    respawn_on_sodier__respawnBaseTemplate:t="sandbags_wall_maxim_no_shield+agit_poster_ussr_a+mortar_preview+ski_decor+player_respawn_base"
  }
}

big_action_attachableRespawnBase{
  _extends:t="respawnBase"
  _extends:t="respawnChooser"
  decor__id:i=-1
  decor__swapYZ:b=no
  active:b=no
  respawnsBeforeDestroy:i=999999
  respawnCooldown:r=12.0
  nextSpawnActivateAtTime:r=0.0
  disableEnemyRadius:r=16.0
  disableCapturePointsRadius:r=-1.0
  disableMissionRespawnPointsRadius:r=-1.0
  respawnBaseGroup:i=-1
  enemyCheckInterval:r=0.5
  nextEnemyCheckAtTime:r=0.0
  isEnemyAtRespawn:b=no
  respbase__validated:b=yes
  _tracked:t="respawnsBeforeDestroy"
  _tracked:t="nextSpawnActivateAtTime"
  _tracked:t="isEnemyAtRespawn"

  "node_attached__updateWtm:tag"{
  }

  "decor__canAttach:b"{
    value:b=no
    _tags:t="gameClient"
  }

  "dependsOnBuildingEid:eid"{
  }

  "autoSetRespawnGroup:tag"{
  }

  "customRespawnBase:tag"{
  }

  "respbase__noSpawnImmunity:b"{
    value:b=yes
    _tags:t="server"
  }

  "playerRespawnBase:tag"{
  }
}

player_respawn_base{
  _override:b=yes

  "additiveBuildings:array"{

    "item:object"{
      template:t="stationary_maxim_no_shield_building_additive_preview+agit_poster_ussr_a+mortar_preview+ski_decor+gun_game_respawn_base+respawnChooser"
      tm:m=[[0.0, 1.0, 0.0] [1.0, -0.0, 0.0] [0.0, 0.0, -1.0] [-2.0, 0.6, -0.0]]
      additiveUp:p3=0.0, 1.0, 0.0
    }
  }
}

gun_game_respawn_base{
  _override:b=yes
  _extends:t="big_action_attachableRespawnBase"
}

big_action_attachableRespawnBase_team1{
  _extends:t="big_action_attachableRespawnBase"
  team:i=1
}

big_action_attachableRespawnBase_team2{
  _extends:t="big_action_attachableRespawnBase"
  team:i=2
}

entity{
  _template:t="respawnChooser+respMotorcycle"
  transform:m=[[-0.92862, 0, 0.371032] [0, 1, 0] [-0.371032, 0, -0.92862] [-443.092, 12.078, -1515.13]]
  team:i=1
  groupName:t="s0"
  respawnBaseGroup:i=7001

  "respbase__addTemplatesOnSpawn:list<t>"{
    item:t="spawn_on_friends"
    item:t="vehicle_spawn_validation"
    item:t="vehicle_spawn_restriction"
    item:t="base_tgdgb_m40_lv"
    item:t="gmc_353_a"
    item:t="paratrooper_plane_camera"
    item:t="vehicle_display_marker_over_head"
    item:t="soft_ground_collision"
    item:t="destroyOnDamageWithoutCrew"
  }
}

entity{
  _template:t="respawnChooser+respMotorcycle"
  transform:m=[[0.771639, 0, 0.636063] [0, 1, -0] [-0.636063, 0, 0.771639] [-1918.34, 4.21534, -1167.85]]
  team:i=2
  respawnBaseGroup:i=7007
  groupName:t="s0"

  "respbase__addTemplatesOnSpawn:list<t>"{
    item:t="spawn_on_friends"
    item:t="vehicle_spawn_validation"
    item:t="vehicle_spawn_restriction"
    item:t="base_ab_41"
    item:t="opel_blitz_kfz_305"
    item:t="paratrooper_plane_camera"
    item:t="vehicle_display_marker_over_head"
    item:t="soft_ground_collision"
    item:t="destroyOnDamageWithoutCrew"
  }
}

О мобильных точках сбора

Совершенно новая реализация! Я считаю, что это лучший способ.

На основе spawn_on_friends, semi_transparent_render и additiveBuildings.

Он лучше прикрепляет селектор к точке появления. (Задержка все еще есть, но теперь позиция может обновляться автоматически).

По-старому селектор плохо следил за движением цели.

Это действительно довольно обходной путь. В любом случае это все еще обеспечивает функциональность

Я провожу финальное тестирование и обновляю его до версии 666.


Таким способом можно даже приклеить что угодно к движущемуся объекту! И это работает в мультиплеере.


На самом деле разработчикам нужно всего лишь изменить некоторые коды, и мы сможем получить лучшие и простые точки возрождения мобильных устройств.

На основе player_respawn_base вы можете получить движущуюся точку возрождения, но в настоящее время ее respawn_icon__isHidden всегда имеет значение false из-за текущей логики кода. Если разработчик может предоставить возможность установить для respawn_icon__isHidden значение true, тогда мы сможем напрямую получить точку возрождения без комбинации вышеуказанных шаблонов.


Есть проблема, похоже, что точка появления не следует за грузовиком в мультиплеере.

Отладка

2 лайка

Извиняюсь, а план на версию, где Советы в атаке, а немцы в обороне, есть?

1 лайк

Больше случаев остается только ждать, пока официальная команда разработчиков или другие авторы сделают это.

Власть человека ограничена.

Как видите, я потратил довольно много времени, пытаясь сделать это, которое должно было стать простой функцией, предоставленной командой разработчиков. И эти функции должны были предоставить игрокам разработчики.

1 лайк
big_action_attachableRespawnBase{
  _extends:t="respawnBase"
  _extends:t="respawnChooser"
  nextTmUpdateTime:r=-1.0
  respawnsBeforeDestroy:i=999999
  respawnCooldown:r=12.0
  nextSpawnActivateAtTime:r=0.0
  disableEnemyRadius:r=16.0
  disableCapturePointsRadius:r=-1.0
  disableMissionRespawnPointsRadius:r=-1.0
  respawnBaseGroup:i=-1
  enemyCheckInterval:r=0.5
  nextEnemyCheckAtTime:r=0.0
  isEnemyAtRespawn:b=no
  respbase__validated:b=yes
  _tracked:t="respawnsBeforeDestroy"
  _tracked:t="nextSpawnActivateAtTime"
  _tracked:t="isEnemyAtRespawn"

  "decor__canAttach:b"{
    value:b=no
    _tags:t="gameClient"
  }

  "dependsOnBuildingEid:eid"{
  }

  "autoSetRespawnGroup:tag"{
  }

  "customRespawnBase:tag"{
  }

  "respbase__noSpawnImmunity:b"{
    value:b=yes
    _tags:t="server"
  }

  "playerRespawnBase:tag"{
  }
  
  "respawnOwnerEid:eid"{
  }
}

// we dont need to override this
// player_respawn_base{
//   _override:b=yes
// }

respawn_point_selector{
  _override:b=yes
  _tracked:t="transform" //  !!!! very important for sync the position of respawn_point_selector
  _replicated:t="transform" //  !!!! very important for sync the position of respawn_point_selector
}

gun_game_respawn_base{
  _override:b=yes
  _extends:t="big_action_attachableRespawnBase"

  //

  // "respawnIcon:eid"{
  // }
}

gmc_353_a{
  _override:b=yes
  entity__recreateToOnDeath:t="willys_mb"
  inactiveDeleteTimer:r=300.0
  destroyTimerCheckDistance:r=100.0
  item__name:t="capzone/convoy"
  destroyIfNoCrewLeft:b=yes
  vehicle_seats__restrictToTeam:i=1
  vehicle_seats__autoDetectRestrictToTeam:b=no
  xray_resource__modelName:t="tgdgb_m40_lv"

  "ammo_stowage__stowageTemplates:shared:list<t>"{
  }

  "dm_phys_parts__ammo:array"{
  }

  "dm_phys_parts__tracks:array"{
  }

  "turret_gun_flash_fx__flashNodes:shared:array"{
  }

  "turret_gun_flash_fx__flashFx:shared:array"{
  }

  "turret_gun_flash_fx__flashFxScale:shared:array"{
  }

  "turret_control__emitterNodes:shared:array"{
  }

  "turret_control__turretInfo:shared:array"{
  }

  _group{
    _tags:t="server"
    respawn_on_sodier__respawnBaseTemplate:t="replicating+local_light+buildedRespawnBase+gun_game_respawn_base"
  }
}

opel_blitz_kfz_305{
  _override:b=yes
  entity__recreateToOnDeath:t="willys_mb"
  inactiveDeleteTimer:r=300.0
  destroyTimerCheckDistance:r=100.0
  item__name:t="capzone/convoy"
  destroyIfNoCrewLeft:b=yes
  vehicle_seats__restrictToTeam:i=2
  vehicle_seats__autoDetectRestrictToTeam:b=no
  xray_resource__modelName:t="gaz_mm_72k"

  "ammo_stowage__stowageTemplates:shared:list<t>"{
  }

  "dm_phys_parts__ammo:array"{
  }

  "dm_phys_parts__tracks:array"{
  }

  "turret_gun_flash_fx__flashNodes:shared:array"{
  }

  "turret_gun_flash_fx__flashFx:shared:array"{
  }

  "turret_gun_flash_fx__flashFxScale:shared:array"{
  }

  "turret_control__emitterNodes:shared:array"{
  }

  "turret_control__turretInfo:shared:array"{
  }

  _group{
    _tags:t="server"
    respawn_on_sodier__respawnBaseTemplate:t="replicating+local_light+buildedRespawnBase+gun_game_respawn_base"
  }
}
entity{
  _template:t="respawnChooser+respMotorcycle"
  transform:m=[[-0.92862, 0, 0.371032] [0, 1, 0] [-0.371032, 0, -0.92862] [-443.092, 12.078, -1515.13]]
  team:i=1
  groupName:t="s0"
  respawnBaseGroup:i=7001

  "respbase__addTemplatesOnSpawn:list<t>"{
    item:t="spawn_on_friends"
    item:t="vehicle_spawn_validation"
    item:t="vehicle_spawn_restriction"
    item:t="base_tgdgb_m40_lv"
    item:t="gmc_353_a"
    item:t="paratrooper_plane_camera"
    item:t="vehicle_display_marker_over_head"
    item:t="soft_ground_collision"
    item:t="destroyOnDamageWithoutCrew"
  }
}

entity{
  _template:t="respawnChooser+respMotorcycle"
  transform:m=[[0.771639, 0, 0.636063] [0, 1, -0] [-0.636063, 0, 0.771639] [-1918.34, 4.21534, -1167.85]]
  team:i=2
  respawnBaseGroup:i=7007
  groupName:t="s0"

  "respbase__addTemplatesOnSpawn:list<t>"{
    item:t="spawn_on_friends"
    item:t="vehicle_spawn_validation"
    item:t="vehicle_spawn_restriction"
    item:t="base_ab_41"
    item:t="opel_blitz_kfz_305"
    item:t="paratrooper_plane_camera"
    item:t="vehicle_display_marker_over_head"
    item:t="soft_ground_collision"
    item:t="destroyOnDamageWithoutCrew"
  }
}

Реализация, работающая в мультиплеере, протестирована.


repliating+local_light очень важен, он используется для синхронизации положения объекта.


Можно добавить свойство respawnIcon и селектор точки появления будет точно следовать за транспортным средством в многопользовательской игре.

Но это немного сложный способ.

Поскольку respawnIcon фактически приводит к тому, что respawn_selector становится скрытым, но он все равно может отображаться в многопользовательских играх, это связано с тем, что клиент и сервер не синхронизированы.

То есть эту функцию можно реализовать без синхронизации. это немного странно

Потому что вы не можете увидеть этот селектор точки сбора в локальном редакторе.

Если вы закомментируете здесь respawnIcon, и многопользовательские, и локальные игры могут иметь одинаковый эффект, но селектор обновит позицию только при изменении атрибута active.

3 лайка

Привет, Томми, извини за офтоп. Можно ли вернуть Советской армии противотанковое орудие, которое строится инженером? Танк Т-26 не может справляться с вражеской техникой поздней войны, а очень часто в комнатах с твоим лобби выбираются все кампании (это не минус, наоборот интересно)

1 лайк

Большое спасибо.

В настоящее время в рамках этого модуля Советская Красная Армия в Москве может построить три противотанковые пушки 53К, а американские военные — противотанковые пушки М1.

Здание в Битве за Берлин изменено на Т-26 из соображений баланса. Потому что пехотное вооружение в битве за Берлин имело большие преимущества.

Я планирую добавить для них больше типов сборок.

Я планирую добавить более мощные противотанковые орудия для британской армии или советской Красной Армии в Сталинградской битве. Но на данный момент у меня нет особенно хорошей модели.

Мощнее только противотанковая пушка Pak40, но я не хочу добавлять Pak40 для Советской Красной Армии. Было бы удобнее, если бы у нас была подходящая противотанковая пушка Зис-3.

Модель 17-фунтовой пушки слишком большая и я до сих пор не могу найти подходящего способа ее добавить.

Помимо этого, мне всегда хотелось добавить больше типов сборок. К сожалению, обновление списка билдов и добавление новых типов билдов в сетевой игре на данный момент невозможно.

В план-листе Советская Красная Армия в битве за Берлин может построить 122-мм гаубицу, которая не является противотанковой пушкой, но может осуществлять прямую и непрямую наводку.

Я все еще жду обновлений по редактору модов. пожалуйста @1942786

4 лайка

Не знаю насчет баланса, но за 10 игр часто встречал немцев с берлинской кампании, ездящих на танках Pz. IV J, Pz. V Panther, Pz. VI Tiger и Pz. VII Koenigstiger. Уничтожать их зачастую сложно даже с советских танков, поэтому возможно строительство противотанковых орудий даже в виде Pak 40 будет оправданным. Чтобы не нарушать баланс, можно уменьшить количество боеприпасов относительно других мелкокалиберных орудий. Тем не менее, мод хороший!

1 лайк

Единственный баланс на данный момент заключается в том, что тяжелые танки должны приближаться издалека, чтобы у вас было время разобраться с ними.

Используйте 45-мм пушку, чтобы расправиться с большинством немецких танков на флангах. Эффективно используйте свой джип и пространство на карте.

Для союзников самым важным было задержать атаку врага. Вы также можете использовать дома и бункеры на карте для уничтожения пехоты, приближающейся к capzone. Танки, стоящие далеко, не могли обеспечить немцам победу.


Я надеюсь в будущем сбалансировать эти тяжелые танки с помощью PersonalRespawnScoreCost. Таким образом, они будут менее подвержены злоупотреблениям спамом.

Я все еще жду обновлений, связанных с редактором.

1 лайк