Skip to content

Commit dc3602b

Browse files
committed
v1.2
- Auto creates directory - Cvar changes update better - Made code more readable
1 parent ddaebd1 commit dc3602b

3 files changed

Lines changed: 149 additions & 87 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ Recommended to only use on test servers as the command is available for all play
1616
- Done
1717

1818
## Configuration
19-
`ewmaker_path` - a path (relative to `csgo/`) where the configs will generate, create this directory if it doesn't exist
19+
`ewmaker_path` - a path (relative to `csgo/`) where the configs will generate
2020
`ewmaker_style` - style of config to generate (0 = [GFL Style](https://github.com/gflclan-cs-go-ze/ZE-Configs#entwatch), 1 = [DarkerZ Style](https://github.com/darkerz7/CSGO-Plugins/blob/master/EntWatch_DZ/cfg/sourcemod/entwatch/maps/template.txt), 2 = Mapeadores MapTrack)

entwatch_maker.smx

572 Bytes
Binary file not shown.

entwatch_maker.sp

Lines changed: 148 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -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;
1525
char path[PLATFORM_MAX_PATH];
16-
char mapeaMapName[128];
26+
char g_currentmap[128];
27+
1728
ArrayList weps;
1829
ArrayList buts;
1930
ArrayList 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+
3574
public 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

4293
public 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

Comments
 (0)