[The Complete Guide] Create your own Breaking Dead mod(Wave-based Zombies) from scratch

Continue of post 2 (because I apparently hit the word limit :slight_smile: )

4) (Unique guide) Custom AI tanks

Custom AI tanks

  • Whats special about this? Well if you have played my mods, you would see the excessive spam of exclusive zombie AI tanks. You cant see them anywhere else.

  • Let’s check out the codes:

type_95_ha_go_ai_tank_vehicle.txt (3.4 KB)

  • Don’t get overwhelmed by the codes. I will explain them one by one

First part:

type_95_ha_go_ai_vehicle_tank{

  _use:t="ai_vehicle_tank_fixed_objective"
  _use:t="jp_type_95_ha_go_14th_inf_div_peleliu_pacific_battlepass_premium"

  bodyCleanupTime:r=7.5 
  
  paid_loot__pointsForKill:i=100
  vehicle_seats__restrictToTeam:i=3

  "dontCreateNphysObstacle:tag"{
  }

  "zombie:tag"{
  }
  destroyIfNoCrewLeft:b=yes
  _group{
    _tags:t="server"
	ai_vehicle_tank__thinkState:i=1
    ai_vehicle_tank__waitTimesUpdatePath:r=60.0
    ai_vehicle_tank__allowCrewExiting:b=no
    zombie_ai_vehicle_tank__timeToDestroy:r=900.0
    zombie_ai_vehicle_tank__destroyAtTime:r=0.0
    ai_vehicle_tank__ignoreBattleArea:b=yes
  }

"vehicle_seats__seats:shared:array"{

    "seats:object"{
      name:t="main_gunner"
      locName:t="vehicle_seats/gunner"
      attachNode:t="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.02, -0.72, -0.07]]
      seatComponent:t="isGunner"
      nextSeat:t="driver"
      shouldHideOwner:b=yes
      receiveDamageFromDMPart:t="commander"
      cameraNodeName:t="bone_camera_gunner"
      cockpitTemplate:t="jp_type_95_ha_go_gunner_cockpit"
      hatchRotationAxis:p3=1.7, 0.0, 0.0
	  directTurretControl:b=yes
	  
      "turretNames:array"{
        turretNames:t="turret_01"
      }

      "hatchNodes:array"{
        node:t="hatch_01"
        node:t="hatch_02"
      }

      "loaderTurretNames:array"{
        turret:t="turret_01"
      }
    }

    "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="isDriver"
      nextSeat:t="main_gunner"
      shouldHideOwner:b=yes
      receiveDamageFromDMPart:t="driver"
      cameraNodeName:t="bone_camera_driver"
      cameraOffset:p3=0.15, -0.0, -0.0
      cockpitTemplate:t="jp_type_95_ha_go_driver_cockpit"
    }

    "seats:object"{
      name:t="main_gunner"
      locName:t="vehicle_seats/additional_gunner"
      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="isGunner"
      nextSeat:t="driver"
      shouldHideOwner:b=yes
      receiveDamageFromDMPart:t="machine_gunner"
      cameraNodeName:t="root"
      cockpitTemplate:t="jp_type_95_ha_go_machinegunner_cockpit"
	  directTurretControl:b=yes

      "turretNames:array"{
        turret:t="turret_02"
      }
    }
  }
}

Long code isn’t it?
Actually, you only need to change the following codes for your own tanks

  • Change this to the tank you want
    _use:t="jp_type_95_ha_go_14th_inf_div_peleliu_pacific_battlepass_premium"

  • Change the array vehicle_seats__seats:shared:array to the tank you want. It can be copied by spawning a normal vehicle to check its code



5) Building hammer

Pay Is it possible to make the engineer's hammer and resources buyables like guns a visit for the magic behind this code

// Engineer's hammer section
// Forum post: https://forum.enlisted.net/en/t/142979/ (Thank you! @Bazsi37 @tommyZZM @Devenddar)

test_building_tool{
  _use:t="melee_weapon"
  builder__shootPressed:b=no
  nextTryToSetObjectInTime:r=-1.0
  autoTryBuildingObjectInterval:r=3.0
  engineerBuildingSpeedMul:r=2.0
  gun__reloadable:b=no
  animchar__res:t="hammer_char"
  item__iconYaw:r=145.0
  item__name:t="items/building_tool"
  meleeSoundType:t="buildingTool"
  _tracked:t="previewEid"

  "item__weapSlots:array"{
    slot:t="melee"
  }

  "buildingTool:tag"{
  }

  "itemInWeaponSlot:tag"{
  }

  "previewEid:eid"{
  }
}

test_building_tool_gun{
  _use:t="test_building_tool"
  _use:t="replicating"
  _tracked:t="gun__owner"
  _replicated:t="gun__owner"
  _replicated:t="currentPreviewId"
  buildingInterval:r=0.0
  nextBuildingAtTime:r=0.0
  additionalBuildingTemplate:t="network_fortification_preview"
  currentPreviewId:i=0
  fortification__rayMatId:i=-1
  fortification__rayMatName:t="engineerRay"
  minBuildingRadius:r=1.5
  animchar__res:t="hammer_char"
  gun__blk:t="content/enlisted/gamedata/weapons/building_tool_gun.blk"
  gun__canAim:b=no
  item__template:t="test_building_tools_item"
  animchar_render__enabled:b=yes
  item__proto:t="content/enlisted/gamedata/weapons/building_tool_gun.blk"
  item__weapTemplate:t="test_building_tool_gun"
  item__iconRoll:r=43.0
  item__iconYaw:r=0.0
  item__iconPitch:r=83.0
  item__name:t="items/hammer"
  item__weapType:t="building_tool"
  item__weight:r=0.5
  melee_weapon__blk:t="content/enlisted/gamedata/weapons/building_tool_gun.blk"
  gun__locName:t="Hammer"
  gun__statName:t="melee"
  gun__reloadable:b=no
  weap__sprintLerpFactor:r=1.0
  melee_weapon__attackAt:r=0.4
  melee_weapon__attackTime:r=1.0

  "item__id:i"{
    value:i=0
    _hide:b=yes
  }

  "gun__owner:eid"{
  }

  "net__notInInitialScope:tag"{
  }

  "previewTemplate:list<t>"{
    template:t="sandbags_wall_2_preview"
    template:t="auto_mg42_preview"
	template:t="builded_auto_turret_preview"
	template:t="sandbags_wall_mg_preview_dev"
    template:t="stationary_ampulomet_preview"	
	template:t="sandbags_wall_dshk_1942_preview"
	template:t="pz3n_preview"
	template:t="custom_antipersonnel_mine_preview"
	template:t="christmas_tree_preview"
    //template:t="ammunition_box_a_preview"
    template:t="czech_hedgehog_a_preview"
    template:t="barbedwire_engineer_a_preview"
    //template:t="cannon_germ_20mm_flak38_preview"
    //template:t="cannon_ussr_towed_at_53k_preview"
    //template:t="cannon_germ_towed_at_pak38_preview"
    
  }

  "buildingLimits:list<i>"{
    limit:i=5
    limit:i=3
	limit:i=1
    limit:i=1
	limit:i=3
	limit:i=1
	limit:i=2
	limit:i=5
    limit:i=10
	limit:i=1
	limit:i=3
  }
}

test_building_tools_item{
  _use:t="item_melee"
  _use:t="test_building_tool_gun"
  collres__res:t="construction_hammer_collision"
  item__userstats__pickupName:t="pickup_building_tool"
}

auto_mg42{
  _override:b=yes
  team:i=1
  auto_gun_controller__targetTeam:i=3
  auto_gun_controller__targetOffset:p3=0, 0, 0
  interactable:b=no
  "ai_target__targetForAiGunner:tag"{
   }
}
auto_mg42_preview{
  _use:t="base_animchar_builder_preview"
  animchar__res:t="mg42_char"
  collres__res:t="mg42_collision"
  instantiateTemplate:t="auto_mg42"
  ri_preview__name:t="ri_auto_mg42"
  buildingSoundTag:t="fortification"
  building_builder__maxTimeToBuild:r=10.0
  building_menu__text:t="Sentry Gun 42"
  building_menu__image:t="machine_gun"
  buildingCost:r=8.0
}
ri_auto_mg42{
  _use:t="game_rendinst_decor"
  ri_extra__name:t="auto_mg42"
}

builded_auto_turret_preview{
  _override:b=yes
  building_builder__maxTimeToBuild:r=20.0
  building_menu__text:t="Laser Sentry Gun"
  building_menu__image:t="assault_rifle"
  buildingCost:r=20.0
}
builded_auto_turret{
  _override:b=yes
  "moveable_obstacle:tag"{
  }
}
builded_sg_gun{
  _override:b=yes
  gun__kineticDamageMult:r=20.0
}
sandbags_wall_mg_preview_dev{
  _override:b=yes
  buildingCost:r=10.0
  building_builder__maxTimeToBuild:r=20.0
}

stationary_ampulomet_preview{
  _use:t="base_animchar_builder_preview"
  animchar__res:t="ampulomet_1941_char"
  collres__res:t="ampulomet_1941_collision"
  instantiateTemplate:t="stationary_ampulomet"
  ri_preview__name:t="ri_stationary_ampulomet"
  buildingSoundTag:t="fortification"
  building_builder__maxTimeToBuild:r=20.0
  building_menu__text:t="Ampulomet"
  building_menu__image:t="building_ampulomet"
  buildingCost:r=15.0
}
ri_stationary_ampulomet{
  _use:t="game_rendinst_decor"
  ri_extra__name:t="stationary_ampulomet"
}

custom_antipersonnel_mine_preview{
  _use:t="base_animchar_builder_preview"
  animchar__res:t="type_3_mine_char"
  collres__res:t="type_3_mine_collision"
  instantiateTemplate:t="jp_custom_antipersonnel_mine+placeable_item_in_world"
  ri_preview__name:t="jp_custom_antipersonnel_mine"
  buildingSoundTag:t="fortification"
  building_builder__maxTimeToBuild:r=3.0
  building_menu__text:t="Anti-personnel Mine"
  building_menu__image:t="killlog/kill_explosion"
  buildingCost:r=1.0
}
base_custom_mine_item_gun{
  _use:t="melee_weapon"
  _use:t="placeable_item"
  _use:t="base_mine_item_gun_sound"
  _use:t="replicating"
  _use:t="base_hitpoints"
  _use:t="base_dm_parts"
  weap__sprintLerpFactor:r=1.0
  animchar__res:t="antitank_mine_char"
  collres__res:t="antitank_mine_collision"
  animchar_render__enabled:b=yes
  item__template:t="base_mine_item_gun"
  item__weapTemplate:t="base_mine_item_gun"
  item__name:t="items/antitank_mine"
  item__weapType:t="mine"
  item__weight:r=0.5
  melee_weapon__blk:t="content/enlisted/gamedata/weapons/building_tool_gun.blk"
  gun__locName:t="antitank_mine"
  gun__reloadable:b=no
  _tracked:t="gun__owner"
  _tracked:t="mine__activated"
  _tracked:t="mine__blockedToTime"
  _replicated:t="gun__owner"
  _replicated:t="mine__activated"
  _replicated:t="mine__blockedToTime"
  mineActivatorTemplate:t="antipersonnel_mine_activator"
  mine_activator__offset:p3=0.0, 0.15, 0.0
  activationRadius:r=1.5
  mine__installBlockTime:r=5.0
  mine__blockedToTime:r=-1.0
  mine__activated:b=no
  nextCheckTriggerAtTime:r=-1.0
  checkTriggerInterval:r=0.1
  material:t="steel"
  needsBlood:b=no
  meleeSoundType:t=""
  hitpoints__hp:r=10.0
  hitpoints__maxHp:r=10.0
  hitpoints__hpRecoverySpd:r=0.0
  hitpoints__hpThreshold:r=0.0
  hitpoints__stoppingPower:r=0.0
  hitpoints__shellDmgMult:r=0.075
  hitpoints__shellSplashDmgMult:r=0.075

  "disableDestroyWithRi:tag"{
  }

  "build_attach__riexHandle:u64"{
    value:i64=-1
    _tags:t="server"
  }

  "item__weapSlots:array"{
    slot:t="special"
  }

  "itemInWeaponSlot:tag"{
  }

  collres{
  }

  "gun__owner:eid"{
  }

  "net__notInInitialScope:tag"{
  }

  "specialWeapItem:tag"{
  }

  "disableMelee:tag"{
  }

  "mine_activation_zone__initEids:list<eid>"{
  }

  "engeneer_mine:tag"{
  }

  "dm_parts__parts:object"{

    "mine_b_collision04:object"{
      dmgMult:r=1.0
      armor:r=0.0
    }

    "mine_b_collision05:object"{
      dmgMult:r=1.0
      armor:r=0.0
    }

    "mine_b_collision06:object"{
      dmgMult:r=1.0
      armor:r=0.0
    }
  }

  "killer:eid"{
  }

  _group{
    ui__geom_node_idx:i=-1
    ui__node_pos:p3=0.0, 0.0, 0.0
    ui__geom_node_name:t="weaponRoot"
    _tags:t="ui"
  }

  "animchar__noUpdateOnDedicated:tag"{
  }
}

custom_antipersonnel_mine_item_gun{
  _use:t="base_custom_mine_item_gun"
  animchar__res:t="sprengmine_35_char"
  collres__res:t="sprengmine_35_collision"
  mineActivatorTemplate:t="antipersonnel_mine_activator"
  melee_weapon__blk:t="content/enlisted/gamedata/weapons/mines/antipersonnel_mine_item_gun.blk"
  gun__locName:t="antipersonnel_mine"
  item__name:t="items/antipersonnel_mine"
  item__template:t="antipersonnel_mine_item_gun"
  item__weapTemplate:t="antipersonnel_mine_item_gun"
  item__mineType:t="antipersonnel_mine"
  item__weight:r=4.0
  activationRadius:r=1.4
  shell_explosion_fx__infoTemplate:t="hit_effect_group_antipersonel_mine_explosion"
  shell__waterImpactFx:t="hit_water_medium_effect"

  "ui__placeableItemMarker:tag"{
    _tags:t="ui"
  }

  "mine_activation__delay:r"{
    _tags:t="server"
    value:r=0.5
  }

  "vehicleTriggerable:tag"{
  }

  "humanTriggerable:tag"{
  }

  "dm_parts__parts:object"{

    "volumeBox_1:object"{
      dmgMult:r=1.0
      armor:r=0.0
    }

    "volumeBox_2:object"{
      dmgMult:r=1.0
      armor:r=0.0
    }
  }
}

jp_custom_antipersonnel_mine{
  _use:t="custom_antipersonnel_mine_item_gun"
  animchar__res:t="type_3_mine_char"
  collres__res:t="type_3_mine_collision"
  melee_weapon__blk:t="content/enlisted/gamedata/weapons/mines/jp_antipersonnel_mine.blk"
  item__template:t="jp_antipersonnel_mine"
  item__weapTemplate:t="jp_antipersonnel_mine"
  placeable_item__additionalHeight:r=0.015
  item__weight:r=4.0

  "dm_parts__parts:object"{

    "volumebox_01:object"{
      dmgMult:r=1.0
      armor:r=0.0
    }
  }
  team:i=1
  placeable_item__ownerTeam:i=1
}

custom_ampulomet_preview{
  _use:t="stationary_ampulomet_preview"
  instantiateTemplate:t="custom_stationary_ampulomet"
}
custom_stationary_ampulomet{
  _use:t="stationary_ampulomet"
  "gun__shells:array"{
    gun__shells:t="gamedata/gen/weapons/shells/type_2_grenade_discharger_shell.blk"
  }
}
//Pz3N
pz3n_preview{
  _use:t="base_animchar_builder_preview"
  animchar__res:t="pzkpfw_III_ausf_N_char"
  collres__res:t="pzkpfw_III_ausf_N_collision"
  instantiateTemplate:t="germ_pzkpfw_III_ausf_N_ai_vehicle_tank_defense"
  avaliableAngles:p2=-30.0, 30.0
  buildingSoundTag:t="cannon"
  building_menu__text:t="Panzer III N"
  building_menu__image:t="map_icon_tank"
  building_builder__maxTimeToBuild:r=5.0
  building_builder__maxUnderwaterDistance:r=0.5
  requiredSpaceAboveObjectOffset:r=0.5
  requiredSpaceAboveObject:r=1.0
  buildingDistance:r=2.0
  buildingCost:r=5.0
  savePreviewTeam:b=yes
}

germ_pzkpfw_III_ausf_N_ai_vehicle_tank_defense{
  _use:t="ai_aircraft_crew_ger"
  ai_aircraft_crew__soldier_template:t="zombie_ai_vehicle_tank_crew_member"
  _use:t="ai_vehicle_tank_fixed_objective"
  _use:t="germ_pzkpfw_III_ausf_N_tunis_premium"
  
  cockpit__sightFov:r=360.0
  bodyCleanupTime:r=10.0 
 
  vehicle_seats__restrictToTeam:i=1

  "dontCreateNphysObstacle:tag"{
  }

  
  destroyIfNoCrewLeft:b=yes
  
  _group{
    _tags:t="server"
    ai_vehicle_tank__allowCrewExiting:b=no
    zombie_ai_vehicle_tank__timeToDestroy:r=900.0
    zombie_ai_vehicle_tank__destroyAtTime:r=0.0
    ai_vehicle_tank__ignoreBattleArea:b=yes
  }

"vehicle_seats__seats:shared:array"{
    "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="isDriver"
      nextSeat:t="main_gunner"
      shouldHideOwner:b=yes
      receiveDamageFromDMPart:t="driver"
      //cameraNodeName:t="bone_camera_driver"
      //cameraOffset:p3=0.15, -0.0, -0.0
      //cockpitTemplate:t="germ_pzkpfw_III_ausf_N_driver_cockpit"
    }
    "seats:object"{
	  directTurretControl:b=yes
      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="germ_pzkpfw_III_ausf_N_gunner_cockpit"

      "turretNames:array"{
        turret:t="turret_01"
		turret:t="turret_02"
      }
    }

    

    "seats:object"{
	  directTurretControl:b=yes
      name:t="commander"
      locName:t="vehicle_seats/commander"
      attachNode:t="commander"
      shouldHideOwner:b=yes
      maxPosWithOpenHatch:r=1.2
      hatchRotationAxis:p3=1.7, 0.0, 0.0
      ignoreAttachNodeRotation:b=yes
      attachTm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [-0.1, -0.4, 0.05]]
      seatComponent:t="isDriver"
      receiveDamageFromDMPart:t="commander"
      //cameraNodeName:t="bone_turret"
      //cockpitTemplate:t="germ_pzkpfw_III_ausf_N_commander_cockpit"

      "hatchNodes:array"{
        node:t="hatch_01"
      }

      "turretNames:array"{
        turret:t="turret_03"
      }
    }
	
	"seats:object"{
      attachNode:t="loader"
      locName:t="vehicle_seats/loader"
      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="loader"
      cameraNodeName:t="bone_camera_driver"

      "loaderTurretNames:array"{
        turret:t="turret_01"
      }
    }

    "seats:object"{
	  directTurretControl:b=yes
      name:t="main_gunner"
      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"
      nextSeat:t="driver"
      shouldHideOwner:b=yes
      receiveDamageFromDMPart:t="machine_gunner"
    }

    
    }
}


pzkpfw_iii_ausf_n_turret_01_75mm_kwk37{
  _override:b=yes

  _group{
    _tags:t="server"
    tank_turret_ai__maxBurstCount:i=0
	tank_turret_ai__burstCount:i=3
	tank_turret_ai__burstWaitTime:r=1.0
	tank_turret_ai__dmTargetUpdateInterval:r=1.0
	tank_turret_ai__nextTargetCheckAtTime:r=1.0
	tank_turret_ai__targetCheckInterval:r=1.0
    tank_turret_ai__longPauseWaitTime:r=1.0
    tank_turret_ai__attackDist:r=100.0
	turret_ai__atackDist:r=100.0
	"gun__shellsAmmo:array"{
    gun__shellsAmmo:i=0
	gun__shellsAmmo:i=1000
  }

  "gun__shells:array"{
    gun__shells:t="gamedata/gen/weapons/shells/75mm_kwk37_75mm_ger_kwk40_37_he.blk"
  }
  "ammo_set__shellIds:list<i>"{
    item:i=1
  }
  }
  turret__yawSpeed:r=200.0
  turret__pitchSpeed:r=200.0
  
}
pzkpfw_iii_ausf_n_turret_02_7_92mm_mg34{
  _override:b=yes

  _group{
    _tags:t="server"
    tank_turret_ai__maxBurstCount:i=150
    tank_turret_ai__longPauseWaitTime:r=1.0
    tank_turret_ai__attackDist:r=100.0
  }
}

pzkpfw_iii_ausf_n_turret_03_7_92mm_mg34{
  _override:b=yes
  _group{
    _tags:t="server"
    tank_turret_ai__maxBurstCount:i=150
    tank_turret_ai__longPauseWaitTime:r=1.0
    tank_turret_ai__attackDist:r=100.0
  }
  turret__yawSpeed:r=500.0
  turret__pitchSpeed:r=500.0
  "gun__shellsAmmo:array"{
    gun__shellsAmmo:i=100000
  }

  "gun__shells:array"{
    gun__shells:t="gamedata/gen/weapons/shells/7_92mm_mg34_defaultset_bullet_1.blk"
  }
}


6) Zombie location on minimap

Firstly, copy the following codes to your entities.blk:
(This creates custom decorations that can be attached to anything)

Spoiler - Code
// With thanks to Bazsi37 for providing to me
team1_marker{
  _use:t="custom_marker" // the magic trick here is make use of custom_marker
  _use:t="base_vehicle_decor" // load codes for decor
  animchar__res:t="sandbag_single_decor_a_char" // place holder for decor
  collres__res:t="sandbag_single_decor_a_collision"
  custom_marker__icon:t="!ui/skin#v_arrow.svg" //icon inside uiskin.vromfs.bin
  custom_marker__iconColor:c=167,55,75,255
  custom_marker__iconSize:p2=10.0,10.0
  custom_marker__showForTeam:i=1
  animchar_render__enabled:b=no //make the "sandbag" invisible
}
// for team 2
team2_marker{
  _use:t="custom_marker"
  _use:t="base_vehicle_decor"
  animchar__res:t="sandbag_single_decor_a_char"
  collres__res:t="sandbag_single_decor_a_collision"
  custom_marker__icon:t="!ui/skin#v_arrow.svg" //icon inside uiskin.vromfs.bin
  custom_marker__iconColor:c=167,55,75,255
  custom_marker__iconSize:p2=10.0,10.0
  custom_marker__showForTeam:i=2
  animchar_render__enabled:b=no
}

Then copy and paste the following to the entities.blk:

Spoiler - Code
nzombie_base{
  _override:b=yes
  bodyCleanupTime:r=10.0
   "attach_decorators__entities:list<eid>"{ 
  }
   "attach_decorators__templates:array"{
    "attach_decorators__templates:object"{
      relativeTm:m=[[1, 0, 0] [0, 1, 0] [0, 0, 1] [0,0,0]]
      template:t="team1_marker"
      nodeName:t="Bip01 Head"
    }
	"attach_decorators__templates:object"{
      relativeTm:m=[[1, 0, 0] [0, 1, 0] [0, 0, 1] [0,0,0]]
      template:t="team2_marker"
      nodeName:t="Bip01 Head"
    } 
}
base_zombie_armored_soldier{
  _override:b=yes
  bodyCleanupTime:r=10.0
  "attach_decorators__entities:list<eid>"{ 
  }

  "attach_decorators__templates:array"{
    "attach_decorators__templates:object"{
      relativeTm:m=[[1, 0, 0] [0, 1, 0] [0, 0, 1] [0,0,0]]
      template:t="team1_marker"
      nodeName:t="Bip01 Head"
    } 
	"attach_decorators__templates:object"{
      relativeTm:m=[[1, 0, 0] [0, 1, 0] [0, 0, 1] [0,0,0]]
      template:t="team2_marker"
      nodeName:t="Bip01 Head"
    }
}
}


7) Charge Attack with Knife
  • Simple codes as follows
Spoiler - Code
// With thanks to Bazsi37
knife_weapon{
  _override:b=yes
  _extends:t="melee_weapon"
  _extends:t="knife"
  meleeSoundType:t="knife"
  meleeActionSoundPath:t="impact/knife"
   "meleeChargeWeapon:tag"{
  }
}


8) Make players killable (reduce server lag)
enlisted_visible_base_soldier{
  _override:b=yes
  _use:t="zombie_mode_soldier" //get the code from "zombie_mode_soldier", which makes revive without medkit possible
  paid_loot__points:i=200  //spawn with points (default was 0)
  hitpoints__downedKillChanceMult:r=0.0 //make sure you cannot die when fatal damage is taken
  hitpoints__downedTimer:r=120.0  //how much time you can spend in downed state before dying
  hitpoints__alwaysDowned:b=no  //when set to yes, you cannot die while downed.
  hitpoints__deathHpThreshold:r=-100000.0 //HP amount when downed (negative number)
  hitpoints__downedKillChanceBase:r=0.0 //chance of getting killed instead of getting downed when receiving damage greater than current HP
  hitpoints__killDownedByMeleeHit:b=no //can be killed by melee hit when downed 
  hitpoints__downedKillWhenBurning:b=no // can be killed by fire damage when downed
  bodyCleanupTime:r=30.0 //time it takes to remove corpses
  human_inventory__canSelfRevive:b=no //set to yes to allow self revive
}

// Codes below is to revert the changes done above
base_zombie_armored_soldier{
  _override:b=yes
  bodyCleanupTime:r=10.0
  paid_loot__pointsForKill:i=35
  hitpoints__deathHpThreshold:r=-10.0
  hitpoints__downedKillChanceBase:r=0.2
  hitpoints__alwaysAllowRevive:b=no
  hitpoints__downedKillWhenBurning:b=yes
  hitpoints__killDownedByMeleeHit:b=yes
  paid_loot__pointsPerDamage:r=0.3
}

(Work in progress - ~80%! TANK GUIDE ADDED!)
The recent Earth Shield update brought many interest features to the game, but also cooked wave-based zombies.
!!! A fix for the current wave-based zombies will be shared here soon!!!
I will also introduce new stuff here after I have digest them

3 Likes

Step 3 - Upload your mod!

1) Pack your mod

See picture below


A command prompt (cmd.exe) window would pop up and you should see it packs your mod into a zip



2) Upload your mod
  1. Now open your web browser and go to this page
  2. Login if you haven’t
  3. Click on the ADD button, and then Game mod
  4. Upload your mod here with the button shown below
  • Your mod is located in “%localappdata%\Enlisted\userGameMods\” as a .zip file
  • Copy the address above to your File Explorer to navigate to the folder
  1. Set a title and an image for your mod (if you have not made a photo as cover, you can use the draft button to make your mod release privately)
  2. Set the correct campaign and make sure this check box is left ON
    image
  3. You can post your mod after you have written something to describe it!

#############################################

  • Use the Save Draft button if you are uploading a test map
    image


3) Launch your mission
  • It hasn’t changed in anyway. So I would just quote him on that.

1 Like

i want the original earth shield, not ur modded one (if it is that is), so can u give me the scene.blk pls

1 Like

Firstly, this post is for breaking dead, not earth shield

Secondly, the scenes can be found in the datamine here: Enlisted Datamine (Resource) - #50 by Bazsi37
I wont upload it here(because I don’t want to trigger the moderators) but i will give you a hint to find them, the files are named “berlin_chancellery_halloween.blkx”, “normandy_factory_halloween.blkx”, “pacific_new_georgia_caves_halloween.blkx”, “rzhev_city_halloween.blkx”, “tunisia_oasis_halloween.blkx”

Scenes are perfectly safe to upload.

1 Like

Ok I see, then here
halloween_scenes (original).zip (38.3 KB)
All 5 are inside the one zip
@MorNloR have you been using it?

I followed the instructions about the custom profiles as stated, didn’t change any of the writing, and i keep getting this error. Besides this it doesn’t state anything else.
image
image
image

1 Like

“Armies is empty” (Nice grammar btw devs)
I haven’t seen it before.
Did you see this error from mod editor or live server (i.e. launched the mod with in game custom mod option after uploading to sandbox.enlisted.net)?
Did you create team_usa+respawn_creators_team for team 1? If not, the above error will occur if you use it

I tested in within the modeditor

The map i made was made to have Germany defend, so everything is set to team 2. But if it only works on team 1, i can change it back, and remake the custom profiles to have german soldiers instead. But i did not add that in, where should i add that?

As stated here, you need to upload it to sandbox for any custom profile to work

However, you also need to make a team_usa
(I just added a warning message. Thank you for reminding me to state that)

So what you need for now, is creating team_usa and make its team__id to 2

But wait, i thought the profile has germany as well.

What team entities are you using? Are you using something like tunisia_axis or something?

In editor, if you see this error message, then it should be correct
image

I have added this, and right now in client the German side just crashes, and forces you back into the lobby, and the US side does get in the game, but can’t choose any squads, and is just stuck on that menu

I haven’t used any team entities before for this map honestly. As the map worked with it before, just had to find ways for players to forcefully get rid of their weapons (high ressupply costs)

This is now the message i am recieving. So atleast that part is correct

@test_Foxy If you are not going to make edits to the custom profile, replace your custom_profile entity with this

entity{
  _template:t="custom_profile"
  customProfile:t="%enlSqGlob/data/zombie_profile_2.json"
}

This allows you to also test in the mod editor like you can in the live server

@test_Foxy please also read this newly updated part of the guide. It helps you a lot

I have added this, and the custom profile now works in the editor. At some point i want to make it custom, and maybe add a few (cosmetical) options to choose from at some point.

Right now the client version doesn’t work. I will change everything to team 1, as you describe there, and let you know if that is gonna work

I am confused why it doesn’t work for team 2 though. I mean if you change the team__id to 2 in team_usa then it should work - you just need team_usa to work, not the team id

Whatever, lets investigate it later

I changed the custom profile back to

entity{
_template:t=“custom_profile”
customProfile:t=“%enlSqGlob/data/zombie_profile.json”
}

To see if that would help solve the issue on the client side. But same with this i keep getting the message ‘‘connection refused’’ That is very odd. And the same stuff that happened before when i tried it myself

1 Like

Ok now would you trust me, and send me your map to me to debug?
Thats the only way we are going to find out whats wrong
Send it in private message by the way, not here of course

If you see this error in editor after restart then it’s okay, because we can’t see custom profiles in editor. Else you probably set wrong campaign preset in sandbox portal or wrong armies on your map. IIRC zombie_profile is outdated and have some problems:

  • Armies still uses campaigns (normandy_allies instead usa).
  • Soldiers guid still contains text.

image
This is how i have set it up on the portal. In the editor the profile works just fine. But whenever i start it up in the client, it just keeps getting a connection error when the custom profile is active.

I got the error too, but one of the other developers said uploading will remove the error, because it’s meant for online data linking stuff. You gotta have those custom profiles in your enlisted launcher before using viewing at your choice of media device.

1 Like

I have no idea what you mean with this. But it’s a custom profile from the game files. Not one created myself. So it shouldn’t matter too much. Since it’s already within the gamefiles by itself

1 Like