summaryrefslogtreecommitdiffstats
path: root/src/menu.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/menu.cpp108
1 files changed, 83 insertions, 25 deletions
diff --git a/src/menu.cpp b/src/menu.cpp
index 6a3c607..bdb9531 100644
--- a/src/menu.cpp
+++ b/src/menu.cpp
@@ -63,11 +63,13 @@ FeatureState g_skybox{false, 0}; // skybox.png image override
63FeatureState g_projectiles{true, 0}; // grenade / rocket ESP 63FeatureState g_projectiles{true, 0}; // grenade / rocket ESP
64bool g_proj_fuse = true; 64bool g_proj_fuse = true;
65bool g_proj_radius = true; 65bool g_proj_radius = true;
66FeatureState g_chams{false, 0}; // flat model material, optional through walls 66FeatureState g_chams{false, 0};
67bool g_chams_walls = true; 67ChamsGroup g_chams_hostile{true, 3, {255, 60, 60}, true, 3, {255, 60, 60}};
68ChamsGroup g_chams_neutral{true, 3, {220, 220, 220}, false, 3, {220, 220, 220}};
69ChamsGroup g_chams_friendly{true, 3, {60, 255, 60}, false, 3, {60, 255, 60}};
68bool g_chams_viewmodel = false; 70bool g_chams_viewmodel = false;
69int g_chams_mat_index = 0; 71int g_chams_vm_mat = 3;
70int g_chams_rgb[3] = {255, 60, 60}; 72int g_chams_vm_rgb[3] = {200, 200, 255};
71bool g_item_health = true; 73bool g_item_health = true;
72bool g_item_ammo = true; 74bool g_item_ammo = true;
73bool g_item_armor = true; 75bool g_item_armor = true;
@@ -239,11 +241,20 @@ void config_save() {
239 fprintf(f, "[projectiles]\nactive=%d\nbind=%d\nfuse=%d\nradius=%d\n", 241 fprintf(f, "[projectiles]\nactive=%d\nbind=%d\nfuse=%d\nradius=%d\n",
240 g_projectiles.active, g_projectiles.bind, (int)g_proj_fuse, 242 g_projectiles.active, g_projectiles.bind, (int)g_proj_fuse,
241 (int)g_proj_radius); 243 (int)g_proj_radius);
242 fprintf(f, "[chams]\nactive=%d\nbind=%d\nwalls=%d\nviewmodel=%d\n" 244 fprintf(f, "[chams]\nactive=%d\nbind=%d\n", g_chams.active, g_chams.bind);
243 "material=%d\nr=%d\ng=%d\nb=%d\n", 245 auto save_chams = [&](const char *name, const ChamsGroup &g) {
244 g_chams.active, g_chams.bind, (int)g_chams_walls, 246 fprintf(f, "[%s]\nvis=%d\nvis_mat=%d\nvis_r=%d\nvis_g=%d\nvis_b=%d\n"
245 (int)g_chams_viewmodel, g_chams_mat_index, g_chams_rgb[0], 247 "inv=%d\ninv_mat=%d\ninv_r=%d\ninv_g=%d\ninv_b=%d\n",
246 g_chams_rgb[1], g_chams_rgb[2]); 248 name, (int)g.vis_on, g.vis_mat, g.vis_rgb[0], g.vis_rgb[1],
249 g.vis_rgb[2], (int)g.inv_on, g.inv_mat, g.inv_rgb[0],
250 g.inv_rgb[1], g.inv_rgb[2]);
251 };
252 save_chams("chams_hostile", g_chams_hostile);
253 save_chams("chams_neutral", g_chams_neutral);
254 save_chams("chams_friendly", g_chams_friendly);
255 fprintf(f, "[chams_vm]\non=%d\nmat=%d\nr=%d\ng=%d\nb=%d\n",
256 (int)g_chams_viewmodel, g_chams_vm_mat, g_chams_vm_rgb[0],
257 g_chams_vm_rgb[1], g_chams_vm_rgb[2]);
247 fprintf(f, "[items]\nactive=%d\nbind=%d\nhealth=%d\nammo=%d\n" 258 fprintf(f, "[items]\nactive=%d\nbind=%d\nhealth=%d\nammo=%d\n"
248 "armor=%d\nweapons=%d\ncrates=%d\ndistance=%d\nmax_dist=%d\n" 259 "armor=%d\nweapons=%d\ncrates=%d\ndistance=%d\nmax_dist=%d\n"
249 "usable=%d\n", 260 "usable=%d\n",
@@ -294,10 +305,14 @@ static bool config_load() {
294 bool in_esp = false, in_bhop = false, in_aim = false, 305 bool in_esp = false, in_bhop = false, in_aim = false,
295 in_jumpbug = false, in_spread = false, in_items = false, 306 in_jumpbug = false, in_spread = false, in_items = false,
296 in_tint = false, in_fog = false, in_view = false, in_movement = false, 307 in_tint = false, in_fog = false, in_view = false, in_movement = false,
297 in_proj = false, in_chams = false; 308 in_proj = false;
309 ChamsGroup *chams_grp = nullptr;
310 bool in_chams_vm = false;
298 while (fgets(line, sizeof(line), f)) { 311 while (fgets(line, sizeof(line), f)) {
299 line[strcspn(line, "\r\n")] = 0; 312 line[strcspn(line, "\r\n")] = 0;
300 if (line[0] == '[') { 313 if (line[0] == '[') {
314 chams_grp = nullptr;
315 in_chams_vm = false;
301 if (strstr(line, "[bhop]")) 316 if (strstr(line, "[bhop]"))
302 cur = &g_bhop; 317 cur = &g_bhop;
303 else if (strstr(line, "[abh]")) 318 else if (strstr(line, "[abh]"))
@@ -324,6 +339,19 @@ static bool config_load() {
324 cur = &g_projectiles; 339 cur = &g_projectiles;
325 else if (strstr(line, "[chams]")) 340 else if (strstr(line, "[chams]"))
326 cur = &g_chams; 341 cur = &g_chams;
342 else if (strstr(line, "[chams_hostile]")) {
343 cur = nullptr;
344 chams_grp = &g_chams_hostile;
345 } else if (strstr(line, "[chams_neutral]")) {
346 cur = nullptr;
347 chams_grp = &g_chams_neutral;
348 } else if (strstr(line, "[chams_friendly]")) {
349 cur = nullptr;
350 chams_grp = &g_chams_friendly;
351 } else if (strstr(line, "[chams_vm]")) {
352 cur = nullptr;
353 in_chams_vm = true;
354 }
327 else if (strstr(line, "[aimbot]")) 355 else if (strstr(line, "[aimbot]"))
328 cur = &g_aimbot; 356 cur = &g_aimbot;
329 else if (strstr(line, "[triggerbot]")) 357 else if (strstr(line, "[triggerbot]"))
@@ -347,8 +375,8 @@ static bool config_load() {
347 in_view = strstr(line, "[view]") != nullptr; 375 in_view = strstr(line, "[view]") != nullptr;
348 in_movement = strstr(line, "[movement]") != nullptr; 376 in_movement = strstr(line, "[movement]") != nullptr;
349 in_proj = (cur == &g_projectiles); 377 in_proj = (cur == &g_projectiles);
350 in_chams = (cur == &g_chams); 378 } else if (cur || in_view || in_movement || chams_grp ||
351 } else if (cur || in_view || in_movement) { 379 in_chams_vm) {
352 char *eq = strchr(line, '='); 380 char *eq = strchr(line, '=');
353 if (!eq) 381 if (!eq)
354 continue; 382 continue;
@@ -394,22 +422,50 @@ static bool config_load() {
394 else if (strcmp(key, "radius") == 0) 422 else if (strcmp(key, "radius") == 0)
395 g_proj_radius = atoi(val) != 0; 423 g_proj_radius = atoi(val) != 0;
396 } 424 }
397 if (in_chams) { 425 if (chams_grp) {
398 if (strcmp(key, "walls") == 0) 426 ChamsGroup &g = *chams_grp;
399 g_chams_walls = atoi(val) != 0; 427 if (strcmp(key, "vis") == 0)
400 else if (strcmp(key, "viewmodel") == 0) 428 g.vis_on = atoi(val) != 0;
429 else if (strcmp(key, "vis_mat") == 0) {
430 int v = atoi(val);
431 if (v < 0) v = 0;
432 if (v > 6) v = 6;
433 g.vis_mat = v;
434 } else if (strcmp(key, "vis_r") == 0 || strcmp(key, "vis_g") == 0 ||
435 strcmp(key, "vis_b") == 0) {
436 int v = atoi(val);
437 if (v < 0) v = 0;
438 if (v > 255) v = 255;
439 g.vis_rgb[key[4] == 'r' ? 0 : key[4] == 'g' ? 1 : 2] = v;
440 } else if (strcmp(key, "inv") == 0)
441 g.inv_on = atoi(val) != 0;
442 else if (strcmp(key, "inv_mat") == 0) {
443 int v = atoi(val);
444 if (v < 0) v = 0;
445 if (v > 6) v = 6;
446 g.inv_mat = v;
447 } else if (strcmp(key, "inv_r") == 0 || strcmp(key, "inv_g") == 0 ||
448 strcmp(key, "inv_b") == 0) {
449 int v = atoi(val);
450 if (v < 0) v = 0;
451 if (v > 255) v = 255;
452 g.inv_rgb[key[4] == 'r' ? 0 : key[4] == 'g' ? 1 : 2] = v;
453 }
454 }
455 if (in_chams_vm) {
456 if (strcmp(key, "on") == 0)
401 g_chams_viewmodel = atoi(val) != 0; 457 g_chams_viewmodel = atoi(val) != 0;
402 else if (strcmp(key, "material") == 0) { 458 else if (strcmp(key, "mat") == 0) {
403 int v = atoi(val); 459 int v = atoi(val);
404 if (v < 0) v = 0; 460 if (v < 0) v = 0;
405 if (v > 5) v = 5; 461 if (v > 6) v = 6;
406 g_chams_mat_index = v; 462 g_chams_vm_mat = v;
407 } else if (strcmp(key, "r") == 0 || strcmp(key, "g") == 0 || 463 } else if (strcmp(key, "r") == 0 || strcmp(key, "g") == 0 ||
408 strcmp(key, "b") == 0) { 464 strcmp(key, "b") == 0) {
409 int v = atoi(val); 465 int v = atoi(val);
410 if (v < 0) v = 0; 466 if (v < 0) v = 0;
411 if (v > 255) v = 255; 467 if (v > 255) v = 255;
412 g_chams_rgb[key[0] == 'r' ? 0 : key[0] == 'g' ? 1 : 2] = v; 468 g_chams_vm_rgb[key[0] == 'r' ? 0 : key[0] == 'g' ? 1 : 2] = v;
413 } 469 }
414 } 470 }
415 if (in_aim) { 471 if (in_aim) {
@@ -637,12 +693,14 @@ void config_reset_defaults() {
637 g_proj_fuse = true; 693 g_proj_fuse = true;
638 g_proj_radius = true; 694 g_proj_radius = true;
639 g_chams = {false, 0}; 695 g_chams = {false, 0};
640 g_chams_walls = true; 696 g_chams_hostile = {true, 3, {255, 60, 60}, true, 3, {255, 60, 60}};
697 g_chams_neutral = {true, 3, {220, 220, 220}, false, 3, {220, 220, 220}};
698 g_chams_friendly = {true, 3, {60, 255, 60}, false, 3, {60, 255, 60}};
641 g_chams_viewmodel = false; 699 g_chams_viewmodel = false;
642 g_chams_mat_index = 0; 700 g_chams_vm_mat = 3;
643 g_chams_rgb[0] = 255; 701 g_chams_vm_rgb[0] = 200;
644 g_chams_rgb[1] = 60; 702 g_chams_vm_rgb[1] = 200;
645 g_chams_rgb[2] = 60; 703 g_chams_vm_rgb[2] = 255;
646 g_item_health = true; 704 g_item_health = true;
647 g_item_ammo = true; 705 g_item_ammo = true;
648 g_item_armor = true; 706 g_item_armor = true;