@@ -8,12 +8,23 @@ 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.0 " ,
11+ version = " 1.2 " ,
1212 url = " https://github.com/tilgep/EntWatch-Maker"
1313};
1414
15+ enum Mode
16+ {
17+ GFL = 0 ,
18+ DarkerZ ,
19+ Mapea ,
20+ }
21+
22+ #define MODE_INFO " 0-none, 1-spam, 2-cd, 3-uses, 4-use w/ cd, 5-cd after uses, 6-counter stop@min, 7-counter stop@max"
23+ #define DEFAULT_DIR_PERMS FPERM_O_READ | FPERM_O_EXEC | FPERM_G_READ | FPERM_G_EXEC | FPERM_U_READ | FPERM_U_WRITE | FPERM_U_EXEC
24+ Mode mode ;
1525char path [PLATFORM_MAX_PATH ];
16- char mapeaMapName [128 ];
26+ char g_currentmap [128 ];
27+
1728ArrayList weps ;
1829ArrayList buts ;
1930ArrayList filt ;
@@ -27,34 +38,65 @@ public void OnPluginStart()
2738 buts = CreateArray ();
2839 filt = CreateArray ();
2940 dire = CreateConVar (" ewmaker_path" , " addons/sourcemod/configs/entwatch_maker" , " Path to store generated configs in. Relative to csgo/" , _ , true , 0.0 , true , 1.0 );
41+ dire .AddChangeHook (Cvar_Changed );
42+
3043 style = CreateConVar (" ewmaker_style" , " 1" , " Options to include (0=GFL style, 1=DarkerZ Style, 2=Mapea MapTrack style)" , _ , true , 0.0 , true , 2.0 );
44+ style .AddChangeHook (Cvar_Changed );
45+
3146 RegConsoleCmd (" sm_ewmake" , Command_Make );
3247 AutoExecConfig ();
3348}
3449
50+ public void Cvar_Changed (ConVar cvar , const char [] oldVal , const char [] newVal )
51+ {
52+ if (cvar == dire )
53+ {
54+ dire .GetString (path , PLATFORM_MAX_PATH );
55+ if (! DirExists (path ))
56+ {
57+ if (! CreateDirectory (path , DEFAULT_DIR_PERMS ))
58+ {
59+ LogError (" Failed to create directory %s " , path );
60+ }
61+ else
62+ {
63+ LogMessage (" Created directory %s " , path );
64+ }
65+ }
66+ Format (path , PLATFORM_MAX_PATH , " %s /%s .cfg" , path , g_currentmap );
67+ }
68+ else if (cvar == style )
69+ {
70+ mode = view_as <Mode >(style .IntValue );
71+ }
72+ }
73+
3574public void OnMapInit (const char [] mapName )
3675{
76+ mode = view_as <Mode >(style .IntValue );
3777 dire .GetString (path , PLATFORM_MAX_PATH );
78+ if (! DirExists (path ))
79+ {
80+ if (! CreateDirectory (path , DEFAULT_DIR_PERMS ))
81+ {
82+ LogError (" Failed to create directory %s " , path );
83+ }
84+ else
85+ {
86+ LogMessage (" Created directory %s " , path );
87+ }
88+ }
3889 Format (path , PLATFORM_MAX_PATH , " %s /%s .cfg" , path , mapName );
39- strcopy (mapeaMapName , sizeof (mapeaMapName ), mapName );
90+ strcopy (g_currentmap , sizeof (g_currentmap ), mapName );
4091}
4192
4293public Action Command_Make (int client , int args )
4394{
4495 switch (LoadConfig ())
4596 {
46- case 0 :
47- {
48- ReplyToCommand (client , " Failed to create config file %s " , path );
49- }
50- case 1 :
51- {
52- ReplyToCommand (client , " No items found in the map!" );
53- }
54- case 2 :
55- {
56- ReplyToCommand (client , " Config created at %s " , path );
57- }
97+ case 0 : ReplyToCommand (client , " Failed to create config file %s " , path );
98+ case 1 : ReplyToCommand (client , " No items found in the map!" );
99+ case 2 : ReplyToCommand (client , " Config created at %s " , path );
58100 }
59101 return Plugin_Handled ;
60102}
@@ -114,7 +156,15 @@ public int LoadConfig()
114156 return 1 ;
115157 }
116158
117- file .WriteLine (" \" %s \"\n {" , style .IntValue == 2 ? mapeaMapName : " entities" );
159+ if (mode == Mapea )
160+ {
161+ file .WriteLine (" \" %s \"\n {" , g_currentmap );
162+ }
163+ else
164+ {
165+ file .WriteLine (" \" entities\"\n {" , g_currentmap );
166+ }
167+
118168 char key [64 ];
119169 char val [128 ];
120170 char targe [64 ];
@@ -164,7 +214,6 @@ public int LoadConfig()
164214 continue ;
165215 }
166216
167-
168217 for (int b = gameui ? buts .Length : 0 ; b < buts .Length ; b ++ )
169218 {
170219 button = EntityLump .Get (buts .Get (b ));
@@ -206,83 +255,96 @@ public int LoadConfig()
206255
207256 file .WriteLine (" \t\" %d \" " , index );
208257 file .WriteLine (" \t {" );
209- if (style .IntValue != 2 ) // GFL & Darkerz styles
210- {
211- file .WriteLine (" \t\t\" name\" \" %s \" //currently weapon targetname (change me)" , targe );
212- file .WriteLine (" \t\t\" shortname\" \" %s \" //currently weapon targetname (change me)" , targe );
213- file .WriteLine (" \t\t\" color\" \" {default } \" // Change me" );
214- file .WriteLine (" \t\t " );
215- file .WriteLine (" \t\t\" buttonclass\" \" %s \" " , gameui ? " game_ui" : " func_button" );
216- if (style .IntValue == 1 ) file .WriteLine (" \t\t\" buttonclass2\" \"\" " );
217- file .WriteLine (" \t\t " );
218- file .WriteLine (" \t\t\" filtername\" \" %s \" " , filter );
219- if (style .IntValue == 0 ) file .WriteLine (" \t\t\" hasfiltername\" \" %s \" " , filter [0 ] ? " true" : " false" );
220-
221- file .WriteLine (" \t\t\" blockpickup\" \" false\" " );
222- file .WriteLine (" \t\t\" allowtransfer\" \" %s \" " , knife ? " false" : " true" );
223- file .WriteLine (" \t\t\" forcedrop\" \" %s \" " , knife ? " false" : " true" );
224-
225- file .WriteLine (" \t\t\" chat\" \" true\" " );
226- if (style .IntValue == 1 ) file .WriteLine (" \t\t\" chat_uses\" \" true\" " );
227-
228- file .WriteLine (" \t\t\" hud\" \" true\" " );
229258
230- file .WriteLine (" \t\t\" hammerid\" \" %s \" " , hammer );
231-
232- file .WriteLine (" \t\t " );
233- file .WriteLine (" \t\t // [EntWatchMaker] Settings below need changing." );
234- file .WriteLine (" \t\t\" mode\" \" 0\" // 0-none, 1-spam, 2-cd, 3-uses, 4-use w/ cd, 5-cd after uses, 6-counter stop@min, 7-counter stop@max" );
235- if (style .IntValue == 1 ) file .WriteLine (" \t\t\" mode2\" \" 0\" " );
236- file .WriteLine (" \t\t " );
237- file .WriteLine (" \t\t\" cooldown\" \" 0\" //mode = 2/4/5" );
238- if (style .IntValue == 1 ) file .WriteLine (" \t\t\" cooldown2\" \" 0\" //mode2 = 2/4/5" );
239- file .WriteLine (" \t\t\" maxuses\" \" 0\" //mode = 3/4/5" );
240- if (style .IntValue == 1 ) file .WriteLine (" \t\t\" maxuses2\" \" 0\" //mode2 = 3/4/5" );
241- file .WriteLine (" \t\t " );
242-
243- if (style .IntValue == 0 ) file .WriteLine (" \t\t\" mathid\" \" 0\" //mode 6/7" );
244- else
259+ switch (mode )
260+ {
261+ case GFL :
245262 {
246- file .WriteLine (" \t\t\" energyid\" \" 0\" //mode = 6/7" );
247- file .WriteLine (" \t\t\" energyid2\" \" 0\" //mode2 = 6/7" );
263+ file .WriteLine (" \t\t\" name\" \" %s \" //currently weapon targetname (change me)" , targe );
264+ file .WriteLine (" \t\t\" shortname\" \" %s \" //currently weapon targetname (change me)" , targe );
265+ file .WriteLine (" \t\t\" color\" \" {default } \" // Change me" );
266+ file .WriteLine (" \t\t " );
267+ file .WriteLine (" \t\t\" buttonclass\" \" %s \" " , gameui ? " game_ui" : " func_button" );
268+ file .WriteLine (" \t\t " );
269+ file .WriteLine (" \t\t\" filtername\" \" %s \" " , filter );
270+ file .WriteLine (" \t\t\" blockpickup\" \" false\" " );
271+ file .WriteLine (" \t\t\" allowtransfer\" \" %s \" " , knife ? " false" : " true" );
272+ file .WriteLine (" \t\t\" forcedrop\" \" %s \" " , knife ? " false" : " true" );
273+ file .WriteLine (" \t\t\" chat\" \" true\" " );
274+ file .WriteLine (" \t\t\" hud\" \" true\" " );
275+ file .WriteLine (" \t\t\" hammerid\" \" %s \" " , hammer );
276+ file .WriteLine (" \t\t " );
277+ file .WriteLine (" \t\t // [EntWatchMaker] Settings below may need changing." );
278+ file .WriteLine (" \t\t\" mode\" \" 0\" // %s " , MODE_INFO );
279+ file .WriteLine (" \t\t " );
280+ file .WriteLine (" \t\t\" cooldown\" \" 0\" //mode = 2/4/5" );
281+ file .WriteLine (" \t\t\" maxuses\" \" 0\" //mode = 3/4/5" );
282+ file .WriteLine (" \t\t\" mathid\" \" 0\" //mode 6/7" );
283+ file .WriteLine (" \t\t " );
284+ file .WriteLine (" \t\t //\" buttonid\" \" %s \" //hammerid of a detected button" , bhammer );
285+ file .WriteLine (" \t\t\" trigger\" \" 0\" " );
286+ file .WriteLine (" \t\t\" physbox\" \" false\" " );
287+ file .WriteLine (" \t\t\" maxamount\" \" 1\" " );
248288 }
249-
250- file .WriteLine (" \t\t //\" buttonid\" \" %s \" //hammerid of a detected button" , bhammer );
251- if (style .IntValue == 1 ) file .WriteLine (" \t\t //\" buttonid2\" \"\" " );
252- file .WriteLine (" \t\t\" trigger\" \" 0\" " );
253-
254- file .WriteLine (" \t\t " );
255- file .WriteLine (" \t\t\" physbox\" \" false\" " );
256- if (style .IntValue == 0 ) file .WriteLine (" \t\t\" maxamount\" \" 1\" " );
257-
258- if (style .IntValue == 1 )
289+ case DarkerZ :
259290 {
291+ file .WriteLine (" \t\t\" name\" \" %s \" //currently weapon targetname (change me)" , targe );
292+ file .WriteLine (" \t\t\" shortname\" \" %s \" //currently weapon targetname (change me)" , targe );
293+ file .WriteLine (" \t\t\" color\" \" {default } \" // Change me" );
294+ file .WriteLine (" \t\t " );
295+ file .WriteLine (" \t\t\" buttonclass\" \" %s \" " , gameui ? " game_ui" : " func_button" );
296+ file .WriteLine (" \t\t\" buttonclass2\" \"\" " );
297+ file .WriteLine (" \t\t " );
298+ file .WriteLine (" \t\t\" filtername\" \" %s \" " , filter );
299+ file .WriteLine (" \t\t\" blockpickup\" \" false\" " );
300+ file .WriteLine (" \t\t\" allowtransfer\" \" %s \" " , knife ? " false" : " true" );
301+ file .WriteLine (" \t\t\" forcedrop\" \" %s \" " , knife ? " false" : " true" );
302+ file .WriteLine (" \t\t " );
303+ file .WriteLine (" \t\t\" chat\" \" true\" " );
304+ file .WriteLine (" \t\t\" chat_uses\" \" true\" " );
305+ file .WriteLine (" \t\t\" hud\" \" true\" " );
306+ file .WriteLine (" \t\t\" hammerid\" \" %s \" " , hammer );
307+ file .WriteLine (" \t\t " );
308+ file .WriteLine (" \t\t // [EntWatchMaker] Settings below may need changing." );
309+ file .WriteLine (" \t\t\" mode\" \" 0\" // %s " , MODE_INFO );
310+ file .WriteLine (" \t\t\" mode2\" \" 0\" " );
311+ file .WriteLine (" \t\t " );
312+ file .WriteLine (" \t\t\" cooldown\" \" 0\" //mode = 2/4/5" );
313+ file .WriteLine (" \t\t\" cooldown2\" \" 0\" //mode2 = 2/4/5" );
314+ file .WriteLine (" \t\t\" maxuses\" \" 0\" //mode = 3/4/5" );
315+ file .WriteLine (" \t\t\" maxuses2\" \" 0\" //mode2 = 3/4/5" );
316+ file .WriteLine (" \t\t\" energyid\" \" 0\" //mode = 6/7" );
317+ file .WriteLine (" \t\t\" energyid2\" \" 0\" //mode2 = 6/7" );
318+ file .WriteLine (" \t\t " );
319+ file .WriteLine (" \t\t //\" buttonid\" \" %s \" //hammerid of a detected button" , bhammer );
320+ file .WriteLine (" \t\t //\" buttonid2\" \"\" " );
321+ file .WriteLine (" \t\t\" trigger\" \" 0\" " );
322+ file .WriteLine (" \t\t\" physbox\" \" false\" " );
260323 file .WriteLine (" \t\t " );
261324 file .WriteLine (" \t\t\" pt_spawner\" \"\" " );
262325 file .WriteLine (" \t\t\" use_priority\" \" true\" " );
263326 }
264- } else // Mapea Maptrack style
265- {
266- file .WriteLine (" \t\t\" hammerid\" \" %s \" " , hammer );
267- file .WriteLine (" \t\t\" name\" \" %s \" //currently weapon targetname (change me)" , targe );
268- file .WriteLine (" \t\t\" shortname\" \" %s \" //currently weapon targetname (change me)" , targe );
269- file .WriteLine (" \t\t\" color\" \" {WHITE } \" // Change me" );
270- file .WriteLine (" \t\t\" glowcolor\" \" 255 255 255 255\" // Change me" );
271- file .WriteLine (" \t\t\" maxamount\" \"\" " );
272- file .WriteLine (" \t\t " );
273-
274- file .WriteLine (" \t\t\" buttonclass\" \" %s \" " , gameui ? " game_ui" : " func_button" );
275- file .WriteLine (" \t\t\" filterid\" \" %s \" " , filterid );
276- file .WriteLine (" \t\t\" passive\" \"\" " );
277- file .WriteLine (" \t\t\" blockpickup\" \"\" " );
278- file .WriteLine (" \t\t\" forcedrop\" \" true\" " );
279- file .WriteLine (" \t\t\" maxuses\" \" -1\" " );
280- file .WriteLine (" \t\t\" cooldown\" \"\" " );
281- file .WriteLine (" \t\t\" ignoredactions\" \"\" " );
282- file .WriteLine (" \t\t " );
283-
284- file .WriteLine (" \t\t\" chat\" \" true\" " );
285- file .WriteLine (" \t\t\" hud\" \" true\" " );
327+ case Mapea :
328+ {
329+ file .WriteLine (" \t\t\" hammerid\" \" %s \" " , hammer );
330+ file .WriteLine (" \t\t\" name\" \" %s \" //currently weapon targetname (change me)" , targe );
331+ file .WriteLine (" \t\t\" shortname\" \" %s \" //currently weapon targetname (change me)" , targe );
332+ file .WriteLine (" \t\t\" color\" \" {WHITE } \" // Change me" );
333+ file .WriteLine (" \t\t\" glowcolor\" \" 255 255 255 255\" // Change me" );
334+ file .WriteLine (" \t\t\" maxamount\" \"\" " );
335+ file .WriteLine (" \t\t " );
336+ file .WriteLine (" \t\t\" buttonclass\" \" %s \" " , gameui ? " game_ui" : " func_button" );
337+ file .WriteLine (" \t\t\" filterid\" \" %s \" " , filterid );
338+ file .WriteLine (" \t\t\" passive\" \"\" " );
339+ file .WriteLine (" \t\t\" blockpickup\" \"\" " );
340+ file .WriteLine (" \t\t\" forcedrop\" \" true\" " );
341+ file .WriteLine (" \t\t\" maxuses\" \" -1\" " );
342+ file .WriteLine (" \t\t\" cooldown\" \"\" " );
343+ file .WriteLine (" \t\t\" ignoredactions\" \"\" " );
344+ file .WriteLine (" \t\t " );
345+ file .WriteLine (" \t\t\" chat\" \" true\" " );
346+ file .WriteLine (" \t\t\" hud\" \" true\" " );
347+ }
286348 }
287349
288350 file .WriteLine (" \t }" );
0 commit comments