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