2025-04-19 16:20:11 -04:00

379 lines
8.1 KiB
Lua

local pedModels =
{
"A_F_M_Beach_01",
"A_F_M_BevHills_01",
"A_F_M_BevHills_02",
"A_F_M_BodyBuild_01",
"A_F_M_Business_02",
"A_F_M_Downtown_01",
"A_F_M_EastSA_01",
"A_F_M_EastSA_02",
"A_F_M_FatBla_01",
"A_F_M_FatCult_01",
"A_F_M_FatWhite_01",
"A_F_M_KTown_01",
"A_F_M_KTown_02",
"A_F_M_ProlHost_01",
"A_F_M_Salton_01",
"A_F_M_SkidRow_01",
"A_F_M_SouCentMC_01",
"A_F_M_SouCent_01",
"A_F_M_SouCent_02",
"A_F_M_Tourist_01",
"A_F_M_TrampBeac_01",
"A_F_M_Tramp_01",
"A_F_O_GenStreet_01",
"A_F_O_Indian_01",
"A_F_O_KTown_01",
"A_F_O_Salton_01",
"A_F_O_SouCent_01",
"A_F_O_SouCent_02",
"A_F_Y_Beach_01",
"A_F_Y_BevHills_01",
"A_F_Y_BevHills_02",
"A_F_Y_BevHills_03",
"A_F_Y_BevHills_04",
"A_F_Y_Business_01",
"A_F_Y_Business_02",
"A_F_Y_Business_03",
"A_F_Y_Business_04",
"A_F_Y_EastSA_01",
"A_F_Y_EastSA_02",
"A_F_Y_EastSA_03",
"A_F_Y_Epsilon_01",
"A_F_Y_Fitness_01",
"A_F_Y_Fitness_02",
"A_F_Y_GenHot_01",
"A_F_Y_Golfer_01",
"A_F_Y_Hiker_01",
"A_F_Y_Hippie_01",
"A_F_Y_Hipster_01",
"A_F_Y_Hipster_02",
"A_F_Y_Hipster_03",
"A_F_Y_Hipster_04",
"A_F_Y_Indian_01",
"A_F_Y_Juggalo_01",
"A_F_Y_Runner_01",
"A_F_Y_RurMeth_01",
"A_F_Y_SCDressy_01",
"A_F_Y_Skater_01",
"A_F_Y_SouCent_01",
"A_F_Y_SouCent_02",
"A_F_Y_SouCent_03",
"A_F_Y_Tennis_01",
"A_F_Y_Topless_01",
"A_F_Y_Tourist_01",
"A_F_Y_Tourist_02",
"A_F_Y_Vinewood_01",
"A_F_Y_Vinewood_02",
"A_F_Y_Vinewood_03",
"A_F_Y_Vinewood_04",
"A_F_Y_Yoga_01",
"A_M_M_ACult_01",
"A_M_M_AfriAmer_01",
"A_M_M_Beach_01",
"A_M_M_Beach_02",
"A_M_M_BevHills_01",
"A_M_M_BevHills_02",
"A_M_M_Business_01",
"A_M_M_EastSA_01",
"A_M_M_EastSA_02",
"A_M_M_Farmer_01",
"A_M_M_FatLatin_01",
"A_M_M_GenFat_01",
"A_M_M_GenFat_02",
"A_M_M_Golfer_01",
"A_M_M_HasJew_01",
"A_M_M_Hillbilly_01",
"A_M_M_Hillbilly_02",
"A_M_M_Indian_01",
"A_M_M_KTown_01",
"A_M_M_Malibu_01",
"A_M_M_MexCntry_01",
"A_M_M_MexLabor_01",
"A_M_M_OG_Boss_01",
"A_M_M_Paparazzi_01",
"A_M_M_Polynesian_01",
"A_M_M_ProlHost_01",
"A_M_M_RurMeth_01",
"A_M_M_Salton_01",
"A_M_M_Salton_02",
"A_M_M_Salton_03",
"A_M_M_Salton_04",
"A_M_M_Skater_01",
"A_M_M_Skidrow_01",
"A_M_M_SoCenLat_01",
"A_M_M_SouCent_01",
"A_M_M_SouCent_02",
"A_M_M_SouCent_03",
"A_M_M_SouCent_04",
"A_M_M_StLat_02",
"A_M_M_Tennis_01",
"A_M_M_Tourist_01",
"A_M_M_TrampBeac_01",
"A_M_M_Tramp_01",
"A_M_M_TranVest_01",
"A_M_M_TranVest_02",
"A_M_O_ACult_01",
"A_M_O_ACult_02",
"A_M_O_Beach_01",
"A_M_O_GenStreet_01",
"A_M_O_KTown_01",
"A_M_O_Salton_01",
"A_M_O_SouCent_01",
"A_M_O_SouCent_02",
"A_M_O_SouCent_03",
"A_M_O_Tramp_01",
"A_M_Y_ACult_01",
"A_M_Y_ACult_02",
"A_M_Y_BeachVesp_01",
"A_M_Y_BeachVesp_02",
"A_M_Y_Beach_01",
"A_M_Y_Beach_02",
"A_M_Y_Beach_03",
"A_M_Y_BevHills_01",
"A_M_Y_BevHills_02",
"A_M_Y_BreakDance_01",
"A_M_Y_BusiCas_01",
"A_M_Y_Business_01",
"A_M_Y_Business_02",
"A_M_Y_Business_03",
"A_M_Y_Cyclist_01",
"A_M_Y_DHill_01",
"A_M_Y_Downtown_01",
"A_M_Y_EastSA_01",
"A_M_Y_EastSA_02",
"A_M_Y_Epsilon_01",
"A_M_Y_Epsilon_02",
"A_M_Y_Gay_01",
"A_M_Y_Gay_02",
"A_M_Y_GenStreet_01",
"A_M_Y_GenStreet_02",
"A_M_Y_Golfer_01",
"A_M_Y_HasJew_01",
"A_M_Y_Hiker_01",
"A_M_Y_Hippy_01",
"A_M_Y_Hipster_01",
"A_M_Y_Hipster_02",
"A_M_Y_Hipster_03",
"A_M_Y_Indian_01",
"A_M_Y_Jetski_01",
"A_M_Y_Juggalo_01",
"A_M_Y_KTown_01",
"A_M_Y_KTown_02",
"A_M_Y_Latino_01",
"A_M_Y_MethHead_01",
"A_M_Y_MexThug_01",
"A_M_Y_MotoX_01",
"A_M_Y_MotoX_02",
"A_M_Y_MusclBeac_01",
"A_M_Y_MusclBeac_02",
"A_M_Y_Polynesian_01",
"A_M_Y_RoadCyc_01",
"A_M_Y_Runner_01",
"A_M_Y_Runner_02",
"A_M_Y_Salton_01",
"A_M_Y_Skater_01",
"A_M_Y_Skater_02",
"A_M_Y_SouCent_01",
"A_M_Y_SouCent_02",
"A_M_Y_SouCent_03",
"A_M_Y_SouCent_04",
"A_M_Y_StBla_01",
"A_M_Y_StBla_02",
"A_M_Y_StLat_01",
"A_M_Y_StWhi_01",
"A_M_Y_StWhi_02",
"A_M_Y_Sunbathe_01",
"A_M_Y_Surfer_01",
"A_M_Y_VinDouche_01",
"A_M_Y_Vinewood_01",
"A_M_Y_Vinewood_02",
"A_M_Y_Vinewood_03",
"A_M_Y_Vinewood_04",
"A_M_Y_Yoga_01",
"G_F_Y_ballas_01",
"G_F_Y_Families_01",
"G_F_Y_Lost_01",
"G_F_Y_Vagos_01",
"G_M_M_ArmBoss_01",
"G_M_M_ArmGoon_01",
"G_M_M_ArmLieut_01",
"G_M_M_ChemWork_01",
"G_M_M_ChiBoss_01",
"G_M_M_ChiCold_01",
"G_M_M_ChiGoon_01",
"G_M_M_ChiGoon_02",
"G_M_M_KorBoss_01",
"G_M_M_MexBoss_01",
"G_M_M_MexBoss_02",
"G_M_Y_ArmGoon_02",
"G_M_Y_Azteca_01",
"G_M_Y_BallaEast_01",
"G_M_Y_BallaOrig_01",
"G_M_Y_BallaSout_01",
"G_M_Y_FamCA_01",
"G_M_Y_FamDNF_01",
"G_M_Y_FamFor_01",
"G_M_Y_Korean_01",
"G_M_Y_Korean_02",
"G_M_Y_KorLieut_01",
"G_M_Y_Lost_01",
"G_M_Y_Lost_02",
"G_M_Y_Lost_03",
"G_M_Y_MexGang_01",
"G_M_Y_MexGoon_01",
"G_M_Y_MexGoon_02",
"G_M_Y_MexGoon_03",
"G_M_Y_PoloGoon_01",
"G_M_Y_PoloGoon_02",
"G_M_Y_SalvaBoss_01",
"G_M_Y_SalvaGoon_01",
"G_M_Y_SalvaGoon_02",
"G_M_Y_SalvaGoon_03",
"G_M_Y_StrPunk_01",
"G_M_Y_StrPunk_02",
"HC_Driver",
"HC_Gunman",
"HC_Hacker",
"IG_Abigail",
"IG_AmandaTownley",
"IG_Andreas",
"IG_Ashley",
"IG_BallasOG",
"IG_Bankman",
"IG_Barry",
"IG_BestMen",
"IG_Beverly",
"IG_Brad",
"IG_Bride",
"IG_Car3guy1",
"IG_Car3guy2",
"IG_Casey",
"IG_Chef",
"IG_ChengSr",
"IG_ChrisFormage",
"IG_Clay",
"IG_ClayPain",
"IG_Cletus",
"IG_Dale",
"IG_DaveNorton",
"IG_Denise",
"IG_Devin",
"IG_Dom",
"IG_Dreyfuss",
"IG_DrFriedlander",
"IG_Fabien",
"IG_FBISuit_01",
"IG_Floyd",
"IG_Groom",
"IG_Hao",
"IG_Hunter",
"IG_Janet",
"ig_JAY_Norris",
"IG_JewelAss",
"IG_JimmyBoston",
"IG_JimmyDiSanto",
"IG_JoeMinuteMan",
"ig_JohnnyKlebitz",
"IG_Josef",
"IG_Josh",
"IG_KerryMcIntosh",
"IG_LamarDavis",
"IG_LesterCrest",
"IG_LifeInvad_01",
"IG_LifeInvad_02",
"IG_Magenta",
"IG_Manuel",
"IG_Marnie",
"IG_MaryAnn",
"IG_Maude",
"IG_Michelle",
"IG_Milton",
"IG_Molly",
"IG_MRK",
"IG_MrsPhillips",
"IG_MRS_Thornhill",
"IG_Natalia",
"IG_NervousRon",
"IG_Nigel",
"IG_Old_Man1A",
"IG_Old_Man2",
"IG_Omega",
"IG_ONeil",
"IG_Orleans",
"IG_Ortega",
"IG_Paper",
"IG_Patricia",
"IG_Priest",
"IG_ProlSec_02",
"IG_Ramp_Gang",
"IG_Ramp_Hic",
"IG_Ramp_Hipster",
"IG_Ramp_Mex",
"IG_RoccoPelosi",
"IG_RussianDrunk",
"IG_Screen_Writer",
"IG_SiemonYetarian",
"IG_Solomon",
"IG_SteveHains",
"IG_Stretch",
"IG_Talina",
"IG_Tanisha",
"IG_TaoCheng",
"IG_TaosTranslator",
"U_M_Y_Zombie_01"
}
local peds = {}
local canSpawn
local maxZombiesPerPlayer = 15 -- Le nombre max de ped qui sera spawn pour le joueur. Prendre en note que lui seul aura 15 zombies, si 2 autres joueurs sont au côté de lui, il verra 45 zombies.
-- FiveM impose une limite de peds simultanés pour des raisons de performance, et si cette limite est atteinte, le serveur peut empêcher le spawn de nouveaux peds ou supprimer ceux en excès.
Citizen.CreateThread(function()
while true do
Wait(125)
local playerPed = GetPlayerPed(-1)
local playerCoords = GetEntityCoords(playerPed)
if #peds < maxZombiesPerPlayer then
local choosenPed = pedModels[math.random(#pedModels)]
local pedHash = GetHashKey(choosenPed)
RequestModel(pedHash)
while not HasModelLoaded(pedHash) or not HasCollisionForModelLoaded(pedHash) do
Wait(125)
end
local newPos
repeat
Wait(125)
newPos = playerCoords + vector3(math.random(-100, 100), math.random(-100, 100), 0)
local _, groundZ = GetGroundZFor_3dCoord(newPos.x, newPos.y, playerCoords.z + 999.0, 1)
newPos = vector3(newPos.x, newPos.y, groundZ)
until #(playerCoords - newPos) > 60
local ped = CreatePed(4, pedHash, newPos.x, newPos.y, newPos.z, 0.0, true, true)
if not NetworkGetEntityIsNetworked(ped) then
NetworkRegisterEntityAsNetworked(ped)
end
table.insert(peds, ped)
end
for i = #peds, 1, -1 do
local ped = peds[i]
if not DoesEntityExist(ped) then
table.remove(peds, i)
elseif #(playerCoords - GetEntityCoords(ped)) > 150 then
SetEntityAsNoLongerNeeded(ped)
DeleteEntity(ped)
table.remove(peds, i)
end
end
end
end)