Advertisement
Guest User

ZombieHordes.c

a guest
Dec 8th, 2018
1,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.09 KB | None | 0 0
  1. /* Code by DaOne */
  2. class InfectedHordes
  3. {
  4.     ref map<string, vector> m_HordePositions = new map<string, vector>;
  5.  
  6.     string m_NewHordeMsg       = "A New Horde of Zombies Showed up Around: ";
  7.     string m_LastSeenMsg      = "The Horde of Zombies Was Last Seen Around: ";
  8.  
  9.     int CURRENT_STAMP;
  10.     int CURRENT_STAMP_MSG;
  11.     int MESSAGE_INTERVAL     = 300000;   //in ms time between each message 300000
  12.     int COOL_DOWN_INTERVAL   = 1800000;  //In ms the time between each event
  13.     int UPDATE_INTERVAL      = 5000;    //In ms the time between each update ( don't change unless you know what you are doing :) )
  14.     int INT_MAX_ZOMBIES      = 125;     //Maximum amount of zombies
  15.     int INT_MIN_ZOMBIES      = 65;      //Minimum amount of zombies
  16.  
  17.     bool m_EventOnGoing     = false;
  18.  
  19.     ref array<EntityAI> m_SpawnedZombies = new array<EntityAI>;
  20.  
  21.     string m_CurrentZone;
  22.     vector m_CurrentZonePos;
  23.  
  24.     void InfectedHordes()
  25.     {
  26.         //All possible spawn points of hordes
  27.         m_HordePositions.Insert( "Severograd", "8428 0 12767" ); //string Name of location, vector centre position
  28.         m_HordePositions.Insert( "Stary", "6046 0 7733" );
  29.         m_HordePositions.Insert( "Vybor", "3784 0 8923" );
  30.         m_HordePositions.Insert( "NWAFS", "4540 0 9645" );
  31.         m_HordePositions.Insert( "NWAFC", "4823 0 10457" );
  32.         m_HordePositions.Insert( "NWAFN", "4214 0 10977" );
  33.         m_HordePositions.Insert( "Balota Air Strip", "4467 0 2496" );
  34.         m_HordePositions.Insert( "Cherno City Centre", "6649 0 2710" );
  35.         m_HordePositions.Insert( "Cherno West", "6374 0 2361" );
  36.         m_HordePositions.Insert( "Cherno East", "7331 0 2850" );
  37.         m_HordePositions.Insert( "Elektro West", "10077 0 1988" );
  38.         m_HordePositions.Insert( "Elektro East", "10553 0 2313" );
  39.         m_HordePositions.Insert( "Berezino City Centre", "12319 0 9530" );
  40.         m_HordePositions.Insert( "Berezino South", "11991 0 9116" );
  41.         m_HordePositions.Insert( "Berezino North", "12823 0 10078" );
  42.         m_HordePositions.Insert( "Svetlojarsk", "13900 0 13258" );    
  43.         m_HordePositions.Insert( "Zelenogorsk South", "2572 0 5105" );
  44.         m_HordePositions.Insert( "Zelenogorsk North", "2741 0 5416" );
  45.         m_HordePositions.Insert( "Novaya Petrovka", "3395 0 13013" );
  46.        
  47.         CURRENT_STAMP = GetGame().GetTime();
  48.         CURRENT_STAMP_MSG = GetGame().GetTime();
  49.         m_SpawnedZombies.Clear();
  50.         SelectZone();
  51.         SpawnHorde();
  52.         string message = m_NewHordeMsg + m_CurrentZone;
  53.         GlobalNotifier("inform",message);
  54.  
  55.         GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.onUpdate, UPDATE_INTERVAL, true);
  56.         Print("Infected Hordes...INIT!");
  57.     }
  58.  
  59.     vector SnapToGround(vector pos)
  60.     {
  61.         float pos_x = pos[0];
  62.         float pos_z = pos[2];
  63.         float pos_y = GetGame().SurfaceY( pos_x, pos_z );
  64.         vector tmp_pos = Vector( pos_x, pos_y, pos_z );
  65.         tmp_pos[1] = tmp_pos[1] + pos[1];
  66.  
  67.         return tmp_pos;
  68.     }
  69.    
  70.     void SpawnHorde()
  71.     {
  72.         m_EventOnGoing = true;
  73.  
  74.         int oRandValue   = Math.RandomIntInclusive(INT_MIN_ZOMBIES,INT_MAX_ZOMBIES);
  75.  
  76.         if (oRandValue != 0)
  77.         {
  78.             for (int i = 0; i < oRandValue; ++i)
  79.             {
  80.                 int rndX  = Math.RandomIntInclusive(10,35);
  81.                 int rndY  = Math.RandomIntInclusive(25,65);
  82.                 int oSkin = Math.RandomIntInclusive(0,5);
  83.                 int dropChance = Math.RandomIntInclusive(0,1);
  84.                        
  85.                 vector pos = SnapToGround(Vector(m_CurrentZonePos[0] + rndX, m_CurrentZonePos[1], m_CurrentZonePos[2] + rndY));
  86.                 string zmbClass = ZombieClasses.GetRandomElement();
  87.  
  88.                 EntityAI AIzmb = EntityAI.Cast(GetGame().CreateObject(zmbClass, pos, false, true));
  89.                 ref ZombieBase Bszmb;
  90.                 Class.CastTo(Bszmb, AIzmb);
  91.                 //Bszmb.AttachEventHandle(PossibleLootDrops,PossibleWeaponDrops,dropChance); // Disabled to stop an error
  92.  
  93.                 m_SpawnedZombies.Insert(AIzmb);
  94.  
  95.                 if (oSkin == 5)
  96.                 {
  97.                     AIzmb.SetObjectMaterial( 0, "DZ\\data\\laser.rvmat" );
  98.                     AIzmb.SetObjectMaterial( 1, "DZ\\data\\laser.rvmat" );
  99.                     AIzmb.SetObjectMaterial( 2, "DZ\\data\\laser.rvmat" );
  100.                 }
  101.             }
  102.         }
  103.     }
  104.  
  105.     void SelectZone()
  106.     {
  107.         int totalPossibleTowns  = m_HordePositions.Count();
  108.         int oRandValue = Math.RandomIntInclusive(0,totalPossibleTowns);
  109.  
  110.         string TownName = m_HordePositions.GetKey(oRandValue);
  111.         vector TownPosition = m_HordePositions.Get(TownName);
  112.         m_CurrentZone    = TownName;
  113.         m_CurrentZonePos = TownPosition;
  114.     }
  115.  
  116.     void GlobalNotifier(string task, string message)
  117.     {
  118.         switch(task)
  119.         {
  120.             case "inform":
  121.             GetGame().ChatPlayer(5,message);
  122.             break;
  123.         }
  124.     }
  125.  
  126.     void CleanUp()
  127.     {
  128.         for (int i = 0; i < m_SpawnedZombies.Count(); ++i)
  129.         {
  130.             EntityAI zmb = m_SpawnedZombies.Get(i);
  131.             GetGame().ObjectDelete(zmb);
  132.         }
  133.         m_SpawnedZombies.Clear();
  134.     }
  135.  
  136.     void onUpdate()
  137.     {
  138.         int newStamp = GetGame().GetTime();
  139.         string message;
  140.  
  141.         if (newStamp - CURRENT_STAMP >= COOL_DOWN_INTERVAL)
  142.         {
  143.             //Select new area
  144.             if (m_EventOnGoing)
  145.             {
  146.                 CleanUp();
  147.                 SelectZone();
  148.                 SpawnHorde();
  149.                 message = m_NewHordeMsg + m_CurrentZone;
  150.                 GlobalNotifier("inform",message);
  151.             }
  152.             CURRENT_STAMP = GetGame().GetTime();
  153.         }
  154.  
  155.         if (newStamp - CURRENT_STAMP_MSG >= MESSAGE_INTERVAL)
  156.         {
  157.             //Do Message
  158.             if (m_EventOnGoing)
  159.             {
  160.                 message = m_LastSeenMsg + m_CurrentZone;
  161.                 GlobalNotifier("inform",message);
  162.             }
  163.             CURRENT_STAMP_MSG = GetGame().GetTime();
  164.         }
  165.     }
  166.  
  167.     ref TStringArray PossibleLootDrops = {
  168.         "ammo_45acp", "ammo_308win", "ammo_9x19", "ammo_380", "ammo_556x45", "ammo_762x54", "ammo_762x54tracer", "ammo_762x39", "ammo_9x39", "ammo_22", "ammo_12gapellets",
  169.         "mag_cmag_10rnd", "mag_cmag_10rnd_black", "mag_cmag_10rnd_green", "mag_cmag_20rnd", "mag_cmag_20rnd_black", "mag_cmag_20rnd_green",
  170.         "mag_cmag_30rnd", "mag_cmag_30rnd_black", "mag_cmag_30rnd_green", "mag_cmag_40rnd", "mag_cmag_40rnd_black", "mag_cmag_40rnd_green",
  171.     };
  172.  
  173.     ref TStringArray PossibleWeaponDrops = {
  174.         "AKM", "M4A1", "izh18", "mp5k", "ump45", "svd", "mosin9130","mosin9130_black",
  175.         "mosin9130_green","mosin9130_camo",
  176.     };
  177.  
  178.  
  179.     ref TStringArray ZombieClasses = {
  180.     "ZmbM_HermitSkinny_Beige","ZmbM_HermitSkinny_Black","ZmbM_HermitSkinny_Green","ZmbM_HermitSkinny_Red","ZmbM_FarmerFat_Beige","ZmbM_FarmerFat_Blue","ZmbM_FarmerFat_Brown",
  181.     "ZmbM_FarmerFat_Green","ZmbF_CitizenANormal_Beige","ZmbF_CitizenANormal_Brown",
  182.     "ZmbF_CitizenANormal_Blue","ZmbM_CitizenASkinny_Blue","ZmbM_CitizenASkinny_Brown",
  183.     "ZmbM_CitizenASkinny_Grey","ZmbM_CitizenASkinny_Red","ZmbM_CitizenBFat_Blue","ZmbM_CitizenBFat_Red",
  184.     "ZmbM_CitizenBFat_Green","ZmbF_CitizenBSkinny","ZmbM_PrisonerSkinny",
  185.     "ZmbM_FirefighterNormal","ZmbM_FishermanOld_Blue","ZmbM_FishermanOld_Green",
  186.     "ZmbM_FishermanOld_Grey","ZmbM_FishermanOld_Red","ZmbM_JournalistSkinny",
  187.     "ZmbF_JournalistNormal_Blue","ZmbF_JournalistNormal_Green","ZmbF_JournalistNormal_Red","ZmbF_JournalistNormal_White",
  188.     "ZmbM_ParamedicNormal_Blue","ZmbM_ParamedicNormal_Green","ZmbM_ParamedicNormal_Red",
  189.     "ZmbM_ParamedicNormal_Black","ZmbF_ParamedicNormal_Blue","ZmbF_ParamedicNormal_Green",
  190.     "ZmbF_ParamedicNormal_Red","ZmbM_HikerSkinny_Blue","ZmbM_HikerSkinny_Green","ZmbM_HikerSkinny_Yellow",
  191.     "ZmbF_HikerSkinny_Blue","ZmbF_HikerSkinny_Grey","ZmbF_HikerSkinny_Green","ZmbF_HikerSkinny_Red",
  192.     "ZmbM_HunterOld_Autumn","ZmbM_HunterOld_Spring","ZmbM_HunterOld_Summer","ZmbM_HunterOld_Winter",
  193.     "ZmbF_SurvivorNormal_Blue","ZmbF_SurvivorNormal_Orange","ZmbF_SurvivorNormal_Red",
  194.     "ZmbF_SurvivorNormal_White","ZmbM_SurvivorDean_Black","ZmbM_SurvivorDean_Blue","ZmbM_SurvivorDean_Grey",
  195.     "ZmbM_PolicemanFat","ZmbF_PoliceWomanNormal",
  196.     "ZmbM_PolicemanSpecForce","ZmbM_SoldierNormal",
  197.     "ZmbM_usSoldier_normal_Woodland","ZmbM_usSoldier_normal_Desert","ZmbM_CommercialPilotOld_Blue",
  198.     "ZmbM_CommercialPilotOld_Olive","ZmbM_CommercialPilotOld_Brown","ZmbM_CommercialPilotOld_Grey",
  199.     "ZmbM_PatrolNormal_PautRev","ZmbM_PatrolNormal_Autumn","ZmbM_PatrolNormal_Flat","ZmbM_PatrolNormal_Summer",
  200.     "ZmbM_JoggerSkinny_Blue","ZmbM_JoggerSkinny_Green","ZmbM_JoggerSkinny_Red","ZmbF_JoggerSkinny_Blue",
  201.     "ZmbF_JoggerSkinny_Brown","ZmbF_JoggerSkinny_Green","ZmbF_JoggerSkinny_Red","ZmbM_MotobikerFat_Beige",
  202.     "ZmbM_MotobikerFat_Black","ZmbM_MotobikerFat_Blue","ZmbM_VillagerOld_Blue","ZmbM_VillagerOld_Green",
  203.     "ZmbM_VillagerOld_White","ZmbM_SkaterYoung_Blue","ZmbM_SkaterYoung_Brown","ZmbM_SkaterYoung_Green",
  204.     "ZmbM_SkaterYoung_Grey","ZmbF_SkaterYoung_Brown","ZmbF_SkaterYoung_Striped","ZmbF_SkaterYoung_Violet",
  205.     "ZmbF_DoctorSkinny","ZmbF_BlueCollarFat_Blue","ZmbF_BlueCollarFat_Green",
  206.     "ZmbF_BlueCollarFat_Red","ZmbF_BlueCollarFat_White","ZmbF_MechanicNormal_Beige","ZmbF_MechanicNormal_Green",
  207.     "ZmbF_MechanicNormal_Grey","ZmbF_MechanicNormal_Orange","ZmbM_MechanicSkinny_Blue","ZmbM_MechanicSkinny_Grey",
  208.     "ZmbM_MechanicSkinny_Green","ZmbM_MechanicSkinny_Red","ZmbM_ConstrWorkerNormal_Beige",
  209.     "ZmbM_ConstrWorkerNormal_Black","ZmbM_ConstrWorkerNormal_Green","ZmbM_ConstrWorkerNormal_Grey",
  210.     "ZmbM_HeavyIndustryWorker","ZmbM_OffshoreWorker_Green","ZmbM_OffshoreWorker_Orange","ZmbM_OffshoreWorker_Red",
  211.     "ZmbM_OffshoreWorker_Yellow","ZmbF_NurseFat","ZmbM_HandymanNormal_Beige",
  212.     "ZmbM_HandymanNormal_Blue","ZmbM_HandymanNormal_Green","ZmbM_HandymanNormal_Grey","ZmbM_HandymanNormal_White",
  213.     "ZmbM_DoctorFat","ZmbM_Jacket_beige","ZmbM_Jacket_black","ZmbM_Jacket_blue","ZmbM_Jacket_bluechecks",
  214.     "ZmbM_Jacket_brown","ZmbM_Jacket_greenchecks","ZmbM_Jacket_grey","ZmbM_Jacket_khaki","ZmbM_Jacket_magenta","ZmbM_Jacket_stripes",
  215.     "ZmbF_PatientOld","ZmbM_PatientSkinny","ZmbF_ShortSkirt_beige",
  216.     "ZmbF_ShortSkirt_black","ZmbF_ShortSkirt_brown","ZmbF_ShortSkirt_green","ZmbF_ShortSkirt_grey","ZmbF_ShortSkirt_checks",
  217.     "ZmbF_ShortSkirt_red","ZmbF_ShortSkirt_stripes","ZmbF_ShortSkirt_white","ZmbF_ShortSkirt_yellow",
  218.     "ZmbF_VillagerOld_Blue","ZmbF_VillagerOld_Green","ZmbF_VillagerOld_Red","ZmbF_VillagerOld_White","ZmbM_Soldier","ZmbM_SoldierAlice",
  219.     "ZmbM_SoldierHelmet","ZmbM_SoldierVest","ZmbM_SoldierAliceHelmet","ZmbM_SoldierVestHelmet",
  220.     "ZmbF_MilkMaidOld_Beige","ZmbF_MilkMaidOld_Black","ZmbF_MilkMaidOld_Green","ZmbF_MilkMaidOld_Grey",
  221.     "ZmbM_priestPopSkinny","ZmbM_ClerkFat_Brown","ZmbM_ClerkFat_Grey","ZmbM_ClerkFat_Khaki","ZmbM_ClerkFat_White","ZmbF_Clerk_Normal_Blue","ZmbF_Clerk_Normal_White","ZmbF_Clerk_Normal_Green","ZmbF_Clerk_Normal_Red",
  222.     };
  223. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement