@@ -8,7 +8,7 @@ public Plugin myinfo =
88 name = " EntWatch Config Maker" ,
99 author = " tilgep" ,
1010 description = " Makes a basic EntWatch config for the current map." ,
11- version = " 1.2 " ,
11+ version = " 1.3 " ,
1212 url = " https://github.com/tilgep/EntWatch-Maker"
1313};
1414
@@ -28,15 +28,20 @@ char g_currentmap[128];
2828ArrayList weps ;
2929ArrayList buts ;
3030ArrayList filt ;
31+ ArrayList temp ;
32+ ArrayList math ;
3133
3234ConVar dire ;
3335ConVar style ;
3436
3537public void OnPluginStart ()
3638{
37- weps = CreateArray ();
38- buts = CreateArray ();
39- filt = CreateArray ();
39+ weps = new ArrayList ();
40+ buts = new ArrayList ();
41+ filt = new ArrayList ();
42+ temp = new ArrayList ();
43+ math = new ArrayList ();
44+
4045 dire = CreateConVar (" ewmaker_path" , " addons/sourcemod/configs/entwatch_maker" , " Path to store generated configs in. Relative to csgo/" , _ , true , 0.0 , true , 1.0 );
4146 dire .AddChangeHook (Cvar_Changed );
4247
@@ -71,7 +76,7 @@ public void Cvar_Changed(ConVar cvar, const char[] oldVal, const char[] newVal)
7176 }
7277}
7378
74- public void OnMapInit ( const char [] mapName )
79+ public void OnConfigsExecuted ( )
7580{
7681 mode = view_as <Mode >(style .IntValue );
7782 dire .GetString (path , PLATFORM_MAX_PATH );
@@ -86,6 +91,8 @@ public void OnMapInit(const char[] mapName)
8691 LogMessage (" Created directory %s " , path );
8792 }
8893 }
94+ char mapName [PLATFORM_MAX_PATH ];
95+ GetCurrentMap (mapName , sizeof (mapName ));
8996 Format (path , PLATFORM_MAX_PATH , " %s /%s .cfg" , path , mapName );
9097 strcopy (g_currentmap , sizeof (g_currentmap ), mapName );
9198}
@@ -113,6 +120,9 @@ public int LoadConfig()
113120 weps .Clear ();
114121 buts .Clear ();
115122 filt .Clear ();
123+ temp .Clear ();
124+ math .Clear ();
125+
116126 File file = OpenFile (path , " w" );
117127 if (file == null )
118128 {
@@ -132,20 +142,24 @@ public int LoadConfig()
132142 int cl = ent .GetNextKey (" classname" , class , 64 );
133143 if (cl == - 1 ) continue ;
134144
135- ent .GetNextKey (" hammerid" , hammer , sizeof (hammer ));
136145 if (strncmp (class , " weapon_" , 7 ) == 0 )
137146 {
138- if (! StrEqual (hammer , " " )) weps .Push (i );
147+ ent .GetNextKey (" hammerid" , hammer , sizeof (hammer ));
148+ if (hammer [0 ]!= ' \0 ' ) weps .Push (i );
139149 }
140150 else if (strncmp (class , " func_button" , 11 ) == 0 )
141151 {
142- int parent = ent .GetNextKey (" parentname" , paren , 64 );
143- if (parent != - 1 && ! StrEqual ( paren , " " ) ) buts .Push (i );
152+ int parent = ent .GetNextKey (" parentname" , paren , sizeof ( paren ) );
153+ if (parent != - 1 && paren [ 0 ] != ' \0 ' ) buts .Push (i );
144154 }
145155 else if (strncmp (class , " filter_activator_name" , 21 ) == 0 )
146156 {
147157 filt .Push (i );
148158 }
159+ else if (strncmp (class , " point_template" , 14 ) == 0 )
160+ {
161+ temp .Push (i );
162+ }
149163
150164 delete ent ;
151165 }
@@ -171,11 +185,12 @@ public int LoadConfig()
171185 char bhammer [16 ];
172186 char filter [64 ];
173187 char filterid [16 ];
188+ char templatename [64 ];
174189 char output [5 ][32 ];
175190 bool knife ;
176191 bool gameui ;
177192
178- EntityLumpEntry button ;
193+ EntityLumpEntry button , template ;
179194 int index = 0 ;
180195 // Go through weapons
181196 for (int i = 0 ; i < weps .Length ; i ++ )
@@ -185,6 +200,7 @@ public int LoadConfig()
185200 bhammer [0 ] = ' \0 ' ;
186201 filter [0 ] = ' \0 ' ;
187202 filterid [0 ] = ' \0 ' ;
203+ templatename [0 ] = ' \0 ' ;
188204 knife = false ;
189205 gameui = false ;
190206 ent = EntityLump .Get (weps .Get (i ));
@@ -218,39 +234,76 @@ public int LoadConfig()
218234 {
219235 button = EntityLump .Get (buts .Get (b ));
220236 button .GetNextKey (" parentname" , paren , 64 );
221- if (StrEqual (paren , targe ))
237+ if (! StrEqual (paren , targe ))
238+ {
239+ delete button ;
240+ continue ;
241+ }
242+
243+ button .GetNextKey (" hammerid" , bhammer , sizeof (bhammer ));
244+ button .GetNextKey (" filtername" , filter , sizeof (filter ));
245+ int fi = button .GetNextKey (" OnPressed" , val , sizeof (val ));
246+ while (fi != - 1 )
247+ {
248+ ExplodeString (val , " " , output , 5 , 32 , true );
249+ if (StrEqual (output [1 ], " TestActivator" )) break ;
250+ fi = button .GetNextKey (" OnPressed" , val , sizeof (val ), fi );
251+ }
252+
253+ if (fi != - 1 )
222254 {
223- button .GetNextKey (" hammerid" , bhammer , sizeof (bhammer ));
224- button .GetNextKey (" filtername" , filter , sizeof (filter ));
225- int fi = button .GetNextKey (" OnPressed" , val , sizeof (val ));
226- while (fi != - 1 )
255+ EntityLumpEntry filterr ;
256+ char ftargetname [64 ];
257+ for (int f = 0 ; f < filt .Length ; f ++ )
227258 {
228- ExplodeString (val , " " , output , 5 , 32 , true );
229- if (StrEqual (output [1 ], " TestActivator" )) break ;
230- fi = button .GetNextKey (" OnPressed" , val , sizeof (val ), fi );
259+ filterr = EntityLump .Get (filt .Get (f ));
260+ filterr .GetNextKey (" targetname" , ftargetname , sizeof (ftargetname ));
261+ if (! StrEqual (ftargetname , output [0 ])) continue ;
262+
263+ filterr .GetNextKey (" filtername" , filter , sizeof (filter ));
264+ filterr .GetNextKey (" hammerid" , filterid , sizeof (filterid ));
265+ break ;
231266 }
267+ delete filterr ;
268+ }
269+
270+ delete button ;
271+ }
232272
233- if (fi != - 1 )
273+ // find pt_spawner
274+ if (mode == DarkerZ )
275+ {
276+ bool found ;
277+ for (int t = 0 ; t < temp .Length ; t ++ )
278+ {
279+ if (found ) break ;
280+ template = EntityLump .Get (temp .Get (t ));
281+ for (int u = 0 ; u < template .Length ; u ++ )
234282 {
235- EntityLumpEntry filterr ;
236- char ftargetname [ 64 ] ;
237- for ( int f = 0 ; f < filt . Length ; f ++ )
283+ template . Get ( u , key , 64 , val , 128 ) ;
284+ if ( StrEqual ( key , " targetname " )) strcopy ( templatename , sizeof ( templatename ), val ) ;
285+ else if ( ! found && strncmp ( key , " Template " , 8 ) == 0 )
238286 {
239- filterr = EntityLump .Get (filt .Get (f ));
240- filterr .GetNextKey (" targetname" , ftargetname , sizeof (ftargetname ));
241- if (! StrEqual (ftargetname , output [0 ])) continue ;
242-
243- filterr .GetNextKey (" filtername" , filter , sizeof (filter ));
244- filterr .GetNextKey (" hammerid" , filterid , sizeof (filterid ));
245- break ;
287+ if (StrEqual (val , targe ))
288+ {
289+ found = true ;
290+ }
291+ else //check wildcarding
292+ {
293+ int len = strlen (val );
294+ if (val [len - 1 ] == ' *' )
295+ {
296+ if (strncmp (val , targe , len - 1 ) == 0 ) // matched wildcard
297+ {
298+ found = true ;
299+ }
300+ }
301+ }
246302 }
247- delete filterr ;
248303 }
249304
250- delete button ;
251- break ;
305+ delete template ;
252306 }
253- delete button ;
254307 }
255308
256309 file .WriteLine (" \t\" %d \" " , index );
@@ -321,7 +374,7 @@ public int LoadConfig()
321374 file .WriteLine (" \t\t\" trigger\" \" 0\" " );
322375 file .WriteLine (" \t\t\" physbox\" \" false\" " );
323376 file .WriteLine (" \t\t " );
324- file .WriteLine (" \t\t\" pt_spawner\" \"\" " );
377+ file .WriteLine (" \t\t\" pt_spawner\" \" %s \" " , templatename );
325378 file .WriteLine (" \t\t\" use_priority\" \" true\" " );
326379 }
327380 case Mapea :
@@ -354,4 +407,4 @@ public int LoadConfig()
354407 delete ent ;
355408 delete file ;
356409 return 2 ;
357- }
410+ }
0 commit comments