diff --git a/RaceTimer/configs/unloze_zones/cs_italy.zones.txt b/RaceTimer/configs/unloze_zones/cs_italy.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/cs_italy.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/de_chateau.zones.txt b/RaceTimer/configs/unloze_zones/de_chateau.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/de_chateau.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/de_dust.zones.txt b/RaceTimer/configs/unloze_zones/de_dust.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/de_dust.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/de_nuke.zones.txt b/RaceTimer/configs/unloze_zones/de_nuke.zones.txt new file mode 100644 index 00000000..bc742e67 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/de_nuke.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "3376.000000 -536.000000 -351.290009" + "cordinate_b" "3711.968750 -885.808350 -224.945404" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "3121.355469 -403.895630 -351.968750" + "cordinate_b" "2991.191162 -671.968750 -218.971832" + } +} diff --git a/RaceTimer/configs/unloze_zones/de_piranesi.zones.txt b/RaceTimer/configs/unloze_zones/de_piranesi.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/de_piranesi.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/de_port.zones.txt b/RaceTimer/configs/unloze_zones/de_port.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/de_port.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/dev_entwatch.zones.txt b/RaceTimer/configs/unloze_zones/dev_entwatch.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/dev_entwatch.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_2012_b3b.zones.txt b/RaceTimer/configs/unloze_zones/ze_2012_b3b.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_2012_b3b.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_30_seconds__b21.zones.txt b/RaceTimer/configs/unloze_zones/ze_30_seconds__b21.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_30_seconds__b21.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_666_crazy_escape_b3s.zones.txt b/RaceTimer/configs/unloze_zones/ze_666_crazy_escape_b3s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_666_crazy_escape_b3s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_FFVII_Mako_Reactor_v5_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_FFVII_Mako_Reactor_v5_3.zones.txt new file mode 100644 index 00000000..3192f7c2 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_FFVII_Mako_Reactor_v5_3.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_MAKO_START_1" + "cordinate_a" "-6826.671875 -5011.998047 413.874634" + "cordinate_b" "-7823.968750 -4979.634277 581.193420" + } + "2" + { + "name" "ZONE_PREFIX_MAKO_RACE_2" + "cordinate_a" "-10767.896484 3907.151855 0.300579" + "cordinate_b" "-10770.901367 4110.180176 165.230179" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_MotanumInc_OB.zones.txt b/RaceTimer/configs/unloze_zones/ze_MotanumInc_OB.zones.txt new file mode 100644 index 00000000..f63af6c9 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_MotanumInc_OB.zones.txt @@ -0,0 +1,16 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-11343.477539 -347.147278 566.105225" + "cordinate_b" "-11359.968750 -171.317001 750.434814" + } + + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-9136.265625 -106.268997 32.437210" + "cordinate_b" "-9151.968750 98.078568 250.903519" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_abandoned_project_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_abandoned_project_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_abandoned_project_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_abfd_fix_labescape_vb6.zones.txt b/RaceTimer/configs/unloze_zones/ze_abfd_fix_labescape_vb6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_abfd_fix_labescape_vb6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_acuticnotes_v1_2s.zones.txt b/RaceTimer/configs/unloze_zones/ze_acuticnotes_v1_2s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_acuticnotes_v1_2s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_aepp_nano_grid2_b2s.zones.txt b/RaceTimer/configs/unloze_zones/ze_aepp_nano_grid2_b2s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_aepp_nano_grid2_b2s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_alien_vs_predator_v5.zones.txt b/RaceTimer/configs/unloze_zones/ze_alien_vs_predator_v5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_alien_vs_predator_v5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_amkoescape_v1337.zones.txt b/RaceTimer/configs/unloze_zones/ze_amkoescape_v1337.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_amkoescape_v1337.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ancient_wrath_v1_fix2.zones.txt b/RaceTimer/configs/unloze_zones/ze_ancient_wrath_v1_fix2.zones.txt new file mode 100644 index 00000000..4b4bf871 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ancient_wrath_v1_fix2.zones.txt @@ -0,0 +1,33 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "4260.475098 -8435.492188 131.312683" + "cordinate_b" "5552.381348 -7868.645508 206.613831" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "1602.973022 -1391.620728 13.469802" + "cordinate_b" "1937.118164 -1141.031250 131.466263" + } + "3" + { + "name" "ZONE_PREFIX_START_3" + "cordinate_a" "-2366.455811 1364.208008 -482.882507" + "cordinate_b" "-2373.968750 1188.879395 -362.571411" + } + "4" + { + "name" "ZONE_PREFIX_RACE4" + "cordinate_a" "-2511.865234 1933.743530 -791.599792" + "cordinate_b" "-2985.968750 1948.864624 -663.120850" + } + "5" + { + "name" "ZONE_PREFIX_ANTI" + "cordinate_a" "-2477.795166 1923.944092 -853.817017" + "cordinate_b" "-2487.968750 2225.502441 -650.474609" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_ancient_wrath_v2_test27.zones.txt b/RaceTimer/configs/unloze_zones/ze_ancient_wrath_v2_test27.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ancient_wrath_v2_test27.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_antartika_b2.zones.txt b/RaceTimer/configs/unloze_zones/ze_antartika_b2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_antartika_b2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_antfarm_2vs.zones.txt b/RaceTimer/configs/unloze_zones/ze_antfarm_2vs.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_antfarm_2vs.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_aperturescience_ob.zones.txt b/RaceTimer/configs/unloze_zones/ze_aperturescience_ob.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_aperturescience_ob.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_arctic_escape_c1_fix3.zones.txt b/RaceTimer/configs/unloze_zones/ze_arctic_escape_c1_fix3.zones.txt new file mode 100644 index 00000000..af3b9dfb --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_arctic_escape_c1_fix3.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_RACE_1" + "cordinate_a" "8268.910156 14584.395508 -997.968750" + "cordinate_b" "8403.019531 14762.502930 -997.968750" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_artika_base_v1_2s.zones.txt b/RaceTimer/configs/unloze_zones/ze_artika_base_v1_2s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_artika_base_v1_2s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ashen_keep_v0_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_ashen_keep_v0_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ashen_keep_v0_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_assassins_creed_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_assassins_creed_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_assassins_creed_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_atix_apocalypse_v1a.zones.txt b/RaceTimer/configs/unloze_zones/ze_atix_apocalypse_v1a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_atix_apocalypse_v1a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_atix_extinction_b7.zones.txt b/RaceTimer/configs/unloze_zones/ze_atix_extinction_b7.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_atix_extinction_b7.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_atix_helicopter_i3d_c1.zones.txt b/RaceTimer/configs/unloze_zones/ze_atix_helicopter_i3d_c1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_atix_helicopter_i3d_c1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_atix_panic_b3t.zones.txt b/RaceTimer/configs/unloze_zones/ze_atix_panic_b3t.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_atix_panic_b3t.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_atix_panic_b3t_halloween_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_atix_panic_b3t_halloween_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_atix_panic_b3t_halloween_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_avalanche_reboot_beta3.zones.txt b/RaceTimer/configs/unloze_zones/ze_avalanche_reboot_beta3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_avalanche_reboot_beta3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_avalanche_reboot_beta7.zones.txt b/RaceTimer/configs/unloze_zones/ze_avalanche_reboot_beta7.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_avalanche_reboot_beta7.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_aztec_temple_v3c.zones.txt b/RaceTimer/configs/unloze_zones/ze_aztec_temple_v3c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_aztec_temple_v3c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_barrage_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_barrage_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_barrage_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_bastion2_nav72.zones.txt b/RaceTimer/configs/unloze_zones/ze_bastion2_nav72.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_bastion2_nav72.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_bathroom_v2_5s.zones.txt b/RaceTimer/configs/unloze_zones/ze_bathroom_v2_5s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_bathroom_v2_5s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_biohazard2_rpd_v4e_004.zones.txt b/RaceTimer/configs/unloze_zones/ze_biohazard2_rpd_v4e_004.zones.txt new file mode 100644 index 00000000..8399df81 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_biohazard2_rpd_v4e_004.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-500.201080 1402.695068 -272.648560" + "cordinate_b" "-619.561646 1380.031250 -178.854034" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-682.863098 811.485779 483.477142" + "cordinate_b" "-706.789612 943.968750 578.510864" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_biohazard2_sewer_v4c.zones.txt b/RaceTimer/configs/unloze_zones/ze_biohazard2_sewer_v4c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_biohazard2_sewer_v4c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_biohazard_manor_v4a_004.zones.txt b/RaceTimer/configs/unloze_zones/ze_biohazard_manor_v4a_004.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_biohazard_manor_v4a_004.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_biohazard_v2b_004.zones.txt b/RaceTimer/configs/unloze_zones/ze_biohazard_v2b_004.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_biohazard_v2b_004.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_bioshock_v6_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_bioshock_v6_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_bioshock_v6_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_blackmesa_escape_final.zones.txt b/RaceTimer/configs/unloze_zones/ze_blackmesa_escape_final.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_blackmesa_escape_final.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_blackmesa_remix_v3_6.zones.txt b/RaceTimer/configs/unloze_zones/ze_blackmesa_remix_v3_6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_blackmesa_remix_v3_6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_bms_hl1.zones.txt b/RaceTimer/configs/unloze_zones/ze_bms_hl1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_bms_hl1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_boatescape6_remix_fix2.zones.txt b/RaceTimer/configs/unloze_zones/ze_boatescape6_remix_fix2.zones.txt new file mode 100644 index 00000000..2c23332e --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_boatescape6_remix_fix2.zones.txt @@ -0,0 +1,21 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-3617.589355 -14457.150391 517.771362" + "cordinate_b" "-3615.285645 -13184.031250 736.306763" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "319.975098 -6023.737305 525.127319" + "cordinate_b" "0.031250 -6130.321777 643.121948" + } + "3" + { + "name" "ZONE_PREFIX_ANTI_3" + "cordinate_a" "1144.735596 -7401.244629 528.498962" + "cordinate_b" "1024.031250 -7421.942383 620.416870" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_boredom_v543656.zones.txt b/RaceTimer/configs/unloze_zones/ze_boredom_v543656.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_boredom_v543656.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_bowser_in_the_fire_sea_v1e.zones.txt b/RaceTimer/configs/unloze_zones/ze_bowser_in_the_fire_sea_v1e.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_bowser_in_the_fire_sea_v1e.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_breakable_v1_8.zones.txt b/RaceTimer/configs/unloze_zones/ze_breakable_v1_8.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_breakable_v1_8.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_candy_star_a2.zones.txt b/RaceTimer/configs/unloze_zones/ze_candy_star_a2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_candy_star_a2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_castlevania_v1_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_castlevania_v1_3.zones.txt new file mode 100644 index 00000000..fdaad131 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_castlevania_v1_3.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "7798.993652 10520.004883 10790.587891" + "cordinate_b" "7432.344238 11263.968750 10861.314453" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "7417.639160 12943.886719 6276.191895" + "cordinate_b" "6821.601562 12944.315430 6720.260742" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_ccc_floator_mislands_v2s.zones.txt b/RaceTimer/configs/unloze_zones/ze_ccc_floator_mislands_v2s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ccc_floator_mislands_v2s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_chicken_lords_tower_b2mix5.zones.txt b/RaceTimer/configs/unloze_zones/ze_chicken_lords_tower_b2mix5.zones.txt new file mode 100644 index 00000000..5cd627dd --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_chicken_lords_tower_b2mix5.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "1335.805420 490.115784 3223.035889" + "cordinate_b" "1583.968750 476.714600 3444.392822" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "2341.790771 -230.796402 5227.303711" + "cordinate_b" "2399.968750 -227.740067 5290.478516" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_chicken_ranch_v2_1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_chicken_ranch_v2_1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_chicken_ranch_v2_1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_christmas_beta3f.zones.txt b/RaceTimer/configs/unloze_zones/ze_christmas_beta3f.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_christmas_beta3f.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_christmas_infection_v2_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_christmas_infection_v2_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_christmas_infection_v2_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_chroma_v0_4.zones.txt b/RaceTimer/configs/unloze_zones/ze_chroma_v0_4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_chroma_v0_4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_chronus_a1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_chronus_a1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_chronus_a1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_citadel_episodic_escape_v03.zones.txt b/RaceTimer/configs/unloze_zones/ze_citadel_episodic_escape_v03.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_citadel_episodic_escape_v03.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_colors_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_colors_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_colors_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_corrup_beta2a.zones.txt b/RaceTimer/configs/unloze_zones/ze_corrup_beta2a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_corrup_beta2a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_crashbandicoot_v1fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_crashbandicoot_v1fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_crashbandicoot_v1fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_crypt_v1_4s.zones.txt b/RaceTimer/configs/unloze_zones/ze_crypt_v1_4s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_crypt_v1_4s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_cursed_ruins_v2s.zones.txt b/RaceTimer/configs/unloze_zones/ze_cursed_ruins_v2s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_cursed_ruins_v2s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_cyberderp_v1_4.zones.txt b/RaceTimer/configs/unloze_zones/ze_cyberderp_v1_4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_cyberderp_v1_4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dangerous_waters_v1a.zones.txt b/RaceTimer/configs/unloze_zones/ze_dangerous_waters_v1a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dangerous_waters_v1a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_deadcore_s6.zones.txt b/RaceTimer/configs/unloze_zones/ze_deadcore_s6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_deadcore_s6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_death_star_escape_v4_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_death_star_escape_v4_3.zones.txt new file mode 100644 index 00000000..eb67c90b --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_death_star_escape_v4_3.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-3760.069824 48.031250 16.031250" + "cordinate_b" "-4767.968750 35.133137 180.064484" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "906.381409 -3152.031250 368.031250" + "cordinate_b" "916.278625 -3455.968750 575.822937" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_deepice_v8.zones.txt b/RaceTimer/configs/unloze_zones/ze_deepice_v8.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_deepice_v8.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_destruction_of_exorath_re3.zones.txt b/RaceTimer/configs/unloze_zones/ze_destruction_of_exorath_re3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_destruction_of_exorath_re3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dev_r4a.zones.txt b/RaceTimer/configs/unloze_zones/ze_dev_r4a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dev_r4a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_doom3_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_doom3_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_doom3_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_doom_v1_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_doom_v1_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_doom_v1_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dragonball_snakeway_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_dragonball_snakeway_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dragonball_snakeway_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dread.zones.txt b/RaceTimer/configs/unloze_zones/ze_dread.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dread.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dreamin_v1_8s.zones.txt b/RaceTimer/configs/unloze_zones/ze_dreamin_v1_8s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dreamin_v1_8s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix2.zones.txt b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix3.zones.txt b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dreamin_v2_1s_fix3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_dreamin_v2csstest.zones.txt b/RaceTimer/configs/unloze_zones/ze_dreamin_v2csstest.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_dreamin_v2csstest.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_echo_boatescape_extended.zones.txt b/RaceTimer/configs/unloze_zones/ze_echo_boatescape_extended.zones.txt new file mode 100644 index 00000000..e202f5a7 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_echo_boatescape_extended.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "!showzone_1" + "cordinate_a" "2076.517090 -13994.240234 512.031128" + "cordinate_b" "1062.027222 -13665.356445 244.443756" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_elevator_escape.zones.txt b/RaceTimer/configs/unloze_zones/ze_elevator_escape.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_elevator_escape.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ep2_plant_b1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_ep2_plant_b1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ep2_plant_b1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_epic_end_v4_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_epic_end_v4_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_epic_end_v4_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_eruption_escape_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_eruption_escape_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_eruption_escape_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_escape_horizon_c1v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_escape_horizon_c1v2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_escape_horizon_c1v2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_escape_stroggos_b4.zones.txt b/RaceTimer/configs/unloze_zones/ze_escape_stroggos_b4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_escape_stroggos_b4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_escape_the_eye_remix_finb.zones.txt b/RaceTimer/configs/unloze_zones/ze_escape_the_eye_remix_finb.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_escape_the_eye_remix_finb.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_escape_the_eye_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_escape_the_eye_v3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_escape_the_eye_v3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_eternal_void_v3_5a.zones.txt b/RaceTimer/configs/unloze_zones/ze_eternal_void_v3_5a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_eternal_void_v3_5a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_evernight_a3_4_css2.zones.txt b/RaceTimer/configs/unloze_zones/ze_evernight_a3_4_css2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_evernight_a3_4_css2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_exchange_innovation_v1bs.zones.txt b/RaceTimer/configs/unloze_zones/ze_exchange_innovation_v1bs.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_exchange_innovation_v1bs.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_fapescape_rote_v1_3f.zones.txt b/RaceTimer/configs/unloze_zones/ze_fapescape_rote_v1_3f.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_fapescape_rote_v1_3f.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_fapescape_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_fapescape_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_fapescape_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_fast_escape_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_fast_escape_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_fast_escape_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffvii_cosmo_canyon_v5fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffvii_cosmo_canyon_v5fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffvii_cosmo_canyon_v5fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffvii_mako_reactor_v3_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffvii_mako_reactor_v3_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffvii_mako_reactor_v3_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffvii_mako_reactor_v6_b08.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffvii_mako_reactor_v6_b08.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffvii_mako_reactor_v6_b08.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffvii_temple_ancient_v3_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffvii_temple_ancient_v3_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffvii_temple_ancient_v3_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_feywood_b3_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_feywood_b3_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_feywood_b3_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_paramina_rift_v1_4.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_paramina_rift_v1_4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_paramina_rift_v1_4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_ridorana_cataract_t4.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_ridorana_cataract_t4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_ridorana_cataract_t4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_ridorana_cataract_t5_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_ridorana_cataract_t5_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_ridorana_cataract_t5_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v5_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v5_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v5_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v7_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v7_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v7_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v8zeta1.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v8zeta1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxii_westersand_v8zeta1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxiv_wanderers_palace_v4_5s.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxiv_wanderers_palace_v4_5s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxiv_wanderers_palace_v4_5s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ffxiv_wanderers_palace_v5_2f.zones.txt b/RaceTimer/configs/unloze_zones/ze_ffxiv_wanderers_palace_v5_2f.zones.txt new file mode 100644 index 00000000..73123fcc --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ffxiv_wanderers_palace_v5_2f.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "UNASSIGNED_NAME_1" + "cordinate_a" "7830.483398 1748.893311 1388.297241" + "cordinate_b" "7520.031250 1631.786377 1439.730347" + } + "2" + { + "name" "UNASSIGNED_NAME_2" + "cordinate_a" "7721.116699 579.927551 1406.663330" + "cordinate_b" "7520.031250 760.548950 1378.882690" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_firewall_laboratory_part1_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_firewall_laboratory_part1_3.zones.txt new file mode 100644 index 00000000..e3f6e43c --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_firewall_laboratory_part1_3.zones.txt @@ -0,0 +1,27 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "7264.031250 -8513.031250 -735.955688" + "cordinate_b" "7759.968750 -8500.865234 -581.866577" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "24.001068 -24.031250 64.031250" + "cordinate_b" "503.968781 -99.304337 125.926468" + } + "3" + { + "name" "ZONE_PREFIX_START_3" + "cordinate_a" "16.031250 487.968750 64.031250" + "cordinate_b" "-0.459356 432.031250 157.473221" + } + "4" + { + "name" "ZONE_PREFIX_RACE_4" + "cordinate_a" "-323.468750 1633.383667 1280.031250" + "cordinate_b" "-327.916748 1223.031250 1393.174927" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_firewall_laboratory_part2_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_firewall_laboratory_part2_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_firewall_laboratory_part2_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_flying_world_v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_flying_world_v2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_flying_world_v2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_flying_zombies_b3fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_flying_zombies_b3fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_flying_zombies_b3fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_forgotten_facility.zones.txt b/RaceTimer/configs/unloze_zones/ze_forgotten_facility.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_forgotten_facility.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_frostdrake_tower_v1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_frostdrake_tower_v1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_frostdrake_tower_v1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_frozentemple_b8_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_frozentemple_b8_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_frozentemple_b8_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_games_v2_2a.zones.txt b/RaceTimer/configs/unloze_zones/ze_games_v2_2a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_games_v2_2a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_gameshow_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_gameshow_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_gameshow_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_gargantua_v2_0.zones.txt b/RaceTimer/configs/unloze_zones/ze_gargantua_v2_0.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_gargantua_v2_0.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_genso_of_last_b2.zones.txt b/RaceTimer/configs/unloze_zones/ze_genso_of_last_b2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_genso_of_last_b2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_genso_of_last_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_genso_of_last_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_genso_of_last_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_get_to_the_chopper_undead_6.zones.txt b/RaceTimer/configs/unloze_zones/ze_get_to_the_chopper_undead_6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_get_to_the_chopper_undead_6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_gibletz_establishment_b6.zones.txt b/RaceTimer/configs/unloze_zones/ze_gibletz_establishment_b6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_gibletz_establishment_b6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_gods_wrath_v3_8b.zones.txt b/RaceTimer/configs/unloze_zones/ze_gods_wrath_v3_8b.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_gods_wrath_v3_8b.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_got_the_north_b4.zones.txt b/RaceTimer/configs/unloze_zones/ze_got_the_north_b4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_got_the_north_b4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_grand_boat_escape_v1_9.zones.txt b/RaceTimer/configs/unloze_zones/ze_grand_boat_escape_v1_9.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_grand_boat_escape_v1_9.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_grau_s2.zones.txt b/RaceTimer/configs/unloze_zones/ze_grau_s2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_grau_s2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_greencity_v1_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_greencity_v1_1.zones.txt new file mode 100644 index 00000000..8ce8bc0c --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_greencity_v1_1.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "/showzones_1" + "cordinate_a" "3667.777588 2266.319824 93.281250" + "cordinate_b" "3307.697998 3164.229736 260.289673" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_grey_b2_4.zones.txt b/RaceTimer/configs/unloze_zones/ze_grey_b2_4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_grey_b2_4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_halloween_house_b4s.zones.txt b/RaceTimer/configs/unloze_zones/ze_halloween_house_b4s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_halloween_house_b4s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_halo_poa.zones.txt b/RaceTimer/configs/unloze_zones/ze_halo_poa.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_halo_poa.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_harry_potter_v2_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_harry_potter_v2_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_harry_potter_v2_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_haunted_lab_escape_v2c.zones.txt b/RaceTimer/configs/unloze_zones/ze_haunted_lab_escape_v2c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_haunted_lab_escape_v2c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hell_escape_rc1.zones.txt b/RaceTimer/configs/unloze_zones/ze_hell_escape_rc1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hell_escape_rc1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hellz_rescuebase_v5_b1.zones.txt b/RaceTimer/configs/unloze_zones/ze_hellz_rescuebase_v5_b1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hellz_rescuebase_v5_b1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hidden_fortress_v1_0.zones.txt b/RaceTimer/configs/unloze_zones/ze_hidden_fortress_v1_0.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hidden_fortress_v1_0.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hidden_temple_v2_5d.zones.txt b/RaceTimer/configs/unloze_zones/ze_hidden_temple_v2_5d.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hidden_temple_v2_5d.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hold_em_v10.zones.txt b/RaceTimer/configs/unloze_zones/ze_hold_em_v10.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hold_em_v10.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_holmes_escape_pf_2014c.zones.txt b/RaceTimer/configs/unloze_zones/ze_holmes_escape_pf_2014c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_holmes_escape_pf_2014c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_horizon_sky_escape_b1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_horizon_sky_escape_b1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_horizon_sky_escape_b1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hsc_a4_5.zones.txt b/RaceTimer/configs/unloze_zones/ze_hsc_a4_5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hsc_a4_5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hscready5u.zones.txt b/RaceTimer/configs/unloze_zones/ze_hscready5u.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hscready5u.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_hypernova_v2fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_hypernova_v2fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_hypernova_v2fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_iamlegend_b2.zones.txt b/RaceTimer/configs/unloze_zones/ze_iamlegend_b2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_iamlegend_b2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_icecap_derp_unloze_v420.zones.txt b/RaceTimer/configs/unloze_zones/ze_icecap_derp_unloze_v420.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_icecap_derp_unloze_v420.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_icecap_escape_v5.zones.txt b/RaceTimer/configs/unloze_zones/ze_icecap_escape_v5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_icecap_escape_v5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_icecave_escape_v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_icecave_escape_v2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_icecave_escape_v2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_illya_b2.zones.txt b/RaceTimer/configs/unloze_zones/ze_illya_b2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_illya_b2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_inboxed_v1_5.zones.txt b/RaceTimer/configs/unloze_zones/ze_inboxed_v1_5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_inboxed_v1_5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_indiana_jones_v4a_004.zones.txt b/RaceTimer/configs/unloze_zones/ze_indiana_jones_v4a_004.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_indiana_jones_v4a_004.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_industrial_dejavu_v3_3_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_industrial_dejavu_v3_3_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_industrial_dejavu_v3_3_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_infected_sewers_v6_5.zones.txt b/RaceTimer/configs/unloze_zones/ze_infected_sewers_v6_5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_infected_sewers_v6_5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_infected_tramway_v3_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_infected_tramway_v3_3.zones.txt new file mode 100644 index 00000000..9c10a07e --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_infected_tramway_v3_3.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-511.968750 239.968750 1024.031250" + "cordinate_b" "-261.162689 255.968750 1148.112793" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-1909.788452 4053.781494 1032.739868" + "cordinate_b" "-1675.333008 4079.968750 1128.356079" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_infested-industry_v2_b10.zones.txt b/RaceTimer/configs/unloze_zones/ze_infested-industry_v2_b10.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_infested-industry_v2_b10.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_infiltration_final.zones.txt b/RaceTimer/configs/unloze_zones/ze_infiltration_final.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_infiltration_final.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_interception_b4.zones.txt b/RaceTimer/configs/unloze_zones/ze_interception_b4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_interception_b4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_isla_nublar_v2_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_isla_nublar_v2_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_isla_nublar_v2_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_johnny_nukem_b8_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_johnny_nukem_b8_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_johnny_nukem_b8_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_journey_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_journey_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_journey_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_jungle_escape_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_jungle_escape_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_jungle_escape_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_jungleescape_b3_6.zones.txt b/RaceTimer/configs/unloze_zones/ze_jungleescape_b3_6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_jungleescape_b3_6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_jurassic_park_story_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_jurassic_park_story_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_jurassic_park_story_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_jurassicpark_c1v4.zones.txt b/RaceTimer/configs/unloze_zones/ze_jurassicpark_c1v4.zones.txt new file mode 100644 index 00000000..fd435880 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_jurassicpark_c1v4.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_RACE_1" + "cordinate_a" "-4691.276367 -8051.684570 -1224.885132" + "cordinate_b" "-5774.164062 -8064.963379 -906.952393" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_jurassicpark_escape_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_jurassicpark_escape_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_jurassicpark_escape_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_jurassicpark_v2_10_ob.zones.txt b/RaceTimer/configs/unloze_zones/ze_jurassicpark_v2_10_ob.zones.txt new file mode 100644 index 00000000..afa900b8 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_jurassicpark_v2_10_ob.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_RACE_1" + "cordinate_a" "-4686.136230 -8052.270508 -1231.733154" + "cordinate_b" "-5858.185059 -8140.507812 -751.693481" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_knife_fun.zones.txt b/RaceTimer/configs/unloze_zones/ze_knife_fun.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_knife_fun.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_kraznov_poopata.zones.txt b/RaceTimer/configs/unloze_zones/ze_kraznov_poopata.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_kraznov_poopata.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_l0v0l_v1_4.zones.txt b/RaceTimer/configs/unloze_zones/ze_l0v0l_v1_4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_l0v0l_v1_4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_last_man_standing_v4_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_last_man_standing_v4_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_last_man_standing_v4_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_legoland_crackheads_v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_legoland_crackheads_v2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_legoland_crackheads_v2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_licciana_escape_v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_licciana_escape_v2.zones.txt new file mode 100644 index 00000000..c43843ea --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_licciana_escape_v2.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_RACE_1" + "cordinate_a" "2954.677002 3171.441650 1228.961792" + "cordinate_b" "2859.193604 2847.104248 1428.512329" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_lila_panic_escape_v3_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_lila_panic_escape_v3_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lila_panic_escape_v3_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lolxd_final_s.zones.txt b/RaceTimer/configs/unloze_zones/ze_lolxd_final_s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lolxd_final_s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_helms_deep_v5.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_helms_deep_v5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_helms_deep_v5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_isengard_v2_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_isengard_v2_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_isengard_v2_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_minas_tiret_v4_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_minas_tiret_v4_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_minas_tiret_v4_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_minas_tirith_v2_2fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_minas_tirith_v2_2fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_minas_tirith_v2_2fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_minas_tirith_v3_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_minas_tirith_v3_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_minas_tirith_v3_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_mines_of_moria_v6_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_mines_of_moria_v6_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_mines_of_moria_v6_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_mount_doom_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_mount_doom_v3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_mount_doom_v3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_lotr_mount_doom_v4_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_lotr_mount_doom_v4_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_lotr_mount_doom_v4_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_luck_matters_v1ds.zones.txt b/RaceTimer/configs/unloze_zones/ze_luck_matters_v1ds.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_luck_matters_v1ds.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_luigismanison_fix2.zones.txt b/RaceTimer/configs/unloze_zones/ze_luigismanison_fix2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_luigismanison_fix2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_madness_v2_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_madness_v2_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_madness_v2_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_magala_castle_final_s.zones.txt b/RaceTimer/configs/unloze_zones/ze_magala_castle_final_s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_magala_castle_final_s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_magic_carpet_v1_0.zones.txt b/RaceTimer/configs/unloze_zones/ze_magic_carpet_v1_0.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_magic_carpet_v1_0.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_mario_tower_v4.zones.txt b/RaceTimer/configs/unloze_zones/ze_mario_tower_v4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_mario_tower_v4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_meatropolis_v1_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_meatropolis_v1_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_meatropolis_v1_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_minecraft_adventure_v1_2c.zones.txt b/RaceTimer/configs/unloze_zones/ze_minecraft_adventure_v1_2c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_minecraft_adventure_v1_2c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_minecraft_v1_1a.zones.txt b/RaceTimer/configs/unloze_zones/ze_minecraft_v1_1a.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_minecraft_v1_1a.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_mirrors_edge_reborn_v4_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_mirrors_edge_reborn_v4_3.zones.txt new file mode 100644 index 00000000..e7f7c044 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_mirrors_edge_reborn_v4_3.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "763.873779 527.683777 466.347168" + "cordinate_b" "783.968750 1453.145020 911.969971" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-75.650269 -3095.832764 -483.121735" + "cordinate_b" "-171.059433 -2965.041992 -416.031250" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_mist_v1_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_mist_v1_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_mist_v1_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_moltentemple_p1t2.zones.txt b/RaceTimer/configs/unloze_zones/ze_moltentemple_p1t2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_moltentemple_p1t2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_moon_base_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_moon_base_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_moon_base_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_mountain_escape_v5_zy.zones.txt b/RaceTimer/configs/unloze_zones/ze_mountain_escape_v5_zy.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_mountain_escape_v5_zy.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_mytex_escape_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_mytex_escape_v3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_mytex_escape_v3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_naruto_v2_6e.zones.txt b/RaceTimer/configs/unloze_zones/ze_naruto_v2_6e.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_naruto_v2_6e.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_negative_legacy_xf4s.zones.txt b/RaceTimer/configs/unloze_zones/ze_negative_legacy_xf4s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_negative_legacy_xf4s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_nightmare_dimension_v2_6fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_nightmare_dimension_v2_6fix.zones.txt new file mode 100644 index 00000000..4743b0a9 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_nightmare_dimension_v2_6fix.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "2634.072510 1444.085205 59.771187" + "cordinate_b" "2648.031250 1648.020752 244.309586" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "3408.626709 1388.310425 439.569885" + "cordinate_b" "3440.111328 1655.702148 346.571075" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_noir_b1.zones.txt b/RaceTimer/configs/unloze_zones/ze_noir_b1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_noir_b1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_notredame_v1_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_notredame_v1_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_notredame_v1_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_nuke_v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_nuke_v2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_nuke_v2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ny_marathon_v4_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_ny_marathon_v4_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ny_marathon_v4_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ocean_base_escape_v4.zones.txt b/RaceTimer/configs/unloze_zones/ze_ocean_base_escape_v4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ocean_base_escape_v4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_omega_b3.zones.txt b/RaceTimer/configs/unloze_zones/ze_omega_b3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_omega_b3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_onahole_v3s.zones.txt b/RaceTimer/configs/unloze_zones/ze_onahole_v3s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_onahole_v3s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_onahole_v3s_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_onahole_v3s_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_onahole_v3s_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_otakuroom_v5_6fs.zones.txt b/RaceTimer/configs/unloze_zones/ze_otakuroom_v5_6fs.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_otakuroom_v5_6fs.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_palm_island_nav72.zones.txt b/RaceTimer/configs/unloze_zones/ze_palm_island_nav72.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_palm_island_nav72.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_paper_escaper_v7_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_paper_escaper_v7_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_paper_escaper_v7_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_paradise_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_paradise_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_paradise_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_paranoid_rezurrection_v11_9.zones.txt b/RaceTimer/configs/unloze_zones/ze_paranoid_rezurrection_v11_9.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_paranoid_rezurrection_v11_9.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_parking_v3_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_parking_v3_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_parking_v3_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_parkour_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_parkour_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_parkour_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pidaras_v1_4fix3.zones.txt b/RaceTimer/configs/unloze_zones/ze_pidaras_v1_4fix3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pidaras_v1_4fix3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pidaras_v1_5fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_pidaras_v1_5fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pidaras_v1_5fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pirates_port_royal_v3_6.zones.txt b/RaceTimer/configs/unloze_zones/ze_pirates_port_royal_v3_6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pirates_port_royal_v3_6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pirates_port_royal_v5_4s2.zones.txt b/RaceTimer/configs/unloze_zones/ze_pirates_port_royal_v5_4s2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pirates_port_royal_v5_4s2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pitchblack_v5.zones.txt b/RaceTimer/configs/unloze_zones/ze_pitchblack_v5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pitchblack_v5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pizzatime_v4s.zones.txt b/RaceTimer/configs/unloze_zones/ze_pizzatime_v4s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pizzatime_v4s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v7_2s.zones.txt b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v7_2s.zones.txt new file mode 100644 index 00000000..ff129d99 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v7_2s.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "kaka :cute:_1" + "cordinate_a" "-41.158943 -8098.244141 117.293800" + "cordinate_b" "-428.347198 -7762.332520 -8.188950" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v8_6s_fix2.zones.txt b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v8_6s_fix2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v8_6s_fix2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v9_1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v9_1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v9_1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v9s_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v9s_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pkmn_adventure_v9s_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_pokemon_adventure_v1_1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_pokemon_adventure_v1_1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_pokemon_adventure_v1_1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ponchermonkey_shooter_v3_5.zones.txt b/RaceTimer/configs/unloze_zones/ze_ponchermonkey_shooter_v3_5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ponchermonkey_shooter_v3_5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_portal_story_v3_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_portal_story_v3_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_portal_story_v3_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_potc_iv_v6_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_potc_iv_v6_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_potc_iv_v6_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_potc_v3_4fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_potc_v3_4fix.zones.txt new file mode 100644 index 00000000..24b2605c --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_potc_v3_4fix.zones.txt @@ -0,0 +1,63 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "531.414612 750.121948 1604.744141" + "cordinate_b" "843.866211 763.045593 1834.820557" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-2715.901611 3583.326172 939.412231" + "cordinate_b" "-2512.851318 3578.678467 1100.556274" + } + "3" + { + "name" "ZONE_PREFIX_START_3" + "cordinate_a" "164.823608 -132.433350 1596.035400" + "cordinate_b" "160.384094 596.506897 1821.401489" + } + "4" + { + "name" "ZONE_PREFIX_RACE_4" + "cordinate_a" "-4017.573975 1752.091187 1119.439209" + "cordinate_b" "-4164.717285 1817.626221 1223.181030" + } + "5" + { + "name" "ZONE_PREFIX_START_5" + "cordinate_a" "-2518.287109 4044.146973 936.746460" + "cordinate_b" "-2661.117188 4031.591064 1063.462036" + } + "6" + { + "name" "ZONE_PREFIX_RACE_6" + "cordinate_a" "-4254.119141 12520.091797 172.741440" + "cordinate_b" "-4256.752930 12671.968750 329.715088" + } + "7" + { + "name" "ZONE_PREFIX_START_7" + "cordinate_a" "-3917.385010 2559.104004 1075.646973" + "cordinate_b" "-4345.800781 2531.905762 1151.136841" + } + "8" + { + "name" "ZONE_PREFIX_RACE_8" + "cordinate_a" "-4202.028320 12509.344727 164.178192" + "cordinate_b" "-4238.025879 12671.968750 301.115967" + } + "9" + { + "name" "ZONE_PREFIX_START_9" + "cordinate_a" "-4322.507812 12512.103516 153.888336" + "cordinate_b" "-4316.031250 12640.849609 329.507507" + } + "10" + { + "name" "ZONE_PREFIX_RACE_10" + "cordinate_a" "13861.782227 8169.396973 -1312.416016" + "cordinate_b" "13855.793945 7176.205566 -1179.355591" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_predator_ultimate_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_predator_ultimate_v3.zones.txt new file mode 100644 index 00000000..b6d6414d --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_predator_ultimate_v3.zones.txt @@ -0,0 +1,39 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "4864.302734 -19.353466 484.819885" + "cordinate_b" "4632.683105 -31.968750 644.553467" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "6482.730469 9024.819336 -2105.159180" + "cordinate_b" "6144.031250 9086.208984 -2013.764404" + } + "3" + { + "name" "ZONE_PREFIX_START_3" + "cordinate_a" "-9668.946289 -1626.251465 18.234917" + "cordinate_b" "-10150.549805 -1609.491821 352.397827" + } + "4" + { + "name" "ZONE_PREFIX_RACE_4" + "cordinate_a" "-11142.253906 4222.939453 -212.106400" + "cordinate_b" "-11136.031250 4003.011719 -82.128883" + } + "5" + { + "name" "ZONE_PREFIX_START_5" + "cordinate_a" "227.427216 11348.521484 11283.157227" + "cordinate_b" "60.715076 11381.099609 11408.035156" + } + "6" + { + "name" "ZONE_PREFIX_RACE_6" + "cordinate_a" "-100.570412 11180.837891 12358.188477" + "cordinate_b" "-36.708153 11283.473633 12293.799805" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_project_alcaria_v1_5s.zones.txt b/RaceTimer/configs/unloze_zones/ze_project_alcaria_v1_5s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_project_alcaria_v1_5s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_prototype_v2.zones.txt b/RaceTimer/configs/unloze_zones/ze_prototype_v2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_prototype_v2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_puta.zones.txt b/RaceTimer/configs/unloze_zones/ze_puta.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_puta.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_raccoon_facility_v6b.zones.txt b/RaceTimer/configs/unloze_zones/ze_raccoon_facility_v6b.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_raccoon_facility_v6b.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_random_escape_b7_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_random_escape_b7_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_random_escape_b7_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_random_v10_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_random_v10_fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_random_v10_fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_random_v9.zones.txt b/RaceTimer/configs/unloze_zones/ze_random_v9.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_random_v9.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ravenholm_v04.zones.txt b/RaceTimer/configs/unloze_zones/ze_ravenholm_v04.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ravenholm_v04.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_re4_castle_a3.zones.txt b/RaceTimer/configs/unloze_zones/ze_re4_castle_a3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_re4_castle_a3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_resonance_cascade_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_resonance_cascade_v3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_resonance_cascade_v3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_river_escape_v3_fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_river_escape_v3_fix.zones.txt new file mode 100644 index 00000000..adc9e6d0 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_river_escape_v3_fix.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-9995.543945 -769.466980 468.092010" + "cordinate_b" "-9990.384766 -1166.148804 603.832886" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-7508.133301 -743.802551 993.998230" + "cordinate_b" "-7121.054199 -825.371765 1004.495544" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_rizomata_s1_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_rizomata_s1_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_rizomata_s1_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_rooftop_runaway1_v4.zones.txt b/RaceTimer/configs/unloze_zones/ze_rooftop_runaway1_v4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_rooftop_runaway1_v4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_rooftop_runaway2_v5.zones.txt b/RaceTimer/configs/unloze_zones/ze_rooftop_runaway2_v5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_rooftop_runaway2_v5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_rtcw_ominous_rumors_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_rtcw_ominous_rumors_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_rtcw_ominous_rumors_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_s_a_m_a40_css.zones.txt b/RaceTimer/configs/unloze_zones/ze_s_a_m_a40_css.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_s_a_m_a40_css.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sandstorm_f1.zones.txt b/RaceTimer/configs/unloze_zones/ze_sandstorm_f1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sandstorm_f1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_santassination_css2.zones.txt b/RaceTimer/configs/unloze_zones/ze_santassination_css2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_santassination_css2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_saw_final.zones.txt b/RaceTimer/configs/unloze_zones/ze_saw_final.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_saw_final.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sc_turtles_v5fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_sc_turtles_v5fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sc_turtles_v5fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sdp_30_seconds_remake_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_sdp_30_seconds_remake_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sdp_30_seconds_remake_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_serpentis_temple_v1_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_serpentis_temple_v1_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_serpentis_temple_v1_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sewer_escape_2012_b1.zones.txt b/RaceTimer/configs/unloze_zones/ze_sewer_escape_2012_b1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sewer_escape_2012_b1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sg1_missions_v2_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_sg1_missions_v2_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sg1_missions_v2_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_shaun_of_the_dead_b3.zones.txt b/RaceTimer/configs/unloze_zones/ze_shaun_of_the_dead_b3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_shaun_of_the_dead_b3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_shaurma_v3_b06.zones.txt b/RaceTimer/configs/unloze_zones/ze_shaurma_v3_b06.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_shaurma_v3_b06.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_showdown_v7_dfix.zones.txt b/RaceTimer/configs/unloze_zones/ze_showdown_v7_dfix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_showdown_v7_dfix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_shroomforest2_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_shroomforest2_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_shroomforest2_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_shroomforest3_b6_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_shroomforest3_b6_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_shroomforest3_b6_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_shroomforest_v4_5.zones.txt b/RaceTimer/configs/unloze_zones/ze_shroomforest_v4_5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_shroomforest_v4_5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_siberia_1990_v1_2c.zones.txt b/RaceTimer/configs/unloze_zones/ze_siberia_1990_v1_2c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_siberia_1990_v1_2c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_skill_escape_v09s.zones.txt b/RaceTimer/configs/unloze_zones/ze_skill_escape_v09s.zones.txt new file mode 100644 index 00000000..f5f4703b --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_skill_escape_v09s.zones.txt @@ -0,0 +1,27 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-7662.641602 -375.836761 -3579.065430" + "cordinate_b" "-7624.031250 111.112762 -3356.603516" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-7580.333984 276.152802 -2997.460449" + "cordinate_b" "-7622.709473 27.901836 -3069.968750" + } + "3" + { + "name" "ZONE_PREFIX_ANTI_3" + "cordinate_a" "-7731.657715 98.023796 -3215.852539" + "cordinate_b" "-7624.031250 -87.564278 -3206.800781" + } + "4" + { + "name" "ZONE_PREFIX_START_4" + "cordinate_a" "4451.014160 3588.802002 -2552.973877" + "cordinate_b" "4426.031250 3951.899414 -2349.776855" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_sky_athletic_v5_final.zones.txt b/RaceTimer/configs/unloze_zones/ze_sky_athletic_v5_final.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sky_athletic_v5_final.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_slender_escape_b4.zones.txt b/RaceTimer/configs/unloze_zones/ze_slender_escape_b4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_slender_escape_b4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_snowcrash_escape_vfixed1.zones.txt b/RaceTimer/configs/unloze_zones/ze_snowcrash_escape_vfixed1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_snowcrash_escape_vfixed1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sorrento_escape_v5.zones.txt b/RaceTimer/configs/unloze_zones/ze_sorrento_escape_v5.zones.txt new file mode 100644 index 00000000..ff6e5c84 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sorrento_escape_v5.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_RACE_1" + "cordinate_a" "-2598.150879 -1442.184570 288.888519" + "cordinate_b" "-2304.031250 -1526.546143 367.755341" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_sorrento_night_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_sorrento_night_v3.zones.txt new file mode 100644 index 00000000..ed44e21c --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sorrento_night_v3.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_RACE_1" + "cordinate_a" "-2593.687500 -1462.516113 336.323975" + "cordinate_b" "-2304.031250 -1496.574951 373.792053" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_sorrtento_resonate_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_sorrtento_resonate_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sorrtento_resonate_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_space_flight_v1_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_space_flight_v1_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_space_flight_v1_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sst_v2_b2.zones.txt b/RaceTimer/configs/unloze_zones/ze_sst_v2_b2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sst_v2_b2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_stalker_ultimate_v2_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_stalker_ultimate_v2_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_stalker_ultimate_v2_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_stalker_ultimate_v3.zones.txt b/RaceTimer/configs/unloze_zones/ze_stalker_ultimate_v3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_stalker_ultimate_v3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_stargate_escape_v8.zones.txt b/RaceTimer/configs/unloze_zones/ze_stargate_escape_v8.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_stargate_escape_v8.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_starwars_v2fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_starwars_v2fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_starwars_v2fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_stone_pit_v2_b5.zones.txt b/RaceTimer/configs/unloze_zones/ze_stone_pit_v2_b5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_stone_pit_v2_b5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_strange_escape_b3.zones.txt b/RaceTimer/configs/unloze_zones/ze_strange_escape_b3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_strange_escape_b3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sunkentemple_v3_1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_sunkentemple_v3_1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sunkentemple_v3_1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_sunlight_v2_0.zones.txt b/RaceTimer/configs/unloze_zones/ze_sunlight_v2_0.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_sunlight_v2_0.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b5.zones.txt b/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b6.zones.txt b/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b6.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b6.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b7.zones.txt b/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b7.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_super_mario_64_v2_b7.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_surf_facility_v2_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_surf_facility_v2_3.zones.txt new file mode 100644 index 00000000..7733fe1a --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_surf_facility_v2_3.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "UNASSIGNED_NAME_1" + "cordinate_a" "-4115.567383 -11670.635742 12243.471680" + "cordinate_b" "-4096.031250 -11871.749023 12449.857422" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_surf_facility_v3_pre2.zones.txt b/RaceTimer/configs/unloze_zones/ze_surf_facility_v3_pre2.zones.txt new file mode 100644 index 00000000..db1459eb --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_surf_facility_v3_pre2.zones.txt @@ -0,0 +1,75 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-4112.031250 -11674.993164 12288.031250" + "cordinate_b" "-4096.031250 -11861.636719 12427.751953" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-2146.536377 -8479.392578 7919.763672" + "cordinate_b" "-2969.939453 -7598.025879 7790.378906" + } + "3" + { + "name" "ZONE_PREFIX_START_3" + "cordinate_a" "3461.424316 -8977.341797 1474.392822" + "cordinate_b" "3690.418945 -8974.226562 1602.946167" + } + "4" + { + "name" "ZONE_PREFIX_RACE_4" + "cordinate_a" "3084.427002 -9652.000977 132.681549" + "cordinate_b" "4095.968750 -9629.299805 1013.792725" + } + "5" + { + "name" "ZONE_PREFIX_START_5" + "cordinate_a" "3979.295898 -13815.175781 3113.643555" + "cordinate_b" "4188.131836 -13792.031250 3234.797607" + } + "6" + { + "name" "ZONE_PREFIX_RACE_6" + "cordinate_a" "3850.580566 998.670959 2527.969971" + "cordinate_b" "4351.968750 1017.399780 3338.358154" + } + "7" + { + "name" "ZONE_PREFIX_START_7" + "cordinate_a" "2674.829590 -1695.313232 9942.547852" + "cordinate_b" "2315.468018 -2303.968750 9889.537109" + } + "8" + { + "name" "ZONE_PREFIX_RACE_8" + "cordinate_a" "-183.198059 -3185.997803 3494.372070" + "cordinate_b" "-160.787003 -4191.968750 4309.390625" + } + "9" + { + "name" "ZONE_PREFIX_START_9" + "cordinate_a" "10578.589844 -10932.616211 13025.443359" + "cordinate_b" "10932.647461 -10560.031250 13118.424805" + } + "10" + { + "name" "ZONE_PREFIX_RACE_10" + "cordinate_a" "10512.177734 -8357.791016 10527.742188" + "cordinate_b" "11007.968750 -8349.796875 11058.904297" + } + "11" + { + "name" "ZONE_PREFIX_START_11" + "cordinate_a" "-8880.031250 -5478.771484 1584.031250" + "cordinate_b" "-9439.968750 -5485.469238 1730.898315" + } + "12" + { + "name" "ZONE_PREFIX_RACE_12" + "cordinate_a" "-12304.001953 -3198.457764 -2367.968750" + "cordinate_b" "-13305.505859 -3239.786865 -1536.031250" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_surf_gypt_v1_3s.zones.txt b/RaceTimer/configs/unloze_zones/ze_surf_gypt_v1_3s.zones.txt new file mode 100644 index 00000000..f312fef4 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_surf_gypt_v1_3s.zones.txt @@ -0,0 +1,9 @@ +"Zones" +{ + "1" + { + "name" "UNASSIGNED_NAME_1" + "cordinate_a" "3876.187256 -270.302032 -1144.468750" + "cordinate_b" "3782.022705 -364.789795 -918.494385" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_surf_sahok_t5_9.zones.txt b/RaceTimer/configs/unloze_zones/ze_surf_sahok_t5_9.zones.txt new file mode 100644 index 00000000..d01ee6f5 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_surf_sahok_t5_9.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-4093.032959 13160.932617 -745.834229" + "cordinate_b" "-3394.254639 13988.591797 -526.199341" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-3628.065674 1414.040771 -3220.059570" + "cordinate_b" "-3801.655273 1352.031250 -3040.003418" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_surf_vortex_v1_9s.zones.txt b/RaceTimer/configs/unloze_zones/ze_surf_vortex_v1_9s.zones.txt new file mode 100644 index 00000000..b071ec84 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_surf_vortex_v1_9s.zones.txt @@ -0,0 +1,63 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "1624.576172 5321.939453 600.159912" + "cordinate_b" "1583.223267 6443.056641 256.031250" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "3082.576416 944.916321 -209.118530" + "cordinate_b" "3056.031250 1350.278931 211.404343" + } + "3" + { + "name" "ZONE_PREFIX_START_3" + "cordinate_a" "-1016.021240 -356.147919 312.426086" + "cordinate_b" "-994.744873 -1340.276001 64.031250" + } + "4" + { + "name" "ZONE_PREFIX_RACE_4" + "cordinate_a" "3115.065674 -1155.920532 -3959.063965" + "cordinate_b" "3530.500732 -1148.031250 -3558.645996" + } + "5" + { + "name" "ZONE_PREFIX_START_5" + "cordinate_a" "-871.813416 -8127.407715 381.427124" + "cordinate_b" "-1860.267212 -8108.125488 64.031250" + } + "6" + { + "name" "ZONE_PREFIX_RACE_6" + "cordinate_a" "-4683.611328 10674.083008 1775.853271" + "cordinate_b" "-3608.610840 10707.968750 2766.410889" + } + "7" + { + "name" "ZONE_PREFIX_START_7" + "cordinate_a" "1406.116943 8104.065430 578.169189" + "cordinate_b" "1390.885742 9076.285156 280.031250" + } + "8" + { + "name" "ZONE_PREFIX_RACE_8" + "cordinate_a" "8779.618164 13033.549805 -1112.903076" + "cordinate_b" "9643.614258 13828.768555 -1028.031250" + } + "9" + { + "name" "ZONE_PREFIX_START_9" + "cordinate_a" "11584.219727 -7695.478516 1218.860840" + "cordinate_b" "10653.465820 -7750.318359 640.031250" + } + "10" + { + "name" "ZONE_PREFIX_RACE_10" + "cordinate_a" "10741.878906 284.899536 -3524.390869" + "cordinate_b" "11516.975586 319.617035 -2877.567627" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_survivors_b5.zones.txt b/RaceTimer/configs/unloze_zones/ze_survivors_b5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_survivors_b5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_temple_raider_b4.zones.txt b/RaceTimer/configs/unloze_zones/ze_temple_raider_b4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_temple_raider_b4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_temple_v2_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_temple_v2_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_temple_v2_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ten_keys_b2fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_ten_keys_b2fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ten_keys_b2fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_tesv_skyrim_v4fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_tesv_skyrim_v4fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_tesv_skyrim_v4fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_thelostworld_redux_101jj.zones.txt b/RaceTimer/configs/unloze_zones/ze_thelostworld_redux_101jj.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_thelostworld_redux_101jj.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_thousand_steps_b7c.zones.txt b/RaceTimer/configs/unloze_zones/ze_thousand_steps_b7c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_thousand_steps_b7c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_three_eyes_b1s.zones.txt b/RaceTimer/configs/unloze_zones/ze_three_eyes_b1s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_three_eyes_b1s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_tilex_ultimate_v2_13s_fix2.zones.txt b/RaceTimer/configs/unloze_zones/ze_tilex_ultimate_v2_13s_fix2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_tilex_ultimate_v2_13s_fix2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_tilex_ultimate_v2_13s_fix3.zones.txt b/RaceTimer/configs/unloze_zones/ze_tilex_ultimate_v2_13s_fix3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_tilex_ultimate_v2_13s_fix3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_timesplitters_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_timesplitters_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_timesplitters_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_titanic_cqd_v2_fixed.zones.txt b/RaceTimer/configs/unloze_zones/ze_titanic_cqd_v2_fixed.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_titanic_cqd_v2_fixed.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_titanic_escape_v2_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_titanic_escape_v2_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_titanic_escape_v2_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_tkara_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_tkara_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_tkara_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_tloz_stone_tower_temple_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_tloz_stone_tower_temple_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_tloz_stone_tower_temple_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_toaster_v1_2.zones.txt b/RaceTimer/configs/unloze_zones/ze_toaster_v1_2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_toaster_v1_2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_totally_new_wester.zones.txt b/RaceTimer/configs/unloze_zones/ze_totally_new_wester.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_totally_new_wester.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_totemo_roka_b5s.zones.txt b/RaceTimer/configs/unloze_zones/ze_totemo_roka_b5s.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_totemo_roka_b5s.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_traak_b1.zones.txt b/RaceTimer/configs/unloze_zones/ze_traak_b1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_traak_b1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_trainescape_final.zones.txt b/RaceTimer/configs/unloze_zones/ze_trainescape_final.zones.txt new file mode 100644 index 00000000..e7c82696 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_trainescape_final.zones.txt @@ -0,0 +1,15 @@ +"Zones" +{ + "1" + { + "name" "ZONE_PREFIX_START_1" + "cordinate_a" "-8040.307617 3062.254395 305.470367" + "cordinate_b" "-7997.242676 7679.968750 1335.334717" + } + "2" + { + "name" "ZONE_PREFIX_RACE_2" + "cordinate_a" "-12153.626953 3794.348145 1098.214478" + "cordinate_b" "-12233.968750 3801.576660 1179.776855" + } +} diff --git a/RaceTimer/configs/unloze_zones/ze_trainstation_tunnels_a1.zones.txt b/RaceTimer/configs/unloze_zones/ze_trainstation_tunnels_a1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_trainstation_tunnels_a1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_trials_v1fs.zones.txt b/RaceTimer/configs/unloze_zones/ze_trials_v1fs.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_trials_v1fs.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_tyranny_v5fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_tyranny_v5fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_tyranny_v5fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_underground_escape__final.zones.txt b/RaceTimer/configs/unloze_zones/ze_underground_escape__final.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_underground_escape__final.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_ut2004_convoy_v2_2_1.zones.txt b/RaceTimer/configs/unloze_zones/ze_ut2004_convoy_v2_2_1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_ut2004_convoy_v2_2_1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_venice_escape_b2.zones.txt b/RaceTimer/configs/unloze_zones/ze_venice_escape_b2.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_venice_escape_b2.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_volcano_escape_v4.zones.txt b/RaceTimer/configs/unloze_zones/ze_volcano_escape_v4.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_volcano_escape_v4.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_voodoo_islands_v4_007.zones.txt b/RaceTimer/configs/unloze_zones/ze_voodoo_islands_v4_007.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_voodoo_islands_v4_007.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_voodoo_islands_v8_5.zones.txt b/RaceTimer/configs/unloze_zones/ze_voodoo_islands_v8_5.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_voodoo_islands_v8_5.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_xiii_winslow_bank_v2_2fix.zones.txt b/RaceTimer/configs/unloze_zones/ze_xiii_winslow_bank_v2_2fix.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_xiii_winslow_bank_v2_2fix.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_zk_fapescape_a11.zones.txt b/RaceTimer/configs/unloze_zones/ze_zk_fapescape_a11.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_zk_fapescape_a11.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_zombie_factory_v1.zones.txt b/RaceTimer/configs/unloze_zones/ze_zombie_factory_v1.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_zombie_factory_v1.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/ze_zombierig_v4_3.zones.txt b/RaceTimer/configs/unloze_zones/ze_zombierig_v4_3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/ze_zombierig_v4_3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/zm_cbble_b3.zones.txt b/RaceTimer/configs/unloze_zones/zm_cbble_b3.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/zm_cbble_b3.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/zm_lila_panic.zones.txt b/RaceTimer/configs/unloze_zones/zm_lila_panic.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/zm_lila_panic.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/configs/unloze_zones/zr_mountain_river_v2c.zones.txt b/RaceTimer/configs/unloze_zones/zr_mountain_river_v2c.zones.txt new file mode 100644 index 00000000..4154bb24 --- /dev/null +++ b/RaceTimer/configs/unloze_zones/zr_mountain_river_v2c.zones.txt @@ -0,0 +1,3 @@ +"Zones" +{ +} diff --git a/RaceTimer/scripting/include/unloze_racetimer_antizones.inc b/RaceTimer/scripting/include/unloze_racetimer_antizones.inc new file mode 100644 index 00000000..f647d9bd --- /dev/null +++ b/RaceTimer/scripting/include/unloze_racetimer_antizones.inc @@ -0,0 +1,11 @@ +#if defined _unloze_racetimer_antizones_included_ + #endinput +#endif +#define _unloze_racetimer_antizones_included_ + +/** + * Resets a clients timer if they enter an zone labeled ZONE_PREFIX_ANTI + * @int client entering an ANTI zone + * @bool true if the clients timer has to be disabled + */ +forward void CheckifAntiZones(int client, bool reset); diff --git a/RaceTimer/scripting/include/unloze_racetimer_specialmaps.inc b/RaceTimer/scripting/include/unloze_racetimer_specialmaps.inc new file mode 100644 index 00000000..f551be00 --- /dev/null +++ b/RaceTimer/scripting/include/unloze_racetimer_specialmaps.inc @@ -0,0 +1,15 @@ +#if defined _unloze_racetimer_specialmaps_included_ + #endinput +#endif +#define _unloze_racetimer_specialmaps_included_ + +/** + * Called on Every Round start to identify if special roundzones exist + * @char resultStart returns name of special startzone + * @char resultEnd returns name of special endzone + */ +forward void CheckIfSpecialRoundZones(char[] resultstart, char[] resultend); +/** +* @returns true if mako currently +*/ +native bool unloze_gBSpecialMapDisplay(); \ No newline at end of file diff --git a/RaceTimer/scripting/include/unloze_zones.inc b/RaceTimer/scripting/include/unloze_zones.inc new file mode 100644 index 00000000..010601eb --- /dev/null +++ b/RaceTimer/scripting/include/unloze_zones.inc @@ -0,0 +1,40 @@ +/** Double-include prevention */ +#if defined _unloze_zones_included_ + #endinput +#endif +#define _unloze_zones_included_ + +/** + * Called when client Enters a zone + * + * @int Client entering zone. + * @char name of the zone. + */ + +forward void unloze_zoneEntry(int client, char[] zone); + +/** + * Called when client Leaves a zone + * + * @int Client leaving zone. + * @char name of the zone. + */ + +forward void unloze_zoneLeave(int client, char[] zone); + +/** + * Called when a new zone is created + */ + +forward void unloze_zoneCreated(); + +/** + * @int zone index + * @char modifies the zone indexes name + */ +native void ZoneNameBasedOnIndex(int index, char[] callbackresult); + +/** +* @returns total count of zones +*/ +native int unloze_zoneCount(); \ No newline at end of file diff --git a/RaceTimer/scripting/unloze_racetimer_antizones.sp b/RaceTimer/scripting/unloze_racetimer_antizones.sp new file mode 100644 index 00000000..09bed9f7 --- /dev/null +++ b/RaceTimer/scripting/unloze_racetimer_antizones.sp @@ -0,0 +1,48 @@ +#pragma semicolon 1 +#define DEBUG +#define PLUGIN_AUTHOR "jenz" +#define PLUGIN_VERSION "1.00" +#include +#include +#include +#pragma newdecls required +static Handle g_hAntiZones; +public Plugin myinfo = +{ + name = "unloze racetimer antizones", + author = PLUGIN_AUTHOR, + description = "disables timers in case route is considered forbidden", + version = PLUGIN_VERSION, + url = "www.unloze.com" +}; +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public APLRes AskPluginLoad2(Handle myself, bool late, char [] error, int err_max) +{ + g_hAntiZones = CreateGlobalForward("CheckifAntiZones", ET_Ignore, Param_Cell, Param_Cell); + return APLRes_Success; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void unloze_zoneEntry(int client, char[] zone) +{ + if (StrContains(zone, "ZONE_PREFIX_ANTI") > -1) + { + Call_StartForward(g_hAntiZones); + Call_PushCell(client); + Call_PushCell(1); + Call_Finish(); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginEnd() +{ + CloseHandle(g_hAntiZones); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/RaceTimer/scripting/unloze_racetimer_redux.sp b/RaceTimer/scripting/unloze_racetimer_redux.sp new file mode 100644 index 00000000..42bb682b --- /dev/null +++ b/RaceTimer/scripting/unloze_racetimer_redux.sp @@ -0,0 +1,891 @@ +#pragma semicolon 1 +#define DEBUG +#define PLUGIN_AUTHOR "jenz" +#define PLUGIN_VERSION "1.4" +#define g_dLength 256 +#define g_dIndex 65 +#include +#include +#include +#include +#include +#include +#include +#pragma newdecls required +char g_cMapname[g_dLength]; +char g_cSpecialMapStart[g_dLength]; +char g_cSpecialMapEnd[g_dLength]; +static char g_sConfigzones[PLATFORM_MAX_PATH]; +float g_fRoundMinutes; +float g_fRoundSeconds; +float g_fMinutesIndividual[MAXPLAYERS + 1]; +float g_fSecondsIndividual[MAXPLAYERS + 1]; +float g_fRecordSeconds[g_dIndex + 1][100]; +int g_iRecordMinutes[g_dIndex + 1][100]; +//100 because we have a total of 53 race zones right now +int g_iRaceCount[MAXPLAYERS + 1]; +int g_iTableCountID; +//testing +int g_iClientStage[MAXPLAYERS + 1]; +int g_iClientChecking[MAXPLAYERS + 1]; +bool g_bMessage[g_dIndex + 1][MAXPLAYERS + 1]; +bool g_bDisplaySpecial; +bool g_bRecentTimes[MAXPLAYERS + 1]; +Database g_dDatabase; +public Plugin myinfo = +{ + name = "UNLOZE_racetimer_css", + author = PLUGIN_AUTHOR, + description = "tracers times on race maps", + version = PLUGIN_VERSION, + url = "www.unloze.com" +}; +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + //cmds + RegConsoleCmd("sm_toptime", cmd_timerCheckTop, "checking top 10"); + RegConsoleCmd("sm_mytime", cmd_timerCheckSelf, "checking your personal time"); + RegConsoleCmd("sm_stages", cmd_timerCheckStage, "Checking race stages"); + RegAdminCmd("sm_threadtestresult", cmd_threadtest, ADMFLAG_BAN); + //hooks + HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnMapStart() +{ + //mysql placed here just in case somebody wants to reset database without having to reload plugin + g_bDisplaySpecial = unloze_gBSpecialMapDisplay(); + SQL_StartConnection(); + GetCurrentMap(g_cMapname, sizeof(g_cMapname)); + CreateTimer(0.1, Timer_CountdownRace, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); + startTimer(); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void startTimer() +{ + char line[g_dLength]; + Handle zonefile = INVALID_HANDLE; + BuildPath(Path_SM, g_sConfigzones, sizeof(g_sConfigzones), "configs/unloze_zones/%s.zones.txt", g_cMapname); + zonefile = OpenFile(g_sConfigzones, "r"); + if (zonefile != INVALID_HANDLE) + { + while (!IsEndOfFile(zonefile) && ReadFileLine(zonefile, line, sizeof(line))) + { + if (StrContains(line, "ZONE_PREFIX_RACE", false) > -1 || g_bDisplaySpecial) + { + MYSQLCheckMapEntry(); + break; + } + } + } + delete zonefile; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Timer_CountdownRace(Handle timer, any data) +{ + g_fRoundSeconds += 0.1; + if (g_fRoundSeconds >= 60.0) + { + g_fRoundMinutes += 1.0; + g_fRoundSeconds = 0.0; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast) +{ + g_fRoundMinutes = 0.0; + g_fRoundSeconds = 0.0; + int l_iRaceZoneCount = GetTotalRaceZones(); + for (int i = 1; i <= MaxClients; i++) + if (IsValidClient(i)) + { + MYSQLCheckRecord(i); + for (int j = 0; j <= l_iRaceZoneCount; j++) + g_bMessage[i][j] = false; + } + +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientPostAdminCheck(int client) +{ + resetClient(client); + MYSQLCheckRecord(client); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientDisconnect(int client) +{ + resetClient(client); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void resetClient(int client) +{ + int l_iRaceZoneCount = GetTotalRaceZones(); + for (int j = 0; j <= l_iRaceZoneCount; j++) + g_bMessage[client][j] = false; + g_bRecentTimes[client] = false; + g_fSecondsIndividual[client] = 0.0; + g_fMinutesIndividual[client] = 0.0; + g_iClientChecking[client] = 0; + g_iClientStage[client] = 0; + for (int i = 0; i < 100; i++) + { + g_iRecordMinutes[client][i] = 0; + g_fRecordSeconds[client][i] = 0.0; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void unloze_zoneEntry(int client, char[] zone) +{ + int l_iZoneIndex = RetrieveZoneIndex(zone); + int l_iZoneCount = unloze_zoneCount(); + if (((GetClientTeam(client) == CS_TEAM_CT) && StrContains(zone, "ZONE_PREFIX_RACE") > -1) || StrEqual(zone, g_cSpecialMapEnd)) + { + /* + PrintToChatAll("g_bMessage: %i", g_bMessage[client][g_iClientStage[client]]); + PrintToChatAll("g_iClientStage[client]: %i", g_iClientStage[client]); + PrintToChatAll("(l_iZoneIndex / 2 )-1: %i", (l_iZoneIndex / 2) -1); + */ + if (l_iZoneCount < 2 && !g_bMessage[client][0]) + { + g_iClientStage[client] = 0; + MYSQLCheckRecord(client); + FinishedStageRaceZone(client); + } + else if (g_iClientStage[client] == ((l_iZoneIndex / 2 ) -1) && !g_bMessage[client][g_iClientStage[client]]) + { + MYSQLCheckRecord(client); + FinishedStageRaceZone(client); + } + } + /* + * COMMENTS + * forward checks if isValidClient + * + * individual seconds and minutes are zero if the client never left a zone with the name ZONE_PREFIX_START + * + * assuming each zone indexes one up RetrieveZoneIndex should match well since there has to be some kind + * of structure for this, minimum is 2 for RetrieveZoneIndex so -1 works + * + * the else return statement means for example ZONE_PREFIX_START_1 but reached ZONE_PREFIX_RACE_3 + * or ZONE_PREFIX_START_2 but ZONE_PREFIX_RACE_1 where it would need to be 3 + * + * l_iZoneIndex / 2 is stage zones, the only possible entries here are 2, 4, 6 etc etc + */ +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void unloze_zoneLeave(int client, char[] zone) +{ + //only maps with multiple zones need ZONE_PREFIX_START + if (((GetClientTeam(client) == CS_TEAM_CT) && StrContains(zone, "ZONE_PREFIX_START") > -1) || StrEqual(zone, g_cSpecialMapStart)) + { + g_fSecondsIndividual[client] = g_fRoundSeconds; + g_fMinutesIndividual[client] = g_fRoundMinutes; + /** + * /2 is to ensure 1 + 1 / 2 = 1, 3 + 1 / 2 = 2, 5 + 1 / 2 = 3 + * - 1 for starting index at 0 and +1 for int parameter stage when inserting time to row since they start as stage 1 not stage 0 + */ + g_iClientStage[client] = ((RetrieveZoneIndex(zone) + 1) / 2) - 1; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void unloze_zoneCreated() +{ + startTimer(); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void CheckIfSpecialRoundZones(char[] resultstart, char[] resultend) +{ + Format(g_cSpecialMapStart, sizeof(g_cSpecialMapStart), resultstart); + Format(g_cSpecialMapEnd, sizeof(g_cSpecialMapEnd), resultend); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void CheckifAntiZones(int client, bool reset) +{ + if (reset) + { + //adds 30 mins and 30 seconds to a client because thats simple and very effective + g_fSecondsIndividual[client] = 30.0; + g_fMinutesIndividual[client] = 30.0; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int RetrieveZoneIndex(char[] zone) +{ + //if you leave zone_2 you want the corresponding racezone to be zone_3 + int i = strlen(zone) - 1; + char l_sZone[g_dIndex]; + Format(l_sZone, sizeof(l_sZone), zone); + while (IsCharNumeric(l_sZone[i])) + i--; + i++; + strcopy(l_sZone, sizeof(l_sZone), l_sZone[i]); + return StringToInt(l_sZone[i]); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void FinishedStageRaceZone(int client) +{ + /* + PrintToChatAll("g_iClientStage[client]: %i", g_iClientStage[client]); + PrintToChatAll("g_iRecordMinutes[client][g_iClientStage[client]]: %i", g_iRecordMinutes[client][g_iClientStage[client]]); + PrintToChatAll("g_fRecordSeconds[client][g_iClientStage[client]]: %f", g_fRecordSeconds[client][g_iClientStage[client]]); + */ + int l_iZoneCount = unloze_zoneCount(); + float l_fCalculateMins; + float l_fCalculateSecs; + if (g_iRecordMinutes[client][g_iClientStage[client]] > 0 || g_fRecordSeconds[client][g_iClientStage[client]] > 0.0) + CPrintToChat(client, "Your record: 0%i:%.1f \nCommand: !toptime !mytime !stages", g_iRecordMinutes[client][g_iClientStage[client]], g_fRecordSeconds[client][g_iClientStage[client]]); + else + { + if (l_iZoneCount < 2) + sendMYSQL(client, g_fRoundMinutes, g_fRoundSeconds, 0, 0.0, g_iClientStage[client]); + else + { + l_fCalculateMins = CalculateValues(client, 0); + l_fCalculateSecs = CalculateValues(client, 1); + sendMYSQL(client, l_fCalculateMins, l_fCalculateSecs, 0, 0.0, g_iClientStage[client]); + } + CPrintToChat(client, "Updated timer"); + } + if (l_iZoneCount < 2) + { + //no start zone, we use round time + CPrintToChat(client, "{green}[UNLOZE] Client: %N Time: 0%i:%.1f", client, RoundToFloor(g_fRoundMinutes), g_fRoundSeconds); + if ((g_fRoundMinutes < g_iRecordMinutes[client][g_iClientStage[client]]) + || (g_fRoundMinutes == g_iRecordMinutes[client][g_iClientStage[client]] && g_fRoundSeconds < g_fRecordSeconds[client][g_iClientStage[client]])) + { + sendMYSQL(client, g_fRoundMinutes, g_fRoundSeconds, g_iRecordMinutes[client][g_iClientStage[client]], g_fRecordSeconds[client][g_iClientStage[client]], g_iClientStage[client]); + CPrintToChat(client, "Updated timer"); + } + } + else + { + //uses start zone, we use time when leaving start zone + l_fCalculateMins = CalculateValues(client, 0); + l_fCalculateSecs = CalculateValues(client, 1); + //tricking ppl !hehe + CPrintToChat(client, "{green}[UNLOZE] Stage: %i", g_iClientStage[client] + 1); + CPrintToChat(client, "{green}[UNLOZE] Client: %N Time: 0%i:%.1f", client, RoundToFloor(l_fCalculateMins), l_fCalculateSecs); + if ((RoundToFloor(l_fCalculateMins) < g_iRecordMinutes[client][g_iClientStage[client]]) + || (RoundToFloor(l_fCalculateMins) == g_iRecordMinutes[client][g_iClientStage[client]] && l_fCalculateSecs < g_fRecordSeconds[client][g_iClientStage[client]])) + { + sendMYSQL(client, l_fCalculateMins, l_fCalculateSecs, g_iRecordMinutes[client][g_iClientStage[client]], g_fRecordSeconds[client][g_iClientStage[client]], g_iClientStage[client]); + CPrintToChat(client, "Updated timer"); + } + } + //matching the message + MYSQLCheckRecord(client); + g_bMessage[client][g_iClientStage[client]] = true; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public float CalculateValues(int client, int state) +{ + // 2:24 enter with roundtime 5:29 = 3:05 + // 3:01 enter with roundtime 3:59 = 58 sec + //example roundtime is 5 mins 40 seconds, client entered at 4 mins and 50 seconds, so 50 sec race + float l_fRoundMinutes = g_fRoundMinutes; + float l_fRoundMinutesIndividual = g_fMinutesIndividual[client]; + float l_fRoundSeconds = g_fRoundSeconds; + float l_fRoundSecondsIndividual = g_fSecondsIndividual[client]; + float l_fSecAdd; + if (l_fRoundMinutesIndividual > l_fRoundMinutes) + return 0.0; + if (!state) + { + l_fRoundMinutes = l_fRoundMinutes - l_fRoundMinutesIndividual; + if (l_fRoundSeconds < l_fRoundSecondsIndividual) + l_fRoundMinutes--; + return l_fRoundMinutes; + } + else + { + if (l_fRoundSeconds < l_fRoundSecondsIndividual) + { + while (l_fRoundSecondsIndividual < 60) + { + l_fRoundSecondsIndividual++; + l_fSecAdd++; + } + return l_fSecAdd + l_fRoundSeconds; + } + else + return l_fRoundSeconds - l_fRoundSecondsIndividual; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void MYSQLCheckMapEntry() +{ + int l_iRaceCount; + int l_iZoneCount = unloze_zoneCount(); + char sQuery[g_dLength]; + char l_cZoneIndexName[g_dIndex][g_dLength]; + if (l_iZoneCount < 2) + { + Format(sQuery, sizeof(sQuery), "SELECT `%s` FROM `zetimer_table` LIMIT 1", g_cMapname); + SQL_TQuery(g_dDatabase, TqueryThreadCallback, sQuery); + } + else + for (int i = 0; i <= l_iZoneCount; i++) + { + if (IsCorrectZone(i, l_cZoneIndexName[i][g_dLength -1], "ZONE_PREFIX_RACE")) + { + l_iRaceCount++; + Format(sQuery, sizeof(sQuery), "SELECT `%sS%i` FROM `zetimer_table` LIMIT 1", g_cMapname, l_iRaceCount); + SQL_TQuery(g_dDatabase, TqueryThreadCallback, sQuery); + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void TqueryThreadRecentCheckStageSteamID(Handle owner, Handle rs, const char[] error, any data) +{ + int client = 0; + if (!(client = GetClientOfUserId(data))) + return; + g_bRecentTimes[client] = false; + if (SQL_GetRowCount(rs) > 0 && SQL_FetchRow(rs)) + { + g_bRecentTimes[client] = true; + g_iTableCountID = SQL_FetchInt(rs, 0); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: we define the last 500 updated times as "recently", this indicates that recent times will display 500 and not more +//--------------------------------------------------------------------------------------------------- +public void TqueryThreadRecentTimesCount(Handle owner, Handle rs, const char[] error, any data) +{ + if (SQL_GetRowCount(rs) > 0 && SQL_FetchRow(rs)) + { + int l_isize = SQL_GetRowCount(rs); + if (l_isize >= 500) + g_iTableCountID = 1; + else + g_iTableCountID = 0; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void TqueryThreadRecentCount(Handle owner, Handle rs, const char[] error, any data) +{ + if (SQL_GetRowCount(rs) > 0 && SQL_FetchRow(rs)) + { + g_iTableCountID = SQL_FetchInt(rs, 0); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void TqueryThreadCallback(Handle owner, Handle rs, const char[] error, any data) +{ + int l_iRaceCount; + int l_iZoneCount = unloze_zoneCount(); + int l_iCountFix = GetTotalRaceZones(); + int client = 0; + float l_fRecordTotal; + char sQuery[g_dLength]; + char l_cZoneIndexName[g_dIndex][g_dLength]; + /* + *the null check is for MYSQLCheckMapEntry and MYSQLCheckRecord to check if tables exist + */ + if (rs == null) + { + if (l_iZoneCount == 1) + { + Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table` ADD COLUMN `%s` DECIMAL(13,3) NOT NULL", g_cMapname); + SQL_FastQuery(g_dDatabase, sQuery); + } + else + { + //this might seem repetitive but one null check adds all required coloumns + for (int i = 0; i <= l_iZoneCount; i++) + { + if (IsCorrectZone(i, l_cZoneIndexName[i][g_dLength -1], "ZONE_PREFIX_RACE")) + { + l_iRaceCount++; + Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table` ADD COLUMN `%sS%i` DECIMAL(13,3) NOT NULL", g_cMapname, l_iRaceCount); + SQL_FastQuery(g_dDatabase, sQuery); + } + } + } + return; + } + if (!(client = GetClientOfUserId(data))) + return; + if (l_iCountFix < g_iRaceCount[client]) + { + g_iRaceCount[client] = 0; + } + if (SQL_GetRowCount(rs) > 0 && SQL_FetchRow(rs)) + { + l_fRecordTotal = SQL_FetchFloat(rs, 0); + g_iRecordMinutes[client][g_iRaceCount[client]] = (RoundToFloor(l_fRecordTotal)); + g_fRecordSeconds[client][g_iRaceCount[client]] = (l_fRecordTotal - g_iRecordMinutes[client][g_iRaceCount[client]]) * 100; + } + else + { + g_iRecordMinutes[client][g_iRaceCount[client]] = 0; + g_fRecordSeconds[client][g_iRaceCount[client]] = 0.0; + } + g_iRaceCount[client]++; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: TODO implement if needed +//---------------------------------------------------------------------------------------------------- +public int GetTotalRaceZones() +{ + int l_iZoneCount = unloze_zoneCount(); + char l_cIndexName[g_dLength]; + int l_iCountRace; + for (int i = 0; i < l_iZoneCount; i++) + { + ZoneNameBasedOnIndex(i, l_cIndexName[i]); + if (StrContains(l_cIndexName[i], "ZONE_PREFIX_RACE") > -1) + l_iCountRace++; + } + return l_iCountRace; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void sendMYSQL(int client, float minutes, float seconds, int oldminutes, float oldseconds, int stage) +{ + int l_iZoneCount = unloze_zoneCount(); + float l_fPlayerTime; + float l_fPlayerTimeOld; + char sSID[g_dIndex]; + char l_cClientName[g_dIndex]; + char l_cStage[90]; + char sQuery[g_dLength]; + char sName[MAX_NAME_LENGTH]; + stage++; + GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID)); + GetClientName(client, sName, sizeof(sName)); + int size2 = 2 * strlen(sName) + 1; + char[] sEscapedName = new char[size2 + 1]; + SQL_EscapeString(g_dDatabase, sName, sEscapedName, size2 + 1); + Format(l_cClientName, sizeof(l_cClientName), sEscapedName); + //STEAM_ID_STOP_IGNORING_RETVALS might be considered exploit? + if (StrEqual(sSID, "STEAM_ID_STOP_IGNORING_RETVALS")) + return; + l_fPlayerTime = minutes; + l_fPlayerTime = l_fPlayerTime + (seconds / 100); + if (oldminutes != 0 || oldseconds != 0.0) + { + l_fPlayerTimeOld += oldminutes; + l_fPlayerTimeOld = l_fPlayerTimeOld + (oldseconds / 100); + if (l_iZoneCount > 1) + Format(l_cStage, sizeof(l_cStage), "%sS%i", g_cMapname, stage); + else + Format(l_cStage, sizeof(l_cStage), "%s", g_cMapname); + MYSQLSafeTime(client, l_cStage, l_fPlayerTimeOld); + } + if (l_iZoneCount < 2) + Format(sQuery, sizeof(sQuery), "INSERT INTO `zetimer_table` (`steam_auth`, `name`, `%s`) VALUES ('%s', '%s', '%f') ON DUPLICATE KEY UPDATE `name` = '%s', `%s` = '%f'", g_cMapname, sSID, l_cClientName, l_fPlayerTime, l_cClientName, g_cMapname, l_fPlayerTime); + else + Format(sQuery, sizeof(sQuery), "INSERT INTO `zetimer_table` (`steam_auth`, `name`, `%sS%i`) VALUES ('%s', '%s', '%f') ON DUPLICATE KEY UPDATE `name` = '%s', `%sS%i` = '%f'", g_cMapname, stage, sSID, l_cClientName, l_fPlayerTime, l_cClientName, g_cMapname, stage, l_fPlayerTime); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SQL_StartConnection() +{ + char error[g_dLength]; + if (SQL_CheckConfig("racetimercss")) + g_dDatabase = SQL_Connect("racetimercss", true, error, sizeof(error)); + if (g_dDatabase == null) + { + CPrintToChatAll("{green}[UNLOZE] {white}Error! Could not connect to MYSQL-DB!"); + } + //create tables + char sQuery[g_dLength]; + Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `zetimer_table` (`steam_auth` VARCHAR(254) NOT NULL, `name` VARCHAR(254) NOT NULL, PRIMARY KEY (`steam_auth`))"); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `unloze_racetimer_css`.`recenttimes_table` (`ID` INT NOT NULL AUTO_INCREMENT, `Steam_auth` VARCHAR(45) NOT NULL, `Stage` VARCHAR(90) NOT NULL, `Oldtime` VARCHAR(45) NOT NULL, PRIMARY KEY (`ID`)) ENGINE = InnoDB;"); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `unloze_racetimer_css`.`recenttimes_tableCount` (`ID` INT NOT NULL, PRIMARY KEY (`ID`)) ENGINE = InnoDB;"); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void MYSQLSafeTime(int client, char[] stage, float oldtime) +{ + char sSID[g_dIndex]; + char sQuery[g_dLength]; + GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID)); + //maybe %f is questionable here + //check if same steam ID on same Stage is present + Format(sQuery, sizeof(sQuery), "SELECT * FROM `recenttimes_table` WHERE `Steam_auth` = '%s' AND `Stage` = '%s'", sSID, stage); + SQL_TQuery(g_dDatabase, TqueryThreadRecentCheckStageSteamID, sQuery, client); + if (g_bRecentTimes[client]) + { + Format(sQuery, sizeof(sQuery), "UPDATE `recenttimes_table` SET `Steam_auth` = '%s', `Stage` = '%s', `Oldtime` = '%f' WHERE `ID`='%i'", sSID, stage, oldtime, g_iTableCountID); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + } + else + { + Format(sQuery, sizeof(sQuery), "SELECT * FROM `recenttimes_table`"); + SQL_TQuery(g_dDatabase, TqueryThreadRecentTimesCount, sQuery); + if (!g_iTableCountID) + { + Format(sQuery, sizeof(sQuery), "INSERT INTO `recenttimes_table` (`ID`,`Steam_auth`,`Stage`,`Oldtime`) VALUES (NULL,'%s','%s','%f')", sSID, stage, oldtime); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + } + else + { + Format(sQuery, sizeof(sQuery), "SELECT * FROM `recenttimes_tableCount`"); + SQL_TQuery(g_dDatabase, TqueryThreadRecentCount, sQuery); + if (g_iTableCountID <= 500) + { + Format(sQuery, sizeof(sQuery), "UPDATE `recenttimes_tableCount` SET `ID` = '%i'", g_iTableCountID + 1); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + } + else + { + Format(sQuery, sizeof(sQuery), "UPDATE `recenttimes_tableCount` SET `ID` = '1'"); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + g_iTableCountID = 1; + } + Format(sQuery, sizeof(sQuery), "UPDATE `recenttimes_table` SET `Steam_auth` = '%s', `Stage` = '%s', `Oldtime` = '%f' WHERE `ID`='%i'", sSID, stage, oldtime, g_iTableCountID); + SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery); + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void MYSQLCheckRecord(int client) +{ + g_iRaceCount[client] = 0; + int l_iZoneCount = unloze_zoneCount(); + int l_iRaceCount; + char sSID[g_dIndex]; + char sQuery[g_dLength]; + char l_cZoneIndexName[g_dIndex][g_dLength]; + GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID)); + if (l_iZoneCount < 2) + { + Format(sQuery, sizeof(sQuery), "SELECT `%s` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, sSID); + SQL_TQuery(g_dDatabase, TqueryThreadCallback, sQuery, GetClientUserId(client)); + } + else + { + for (int i = 0; i <= l_iZoneCount; i++) + { + if (IsCorrectZone(i, l_cZoneIndexName[i][g_dLength -1], "ZONE_PREFIX_RACE")) + { + l_iRaceCount++; + Format(sQuery, sizeof(sQuery), "SELECT `%sS%i` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, l_iRaceCount, sSID); + SQL_TQuery(g_dDatabase, TqueryThreadCallback, sQuery, GetClientUserId(client)); + } + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void DummyCallbackSimple(Handle hOwner, Handle hChild, const char[] err, DataPack pack1) +{ + if (hOwner == null || hChild == null) + LogError("Query error. (%s)", err); + MYSQLCheckMapEntry(); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action cmd_timerCheckTop(int client, int args) +{ + CheckTop(client, 0, 0); + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void CheckTop(int client, int index, int autismstate) +{ + int l_iZoneCount = unloze_zoneCount(); + char sQuery[g_dLength]; + if (!l_iZoneCount) + { + CPrintToChat(client, "[UNLOZE] Map does not support race timer"); + return; + } + if (l_iZoneCount > 1 && !autismstate) + { + CheckStagesOnMap(client, 0); + return; + } + if (l_iZoneCount < 2) + Format(sQuery, sizeof(sQuery), "SELECT name, %s FROM `zetimer_table` WHERE %s > 0.000 ORDER BY %s ASC LIMIT 10", g_cMapname, g_cMapname, g_cMapname); + else + Format(sQuery, sizeof(sQuery), "SELECT name, `%sS%i` FROM `zetimer_table` WHERE `%sS%i` > 0.000 ORDER BY `%sS%i` ASC LIMIT 10", g_cMapname, index, g_cMapname, index, g_cMapname, index); + SQL_TQuery(g_dDatabase, SQL_SelectTop_Callback, sQuery, GetClientUserId(client)); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SQL_SelectTop_Callback(Handle db, Handle results, const char[] error, any data) +{ + int client = GetClientOfUserId(data); + int l_iMinutes; + int l_iPosition; + float l_fRecord; + float l_iSeconds; + //Player Name + char[] g_cPlayerName = new char[MAX_NAME_LENGTH]; + char g_cContent[g_dLength]; + if (client == 0) + { + return; + } + Menu menu = new Menu(MenuHandler1); + menu.SetTitle("Maptimer: %s", g_cMapname); + while (SQL_GetRowCount(results) > 0 && SQL_FetchRow(results)) + { + l_iPosition++; + SQL_FetchString(results, 0, g_cPlayerName, MAX_NAME_LENGTH); + l_fRecord = SQL_FetchFloat(results, 1); + l_iMinutes = RoundToFloor(l_fRecord); + l_iSeconds = (l_fRecord - l_iMinutes) * 100; + Format(g_cContent, sizeof(g_cContent), "#%i: Time: 0%i:%.1f - %s", l_iPosition, l_iMinutes, l_iSeconds, g_cPlayerName); + menu.AddItem("-1", g_cContent, ITEMDRAW_DISABLED); + } + if (!l_iPosition) + { + menu.AddItem("-1", "No results. Commands: !toptime !stages", ITEMDRAW_DISABLED); + } + menu.ExitButton = true; + menu.Display(client, 0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuHandler1(Menu menu, MenuAction action, int param1, int param2) +{ + if (action == MenuAction_End) + { + delete menu; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action cmd_timerCheckStage(int client, int args) +{ + CheckStagesOnMap(client, 0); + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action cmd_threadtest(int client, int args) +{ + g_iRaceCount[client] = 0; + int l_iRaceCount; + int l_iZoneCount = unloze_zoneCount(); + char sQuery[g_dLength]; + char l_cZoneIndexName[g_dIndex][g_dLength]; + char sSID[g_dIndex]; + GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID)); + for (int i = 0; i <= l_iZoneCount; i++) + { + if (IsCorrectZone(i, l_cZoneIndexName[i][g_dLength -1], "ZONE_PREFIX_RACE")) + { + l_iRaceCount++; + Format(sQuery, sizeof(sQuery), "SELECT `%sS%i` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, l_iRaceCount, sSID); + SQL_TQuery(g_dDatabase, TqueryThreadCallback, sQuery, GetClientUserId(client)); + } + } + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void CheckStagesOnMap(int client, int state) +{ + int l_iCount; + int l_iZoneCount = unloze_zoneCount(); + Menu StageMenu = CreateMenu(Stage_menu); + char l_cZoneIndexName[g_dIndex][g_dLength]; + char l_cMenuContent[g_dLength]; + if (!l_iZoneCount) + { + CPrintToChat(client, "[UNLOZE] Map does not support racestage timer"); + return; + } + //state 0 == toptime, state 1 == own time + g_iClientChecking[client] = state; + StageMenu.SetTitle("Stages on: %s", g_cMapname); + if (g_bDisplaySpecial) + { + Format(l_cMenuContent, sizeof(l_cMenuContent), "Stage: %i", l_iCount); + StageMenu.AddItem("", l_cMenuContent); + } + else + for (int i = 0; i <= l_iZoneCount; i++) + { + if (IsCorrectZone(i, l_cZoneIndexName[i][g_dLength -1], "ZONE_PREFIX_RACE")) + { + l_iCount++; + Format(l_cMenuContent, sizeof(l_cMenuContent), "Stage: %i", l_iCount); + StageMenu.AddItem("", l_cMenuContent); + } + } + StageMenu.ExitButton = true; + StageMenu.Display(client, 0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public bool IsCorrectZone(int index, char[] zoneIndexName, char[] zone_prefix) +{ + ZoneNameBasedOnIndex(index, zoneIndexName); + if (StrContains(zoneIndexName, zone_prefix) > -1) + { + return true; + } + return false; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int Stage_menu(Menu menu, MenuAction action, int client, int selection) +{ + if (action == MenuAction_Select && IsValidClient(client)) + { + selection++; + if (!g_iClientChecking[client]) + { + CheckTop(client, selection, 1); + } + else + { + CheckStageSelf(client, selection); + } + } + else if (action == MenuAction_End) + { + delete(menu); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action cmd_timerCheckSelf(int client, int args) +{ + Checkself(client); + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void Checkself(int client) +{ + int l_iZoneCount = unloze_zoneCount(); + char l_cQuery[g_dLength]; + char l_cSID[g_dIndex]; + GetClientAuthId(client, AuthId_Steam2, l_cSID, sizeof(l_cSID)); + if (!l_iZoneCount) + { + CPrintToChat(client, "[UNLOZE] Map does not support race timer"); + return; + } + if (l_iZoneCount < 2) + { + Format(l_cQuery, sizeof(l_cQuery), "SELECT name, `%s` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, l_cSID); + SQL_TQuery(g_dDatabase, TqueryCheckSelf, l_cQuery, GetClientUserId(client)); + } + else + { + CheckStagesOnMap(client, 1); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void CheckStageSelf(int client, int selection) +{ + char l_cQuery[g_dLength]; + char l_cSID[g_dIndex]; + GetClientAuthId(client, AuthId_Steam2, l_cSID, sizeof(l_cSID)); + Format(l_cQuery, sizeof(l_cQuery), "SELECT name, `%sS%i` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, selection, l_cSID); + SQL_TQuery(g_dDatabase, TqueryCheckSelf, l_cQuery, GetClientUserId(client)); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void TqueryCheckSelf(Handle db, Handle rs, const char[] error, any data) +{ + int l_iMinutes; + float l_fRecord; + float l_iSeconds; + char l_cMessageContent[g_dLength]; + char[] l_cPlayerName = new char[MAX_NAME_LENGTH]; + int client; + if ((client = GetClientOfUserId(data)) == 0) + return; + if (SQL_GetRowCount(rs) > 0 && SQL_FetchRow(rs)) + { + SQL_FetchString(rs, 0, l_cPlayerName, MAX_NAME_LENGTH); + l_fRecord = SQL_FetchFloat(rs, 1); + if (l_fRecord == 0.000) + { + CPrintToChat(client, "You have no time yet!"); + return; + } + l_iMinutes = RoundToFloor(l_fRecord); + l_iSeconds = (l_fRecord - l_iMinutes) * 100; + Format(l_cMessageContent, sizeof(l_cMessageContent), "%i:%.1f - %s", l_iMinutes, l_iSeconds, l_cPlayerName); + CPrintToChat(client, "Your best time: 0%s", l_cMessageContent); + } + else + CPrintToChat(client, "You have no time yet!"); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock bool IsValidClient(int client) +{ + if (client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client)) + { + return true; + } + return false; +} \ No newline at end of file diff --git a/RaceTimer/scripting/unloze_racetimer_specialmaps.sp b/RaceTimer/scripting/unloze_racetimer_specialmaps.sp new file mode 100644 index 00000000..11d25566 --- /dev/null +++ b/RaceTimer/scripting/unloze_racetimer_specialmaps.sp @@ -0,0 +1,144 @@ +#pragma semicolon 1 +#define DEBUG +#define PLUGIN_AUTHOR "jenz" +#define PLUGIN_VERSION "1.00" +#define g_dLength 256 +#define g_dIndex 64 +#include +#include +#include +#pragma newdecls required +static Handle g_hSpecialRoundCheck; +bool g_bSpecialMap; +bool g_bCheckedRound; +char g_cMapname[g_dIndex]; +public Plugin myinfo = +{ + name = "unloze racetimer specialmaps", + author = PLUGIN_AUTHOR, + description = "intended for adding racemaps based on levels and whatnot", + version = PLUGIN_VERSION, + url = "www.unloze.com" +}; +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public APLRes AskPluginLoad2(Handle myself, bool late, char [] error, int err_max) +{ + g_hSpecialRoundCheck = CreateGlobalForward("CheckIfSpecialRoundZones", ET_Ignore, Param_String, Param_String); + CreateNative("unloze_gBSpecialMapDisplay", Native_Isspecialmap); + return APLRes_Success; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int Native_Isspecialmap(Handle handler, int numParams) +{ + CreateTimer(10.0, Timer_CheckStage, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); + GetCurrentMap(g_cMapname, sizeof(g_cMapname)); + if (StrEqual(g_cMapname, "ze_FFVII_Mako_Reactor_v5_3")) + { + g_bSpecialMap = true; + return view_as(1); + } + else + g_bSpecialMap = false; + return view_as(0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: http://git.unloze.com/UNLOZE/sm-plugins/src/master/MakoVote/scripting/MakoVote.sp +//---------------------------------------------------------------------------------------------------- +public int GetCurrentStage() +{ + int iLevelCounterEnt = FindEntityByTargetname(INVALID_ENT_REFERENCE, "Level_Counter", "math_counter"); + int offset = FindDataMapInfo(iLevelCounterEnt, "m_OutValue"); + int iCounterVal = RoundFloat(GetEntDataFloat(iLevelCounterEnt, offset)); + return iCounterVal; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: http://git.unloze.com/UNLOZE/sm-plugins/src/master/MakoVote/scripting/MakoVote.sp +//---------------------------------------------------------------------------------------------------- +public int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sClassname) +{ + if (sTargetname[0] == '#') // HammerID + { + int HammerID = StringToInt(sTargetname[1]); + + while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE) + { + if(GetEntProp(entity, Prop_Data, "m_iHammerID") == HammerID) + return entity; + } + } + else // Targetname + { + int Wildcard = FindCharInString(sTargetname, '*'); + char sTargetnameBuf[g_dIndex]; + + while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE) + { + if(GetEntPropString(entity, Prop_Data, "m_iName", sTargetnameBuf, sizeof(sTargetnameBuf)) <= 0) + continue; + + if(strncmp(sTargetnameBuf, sTargetname, Wildcard) == 0) + return entity; + } + } + return INVALID_ENT_REFERENCE; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginEnd() +{ + CloseHandle(g_hSpecialRoundCheck); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + //hooks + HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Timer_CheckStage(Handle timer, any userid) +{ + if (g_bCheckedRound) + { + g_bCheckedRound = false; + if (!g_bSpecialMap || GetCurrentStage() != 11) + { + Call_StartForward(g_hSpecialRoundCheck); + Call_PushString(""); + Call_PushString(""); + Call_Finish(); + return; + } + int l_iZoneCount = unloze_zoneCount(); + char l_cIndexName[g_dIndex][g_dLength]; + int i; + Call_StartForward(g_hSpecialRoundCheck); + while (i < l_iZoneCount) + { + ZoneNameBasedOnIndex(i, l_cIndexName[i]); + if (StrContains(l_cIndexName[i], "ZZ") > -1) + { + Call_PushString(l_cIndexName[i +1]); + } + else + Call_PushString(l_cIndexName[i]); + i++; + } + Call_Finish(); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast) +{ + g_bCheckedRound = true; +} \ No newline at end of file diff --git a/RaceTimer/scripting/unloze_zones.sp b/RaceTimer/scripting/unloze_zones.sp new file mode 100644 index 00000000..4785241a --- /dev/null +++ b/RaceTimer/scripting/unloze_zones.sp @@ -0,0 +1,1052 @@ +#pragma semicolon 1 +#define DEBUG +#define PLUGIN_AUTHOR "jenz, thx to zuff for help" +#define PLUGIN_VERSION "2.1" +#define MAXZONES 66 +#define ZONENAMELENGTH 256 +#include +#include +#include +#pragma newdecls required +//---------------------------------------------------------------------------------------------------- +// Purpose: Global variables +//---------------------------------------------------------------------------------------------------- +static Handle g_hForwardedZonesEnter; +static Handle g_hForwardedZonesLeaver; +static Handle g_hForwardedZonesCreated; +static char g_cConfigZones[PLATFORM_MAX_PATH]; +char g_cZones[MAXZONES][ZONENAMELENGTH]; +float g_fStartPos[MAXZONES][3]; +float g_fEndPos[MAXZONES][3]; +int g_iAdminDrawing[MAXZONES]; +int g_iBeam = -1; +int g_iZoneRefference[MAXZONES]; +int g_iZoneCount; +int g_iAdminSelectOpion[MAXZONES]; +int g_iZoneEntRefference[MAXZONES]; +int g_iViewingZones[MAXZONES]; +int g_iKeyChecker; +bool g_bZoneNaming[MAXZONES]; +bool g_bAdminNewZone; +//---------------------------------------------------------------------------------------------------- +// Purpose: description +//---------------------------------------------------------------------------------------------------- +public Plugin myinfo = +{ + name = "Unloze zones", + author = PLUGIN_AUTHOR, + description = "Zones to use for zonerewards", + version = PLUGIN_VERSION, + url = "www.unloze.com" +}; +//---------------------------------------------------------------------------------------------------- +// Purpose: pluginstart/end/askpluginload +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + //hooks + HookEvent("round_start", Event_roundStart, EventHookMode_Post); + //commands + RegConsoleCmd("say", Cmd_Say); + RegAdminCmd("sm_zones", Cmd_Zones, ADMFLAG_GENERIC); + RegAdminCmd("sm_zone", Cmd_Zones, ADMFLAG_GENERIC); + RegAdminCmd("sm_zonetest", Cmd_Zonetest, ADMFLAG_CHEATS); + RegAdminCmd("sm_showzones", Cmd_ZoneDisplay, ADMFLAG_CUSTOM1); + RegAdminCmd("sm_showzone", Cmd_ZoneDisplay, ADMFLAG_CUSTOM1); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginEnd() +{ + CloseHandle(g_hForwardedZonesEnter); + CloseHandle(g_hForwardedZonesLeaver); + CloseHandle(g_hForwardedZonesCreated); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public APLRes AskPluginLoad2(Handle myself, bool late, char [] error, int err_max) +{ + //global forwards + g_hForwardedZonesEnter = CreateGlobalForward("unloze_zoneEntry", ET_Ignore, Param_Cell, Param_String); + g_hForwardedZonesLeaver = CreateGlobalForward("unloze_zoneLeave", ET_Ignore, Param_Cell, Param_String); + g_hForwardedZonesCreated = CreateGlobalForward("unloze_zoneCreated", ET_Ignore, Param_Cell, Param_String); + CreateNative("unloze_zoneCount", Native_zoneCount); + CreateNative("ZoneNameBasedOnIndex", Native_ZoneNameBasedOnIndex); + return APLRes_Success; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int Native_zoneCount(Handle handler, int numParams) +{ + return g_iZoneCount; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int Native_ZoneNameBasedOnIndex(Handle handler, int numParams) +{ + int i = GetNativeCell(1); + SetNativeString(2, g_cZones[i], sizeof(g_cZones), true); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Displayes zones +//---------------------------------------------------------------------------------------------------- +public Action Cmd_ZoneDisplay(int client, int args) +{ + if (g_iZoneCount < 1) + PrintToChat(client, "no active zones on the map"); + else + { + g_iAdminSelectOpion[client] = 2; + MenuZoneCounter(client); + } + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void DisplayZones(int client, int selection) +{ + if (g_iAdminDrawing[client] == 0) + { + g_iViewingZones[client] = selection; + g_iAdminDrawing[client] = -1; + PrintToChat(client, "Activated zone display"); + } + else if (g_iAdminDrawing[client] <= -1) + { + g_iAdminDrawing[client] = 0; + PrintToChat(client, "De-Activated zone display"); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: commands && menus +//---------------------------------------------------------------------------------------------------- +public Action Cmd_Zonetest(int client, int args) +{ + ZoneResetting(0, 4, 0, ""); + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Cmd_Zones(int client, int args) +{ + ZonesMenu(client); + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void ZonesMenu(int client) +{ + if (!IsValidClient(client)) + return; + Menu menu = new Menu(MenuHandler1); + menu.SetTitle("UNLOZE Zones menu!"); + menu.AddItem("", "Create new Zone"); + menu.AddItem("", "Rename Zones"); + menu.AddItem("", "Show/hide Zones"); + menu.AddItem("", "Delete Zone"); + menu.AddItem("", "Goto Zone"); + menu.AddItem("", "Editing Zone"); + menu.ExitButton = true; + menu.Display(client, 0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuHandler1(Menu menu, MenuAction action, int param1, int choice) +{ + if (action == MenuAction_Select && choice > -1) + { + g_iAdminSelectOpion[param1] = choice; + if (!!choice) + MenuZoneCounter(param1); + else + { + PrintToChat(param1, "Creating new zone"); + cmd_menuFinishZone(param1); + } + } + else if (EndMenu(action)) + { + delete menu; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action MenuZoneCounter(int client) +{ + Menu menu = CreateMenu(MenuHandler2); + menu.SetTitle("Select which zone to Rename, Display, Delete, Edit or Goto "); + if (g_iZoneCount < 1) + { + PrintToChat(client, "No active zones!"); + ZonesMenu(client); + return Plugin_Continue; + } + for (int i = 0; i <= g_iZoneCount; i++) + if (strlen(g_cZones[i]) > 0) + menu.AddItem("", g_cZones[i]); + menu.ExitButton = true; + menu.Display(client, 0); + return Plugin_Continue; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuHandler2(Menu menu, MenuAction action, int param1, int choice) +{ + if (!IsValidClient(param1)) + return; + float l_fMiddle[MAXZONES][3]; + float l_fMin1[MAXZONES][3], l_fMax1[MAXZONES][3]; + if (action == MenuAction_Select) + { + g_iZoneRefference[param1] = choice; + switch(g_iAdminSelectOpion[param1]) + { + //rename zone + case 1: + { + g_bZoneNaming[param1] = true; + PrintToChat(param1, "Enter the name of the zone into the chat"); + } + //display zones + case 2: + { + DisplayZones(param1, choice); + MenuZoneCounter(param1); + } + //delete zones + case 3: + { + g_iKeyChecker = choice; + if (deleteFromFile()) + { + PrintToChat(param1, "Deleting %s ", g_cZones[choice]); + ZoneResetting(0, 0, param1, ""); + } + MenuZoneCounter(param1); + } + //goto zone + case 4: + { + PrintToChat(param1, "Teleported to: %s", g_cZones[choice]); + l_fMin1[choice][0] = g_fStartPos[choice][0]; + l_fMin1[choice][1] = g_fStartPos[choice][1]; + l_fMin1[choice][2] = g_fStartPos[choice][2]; + l_fMax1[choice][0] = g_fEndPos[choice][0]; + l_fMax1[choice][1] = g_fEndPos[choice][1]; + l_fMax1[choice][2] = g_fEndPos[choice][2]; + GetMiddleOfABox(l_fMin1[choice], l_fMax1[choice], l_fMiddle[choice]); + TeleportEntity(param1, l_fMiddle[choice], NULL_VECTOR, NULL_VECTOR); + MenuZoneCounter(param1); + } + //edit zone + case 5: + { + SubMenuForEditing(param1); + } + } + } + else if (EndMenu(action)) + { + if (!g_iZoneCount && IsValidClient(param1)) + PrintToChat(param1, "No zones available"); + delete menu; + //experimental + g_iAdminSelectOpion[param1] = 0; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SubMenuForEditing(int client) +{ + Menu menu1 = CreateMenu(MenuHandler3); + menu1.SetTitle("UNLOZE Editing zone: %s", g_cZones[g_iZoneRefference[client]]); + menu1.AddItem("", "Redo Zone"); + menu1.AddItem("", "move Zone down"); + menu1.AddItem("", "move Zone up"); + menu1.AddItem("", "move Zone left"); + menu1.AddItem("", "move Zone right"); + menu1.AddItem("", "move Zone backwards"); + menu1.AddItem("", "move Zone forwards"); + menu1.ExitButton = true; + menu1.Display(client, 0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public bool EndMenu(MenuAction action) +{ + if (action == MenuAction_End) + { + return true; + } + return false; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuHandler3(Menu menu, MenuAction action, int param1, int choice) +{ + float l_fMoveStartPos[3], l_fMoveEndPos[3]; + l_fMoveStartPos = g_fStartPos[g_iZoneRefference[param1]]; + l_fMoveEndPos = g_fEndPos[g_iZoneRefference[param1]]; + if (EndMenu(action)) + { + if (!g_iZoneCount && IsValidClient(param1)) + PrintToChat(param1, "No zones available"); + delete menu; + } + else if (action == MenuAction_Select) + { + switch(choice) + { + //redo zone + case 0: + { + g_iAdminDrawing[param1] = 1; + cmd_redoZone(param1); + } + //move zone down + case 1: + { + l_fMoveStartPos[2] += -15.0; + } + //move zone up + case 2: + { + l_fMoveEndPos[2] -= -15.0; + } + //move zone left + case 3: + { + l_fMoveStartPos[1] += 15.0; + } + //move zone right + case 4: + { + l_fMoveEndPos[1] -= 15.0; + } + //move zone backwards + case 5: + { + l_fMoveStartPos[0] += -15.0; + } + //move zone forwards + case 6: + { + l_fMoveEndPos[0] -= -15.0; + } + } + if (!!choice) + { + g_iAdminSelectOpion[param1] = 5; + g_fStartPos[g_iZoneRefference[param1]] = l_fMoveStartPos; + g_fEndPos[g_iZoneRefference[param1]] = l_fMoveEndPos; + ZoneResetting(g_iZoneRefference[param1], 2, param1, ""); + SubMenuForEditing(param1); + } + } + return 0; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void ZoneResetting(int index, int state, int client, char[] zoneRenaming) +{ + KillAllMultiples(); + if (state > 0 && state < 4) + g_iKeyChecker = index; + switch(state) + { + //deleting zone + case 0: + { + g_iZoneCount--; + } + //adding new zone + case 1: + { + g_iZoneCount++; + writetofile(g_fStartPos[index], g_fEndPos[index], g_cZones[index], client, 1); + } + //editing zone + case 2: + { + writetofile(g_fStartPos[index], g_fEndPos[index], g_cZones[index], client, 0); + } + //renaming zone + case 3: + { + writetofile(g_fStartPos[index], g_fEndPos[index], zoneRenaming, client, 0); + } + //else do nothing here + } + resetZones(); + ReadZoneFile(); + for (int i = 0; i <= g_iZoneCount; i++) + { + CreateZones(g_fStartPos[i], g_fEndPos[i], g_cZones[i], i); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void cmd_redoZone(int client) +{ + GetClientAbsOrigin(client, g_fStartPos[g_iZoneRefference[client]]); + Menu menu1 = CreateMenu(MenuEditExistingZones); + g_bAdminNewZone = false; + menu1.SetTitle("UNLOZE Editing zone: %s", g_cZones[g_iZoneRefference[client]]); + menu1.AddItem("", "Finish Zone"); + menu1.AddItem("", "restart Zone"); + menu1.ExitButton = true; + menu1.Display(client, 0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuEditExistingZones(Menu menu, MenuAction action, int param1, int choice) +{ + if (EndMenu(action)) + { + if (!g_iZoneCount && IsValidClient(param1)) + PrintToChat(param1, "No zones available"); + g_iAdminDrawing[param1] = 0; + delete menu; + } + else if (action == MenuAction_Select) + { + switch(choice) + { + case 0: + { + ZoneResetting(g_iZoneRefference[param1], 2, param1, ""); + g_iAdminDrawing[param1] = 0; + SubMenuForEditing(param1); + } + case 1: + { + cmd_redoZone(param1); + } + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void ResetClient(int client) +{ + g_iAdminSelectOpion[client] = 0; + g_iAdminDrawing[client] = 0; + g_iViewingZones[client] = 0; + g_bZoneNaming[client] = false; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action cmd_menuFinishZone(int client) +{ + g_iAdminDrawing[client] = 1; + g_bAdminNewZone = true; + GetClientAbsOrigin(client, g_fStartPos[g_iZoneCount]); + Menu menu = new Menu(MenuHandlerfinishzone); + menu.SetTitle("UNLOZE Zones menu!"); + menu.AddItem("", "Finish new Zone"); + menu.AddItem("", "Restart new Zone"); + menu.ExitButton = true; + menu.Display(client, 0); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuHandlerfinishzone(Menu menu, MenuAction action, int param1, int choice) +{ + if (action == MenuAction_End) + { + g_iAdminSelectOpion[param1] = 0; + delete menu; + g_bAdminNewZone = false; + g_iAdminDrawing[param1] = 0; + } + else if (action == MenuAction_Select) + { + if (!choice) + { + PrintToChat(param1, "Finished creating zone!"); + Format(g_cZones[g_iZoneCount], sizeof(g_cZones), "UNASSIGNED_NAME"); + ZoneResetting(g_iZoneCount, 1, param1, ""); + g_iAdminDrawing[param1] = 0; + g_bAdminNewZone = false; + ZonesMenu(param1); + } + else + { + cmd_menuFinishZone(param1); + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: simple say hook +//---------------------------------------------------------------------------------------------------- +public Action Cmd_Say(int client, int args) +{ + if (g_bZoneNaming[client]) + { + char l_cZoneRenaming[ZONENAMELENGTH]; + for (int i = 1; i <= MaxClients; i++) + if (IsValidClient(i) && i != client && g_bZoneNaming[i]) + { + PrintToChat(client, "Other admin is already renaming zones"); + g_bZoneNaming[client] = false; + return Plugin_Continue; + } + GetCmdArgString(l_cZoneRenaming, sizeof(l_cZoneRenaming)); + chattrim(l_cZoneRenaming); + ZoneResetting(g_iZoneRefference[client], 3, client, l_cZoneRenaming); + g_iZoneRefference[client] = 0; + g_bZoneNaming[client] = false; + g_iAdminSelectOpion[client] = 1; + MenuZoneCounter(client); + } + return Plugin_Continue; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void chattrim(char[] message) +{ + for (int i = 0; i < strlen(message); i++) + { + if (StrContains(message[i], "}", false) >= 0) + { + strcopy(message, strlen(message), message[i]); + } + } + ReplaceStrings(message, "xxx"); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Creatingzonepoints and displaying them: https://forums.alliedmods.net/showthread.php?p=2030793 +//---------------------------------------------------------------------------------------------------- +public void CreateZonePoints(float point[8][3]) +{ + for (int i = 1; i < 7; i++) + { + for (int j = 0; j < 3; j++) + { + point[i][j] = point[((i >> (2 - j)) & 1) * 7][j]; + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action DrawZone(int client, float array[8][3], int beamsprite, int halosprite, color[4], float life) +{ + //shavit + static int pairs[][] = + { + { 0, 2 }, + { 2, 6 }, + { 6, 4 }, + { 4, 0 }, + { 0, 1 }, + { 3, 1 }, + { 3, 2 }, + { 3, 7 }, + { 5, 1 }, + { 5, 4 }, + { 6, 7 }, + { 7, 5 } + }; + for (int i = 0; i < 12; i++) + { + TE_SetupBeamPoints(array[pairs[i][0]], array[pairs[i][1]], beamsprite, halosprite, 0, 0, life, 5.0, 5.0, 1, 1.1, color, 1); + TE_SendToClient(client, 0.0); + } + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int CheckNextEntryKey() +{ + int i_counter[MAXPLAYERS]; + int l_iZoneTempCount; + int i_Upper; + Handle l_hZoneFile = INVALID_HANDLE; + char l_cLine[ZONENAMELENGTH]; + l_hZoneFile = OpenFile(g_cConfigZones, "r"); + while (!IsEndOfFile(l_hZoneFile) && ReadFileLine(l_hZoneFile, l_cLine, sizeof(l_cLine))) + { + ReplaceStrings(l_cLine, "xxx"); + if (!!StringToInt(l_cLine)) + { + i_counter[l_iZoneTempCount] = StringToInt(l_cLine); + ++l_iZoneTempCount; + } + } + for (int i = 0; i < l_iZoneTempCount; i++) + { + if (i_counter[i] > i_Upper) + { + i_Upper = i_counter[i]; + } + } + i_Upper++; + CloseHandle(l_hZoneFile); + return i_Upper; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int Keychecker() +{ + int l_iZoneTempCount[MAXZONES]; + int l_iCounter; + Handle l_hZoneFile = INVALID_HANDLE; + char l_cLine[ZONENAMELENGTH]; + l_hZoneFile = OpenFile(g_cConfigZones, "r"); + while (!IsEndOfFile(l_hZoneFile) && ReadFileLine(l_hZoneFile, l_cLine, sizeof(l_cLine))) + { + ReplaceStrings(l_cLine, "name"); + if (!!StringToInt(l_cLine)) + { + l_iZoneTempCount[l_iCounter++] = StringToInt(l_cLine); + } + if (StrEqual(l_cLine, g_cZones[g_iKeyChecker])) + { + CloseHandle(l_hZoneFile); + return l_iZoneTempCount[l_iCounter - 1]; + } + } + CloseHandle(l_hZoneFile); + return 0; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Writing to File +//---------------------------------------------------------------------------------------------------- +public void writetofile(float[3] startpos, float[3] endpos, char[] zones, int client, int state) +{ + char l_cEntryCount[MAXZONES]; + char l_cTransfer[MAXZONES]; + KeyValues l_kvZoneEntries = CreateKeyValues("Zones"); + int l_iZoneKey; + float l_fMin1[3], l_fMax1[3]; + if (!state) + l_iZoneKey = Keychecker(); + else + l_iZoneKey = CheckNextEntryKey(); + if (!l_iZoneKey) + return; + IntToString(l_iZoneKey, l_cEntryCount, sizeof(l_cEntryCount)); + l_fMin1[0] = startpos[0]; + l_fMin1[1] = startpos[1]; + l_fMin1[2] = startpos[2]; + l_fMax1[0] = endpos[0]; + l_fMax1[1] = endpos[1]; + l_fMax1[2] = endpos[2]; + if (!l_kvZoneEntries.ImportFromFile(g_cConfigZones)) + { + delete l_kvZoneEntries; + g_iAdminSelectOpion[client] = 0; + return; + } + if (RetrieveZoneIndex(zones) < 1) + { + IntToString(l_iZoneKey, l_cTransfer, sizeof(l_cTransfer)); + Format(l_cTransfer, sizeof(l_cTransfer), "_%s", l_cTransfer); + StrCat(zones, sizeof(g_cZones), l_cTransfer); + } + PrintToChat(client, "Updated zone name to: %s", zones); + l_kvZoneEntries.Rewind(); + l_kvZoneEntries.JumpToKey(l_cEntryCount, true); + KvSetString(l_kvZoneEntries, "name", zones); + KvSetVector(l_kvZoneEntries, "cordinate_a", l_fMin1); + KvSetVector(l_kvZoneEntries, "cordinate_b", l_fMax1); + l_kvZoneEntries.Rewind(); + l_kvZoneEntries.ExportToFile(g_cConfigZones); + delete l_kvZoneEntries; + //forward + Call_StartForward(g_hForwardedZonesCreated); + Call_Finish(); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int RetrieveZoneIndex(char[] zone) +{ + int i = strlen(zone) - 1; + return StringToInt(zone[i]); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Deleting entries +//---------------------------------------------------------------------------------------------------- +public bool deleteFromFile() +{ + int l_iZoneKey; + l_iZoneKey = Keychecker(); + if (!l_iZoneKey) + return false; + char l_cEntryCount[ZONENAMELENGTH]; + KeyValues l_kvZoneEntries = CreateKeyValues("Zones"); + IntToString(l_iZoneKey, l_cEntryCount, sizeof(l_cEntryCount)); + if (!l_kvZoneEntries.ImportFromFile(g_cConfigZones)) + { + delete l_kvZoneEntries; + return false; + } + l_kvZoneEntries.Rewind(); + while (!l_kvZoneEntries.JumpToKey(l_cEntryCount, false)) + { + l_iZoneKey++; + IntToString(l_iZoneKey, l_cEntryCount, sizeof(l_cEntryCount)); + if (l_iZoneKey > 64) + break; + } + l_kvZoneEntries.DeleteThis(); + l_kvZoneEntries.Rewind(); + l_kvZoneEntries.ExportToFile(g_cConfigZones); + delete l_kvZoneEntries; + return true; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: PlayerRun +//---------------------------------------------------------------------------------------------------- +//int& buttons int& weapon, int& subtype, int& cmdnum, int& tickcount, int& seed, int mouse[2] +public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, int cmdnum, int tickcount, int seed, const int mouse[2]) +{ + float points[8][3]; + //admin is drawing a new zone + if (IsValidClient(client) && client < 64 && g_iAdminDrawing[client] >= 1) + { + g_iAdminDrawing[client]++; + if (g_iAdminDrawing[client] >= 15) + { + g_iAdminDrawing[client] = 1; + if (g_bAdminNewZone) + { + g_fEndPos[g_iZoneCount] = GetAimPosition(client); + points[0] = g_fStartPos[g_iZoneCount]; + points[7] = g_fEndPos[g_iZoneCount]; + } + else + { + g_fEndPos[g_iZoneRefference[client]] = GetAimPosition(client); + points[0] = g_fStartPos[g_iZoneRefference[client]]; + points[7] = g_fEndPos[g_iZoneRefference[client]]; + } + CreateZonePoints(points); + DrawZone(client, points, g_iBeam, 0, { 255, 255, 255, 255 }, 0.5); + } + } + //people with custom flag 1 that want to see zones or admins + else if (IsValidClient(client) && client < 64 && g_iAdminDrawing[client] <= -1 && g_iZoneCount > 0) + { + g_iAdminDrawing[client] -= 1; + if (g_iAdminDrawing[client] <= -15) + { + g_iAdminDrawing[client] = -1; + points[0] = g_fStartPos[g_iViewingZones[client]]; + points[7] = g_fEndPos[g_iViewingZones[client]]; + //fills all other points than [0] and [7] + CreateZonePoints(points); + DrawZone(client, points, g_iBeam, 0, { 255, 255, 255, 255 }, 1.0); + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: GetAimPosition for zone end drawing +//---------------------------------------------------------------------------------------------------- +float[] GetAimPosition(int client) +{ + float pos[3]; + float angles[3]; + float end[3]; + GetClientEyePosition(client, pos); + GetClientEyeAngles(client, angles); + TR_TraceRayFilter(pos, angles, MASK_SHOT, RayType_Infinite, TraceFilter_NoClients, client); + if (TR_DidHit()) + { + TR_GetEndPosition(end); + return end; + } + return pos; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public bool TraceFilter_NoClients(int entity, int contentsMask, any data) +{ + return (entity != data && 1 <= data <= MaxClients || !IsClientInGame(data)); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Mapstart +//---------------------------------------------------------------------------------------------------- +public void OnMapStart() +{ + g_bAdminNewZone = false; + PrecacheModel("models/props/cs_office/vending_machine.mdl"); + g_iBeam = PrecacheModel("materials/unloze_tracers/xbeam.vmt"); + AddFileToDownloadsTable("materials/unloze_tracers/xbeam.vmt"); + AddFileToDownloadsTable("materials/unloze_tracers/xbeam.vtf"); + ZoneResetting(0, 4, 0, ""); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void resetZones() +{ + for (int i = 0; i < MAXZONES; i++) + { + Format(g_cZones[i], sizeof(g_cZones), ""); + g_fStartPos[i][0] = 0.0; + g_fStartPos[i][1] = 0.0; + g_fStartPos[i][2] = 0.0; + g_fEndPos[i][0] = 0.0; + g_fEndPos[i][1] = 0.0; + g_fEndPos[i][2] = 0.0; + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Reads from file +//---------------------------------------------------------------------------------------------------- +public Action ReadZoneFile() +{ + int i_zoneTemp; + char l_cMapName[MAXZONES]; + GetCurrentMap(l_cMapName, sizeof(l_cMapName)); + Handle l_hZoneFile = INVALID_HANDLE; + char l_cLine[ZONENAMELENGTH]; + char sPart[4][32]; + BuildPath(Path_SM, g_cConfigZones, sizeof(g_cConfigZones), "configs/unloze_zones/%s.zones.txt", l_cMapName); + l_hZoneFile = OpenFile(g_cConfigZones, "r"); + if (l_hZoneFile == INVALID_HANDLE) + { + Handle kv = CreateKeyValues("Zones"); + KeyValuesToFile(kv, g_cConfigZones); + CloseHandle(kv); + delete l_hZoneFile; + return Plugin_Handled; + } + while (!IsEndOfFile(l_hZoneFile) && ReadFileLine(l_hZoneFile, l_cLine, sizeof(l_cLine))) + { + if (StrContains(l_cLine, "name", false) > -1) + { + ReplaceStrings(l_cLine, "name"); + Format(g_cZones[i_zoneTemp], sizeof(g_cZones), l_cLine); + } + if (StrContains(l_cLine, "cordinate_a", false) >= 0) + { + ReplaceString(l_cLine, sizeof(l_cLine), "\"", "", true); + ReplaceString(l_cLine, sizeof(l_cLine), "cordinate_a", "", true); + ExplodeString(l_cLine, " ", sPart, 4, 32); + g_fStartPos[i_zoneTemp][0] = StringToFloat(sPart[0]);//reading first vector + g_fStartPos[i_zoneTemp][1] = StringToFloat(sPart[1]);//reading second vector + g_fStartPos[i_zoneTemp][2] = StringToFloat(sPart[2]);//reading third vector + } + if (StrContains(l_cLine, "cordinate_b", false) >= 0) + { + ReplaceString(l_cLine, sizeof(l_cLine), "\"", "", true); + ReplaceString(l_cLine, sizeof(l_cLine), "cordinate_b", "", true); + ExplodeString(l_cLine, " ", sPart, 4, 32); + g_fEndPos[i_zoneTemp][0] = StringToFloat(sPart[0]); + g_fEndPos[i_zoneTemp][1] = StringToFloat(sPart[1]); + g_fEndPos[i_zoneTemp][2] = StringToFloat(sPart[2]); + i_zoneTemp++; + } + } + g_iZoneCount = i_zoneTemp; + delete l_hZoneFile; + return Plugin_Handled; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: OnClientPostAdminCheck && disconnect +//---------------------------------------------------------------------------------------------------- +public void OnClientPostAdminCheck(int client) +{ + ResetClient(client); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientDisconnect(int client) +{ + ResetClient(client); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Hook roundstart +//---------------------------------------------------------------------------------------------------- +public void Event_roundStart(Handle event, const char[] name, bool dontBroadcast) +{ + ZoneResetting(0, 4, 0, ""); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Destroys trigger_multiple´s in current round +//---------------------------------------------------------------------------------------------------- +public void KillAllMultiples() +{ + int l_iZoneEntity; + for (int i = 0; i <= g_iZoneCount; i++) + { + l_iZoneEntity = EntRefToEntIndex(g_iZoneEntRefference[i]); + if (IsValidEntRef(l_iZoneEntity)) + { + SDKUnhook(l_iZoneEntity, SDKHook_StartTouchPost, OnStartTouch); + SDKUnhook(l_iZoneEntity, SDKHook_EndTouchPost, OnEndTouch); + AcceptEntityInput(l_iZoneEntity, "Kill"); + } + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Zone loading https://forums.alliedmods.net/showthread.php?p=2585082 +//---------------------------------------------------------------------------------------------------- +public void CreateZones(float f_min[3], float f_max[3], char[] sZoneName, int zoneCount) +{ + float l_fMiddle[3], l_fMin1[3], l_fMax1[3]; + char l_cZoneName[ZONENAMELENGTH]; + Format(l_cZoneName, sizeof(l_cZoneName), sZoneName); + int entindex = CreateEntityByName("trigger_multiple"); + if (entindex != -1) + { + /* + * According to a mysterious source: + * Spawnflags: + * 1 - only a player can trigger this by touch, makes it so a NPC cannot fire a trigger_multiple + * 2 - Won't fire unless triggering ent's view angles are within 45 degrees of trigger's angles (in addition to any other conditions), so if you want the player to only be able to fire the entity at a 90 degree angle you would do ",angles,0 90 0," into your spawnstring. + * 4 - Won't fire unless player is in it and pressing use button (in addition to any other conditions), you must make a bounding box,(max\mins) for this to work. + * 8 - Won't fire unless player/NPC is in it and pressing fire button, you must make a bounding box,(max\mins) for this to work. + * 16 - only non-player NPCs can trigger this by touch + * 128 - Start off, has to be activated by a target_activate to be touchable/usable + * 256 - multiple players can trigger the entity at the same time + */ + DispatchKeyValue(entindex, "targetname", l_cZoneName); + DispatchKeyValue(entindex, "spawnflags", "257"); + SetEntityModel(entindex, "models/props/cs_office/vending_machine.mdl"); + } + else + return; + DispatchSpawn(entindex); + ActivateEntity(entindex); + //we need to copy it over to local floats or else parameter gets updated and the origin is fucked + l_fMin1[0] = f_min[0]; + l_fMin1[1] = f_min[1]; + l_fMin1[2] = f_min[2]; + l_fMax1[0] = f_max[0]; + l_fMax1[1] = f_max[1]; + l_fMax1[2] = f_max[2]; + GetMiddleOfABox(l_fMin1, l_fMax1, l_fMiddle); + TeleportEntity(entindex, l_fMiddle, NULL_VECTOR, NULL_VECTOR); + // Have the mins always be negative + for (int i = 0; i < 3; i++) + { + l_fMin1[i] = l_fMin1[i] - l_fMiddle[i]; + if (l_fMin1[i] > 0.0) + { + l_fMin1[i] *= -1.0; + } + } + // And the maxs always be positive + for (int i = 0; i < 3; i++) + { + l_fMax1[i] = l_fMax1[i] - l_fMiddle[i]; + if (l_fMax1[i] < 0.0) + { + l_fMax1[i] *= -1.0; + } + } + SetEntPropVector(entindex, Prop_Send, "m_vecMins", l_fMin1); + SetEntPropVector(entindex, Prop_Send, "m_vecMaxs", l_fMax1); + SetEntProp(entindex, Prop_Send, "m_nSolidType", 2); + int enteffects = GetEntProp(entindex, Prop_Send, "m_fEffects"); + enteffects |= 32; + SetEntProp(entindex, Prop_Send, "m_fEffects", enteffects); + SDKHook(entindex, SDKHook_StartTouchPost, OnStartTouch); + SDKHook(entindex, SDKHook_EndTouchPost, OnEndTouch); + g_iZoneEntRefference[zoneCount] = EntIndexToEntRef(entindex); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: Entity Output Handlers +//---------------------------------------------------------------------------------------------------- +public void OnStartTouch(int entindex, int other) +{ + char l_cZoneName[MAXZONES]; + if (IsValidClient(other) && IsPlayerAlive(other)) + { + GetEntPropString(entindex, Prop_Data, "m_iName", l_cZoneName, sizeof(l_cZoneName)); + //forward + Call_StartForward(g_hForwardedZonesEnter); + Call_PushCell(other); + Call_PushString(l_cZoneName); + Call_Finish(); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnEndTouch(int entindex, int other) +{ + char l_cZoneName[MAXZONES]; + if (IsValidClient(other) && IsPlayerAlive(other)) + { + GetEntPropString(entindex, Prop_Data, "m_iName", l_cZoneName, sizeof(l_cZoneName)); + //forward + Call_StartForward(g_hForwardedZonesLeaver); + Call_PushCell(other); + Call_PushString(l_cZoneName); + Call_Finish(); + } +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock int IsValidClient(int client, bool nobots = true) +{ + if (client <= 0 || client > MaxClients || !IsClientConnected(client) || (nobots && IsFakeClient(client))) + return false; + return IsClientInGame(client); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void GetMiddleOfABox(const float vec1[3], const float vec2[3], float buffer[3]) +{ + float l_fMid[3]; + MakeVectorFromPoints(vec1, vec2, l_fMid); + l_fMid[0] = l_fMid[0] / 2.0; + l_fMid[1] = l_fMid[1] / 2.0; + l_fMid[2] = l_fMid[2] / 2.0; + AddVectors(vec1, l_fMid, buffer); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock bool IsValidEntRef(int entity) +{ + if (entity && EntRefToEntIndex(entity) != INVALID_ENT_REFERENCE) + { + return true; + } + return false; +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void ReplaceStrings(char[] str, char[] strReplace) +{ + char l_cstrFix[MAXZONES]; + Format(l_cstrFix, sizeof(l_cstrFix), str); + ReplaceString(l_cstrFix, sizeof(l_cstrFix), "\"", ""); + ReplaceString(l_cstrFix, sizeof(l_cstrFix), strReplace, ""); + TrimString(l_cstrFix); + Format(str, sizeof(l_cstrFix), l_cstrFix); +} \ No newline at end of file diff --git a/RaceTimer/webproject/nb-configuration.xml b/RaceTimer/webproject/nb-configuration.xml new file mode 100644 index 00000000..cd0068dc --- /dev/null +++ b/RaceTimer/webproject/nb-configuration.xml @@ -0,0 +1,19 @@ + + + + + + 1.7-web + Tomcat + + diff --git a/RaceTimer/webproject/nbactions.xml b/RaceTimer/webproject/nbactions.xml new file mode 100644 index 00000000..3f2df902 --- /dev/null +++ b/RaceTimer/webproject/nbactions.xml @@ -0,0 +1,50 @@ + + + + run + + war + ear + ejb + + + package + + + true + index.jsp + + + + debug + + war + ear + ejb + + + package + + + true + true + index.jsp + + + + profile + + ejb + ear + war + + + package + + + true + true + index.jsp + + + diff --git a/RaceTimer/webproject/pom.xml b/RaceTimer/webproject/pom.xml new file mode 100644 index 00000000..a62360d9 --- /dev/null +++ b/RaceTimer/webproject/pom.xml @@ -0,0 +1,123 @@ + + + 4.0.0 + + com.mycompany + racetimer_web + 1.0-SNAPSHOT + war + + racetimer_web + + + + 1.8 + 1.8 + + + + + jstl + jstl + 1.1.2 + + + mysql + mysql-connector-java + 8.0.13 + + + org.apache.commons + commons-dbcp2 + 2.5.0 + + + org.quartz-scheduler + quartz + 2.2.1 + + + org.quartz-scheduler + quartz-jobs + 2.2.1 + + + com.github.go-ive + steam-api + 5.0 + + + org.json + json + 20170516 + + + com.google.code.gson + gson + 2.5 + + + commons-io + commons-io + 2.2 + + + commons-logging + commons-logging + 1.2 + adapters + + + com.google.guava + guava + 26.0-jre + + + javax + javaee-web-api + 7.0 + provided + + + + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.3 + + false + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.6 + + + validate + + copy + + + ${endorsed.dir} + true + + + javax + javaee-endorsed-api + 7.0 + jar + + + + + + + + + + diff --git a/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource.java b/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource.java new file mode 100644 index 00000000..8173e8c2 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource.java @@ -0,0 +1,45 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package DBAcess; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.commons.dbcp2.BasicDataSource; + +/** + * + * @author install1 + */ +public class DBCPDataSource { + + private static BasicDataSource ds = new BasicDataSource(); + + static { + try { + ds.setDriver(new com.mysql.cj.jdbc.Driver()); + //ds.setUrl("jdbc:mysql://151.80.230.149:3306/unloze_racetimer_css?useLegacyDatetimeCode=false&serverTimezone=UTC"); + ds.setUrl("jdbc:mysql://localhost:3306/unloze_racetimer_css?useLegacyDatetimeCode=false&serverTimezone=UTC"); + ds.setUsername("unloze_racetimer_css"); + ds.setPassword("ahsdbahb/#¤FHdasd"); + ds.setMaxTotal(-1); + ds.setMinIdle(5); + ds.setMaxIdle(-1); + ds.setMaxOpenPreparedStatements(100); + } catch (SQLException ex) { + Logger.getLogger(DBCPDataSource.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public static Connection getConnection() throws SQLException { + return ds.getConnection(); + } + + private DBCPDataSource() { + } + +} diff --git a/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource2.java b/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource2.java new file mode 100644 index 00000000..0497e74b --- /dev/null +++ b/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource2.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package DBAcess; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.commons.dbcp2.BasicDataSource; + +/** + * + * @author install1 + */ +public class DBCPDataSource2 { + private static BasicDataSource ds = new BasicDataSource(); + + static { + try { + ds.setDriver(new com.mysql.cj.jdbc.Driver()); + //ds.setUrl("jdbc:mysql://151.80.230.149:3306/unloze_stats?useLegacyDatetimeCode=false&serverTimezone=UTC"); + ds.setUrl("jdbc:mysql://localhost:3306/unloze_stats?useLegacyDatetimeCode=false&serverTimezone=UTC"); + ds.setUsername("unloze_stats"); + ds.setPassword("R8J8E9Fzmcc7ZfDAGAk7"); + ds.setMaxTotal(-1); + ds.setMinIdle(5); + ds.setMaxIdle(-1); + ds.setMaxOpenPreparedStatements(100); + } catch (SQLException ex) { + Logger.getLogger(DBCPDataSource.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public static Connection getConnection() throws SQLException { + return ds.getConnection(); + } + + private DBCPDataSource2() { + } +} diff --git a/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource3.java b/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource3.java new file mode 100644 index 00000000..c2e243b3 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/DBAcess/DBCPDataSource3.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package DBAcess; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.commons.dbcp2.BasicDataSource; + +/** + * + * @author install1 + */ +public class DBCPDataSource3 { + private static BasicDataSource ds = new BasicDataSource(); + static { + try { + ds.setDriver(new com.mysql.cj.jdbc.Driver()); + //ds.setUrl("jdbc:mysql://151.80.230.149:3306/xenforo?useLegacyDatetimeCode=false&serverTimezone=UTC"); + ds.setUrl("jdbc:mysql://localhost:3306/xenforo?useLegacyDatetimeCode=false&serverTimezone=UTC"); + ds.setUsername("XenforoWebTimer"); + ds.setPassword("FNF#)(EFHFSNj23n4nfdsfbFE"); + ds.setMaxTotal(-1); + ds.setMinIdle(5); + ds.setMaxIdle(-1); + ds.setMaxOpenPreparedStatements(100); + } catch (SQLException ex) { + Logger.getLogger(DBCPDataSource.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public static Connection getConnection() throws SQLException { + return ds.getConnection(); + } + + private DBCPDataSource3() { + } +} diff --git a/RaceTimer/webproject/src/main/java/DBAcess/DataMapper.java b/RaceTimer/webproject/src/main/java/DBAcess/DataMapper.java new file mode 100644 index 00000000..9840bb0a --- /dev/null +++ b/RaceTimer/webproject/src/main/java/DBAcess/DataMapper.java @@ -0,0 +1,548 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package DBAcess; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.MapBoard; +import FunctionLayer.MapValues; +import FunctionLayer.RecentTimes; +import FunctionLayer.UserBanners; +import FunctionLayer.Users; +import com.google.common.base.Stopwatch; +import com.google.common.collect.HashBiMap; +import java.beans.PropertyVetoException; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.Charset; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.json.JSONException; +import org.json.JSONObject; + +/** + * + * @author install1 + */ +public class DataMapper { + + private static String DefaultAvatar = "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg"; + + public static List GetAllMapColoumns() throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + List AllMapColoumns = new ArrayList(); + List mv = new ArrayList(); + int prefixSkip = 3; + MapBoard mapboardnames = null; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + String l_sSQL = "SELECT * FROM `zetimer_table` LIMIT 1;"; + l_pStatement = l_cCon.prepareStatement(l_sSQL); + l_rsSearch = l_pStatement.executeQuery(); + ResultSetMetaData metaData = l_rsSearch.getMetaData(); + for (int i = prefixSkip; i <= metaData.getColumnCount(); i++) { + mapboardnames = new MapBoard(metaData.getColumnLabel(i), mv); + AllMapColoumns.add(mapboardnames); + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper 1 " + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + Collections.sort(AllMapColoumns, + (d1, d2) -> d1.getMapName().compareTo(d2.getMapName())); + return AllMapColoumns; + } + + public static List getAllUsersNameSteamIdInitialization() throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + List userlist = new ArrayList(); + Users user = null; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + String l_sSQL = "SELECT steam_auth, name FROM `zetimer_table`"; + l_pStatement = l_cCon.prepareStatement(l_sSQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + user = new Users(l_rsSearch.getString(1), l_rsSearch.getString(2), "", 0, 0, 0); + userlist.add(user); + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper 2 " + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return userlist; + } + + public static LinkedHashMap GetMapTimes(String mapindexes, List LeaderBoard, LinkedHashMap Usermap) throws ErrorMessageDisplay { + String l_sSQL = "SELECT steam_auth, " + + mapindexes + " FROM `zetimer_table` WHERE " + + mapindexes + " > 0.00 ORDER BY " + + mapindexes + " ASC;"; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + LinkedHashMap usertimes = new LinkedHashMap(); + Users user; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_sSQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + user = Usermap.get(l_rsSearch.getString(1)); + usertimes.put(user, l_rsSearch.getFloat(2)); + } + l_cCon.close(); + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper GetMapTimes sql: " + l_sSQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return usertimes; + } + + public static List SetUsersAvatars(List userAvatarLinks) throws IOException, ErrorMessageDisplay, SQLException { + String l_SQL = "SELECT * FROM `userStrings`"; + HashBiMap strList = HashBiMap.create(); + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + strList.put(l_rsSearch.getString(1), l_rsSearch.getString(2)); + } + for (int i = 0; i < userAvatarLinks.size(); i++) { + String str = strList.inverse().get(userAvatarLinks.get(i).getSteamID()); + if (str != null) { + userAvatarLinks.get(i).setAvatar(str); + } else { + userAvatarLinks.get(i).setAvatar(DefaultAvatar); + } + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("Datamapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return userAvatarLinks; + } + + public synchronized static void UpdatePlayerAvatarsToDB(List userAvatars, List ConvertedID, int start, int end) throws ErrorMessageDisplay, MalformedURLException, IOException { + List arr = new ArrayList(); + String Avatar = ""; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + String l_sSQL = "CREATE TABLE IF NOT EXISTS `userStrings` (`strings` VARCHAR(254) NOT NULL, `steam_auth` VARCHAR(65) NOT NULL, PRIMARY KEY (`steam_auth`));"; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_sSQL); + l_pStatement.executeUpdate(); + for (int i = start; i < end; i++) { + StringBuilder sb = new StringBuilder(); + URL url = new URL("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=262F3F0C6B83E0F263C272C3762002F1&steamids=" + + ConvertedID.get(i)); + try (InputStream is = url.openStream(); + InputStreamReader in = new InputStreamReader(is); + BufferedReader reader = new BufferedReader(in)) { + String word; + while ((word = reader.readLine()) != null) { + sb.append(word); + } + } + arr.add(sb.toString()); + } + for (int i = start; i < end; i++) { + if (arr.get(i).contains("avatarfull\":")) { + Avatar = arr.get(i).substring(arr.get(i).indexOf("avatarfull\":") + 13, arr.get(i).indexOf("\",\"personastate")); + l_sSQL = "INSERT INTO `userStrings` (`steam_auth`, `strings`) VALUES ('" + userAvatars.get(i).getSteamID() + + "', '" + Avatar + "') ON DUPLICATE KEY UPDATE `strings` = '" + Avatar + "'"; + l_pStatement.addBatch(l_sSQL); + } + } + l_pStatement.executeBatch(); + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper 5 sql: " + l_sSQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + } + + /** + * @deprecated @param PlayerIndexSteamID + * @return + * @throws ErrorMessageDisplay + * @throws SQLException + * @throws IOException + * @throws PropertyVetoException + */ + public static List GetSpecificPlayerTimes(String PlayerIndexSteamID) throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + List PlayerTimes = new ArrayList(); + List AllMaps = GetAllMapColoumns(); + String l_sSQL = ""; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + for (int i = 0; i < AllMaps.size(); i++) { + l_sSQL = "SELECT " + AllMaps.get(i).getMapName() + " FROM `zetimer_table` WHERE steam_auth = '" + PlayerIndexSteamID + "'" + + " AND " + AllMaps.get(i).getMapName() + " > 0.00"; + l_pStatement = l_cCon.prepareStatement(l_sSQL); + l_rsSearch = l_pStatement.executeQuery(); + if (l_rsSearch.next()) { + PlayerTimes.add(l_rsSearch.getFloat(1)); + } + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_sSQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return PlayerTimes; + } + + public static List GetPlayerRelatedMaps(String PlayerIndexSteamID) throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + List AllPlayerRelatedMaps = new ArrayList(); + List mv = new ArrayList(); + List AllMaps = GetAllMapColoumns(); + MapBoard map = null; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + String l_SQL = ""; + try { + l_cCon = DBCPDataSource.getConnection(); + for (int i = 0; i < AllMaps.size(); i++) { + l_SQL = "SELECT " + AllMaps.get(i).getMapName() + " FROM `zetimer_table` WHERE steam_auth = '" + PlayerIndexSteamID + "'"; + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + if (l_rsSearch.next()) { + if (l_rsSearch.getFloat(1) > 0.0) { + map = new MapBoard(AllMaps.get(i).getMapName(), mv); + AllPlayerRelatedMaps.add(map); + } + } + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return AllPlayerRelatedMaps; + } + + public static int GetAdmin(String name, String psw) throws ErrorMessageDisplay { + String l_SQL = ""; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + l_SQL = "CREATE TABLE IF NOT EXISTS `Admins` (`username` VARCHAR(64) NOT NULL, `password` VARCHAR(65) NOT NULL, `role` VARCHAR(65) NOT NULL, PRIMARY KEY (`username`));"; + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_pStatement.executeUpdate(); + l_SQL = "SELECT role FROM `Admins` WHERE username = '" + name + "' AND password = '" + psw + "'"; + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + if (l_rsSearch.next()) { + switch (l_rsSearch.getString(1)) { + case "Tech": { + return 3; + } + case "Global Admin": { + return 2; + } + case "Admin": { + return 1; + } + } + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return 0; + } + + public static void DeleteMapEntry(String map, String steamID) throws ErrorMessageDisplay { + String l_SQL = ""; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + l_SQL = "UPDATE `zetimer_table` SET `" + map + "` = 0.000 WHERE `steam_auth` = '" + steamID + "';"; + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_pStatement.executeUpdate(); + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + } + + public static MapBoard getCurrentMap() throws IOException, ErrorMessageDisplay { + String GetCurrentmap = "https://api.steampowered.com/IGameServersService/GetServerList/v1/?key=262F3F0C6B83E0F263C272C3762002F1&filter=addr\\151.80.230.149:27015&limit=1"; + JSONObject json = readJsonFromUrl(GetCurrentmap); + String sjson = json.toString(); + List mv = new ArrayList(); + MapBoard map = new MapBoard(sjson.substring(sjson.indexOf("map\":\"") + 6, sjson.indexOf("\",\"specport\"")), mv); + return map; + } + + private static String readAll(Reader rd) throws IOException { + StringBuilder sb = new StringBuilder(); + int cp; + while ((cp = rd.read()) != -1) { + sb.append((char) cp); + } + return sb.toString(); + } + + public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { + InputStream is = new URL(url).openStream(); + BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); + String jsonText = readAll(rd); + JSONObject json = new JSONObject(jsonText); + return json; + } + + public static List getHlstatsxIngamePlayerSteamID() throws ErrorMessageDisplay { + List ingamePlayersSteamID = new ArrayList(); + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + String l_SQL = ""; + try { + l_cCon = DBCPDataSource2.getConnection(); + l_SQL = "SELECT steam_id FROM `hlstats_Livestats` WHERE server_id = 1"; + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + ingamePlayersSteamID.add(l_rsSearch.getString(1)); + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return ingamePlayersSteamID; + } + + public static List getCurrentMapLevels(MapBoard map) throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + List allColoumns = GetAllMapColoumns(); + List currentLvls = new ArrayList(); + for (int i = 0; i < allColoumns.size(); i++) { + if (allColoumns.get(i).getMapName().contains(map.getMapName())) { + currentLvls.add(allColoumns.get(i)); + } + } + return currentLvls; + } + + public static Map getAllAdmins() throws ErrorMessageDisplay { + Map HM = new HashMap(); + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + String l_SQL = "SELECT username, role FROM `Admins`"; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + HM.put(l_rsSearch.getString(1), l_rsSearch.getString(2)); + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return HM; + } + + public static void createAdmin(String name, String password, String role) throws ErrorMessageDisplay { + String l_SQL = "INSERT INTO `Admins` (`username`,`password`,`role`) VALUES (?, ?, ?)"; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_pStatement.setString(1, name); + l_pStatement.setString(2, password); + l_pStatement.setString(3, role); + l_pStatement.executeUpdate(); + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + } + + public static LinkedHashMap GetMapRelatedTimes(MapBoard mapname, List LeaderBoardInfo, Map UserMap) throws ErrorMessageDisplay { + LinkedHashMap LHM = new LinkedHashMap(); + int index = 0; + int counter = 0; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + String l_SQL = "SELECT steam_auth, " + + mapname.getMapName() + " FROM `zetimer_table` WHERE " + + mapname.getMapName() + " > 0.00 ORDER BY " + + mapname.getMapName() + " ASC;"; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + counter++; + Users user = UserMap.get(l_rsSearch.getString(1)); + index = LeaderBoardInfo.indexOf(user); + LHM.put(LeaderBoardInfo.get(index), l_rsSearch.getFloat(2)); + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper GetMapRelatedTimes sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return LHM; + } + + public static List getUserbanners(List PlayerLeaderBoard, List ConvertedID) throws ErrorMessageDisplay { + List UBList = new ArrayList(); + UserBanners ub; + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + List user_id = new ArrayList(); + List Provider_key = new ArrayList(); + List user_group_id = new ArrayList(); + String l_SQL = "SELECT t2.user_id, t2.provider_key, t1.user_group_id FROM `xf_user_group_relation` t1, `xf_user_external_auth` t2 WHERE t1.user_id = t2.user_id AND t2.provider = \"steam\""; + try { + l_cCon = DBCPDataSource3.getConnection(); + l_pStatement = l_cCon.prepareStatement(l_SQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next()) { + user_id.add(l_rsSearch.getInt(1)); + Provider_key.add(l_rsSearch.getLong(2)); + user_group_id.add(l_rsSearch.getInt(3)); + } + int indexIDs = 0; + int counter = 0; + while (indexIDs < user_id.size()) { + List Iarr = new ArrayList(); + while (indexIDs < user_id.size() && Provider_key.get(indexIDs).intValue() == Provider_key.get(counter).intValue()) { + //2 = user, 6 = mapper, 7 = admin, 8 = technical staff, 10 = leader, 12 = vip, 15 = event winner, 19 = discord manager, 20 NSFW, 25 = event manager + // 11 = GA + int groupID = user_group_id.get(indexIDs); + if (groupID == 6 || groupID == 7 || groupID == 8 || groupID == 10 || groupID == 11 || groupID == 12 || groupID == 15 || groupID == 19 + || groupID == 25) { + Iarr.add(groupID); + } + indexIDs++; + } + counter = indexIDs; + boolean end = false; + if (indexIDs >= user_id.size()) { + indexIDs = user_id.size() - 1; + end = true; + } + int index = ConvertedID.indexOf(String.valueOf(Provider_key.get(indexIDs - 1))); + if (index != -1) { + ub = new UserBanners(Iarr, PlayerLeaderBoard.get(index)); + UBList.add(ub); + } + if (end) { + break; + } + /* + if (Objects.equals(Provider_key.get(indexIDs - 1), Long.valueOf("76561198343747394"))) { + throw new ErrorMessageDisplay("UBList kaka size: " + UBList.get(UBList.size() - 1).getUrlBanners().size() + + " name: " + UBList.get(UBList.size() - 1).getUser().getName()); + } + */ + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper getUserbanners sql: " + l_SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return UBList; + } + + public static List getRecentTimes() throws ErrorMessageDisplay { + List RTlist = new ArrayList(); + Connection l_cCon = null; + PreparedStatement l_pStatement = null; + ResultSet l_rsSearch = null; + String SQL = "SELECT * FROM `recenttimes_table`"; + try { + l_cCon = DBCPDataSource.getConnection(); + l_pStatement = l_cCon.prepareStatement(SQL); + l_rsSearch = l_pStatement.executeQuery(); + while (l_rsSearch.next() && RTlist.size() < 500) { + RecentTimes RT = new RecentTimes(l_rsSearch.getString(2), l_rsSearch.getString(3), l_rsSearch.getFloat(4), null, 0); + RTlist.add(RT); + } + } catch (SQLException ex) { + throw new ErrorMessageDisplay("failed in DataMapper getRecentTimes sql: " + SQL + ex.getMessage()); + } finally { + CloseConnections(l_pStatement, l_rsSearch, l_cCon); + } + return RTlist; + } + + public static void CloseConnections(PreparedStatement ps, ResultSet rs, Connection con) { + if (rs != null) { + try { + rs.close(); + } catch (SQLException ex) { + Logger.getLogger(DataMapper.class.getName()).log(Level.SEVERE, null, ex); + } + } + if (ps != null) { + try { + ps.close(); + } catch (SQLException ex) { + Logger.getLogger(DataMapper.class.getName()).log(Level.SEVERE, null, ex); + } + } + if (con != null) { + try { + con.close(); + } catch (SQLException ex) { + Logger.getLogger(DataMapper.class.getName()).log(Level.SEVERE, null, ex); + } + } + } +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/Caching/GACaching.java b/RaceTimer/webproject/src/main/java/FunctionLayer/Caching/GACaching.java new file mode 100644 index 00000000..1046050e --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/Caching/GACaching.java @@ -0,0 +1,220 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer.Caching; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import FunctionLayer.MapBoard; +import FunctionLayer.RecentTimes; +import FunctionLayer.UserBanners; +import FunctionLayer.Users; +import com.google.common.base.Stopwatch; +import com.google.common.collect.MapMaker; +import java.beans.PropertyVetoException; +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author install1 + */ +//https://stackoverflow.com/questions/15357953/cached-map-with-data-initialization-and-whole-data-refreshed-periodically-in-jav +public class GACaching { + + //change to 3 hours again + public static final long EXPIRE_TIME_IN_SECONDS = TimeUnit.SECONDS.convert(3, TimeUnit.HOURS); + public static int UPDATE_AVATARS_CYCLE = 2; + public static int AVATAR_INDEXES = 0; + public static GACaching instance = new GACaching(); + private final ConcurrentMap UsersCache; + private final ConcurrentMap UsersCachePoints; + private final ConcurrentMap MapCache; + private final ConcurrentMap MapCacheValues; + private final ConcurrentMap UserBannerCache; + private final ConcurrentMap UserCacheTimeAmount; + private final ConcurrentMap UserCacheRecentTimes; + private final Stopwatch stopwatch; + + public GACaching() { + this.stopwatch = Stopwatch.createUnstarted(); + this.UsersCache = new MapMaker().concurrencyLevel(2).makeMap(); + this.MapCache = new MapMaker().concurrencyLevel(2).makeMap(); + this.UsersCachePoints = new MapMaker().concurrencyLevel(2).makeMap(); + this.MapCacheValues = new MapMaker().concurrencyLevel(2).makeMap(); + this.UserBannerCache = new MapMaker().concurrencyLevel(2).makeMap(); + this.UserCacheTimeAmount = new MapMaker().concurrencyLevel(2).makeMap(); + this.UserCacheRecentTimes = new MapMaker().concurrencyLevel(2).makeMap(); + } + + public synchronized void Initialization() throws ErrorMessageDisplay { + // if the map is not initialized, initialize it with the data + try { + if (!stopwatch.isRunning()) { + putAllConcurrentMaps(); + stopwatch.start(); + } + if (stopwatch.elapsed(TimeUnit.MINUTES) >= UPDATE_AVATARS_CYCLE && AVATAR_INDEXES < UserCacheTimeAmount.values().size()) { + UPDATE_AVATARS_CYCLE = (int) (stopwatch.elapsed().toMinutes() + 2); + updateAvatars(AVATAR_INDEXES); + } + // if the map is expired, refresh all the data in the map + if (stopwatch.elapsed(TimeUnit.SECONDS) >= EXPIRE_TIME_IN_SECONDS) { + UPDATE_AVATARS_CYCLE = 2; + if (AVATAR_INDEXES >= UserCacheTimeAmount.values().size()) { + AVATAR_INDEXES = 0; + } + clearConcurrentMaps(); + putAllConcurrentMaps(); + stopwatch.reset(); + } + } catch (SQLException | IOException | PropertyVetoException ex) { + throw new ErrorMessageDisplay("Initialization failed: " + ex); + } + } + + public synchronized void UpdateDeletedEntries() throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + clearConcurrentMaps(); + putAllConcurrentMaps(); + stopwatch.reset(); + } + + public synchronized void updateAvatars(int AVATAR_INDEXES1) throws ErrorMessageDisplay { + new Thread(() -> { + try { + LogicFacade.UpdatePlayerAvatarsToDB((new ArrayList(UserCacheTimeAmount.values())), AVATAR_INDEXES1); + } catch (IOException | ErrorMessageDisplay ex) { + Logger.getLogger(GACaching.class.getName()).log(Level.SEVERE, null, ex); + } + }).start(); + //each itereation handle 200 updates + AVATAR_INDEXES += 200; + } + + private Map getUserRecentTimesCache(ConcurrentMap UserCacheTimeAmount1, ConcurrentMap mpb) throws ErrorMessageDisplay { + LinkedHashMap LHM = LogicFacade.getRecentTimes(UserCacheTimeAmount1, mpb); + return LHM; + } + + private Map getUserCacheContent() throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + List Users; + Users = LogicFacade.getAllUsersNameSteamIdInitialization(); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < Users.size(); i++) { + LHM.put(i, Users.get(i)); + } + return LHM; + } + + private Map getMapBoardCacheContent() throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + List MB; + MB = LogicFacade.GetAllMapColoumns(); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < MB.size(); i++) { + LHM.put(i, MB.get(i)); + } + return LHM; + } + + private Map getUserPointCacheContent(List PlayerLeaderBoard, List mapBoard) throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + List Users; + Users = LogicFacade.getPlayerPointsAndRankInitialization(PlayerLeaderBoard, mapBoard); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < Users.size(); i++) { + LHM.put(i, Users.get(i)); + } + return LHM; + } + + private Map getMapBoardCacheValues(List mapBoard, List PlayerLeaderBoard) throws ErrorMessageDisplay { + List MB; + MB = LogicFacade.getAllMapValues(mapBoard, PlayerLeaderBoard); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < MB.size(); i++) { + LHM.put(i, MB.get(i)); + } + return LHM; + } + + private Map getUserBannerCacheContent(List PlayerLeaderBoard) throws ErrorMessageDisplay { + List UB; + UB = LogicFacade.getUserBanners(PlayerLeaderBoard); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < UB.size(); i++) { + LHM.put(i, UB.get(i)); + } + return LHM; + } + + private Map getUserTimeCache(List PlayerLeaderBoard, List mapBoard) { + List Users; + Users = LogicFacade.getPlayertimeAmount(PlayerLeaderBoard, mapBoard); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < Users.size(); i++) { + LHM.put(i, Users.get(i)); + } + return LHM; + } + + public List getAllMapValues() { + List MapColoumns = new ArrayList(MapCacheValues.values()); + return MapColoumns; + } + + public List getUserBanners() { + List UB = new ArrayList(UserBannerCache.values()); + return UB; + } + + public List getAllPlayerValues() { + List Users = new ArrayList(UserCacheTimeAmount.values()); + return Users; + } + + public List getAllRecentTimes() { + List RT = new ArrayList(UserCacheRecentTimes.values()); + return RT; + } + + public int getAvatatindexTest() { + return AVATAR_INDEXES; + } + + public int getUPDATE_AVATARS_CYCLE() { + return UPDATE_AVATARS_CYCLE; + } + + public int getStopWatchMinutes() { + return (int) stopwatch.elapsed(TimeUnit.MINUTES); + } + + private void clearConcurrentMaps() { + UsersCache.clear(); + MapCache.clear(); + UsersCachePoints.clear(); + MapCacheValues.clear(); + UserBannerCache.clear(); + UserCacheTimeAmount.clear(); + UserCacheRecentTimes.clear(); + } + + private void putAllConcurrentMaps() throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + UsersCache.putAll(getUserCacheContent()); + MapCache.putAll(getMapBoardCacheContent()); + UsersCachePoints.putAll(getUserPointCacheContent(new ArrayList(UsersCache.values()), new ArrayList(MapCache.values()))); + MapCacheValues.putAll(getMapBoardCacheValues(new ArrayList(MapCache.values()), new ArrayList(UsersCachePoints.values()))); + UserBannerCache.putAll(getUserBannerCacheContent(new ArrayList(UsersCachePoints.values()))); + UserCacheTimeAmount.putAll(getUserTimeCache(new ArrayList(UsersCachePoints.values()), new ArrayList(MapCacheValues.values()))); + UserCacheRecentTimes.putAll(getUserRecentTimesCache(UserCacheTimeAmount, MapCacheValues)); + } +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/Caching/Guava.java b/RaceTimer/webproject/src/main/java/FunctionLayer/Caching/Guava.java new file mode 100644 index 00000000..8d557adc --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/Caching/Guava.java @@ -0,0 +1,121 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer.Caching; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import FunctionLayer.MapBoard; +import FunctionLayer.Users; +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import java.beans.PropertyVetoException; +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author install1 + */ +public class Guava { + + //https://www.tutorialspoint.com/guava/guava_caching_utilities.htm + //https://stackoverflow.com/questions/31576136/how-should-i-implement-guava-cache-when-i-plan-to-cache-multiple-values-efficien + /** + * @deprecated @return the same list with Values for Usernames, steam ids + * and avatars on initializing being set + * @throws ErrorMessageDisplay + */ + public List getAllUsersNameSteamIdInitialization() throws ErrorMessageDisplay { + Supplier> fulllist = Suppliers.memoize(() -> { + List users = new ArrayList(); + try { + users = LogicFacade.getAllUsersNameSteamIdInitialization(); + } catch (SQLException | ErrorMessageDisplay | IOException | PropertyVetoException ex) { + Logger.getLogger(Guava.class.getName()).log(Level.SEVERE, null, ex); + } + return users; + }); + return fulllist.get(); + } + + /** + * @deprecated + * @return + */ + public List GetAllMapColoumns() { + Supplier> fulllist = Suppliers.memoize(() -> { + List MapColoumns = new ArrayList(); + try { + MapColoumns = LogicFacade.GetAllMapColoumns(); + } catch (SQLException | ErrorMessageDisplay | IOException | PropertyVetoException ex) { + Logger.getLogger(Guava.class.getName()).log(Level.SEVERE, null, ex); + } + return MapColoumns; + }); + return fulllist.get(); + } + + + /* + /** + * @deprecated @param PlayerLeaderBoard + * @return + + public List getAllUsersNameSteamIdUpdates(List PlayerLeaderBoard) { + Supplier> fulllist = Suppliers.memoize(() -> { + List users = new ArrayList(); + try { + users = LogicFacade.getAllUsersNameSteamIdUpdates(PlayerLeaderBoard); + } catch (SQLException | ErrorMessageDisplay | IOException | PropertyVetoException ex) { + Logger.getLogger(Guava.class.getName()).log(Level.SEVERE, null, ex); + } + return users; + }); + return fulllist.get(); + }*/ + + /** + * @deprecated + * @param PlayerLeaderBoard + * @param mapBoard + * @return + */ + public List getPlayerPointsAndRankInitialization(List PlayerLeaderBoard, List mapBoard) { + Supplier> fulllist = Suppliers.memoize(() -> { + List users = new ArrayList(); + try { + users = LogicFacade.getPlayerPointsAndRankInitialization(PlayerLeaderBoard, mapBoard); + } catch (SQLException | ErrorMessageDisplay | IOException | PropertyVetoException ex) { + Logger.getLogger(Guava.class.getName()).log(Level.SEVERE, null, ex); + } + return users; + }); + return fulllist.get(); + } + + /** + * @deprecated + * @param PlayerLeaderBoard + * @param mapBoard + * @return + */ + public List getPlayerPointsAndRankUpdates(List PlayerLeaderBoard, List mapBoard) { + Supplier> fulllist = Suppliers.memoize(() -> { + List users = new ArrayList(); + try { + users = LogicFacade.getPlayerPointsAndRankUpdates(PlayerLeaderBoard, mapBoard); + } catch (SQLException | ErrorMessageDisplay | IOException | PropertyVetoException ex) { + Logger.getLogger(Guava.class.getName()).log(Level.SEVERE, null, ex); + } + return users; + }); + return fulllist.get(); + } +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/ErrorMessageDisplay.java b/RaceTimer/webproject/src/main/java/FunctionLayer/ErrorMessageDisplay.java new file mode 100644 index 00000000..46690bdc --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/ErrorMessageDisplay.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +/** + * + * @author install1 + */ +public class ErrorMessageDisplay extends Exception { + + public ErrorMessageDisplay(String msg) { + super(msg); + } +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/LogicFacade.java b/RaceTimer/webproject/src/main/java/FunctionLayer/LogicFacade.java new file mode 100644 index 00000000..b1f44c75 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/LogicFacade.java @@ -0,0 +1,424 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +import DBAcess.DataMapper; +import java.beans.PropertyVetoException; +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentMap; + +/** + * + * @author install1 + */ +public class LogicFacade { + + public static List GetAllMapColoumns() throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + List AllMapColoumns = DataMapper.GetAllMapColoumns(); + AllMapColoumns = MapNameUpdate(AllMapColoumns); + return AllMapColoumns; + } + + public static List getAllUsersNameSteamIdInitialization() throws SQLException, ErrorMessageDisplay, IOException, PropertyVetoException { + List users = DataMapper.getAllUsersNameSteamIdInitialization(); + users = DataMapper.SetUsersAvatars(users); + return users; + } + + private static List MapNameUpdate(List AllMapColoumns) { + int l_iLength = 0; + StringBuilder sb; + for (int i = 0; i < AllMapColoumns.size(); i++) { + l_iLength = AllMapColoumns.get(i).getMapName().length() - 1; + while (Character.isDigit(AllMapColoumns.get(i).getMapName().charAt(l_iLength))) { + l_iLength--; + } + if (AllMapColoumns.get(i).getMapName().charAt(l_iLength) == 'S') { + sb = new StringBuilder(); + sb = sb.append(AllMapColoumns.get(i).getMapName().substring(0, l_iLength)); + AllMapColoumns.get(i).setMapName(sb.toString() + " Stage: " + + AllMapColoumns.get(i).getMapName().substring(l_iLength + 1, AllMapColoumns.get(i).getMapName().length())); + } + } + return AllMapColoumns; + } + + private static List MapNameUpdateRecentTimes(List AllRecentTimes) { + int l_iLength = 0; + StringBuilder sb; + for (int i = 0; i < AllRecentTimes.size(); i++) { + l_iLength = AllRecentTimes.get(i).getMYSQLStage().length() - 1; + while (Character.isDigit(AllRecentTimes.get(i).getMYSQLStage().charAt(l_iLength))) { + l_iLength--; + } + if (AllRecentTimes.get(i).getMYSQLStage().charAt(l_iLength) == 'S') { + sb = new StringBuilder(); + sb = sb.append(AllRecentTimes.get(i).getMYSQLStage().substring(0, l_iLength)); + AllRecentTimes.get(i).setMYSQLStage(sb.toString() + " Stage: " + + AllRecentTimes.get(i).getMYSQLStage().substring(l_iLength + 1, AllRecentTimes.get(i).getMYSQLStage().length())); + } + } + return AllRecentTimes; + } + + public synchronized static void UpdatePlayerAvatarsToDB(List userAvatarLinks, int AVATAR_INDEXES1) throws IOException, ErrorMessageDisplay { + List ConvertedID = new ArrayList(); + int indexRange = AVATAR_INDEXES1; + if (AVATAR_INDEXES1 + 200 >= userAvatarLinks.size()) { + indexRange = userAvatarLinks.size(); + } else { + indexRange += 200; + } + for (int i = AVATAR_INDEXES1; i < indexRange; i++) { + ConvertedID.add(Long.toString(convertSteamIdToCommunityId(userAvatarLinks.get(i).getSteamID()))); + } + DataMapper.UpdatePlayerAvatarsToDB(userAvatarLinks, ConvertedID, AVATAR_INDEXES1, indexRange); + } + + public static long convertSteamIdToCommunityId(String steamId) { + if (steamId.matches("^STEAM_[0-1]:[0-1]:[0-9]+$")) { + String[] tmpId = steamId.substring(8).split(":"); + return Long.valueOf(tmpId[0]) + Long.valueOf(tmpId[1]) * 2 + 76561197960265728L; //76561197960265728L + } else if (steamId.matches("^\\[U:[0-1]:[0-9]+\\]+$")) { + String[] tmpId = steamId.substring(3, steamId.length() - 1).split(":"); + return Long.valueOf(tmpId[0]) + Long.valueOf(tmpId[1]) + 76561197960265728L; //76561197960265727L + } + return 0; + } + + public static Users getUser(String PlayerIndexSteamID, List users, List mapBoard) throws ErrorMessageDisplay { + for (int i = 0; i < users.size(); i++) { + if (users.get(i).getSteamID().equals(PlayerIndexSteamID)) { + Users user = users.get(i); + return user; + } + } + return null; + } + + public static List getPlayerPointsAndRankInitialization(List LeaderBoard, List AllMapColoumns) throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + LinkedHashMap usertimes; + int Points = 0; + int index = 0; + LinkedHashMap HM = new LinkedHashMap(); + List tempusers; + /* + AllMapColoumns roughly 58 itterations currently + LeaderBoard around 1500(?) right now + */ + for (int i = 0; i < LeaderBoard.size(); i++) { + HM.put(LeaderBoard.get(i).getSteamID(), LeaderBoard.get(i)); + } + for (int i = 0; i < AllMapColoumns.size(); i++) { + usertimes = DataMapper.GetMapTimes(ConvertPageNameToDBName(AllMapColoumns.get(i).getMapName()), LeaderBoard, HM); + tempusers = new ArrayList(usertimes.keySet()); + for (int j = 0; j < tempusers.size(); j++) { + Points = ConvertPositionToPoints(j, tempusers.size(), Points); + Users user = HM.get(tempusers.get(j).getSteamID()); + if (user != null) { + index = LeaderBoard.indexOf(user); + LeaderBoard.get(index).setPlayerPoints(LeaderBoard.get(index).getPlayerPoints() + Points); + } + } + } + LeaderBoard.sort(Comparator.comparing(Users::getPlayerPoints).reversed()); + for (int i = 0; i < LeaderBoard.size(); i++) { + LeaderBoard.get(i).setRank(i + 1); + } + return LeaderBoard; + } + + /** + * @deprecated @param LeaderBoard + * @param AllMapColoumns + * @return + * @throws ErrorMessageDisplay + * @throws SQLException + * @throws IOException + * @throws PropertyVetoException + */ + public static List getPlayerPointsAndRankUpdates(List LeaderBoard, List AllMapColoumns) throws ErrorMessageDisplay, SQLException, IOException, PropertyVetoException { + LinkedHashMap usertimes; + int Points = 0; + int index = 0; + LinkedHashMap HM = new LinkedHashMap(); + List tempusers; + for (int i = 0; i < LeaderBoard.size(); i++) { + HM.put(LeaderBoard.get(i).getSteamID(), LeaderBoard.get(i)); + } + //grab ingame players and currently played map, only update those + //this means max 64 players can get updated and only stages on one map + MapBoard map = DataMapper.getCurrentMap(); + List MapLvls = DataMapper.getCurrentMapLevels(map); + List IngamePlayersSteamID = DataMapper.getHlstatsxIngamePlayerSteamID(); + List IngamePlayers = ConvertSteam3ToSteam2(IngamePlayersSteamID, HM); + for (int i = 0; i < MapLvls.size(); i++) { + usertimes = DataMapper.GetMapTimes(ConvertPageNameToDBName(MapLvls.get(i).getMapName()), IngamePlayers, HM); + tempusers = new ArrayList(usertimes.keySet()); + for (int j = 0; j < tempusers.size(); j++) { + Points = ConvertPositionToPoints(j, tempusers.size(), Points); + Users user = HM.get(tempusers.get(j).getSteamID()); + if (user != null) { + index = LeaderBoard.indexOf(user); + LeaderBoard.get(index).setPlayerPoints(LeaderBoard.get(index).getPlayerPoints() + Points); + } + } + } + LeaderBoard.sort(Comparator.comparing(Users::getPlayerPoints).reversed()); + for (int i = 0; i < LeaderBoard.size(); i++) { + LeaderBoard.get(i).setRank(i + 1); + } + return LeaderBoard; + } + + public static int GetAdmin(String name, String psw) throws ErrorMessageDisplay { + return DataMapper.GetAdmin(name, psw); + } + + public static void DeleteMapEntry(String map, String SteamID) throws ErrorMessageDisplay { + map = ConvertPageNameToDBName(map); + //throw new ErrorMessageDisplay("failed in logicfacade. map: " + map + " steam: " + SteamID); + DataMapper.DeleteMapEntry(map, SteamID); + } + + private static String ConvertPageNameToDBName(String map) throws ErrorMessageDisplay { + StringBuilder sb; + int Stage = 0; + int l_iLength = map.length() - 1; //maybe -1 + if (Character.isDigit(map.charAt(l_iLength)) && map.contains("Stage:")) { + while (Character.isDigit(map.charAt(l_iLength))) { + l_iLength--; + } + l_iLength++; + if (l_iLength < map.length()) { + Stage = Integer.valueOf(map.substring(l_iLength, map.length())); + } + l_iLength -= 8; + sb = new StringBuilder(); + sb = sb.append(map.substring(0, l_iLength)).append("S").append(Stage); + map = sb.toString(); + } + //throw new ErrorMessageDisplay("failed in logicfacade. ConvertPageNameToDBName: " + map); + return map; + } + + private static List ConvertSteam3ToSteam2(List IngamePlayersSteamID, Map HM) { + List IngamePlayers = new ArrayList(); + String Convert3To64To2 = ""; + for (int i = 0; i < IngamePlayersSteamID.size(); i++) { + if (IngamePlayersSteamID.get(i).contains("U")) { + Convert3To64To2 = convertCommunityIdToSteamId(convertSteamIdToCommunityId(IngamePlayersSteamID.get(i))); + } else { + Convert3To64To2 = IngamePlayersSteamID.get(i); + } + Users user = HM.get(Convert3To64To2); + if (user != null) { + IngamePlayers.add(user); + } + } + return IngamePlayers; + } + + public static String convertCommunityIdToSteamId(long communityId) { + long steamId1 = communityId % 2; + long steamId2 = communityId - 76561197960265728L; + steamId2 = (steamId2 - steamId1) / 2; + return "STEAM_0:" + steamId1 + ":" + steamId2; + } + + public static Map getAllAdmins() throws ErrorMessageDisplay { + Map HM = DataMapper.getAllAdmins(); + return HM; + } + + public static void createAdmin(String name, String password, String role) throws ErrorMessageDisplay { + DataMapper.createAdmin(name, password, role); + } + + public static List getAllMapValues(List AllMapColoumns, List LeaderBoard) throws ErrorMessageDisplay { + List AllMapColoumnsToDB = new ArrayList(); + List mvListnull = new ArrayList(); + MapBoard maps; + Map HM = new HashMap(); + List allMapBoards = new ArrayList(); + LinkedHashMap MapRelatedHashMap; + List HashmaprelatedUsers; + List HashmaprelatedFloats; + int MapPoints = 0; + for (int i = 0; i < AllMapColoumns.size(); i++) { + maps = new MapBoard(ConvertPageNameToDBName(AllMapColoumns.get(i).getMapName()), mvListnull); + AllMapColoumnsToDB.add(maps); + } + for (int i = 0; i < LeaderBoard.size(); i++) { + HM.put(LeaderBoard.get(i).getSteamID(), LeaderBoard.get(i)); + } + // something goes wrong here as in retrieving maps + for (int i = 0; i < AllMapColoumns.size(); i++) { + List mvList = new ArrayList(); + MapRelatedHashMap = new LinkedHashMap(DataMapper.GetMapRelatedTimes(AllMapColoumnsToDB.get(i), LeaderBoard, HM)); + HashmaprelatedUsers = new ArrayList(MapRelatedHashMap.keySet()); + HashmaprelatedFloats = new ArrayList(MapRelatedHashMap.values()); + + for (int j = 0; j < MapRelatedHashMap.size(); j++) { + MapPoints = ConvertPositionToPoints(j, HashmaprelatedUsers.size(), MapPoints); + MapValues mv1 = new MapValues(j, HashmaprelatedUsers.get(j), HashmaprelatedFloats.get(j), MapPoints); + mvList.add(mv1); + } + maps = new MapBoard(AllMapColoumns.get(i).getMapName(), mvList); + allMapBoards.add(maps); + /* + if (i > 45) { + throw new ErrorMessageDisplay("map: " + allMapBoards.get(i).getMapName() + + " time: " + allMapBoards.get(i).getMapvalues().get(0).getTime() + " allMapBoards size: " + allMapBoards.size() + + " allMapBoards mapvalues size: " + allMapBoards.get(i).getMapvalues().size() + " allMapBoards.get(i).getMapvalues().get(0).getUser().getName(): " + allMapBoards.get(i).getMapvalues().get(0).getUser().getName()); //getMapvalues().get(0) is trobuel + } + */ + } + return allMapBoards; + } + + public static List getPlayerRelatedMapBoard(List mapBoard, Users user) throws ErrorMessageDisplay { + List newMapBoard = new ArrayList(); + int index = 0; + for (int j = 0; j < mapBoard.size(); j++) { + for (int i = 0; i < mapBoard.get(j).getMapvalues().size(); i++) { + if (mapBoard.get(j).getMapvalues().get(i).getUser().equals(user)) { + newMapBoard.add(mapBoard.get(j)); + } + } + } + //throw new ErrorMessageDisplay("newMapBoard size: " + newMapBoard.size() + " mapBoard size: " + mapBoard.size()); + return newMapBoard; + } + + public static List getPlayerPositions(List PlayerRelatedMapBoard, Users user) { + List PlayerPositions = new ArrayList(); + int index = 0; + for (int i = 0; i < PlayerRelatedMapBoard.size(); i++) { + for (int j = 0; j < PlayerRelatedMapBoard.get(i).getMapvalues().size(); j++) { + if (PlayerRelatedMapBoard.get(i).getMapvalues().get(j).getUser().equals(user)) { + PlayerPositions.add(PlayerRelatedMapBoard.get(i).getMapvalues().get(j).getPosition()); + break; + } + } + } + return PlayerPositions; + } + + public static int getMapIndex(List mapBoard, String map) throws ErrorMessageDisplay { + int index = 0; + for (int i = 0; i < mapBoard.size(); i++) { + if (mapBoard.get(i).getMapName().equals(map)) { + index = i; + break; + } + } + //throw new ErrorMessageDisplay("getMapIndex: " + index + " map: " + map + " mapBoard.get(i).getMapName(): " + mapBoard.get(0).getMapName()); + return index; + } + + public static List getUserBanners(List PlayerLeaderBoard) throws ErrorMessageDisplay { + List ConvertedID = new ArrayList(); + for (int i = 0; i < PlayerLeaderBoard.size(); i++) { + ConvertedID.add(Long.toString(convertSteamIdToCommunityId(PlayerLeaderBoard.get(i).getSteamID()))); + } + List UBList = DataMapper.getUserbanners(PlayerLeaderBoard, ConvertedID); + Collections.sort(UBList, (o1, o2) -> o1.getUser().getRank() - o2.getUser().getRank()); + /* + throw new ErrorMessageDisplay("UBList 0: " + UBList.get(0).getUser().getName() + + " UBlist 1: " + UBList.get(1).getUser().getName() + " PlayerLeaderBoard 0: " + PlayerLeaderBoard.get(0).getName() + " PlayerLeaderBoard 1: " + + PlayerLeaderBoard.get(1).getName() + " UBlist size: " + UBList.size() + " PlayerLeaderBoard size: " + PlayerLeaderBoard.size()); + */ + return UBList; + } + + public static List getPlayertimeAmount(List PlayerLeaderBoard, List mapBoard) { + boolean test = false; + for (int i = 0; i < 100; i++) { + if (PlayerLeaderBoard.get(i).getTimes() > 0) { + test = true; + break; + } + } + if (!test) { + for (int i = 0; i < mapBoard.size(); i++) { + for (int j = 0; j < mapBoard.get(i).getMapvalues().size(); j++) { + int index = PlayerLeaderBoard.indexOf(mapBoard.get(i).getMapvalues().get(j).getUser()); + PlayerLeaderBoard.get(index).setTimes(PlayerLeaderBoard.get(index).getTimes() + 1); + } + } + } + return PlayerLeaderBoard; + } + + public static LinkedHashMap getRecentTimes(ConcurrentMap UserCacheTimeAmount1, ConcurrentMap mpb) throws ErrorMessageDisplay { + List RT = DataMapper.getRecentTimes(); + RT = MapNameUpdateRecentTimes(RT); + List userlist = new ArrayList(UserCacheTimeAmount1.values()); + List mpblist = new ArrayList(mpb.values()); + LinkedHashMap LHM = new LinkedHashMap(); + for (int i = 0; i < RT.size(); i++) { + String RTSteamID = RT.get(i).getMYSQLSteamID(); + int index = userlist.indexOf(UserCacheTimeAmount1.entrySet().stream().filter(e -> e.getValue().getSteamID().equals(RTSteamID)).findFirst().get().getValue()); + Users user = userlist.get(index); + RT.get(i).setUser(user); + String mapname = RT.get(i).getMYSQLStage(); + index = mpblist.indexOf(mpb.entrySet().stream().filter(e -> e.getValue().getMapName().equals(mapname)).findFirst().get().getValue()); + int index2 = -1; + if (mpblist.get(index).getMapvalues().stream().filter(e -> e.getUser().getSteamID() + .equals(user.getSteamID())).findFirst().isPresent()) { + index2 = mpblist.get(index).getMapvalues().indexOf(mpblist.get(index) + .getMapvalues().stream().filter(e -> e.getUser().getSteamID().equals(user.getSteamID())).findFirst().get()); + } + if (index2 != -1) { + if (mpblist.get(index).getMapvalues().get(index2).getUser() == null) { + throw new ErrorMessageDisplay("user is also null!"); + } + float test = mpblist.get(index).getMapvalues().get(index2).getTime(); + float newtime = test; + try { + int minutesval = (((int) RT.get(i).getMYSQLOldTime()) * 60); + float secondsval = (RT.get(i).getMYSQLOldTime() - (int) RT.get(i).getMYSQLOldTime()) * 100; + int newminutesval = (((int) newtime) * 60); + float newsecondsval = (newtime - (int) newtime) * 100; + float improvedTime = (minutesval + secondsval) - (newminutesval + newsecondsval); + minutesval = (int) improvedTime / 60; + secondsval = (improvedTime - (minutesval * 60)); + secondsval *= 0.01; + improvedTime = minutesval + secondsval; + //174,999 - 50,1 = 124.899 / 60 = 2 * 60 = 120. 124.899 - 120 = 4.899 * 0.01 = 0.04899 + 2 = 2.04899. + // 2 minutes and 4 seconds, 8.99 milliseconds + RT.get(i).setImprovedTime(improvedTime); + } catch (Exception ex) { + throw new ErrorMessageDisplay("getRecentTimes: " + ex.getMessage() + " mapname: " + mapname + " user: " + user.getName() + " index: " + index); + } + } + } + for (int i = 0; i < RT.size(); i++) { + LHM.put(i, RT.get(i)); + } + return LHM; + } + + public boolean containsSteamID(final List list, final String name) { + return list.stream().map(Users::getSteamID).filter(name::equals).findFirst().isPresent(); + } + + public static int ConvertPositionToPoints(int Position, int PlayerCount, int Points) { + float li = 0; + li = PlayerCount - Position; + Points = (int) Math.floor((li / PlayerCount) * 100); + return Points; + } +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/MapBoard.java b/RaceTimer/webproject/src/main/java/FunctionLayer/MapBoard.java new file mode 100644 index 00000000..805a0db6 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/MapBoard.java @@ -0,0 +1,39 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; +import java.util.List; + +/** + * + * @author install1 + */ +public class MapBoard { + + private String mapName; + private List mapvalues; + + public String getMapName() { + return mapName; + } + + public void setMapName(String mapName) { + this.mapName = mapName; + } + + public List getMapvalues() { + return mapvalues; + } + + public void setMapvalues(List mapvalues) { + this.mapvalues = mapvalues; + } + + public MapBoard(String mapName, List mapvalues) { + this.mapName = mapName; + this.mapvalues = mapvalues; + } + +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/MapValues.java b/RaceTimer/webproject/src/main/java/FunctionLayer/MapValues.java new file mode 100644 index 00000000..d66b1e47 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/MapValues.java @@ -0,0 +1,57 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +/** + * + * @author install1 + */ +public class MapValues { + private int position; + private Users user; + private float time; + private int mapPoints; + + public MapValues(int position, Users user, float time, int mapPoints) { + this.position = position; + this.user = user; + this.time = time; + this.mapPoints = mapPoints; + } + + public int getPosition() { + return position; + } + + public void setPosition(int position) { + this.position = position; + } + + public Users getUser() { + return user; + } + + public void setUser(Users user) { + this.user = user; + } + + public float getTime() { + return time; + } + + public void setTime(float time) { + this.time = time; + } + + public int getMapPoints() { + return mapPoints; + } + + public void setMapPoints(int mapPoints) { + this.mapPoints = mapPoints; + } + +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/Maps.java b/RaceTimer/webproject/src/main/java/FunctionLayer/Maps.java new file mode 100644 index 00000000..29269a1a --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/Maps.java @@ -0,0 +1,40 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +import java.io.Serializable; + +/** + * + * @author install1 + */ +public class Maps { + + private String name; + private int Points; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getPoints() { + return Points; + } + + public void setPoints(int Points) { + this.Points = Points; + } + + public Maps(String name, int Points) { + this.name = name; + this.Points = Points; + } + +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/RecentTimes.java b/RaceTimer/webproject/src/main/java/FunctionLayer/RecentTimes.java new file mode 100644 index 00000000..bba1ad0e --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/RecentTimes.java @@ -0,0 +1,69 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +/** + * + * @author install1 + */ +public class RecentTimes { + + private String MYSQLSteamID; + private String MYSQLStage; + private float MYSQLOldTime; + private Users user; + private float improvedTime; + //in jsp use user object for displaying avatar, steam id, link to user site, improvedtime for showing improved time, stage for displaying what stage on what map + + public RecentTimes(String MYSQLSteamID, String MYSQLStage, float MYSQLOldTime, Users user, float improvedTime) { + this.MYSQLSteamID = MYSQLSteamID; + this.MYSQLStage = MYSQLStage; + this.MYSQLOldTime = MYSQLOldTime; + this.user = user; + this.improvedTime = improvedTime; + } + + public String getMYSQLSteamID() { + return MYSQLSteamID; + } + + public void setMYSQLSteamID(String MYSQLSteamID) { + this.MYSQLSteamID = MYSQLSteamID; + } + + public String getMYSQLStage() { + return MYSQLStage; + } + + public void setMYSQLStage(String MYSQLStage) { + this.MYSQLStage = MYSQLStage; + } + + public float getMYSQLOldTime() { + return MYSQLOldTime; + } + + public void setMYSQLOldTime(float MYSQLOldTime) { + this.MYSQLOldTime = MYSQLOldTime; + } + + public Users getUser() { + return user; + } + + public void setUser(Users user) { + this.user = user; + } + + public float getImprovedTime() { + return improvedTime; + } + + public void setImprovedTime(float improvedTime) { + this.improvedTime = improvedTime; + } + +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/UserBanners.java b/RaceTimer/webproject/src/main/java/FunctionLayer/UserBanners.java new file mode 100644 index 00000000..4ec377bc --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/UserBanners.java @@ -0,0 +1,50 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +import java.util.List; + +/** + * + * @author install1 + */ +public class UserBanners { + + private List UrlBanners; + private Users user; + + public UserBanners(List UrlBanners, Users user) { + this.UrlBanners = UrlBanners; + this.user = user; + } + + public List getUrlBanners() { + return UrlBanners; + } + + public void setUrlBanners(List UrlBanners) { + this.UrlBanners = UrlBanners; + } + + public Users getUser() { + return user; + } + + public void setUser(Users user) { + this.user = user; + } + + @Override + public boolean equals(Object o) { + if (o instanceof UserBanners) { + UserBanners p = (UserBanners) o; + return this.user.equals(p.getUser()); + } else { + return false; + } + } + +} diff --git a/RaceTimer/webproject/src/main/java/FunctionLayer/Users.java b/RaceTimer/webproject/src/main/java/FunctionLayer/Users.java new file mode 100644 index 00000000..11cca925 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/FunctionLayer/Users.java @@ -0,0 +1,76 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package FunctionLayer; + +/** + * + * @author install1 + */ +public class Users { + private String steamID; + private String name; + private String Avatar; + private int Rank; + private int PlayerPoints; + private int Times; + + public Users(String steamID, String name, String Avatar, int Rank, int PlayerPoints, int Times) { + this.steamID = steamID; + this.name = name; + this.Avatar = Avatar; + this.Rank = Rank; + this.PlayerPoints = PlayerPoints; + this.Times = Times; + } + + public String getSteamID() { + return steamID; + } + + public void setSteamID(String steamID) { + this.steamID = steamID; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAvatar() { + return Avatar; + } + + public void setAvatar(String Avatar) { + this.Avatar = Avatar; + } + + public int getRank() { + return Rank; + } + + public void setRank(int Rank) { + this.Rank = Rank; + } + + public int getPlayerPoints() { + return PlayerPoints; + } + + public void setPlayerPoints(int PlayerPoints) { + this.PlayerPoints = PlayerPoints; + } + + public int getTimes() { + return Times; + } + + public void setTimes(int Times) { + this.Times = Times; + } +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/AdminLogin.java b/RaceTimer/webproject/src/main/java/Presentation/AdminLogin.java new file mode 100644 index 00000000..2591438c --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/AdminLogin.java @@ -0,0 +1,22 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author install1 + */ +public class AdminLogin extends Command { + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + + return "AdminLogin"; + } +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/Authenticatelogin.java b/RaceTimer/webproject/src/main/java/Presentation/Authenticatelogin.java new file mode 100644 index 00000000..a4c5106f --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/Authenticatelogin.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class Authenticatelogin extends Command { + + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + String name = request.getParameter("uname"); + String psw = request.getParameter("psw"); + int VerifyAdmin = LogicFacade.GetAdmin(name, psw); + if (VerifyAdmin > 0) { + HttpSession session = request.getSession(); + session.setAttribute("VerifyAdmin", VerifyAdmin); + session.setAttribute("AdminName", name); + if (VerifyAdmin < 2) { + return "Content"; + } else { + Map HM = LogicFacade.getAllAdmins(); + session.setAttribute("adminMap", HM); + return "AdminPage"; + } + } + return "Content"; + + } + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/Command.java b/RaceTimer/webproject/src/main/java/Presentation/Command.java new file mode 100644 index 00000000..32ff8421 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/Command.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author install1 + */ +abstract class Command { + + private static HashMap commands; + + private static void initCommands() { + commands = new HashMap(); + commands.put("SessionAttributeHandler", new SessionAttributeHandler()); + commands.put("mapfnfo", new MapInfo()); + commands.put("playerinfo", new PlayerInfo()); + commands.put("adminLogin", new AdminLogin()); + commands.put("Authenticatelogin", new Authenticatelogin()); + commands.put("DeleteEntry", new DeleteIndex()); + commands.put("CreateAdmin", new CreateAdmin()); + //add methods here for the controller + } + + static Command from(HttpServletRequest request) throws ErrorMessageDisplay { + String commandName = request.getParameter("command"); + if (commands == null) { + initCommands(); + } + return commands.getOrDefault(commandName, new SessionAttributeHandler()); + } + + abstract String execute(HttpServletRequest request, HttpServletResponse response) + throws ErrorMessageDisplay; +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/CreateAdmin.java b/RaceTimer/webproject/src/main/java/Presentation/CreateAdmin.java new file mode 100644 index 00000000..61ac2603 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/CreateAdmin.java @@ -0,0 +1,33 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class CreateAdmin extends Command { + + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + HttpSession session = request.getSession(); + String name = request.getParameter("name"); + String password = request.getParameter("psw1"); + String role = request.getParameter("Role"); + LogicFacade.createAdmin(name, password, role); + Map HM = LogicFacade.getAllAdmins(); + session.setAttribute("adminMap", HM); + return "AdminPage"; + } + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/DeleteIndex.java b/RaceTimer/webproject/src/main/java/Presentation/DeleteIndex.java new file mode 100644 index 00000000..3d9e6f51 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/DeleteIndex.java @@ -0,0 +1,54 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.Caching.GACaching; +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import FunctionLayer.MapBoard; +import FunctionLayer.RecentTimes; +import FunctionLayer.UserBanners; +import FunctionLayer.Users; +import java.beans.PropertyVetoException; +import java.io.IOException; +import java.sql.SQLException; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class DeleteIndex extends Command { + + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + //throw new ErrorMessageDisplay("reached delete indes"); + HttpSession session = request.getSession(); + String playermap = (String) request.getParameter("PlayerRelatedMap"); + String SteamId = request.getParameter("DeleteIndexSteamID"); + LogicFacade.DeleteMapEntry(playermap, SteamId); + try { + GACaching.instance.UpdateDeletedEntries(); + } catch (SQLException | IOException | PropertyVetoException ex) { + Logger.getLogger(DeleteIndex.class.getName()).log(Level.SEVERE, null, ex); + } + List mapBoard = GACaching.instance.getAllMapValues(); + List recentTimes = GACaching.instance.getAllRecentTimes(); + List UB = GACaching.instance.getUserBanners(); + List PlayerLeaderBoard = GACaching.instance.getAllPlayerValues(); + session.setAttribute("LeaderBoard", PlayerLeaderBoard); + session.setAttribute("MapBoard", mapBoard); + session.setAttribute("UserBanners", UB); + session.setAttribute("RecentTimes", recentTimes); + return "Content"; + } + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/DisplayContent.java b/RaceTimer/webproject/src/main/java/Presentation/DisplayContent.java new file mode 100644 index 00000000..55d30ff3 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/DisplayContent.java @@ -0,0 +1,75 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.MapBoard; +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import FunctionLayer.UserBanners; +import FunctionLayer.Users; +import java.beans.PropertyVetoException; +import java.io.IOException; +import java.sql.SQLException; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class DisplayContent extends Command { + + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + try { + HttpSession session = request.getSession(); + List PlayerLeaderBoard = (List) session.getAttribute("LeaderBoard"); + List mapBoard = (List) session.getAttribute("MapBoard"); + boolean firsttime = session.getAttribute("first") != null; + PlayerLeaderBoard = LogicFacade.GetAllUsersNameSteamIdAvatar(PlayerLeaderBoard); + List UpdateDBAvatars = PlayerLeaderBoard; + List UB = (List) session.getAttribute("UserBanners");; + if (mapBoard == null) { + mapBoard = LogicFacade.GetAllMapColoumns(); + } + PlayerLeaderBoard = LogicFacade.getPlayerPointsAndRank(PlayerLeaderBoard, mapBoard, firsttime); + mapBoard = LogicFacade.getAllMapValues(mapBoard, PlayerLeaderBoard); + if (UB == null) { + UB = LogicFacade.getUserBanners(PlayerLeaderBoard); + } + PlayerLeaderBoard = LogicFacade.getPlayertimeAmount(PlayerLeaderBoard, mapBoard); + if (mapBoard.size() < 1) { + throw new ErrorMessageDisplay("No maps available, call jenz mapBoard size: " + mapBoard.size() + " other: " + mapBoard.get(0).getMapvalues().size()); + } + session.setAttribute("first", firsttime); + session.setAttribute("LeaderBoard", PlayerLeaderBoard); + session.setAttribute("MapBoard", mapBoard); + session.setAttribute("UserBanners", UB); + Thread t = new Thread() { + @Override + public void run() { + while (true) { + try { + LogicFacade.UpdatePlayerAvatarsToDB(UpdateDBAvatars); + Thread.sleep(1000 * 60 * 180); + } catch (IOException | InterruptedException | ErrorMessageDisplay ex) { + Logger.getLogger(DisplayContent.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + }; + t.start(); + } catch (SQLException | IOException | PropertyVetoException ex) { + Logger.getLogger(DisplayContent.class.getName()).log(Level.SEVERE, null, ex); + } + return "Content"; + } + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/FrontController.java b/RaceTimer/webproject/src/main/java/Presentation/FrontController.java new file mode 100644 index 00000000..4696ca86 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/FrontController.java @@ -0,0 +1,89 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import java.io.IOException; +import javax.servlet.ServletContextListener; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebListener; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * + * @author install1 + */ +/** + * + * @webServlet should be initiated once on beginning, FrontController is the URL, when applied on tomcat having URL wrong breaks session objects + */ +@WebServlet(name = "FrontController", urlPatterns = {"/FrontController"}) +public class FrontController extends HttpServlet { + + /** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + try { + Command action = Command.from(request); + String view = action.execute(request, response); + request.getRequestDispatcher("/WEB-INF/" + view + ".jsp").forward(request, response); + } catch (ErrorMessageDisplay ex) { + request.setAttribute("error", ex.getMessage()); + request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response); + } + } + + // + /** + * Handles the HTTP GET method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP POST method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/MapInfo.java b/RaceTimer/webproject/src/main/java/Presentation/MapInfo.java new file mode 100644 index 00000000..29bca41e --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/MapInfo.java @@ -0,0 +1,36 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import FunctionLayer.MapBoard; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class MapInfo extends Command { + + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + HttpSession session = request.getSession(false); + if (session != null) { + List mapBoard = (List) session.getAttribute("MapBoard"); + String map = (String) request.getParameter("mapname"); + int index = LogicFacade.getMapIndex(mapBoard, map); + request.setAttribute("SpecificMapIndex", index); + return "MapInfo"; + } else { + return "SessionTimeoutRedirect"; + } + } + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/PlayerInfo.java b/RaceTimer/webproject/src/main/java/Presentation/PlayerInfo.java new file mode 100644 index 00000000..d37fb2d4 --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/PlayerInfo.java @@ -0,0 +1,45 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.LogicFacade; +import FunctionLayer.MapBoard; +import FunctionLayer.Users; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class PlayerInfo extends Command { + + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + HttpSession session = request.getSession(); + if (session != null) { + String PlayerIndexSteamID = request.getParameter("player"); + List users = (List) session.getAttribute("LeaderBoard"); + List mapBoard = (List) session.getAttribute("MapBoard"); + Users user = LogicFacade.getUser(PlayerIndexSteamID, users, mapBoard); + List PlayerRelatedMapBoard = LogicFacade.getPlayerRelatedMapBoard(mapBoard, user); + String SteamID64 = Long.toString(LogicFacade.convertSteamIdToCommunityId(user.getSteamID())); + List PlayerPositions = LogicFacade.getPlayerPositions(PlayerRelatedMapBoard, user); + request.setAttribute("CommunityID", SteamID64); + request.setAttribute("user", user); + request.setAttribute("PlayerRelatedMapBoard", PlayerRelatedMapBoard); + request.setAttribute("positions", PlayerPositions); + //throw new ErrorMessageDisplay("PlayerRelatedMapBoard size: " + PlayerRelatedMapBoard.size()); + return "PlayerInfo"; + } else { + return "SessionTimeoutRedirect"; + } + } + +} diff --git a/RaceTimer/webproject/src/main/java/Presentation/SessionAttributeHandler.java b/RaceTimer/webproject/src/main/java/Presentation/SessionAttributeHandler.java new file mode 100644 index 00000000..54140b0f --- /dev/null +++ b/RaceTimer/webproject/src/main/java/Presentation/SessionAttributeHandler.java @@ -0,0 +1,51 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Presentation; + +import FunctionLayer.RecentTimes; +import FunctionLayer.Caching.GACaching; +import FunctionLayer.ErrorMessageDisplay; +import FunctionLayer.MapBoard; +import FunctionLayer.UserBanners; +import FunctionLayer.Users; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * + * @author install1 + */ +public class SessionAttributeHandler extends Command { + + /** + * SessionAttributeHandler redirects all required calls to clients + * + * @param request + * @param response + * @return + * @throws ErrorMessageDisplay + */ + @Override + String execute(HttpServletRequest request, HttpServletResponse response) throws ErrorMessageDisplay { + HttpSession session = request.getSession(); + GACaching.instance.Initialization(); + List mapBoard = GACaching.instance.getAllMapValues(); + List recentTimes = GACaching.instance.getAllRecentTimes(); + List UB = GACaching.instance.getUserBanners(); + List PlayerLeaderBoard = GACaching.instance.getAllPlayerValues(); + if (mapBoard.size() < 1) { + throw new ErrorMessageDisplay("No maps available, call jenz"); + } + session.setAttribute("LeaderBoard", PlayerLeaderBoard); + session.setAttribute("MapBoard", mapBoard); + session.setAttribute("UserBanners", UB); + session.setAttribute("RecentTimes", recentTimes); + return "Content"; + } + +} diff --git a/RaceTimer/webproject/src/main/resources/cache.ccf b/RaceTimer/webproject/src/main/resources/cache.ccf new file mode 100644 index 00000000..b1f346d9 --- /dev/null +++ b/RaceTimer/webproject/src/main/resources/cache.ccf @@ -0,0 +1,15 @@ +# DEFAULT CACHE REGION +jcs.default=DC +jcs.default.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes +jcs.default.cacheattributes.MaxObjects=1000 +jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache +jcs.default.cacheattributes.UseMemoryShrinker=false +jcs.default.cacheattributes.MaxMemoryIdleTime=3600 +jcs.default.cacheattributes.ShrinkerInterval=60 +jcs.default.elementattributes=org.apache.commons.jcs.engine.ElementAttributes +jcs.default.elementattributes.IsEternal=false +jcs.default.elementattributes.MaxLife=21600 +jcs.default.elementattributes.IdleTime=1800 +jcs.default.elementattributes.IsSpool=true +jcs.default.elementattributes.IsRemote=true +jcs.default.elementattributes.IsLateral=true \ No newline at end of file diff --git a/RaceTimer/webproject/src/main/webapp/META-INF/context.xml b/RaceTimer/webproject/src/main/webapp/META-INF/context.xml new file mode 100644 index 00000000..21e9aa2a --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/AdminLogin.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/AdminLogin.jsp new file mode 100644 index 00000000..2ae20811 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/AdminLogin.jsp @@ -0,0 +1,49 @@ +<%-- + Document : AdminLogin + Created on : 08-11-2018, 21:08:22 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + + + + + + Admin Login + + +
+ +
+
+
+ +
+ + + + + +
+
+
+ +
+ +
+ + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/AdminPage.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/AdminPage.jsp new file mode 100644 index 00000000..eaa0c928 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/AdminPage.jsp @@ -0,0 +1,95 @@ +<%-- + Document : AdminPage + Created on : 13-11-2018, 22:35:37 + Author : install1 +--%> + +<%@page import="java.util.List"%> +<%@page import="java.util.Map"%> +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + + + + + Administration Page + + +
+ +
+
+
+
+ +
+
+ +
+ + + + + + +
+
+
+
+
+
+ <% + Map map = (Map) session.getAttribute("adminMap"); + for (Map.Entry entry : map.entrySet()) { + %> +
+ +
+ <% + out.println(entry.getKey()); + + %> +
+
+ <% out.println(entry.getValue()); + %> +
+
+
+
+ <% + } + + %> +
+
+
+ + +
+ +
+ + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/Content.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/Content.jsp new file mode 100644 index 00000000..7bb1f9b3 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/Content.jsp @@ -0,0 +1,259 @@ +<%-- + Document : index + Created on : 21-10-2018, 14:28:06 + Author : install1 +--%> +<%@page import="java.text.DecimalFormat"%> +<%@page import="FunctionLayer.RecentTimes"%> +<%@page import="java.util.Collections"%> +<%@page import="FunctionLayer.UserBanners"%> +<%@page import="FunctionLayer.MapBoard"%> +<%@page import="FunctionLayer.Users"%> +<%@page import="java.util.List"%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + + + + + Maptimers + + + <% String AdminName = (String) session.getAttribute("AdminName"); + if (AdminName != null) { + %> +

You are logged in as: <%=AdminName%>

+ <% + } + %> + +
+
+
+ + + +
+
+
+
+
+
+
+ <% + List AllMapColoumns = (List) session.getAttribute("MapBoard"); + if (AllMapColoumns != null) { + for (int i = 0; i < AllMapColoumns.size(); i++) { + %> + + <% + } + } else { %> +
  • No map Entries, call jenz!
  • + <% } %> +
    +
    + <% + List recentTimes = (List) session.getAttribute("RecentTimes"); + if (recentTimes != null) { + for (int i = 0; i < recentTimes.size(); i++) { + %> + + <% } + } + %> +
    +
    +
    +
    +
    + <% List UB = (List) session.getAttribute("UserBanners"); + List PlayerLeaderBoard = (List) session.getAttribute("LeaderBoard"); + int UBIndex = 0; + if (PlayerLeaderBoard != null && UB != null) { + // out.println("UB size: " + UB.size()); + for (int j = 0; j < PlayerLeaderBoard.size(); j++) { + %> + + <% } + + } else { + %> +
  • No Player Entries
  • + <% }%> +
    + +
    + + +
    +
    + + +
    +
    + +
    + + + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/MapInfo.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/MapInfo.jsp new file mode 100644 index 00000000..976cfae8 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/MapInfo.jsp @@ -0,0 +1,205 @@ +<%-- + Document : Mapdetails + Created on : 23-10-2018, 14:12:31 + Author : install1 +--%> + +<%@page import="FunctionLayer.UserBanners"%> +<%@page import="FunctionLayer.MapBoard"%> +<%@page import="java.text.DecimalFormat"%> +<%@page import="java.math.BigDecimal"%> +<%@page import="java.util.List"%> +<%@page import="java.util.List"%> +<%@page import="java.util.Iterator"%> +<%@page import="java.util.Map"%> +<%@page import="FunctionLayer.Users"%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + + + + LeaderBoards + + + <% String AdminName = (String) request.getSession().getAttribute("AdminName"); + if (AdminName != null) { + %> +

    You are logged in as: <%=AdminName%>

    + <% + } + %> +
    +
    +
    +
    + +
    +
    +
    + <% + List UB = (List) session.getAttribute("UserBanners"); + List mapBoard = (List) session.getAttribute("MapBoard"); + //might not find mapname as parameter + int index = (Integer) request.getAttribute("SpecificMapIndex"); + String map = (String) request.getParameter("mapname"); + String VerifyAdmins = session.getAttribute("VerifyAdmin") == null ? "0" : String.valueOf(session.getAttribute("VerifyAdmin")); + int VerifyAdmin = Integer.valueOf(VerifyAdmins); + DecimalFormat df = new DecimalFormat(); + df.setMaximumFractionDigits(1); + out.println("

    " + map + "

    "); + if (mapBoard != null) { + for (int i = 0; i < mapBoard.get(index).getMapvalues().size(); i++) { + %> + + <% + if (VerifyAdmin > 0) { + %> +
    + +
    + <% + } + %> +
    +
    + <% } + } + %> +
    +
    +
    + + +
    + + +
    +
    + +
    +
    + + + +
    + + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/PlayerInfo.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/PlayerInfo.jsp new file mode 100644 index 00000000..b662ac38 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/PlayerInfo.jsp @@ -0,0 +1,329 @@ +<%-- + Document : PlayerInfo + Created on : 04-11-2018, 20:57:35 + Author : install1 +--%> + +<%@page import="java.util.ArrayList"%> +<%@page import="FunctionLayer.RecentTimes"%> +<%@page import="FunctionLayer.UserBanners"%> +<%@page import="FunctionLayer.MapBoard"%> +<%@page import="java.text.DecimalFormat"%> +<%@page import="java.util.List"%> +<%@page import="FunctionLayer.Users"%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + + + + Player Stats + + +
    +
    Overview
    +
    + <% + DecimalFormat df = new DecimalFormat(); + List recentTimes = (List) session.getAttribute("RecentTimes"); + List UB = (List) session.getAttribute("UserBanners"); + List DifferentiateMapBoard = (List) session.getAttribute("MapBoard"); + String VerifyAdmins = session.getAttribute("VerifyAdmin") == null ? "0" : String.valueOf(session.getAttribute("VerifyAdmin")); + int VerifyAdmin = Integer.valueOf(VerifyAdmins); + StringBuilder sb = new StringBuilder(); + String SteamID64 = (String) request.getAttribute("CommunityID"); + if (SteamID64 != null) { + sb.append("https://steamcommunity.com/profiles/").append(SteamID64); + } else { + sb.append("https://steamcommunity.com/profiles/"); + } + List PlayerPositions = (List) request.getAttribute("positions"); + Users user = (Users) request.getAttribute("user"); + List PlayerRelatedMapBoard = (List) request.getAttribute("PlayerRelatedMapBoard"); + df.setMaximumFractionDigits(1); + if (user != null && recentTimes != null) { + %> +
    +
    +
    + + <% + for (int i = 0; i < PlayerRelatedMapBoard.size(); i++) { + %> +
    +
    + + <%out.println(" Map " + PlayerRelatedMapBoard.get(i).getMapName());%> + +
    +
    + +
    + <%out.println("Map Position: " + (PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getPosition() + 1)); %> +
    +
    <%out.println("Time: 0" + (int) Math.floor(PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getTime()) + + ":" + (df.format((PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getTime() - Math.floor(PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getTime())) * 100)));%>
    +
    <%out.println("Map Points: " + PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getMapPoints() + "/100"); %>
    +
    + <% + if (VerifyAdmin > 0) { + %> +
    + +
    + <% + } + %> +
    +
    + <% + } + } + %> +
    +
    +
    +
    +
    +
    + <% String AdminName = (String) request.getSession().getAttribute("AdminName"); + if (AdminName != null) { + %> +

    You are logged in as: <%=AdminName%>

    + <% + } %> +

    Recently improved times:

    +
    + <% + for (int i = 0; i < recentTimes.size(); i++) { + if (recentTimes.get(i).getUser().equals(user)) { + %> +
    + <%out.print("\n" + recentTimes.get(i).getMYSQLStage()); %> +
    +
    + <% + float fdefault = recentTimes.get(i).getImprovedTime(); + int MinuteAdjusterImproved = (int) fdefault; + float secondsAdjusterImproved = Float.valueOf(String.format("%.2f", (fdefault - MinuteAdjusterImproved) * 100)); + out.print("\nImproved by: 0" + MinuteAdjusterImproved + ":" + + secondsAdjusterImproved); + %> +
    +
    + <% + } + } + %> +
    +
    +
    +
    +
    +

    Maps with no time yet:

    +
    + <% + List feex = new ArrayList(PlayerRelatedMapBoard); + List feex1 = new ArrayList(DifferentiateMapBoard); + feex1.removeAll(feex); + for (int i = 0; i < feex1.size(); i++) { + %> +
    + + <%out.print("\n" + feex1.get(i).getMapName()); %> + +
    +
    + <% + } + %> +
    +
    + + + +
    + + +
    +
    + +
    +
    + + + +
    +
    + + +
    + + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/SessionTimeoutRedirect.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/SessionTimeoutRedirect.jsp new file mode 100644 index 00000000..1252473b --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/SessionTimeoutRedirect.jsp @@ -0,0 +1,21 @@ +<%-- + Document : SessionTimeoutRedirect + Created on : 08-11-2018, 17:49:13 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + TimeoutHandling + + +
    + + Loading Avatars, please wait 20-30 seconds... +
    + + + diff --git a/RaceTimer/webproject/src/main/webapp/WEB-INF/test.jsp b/RaceTimer/webproject/src/main/webapp/WEB-INF/test.jsp new file mode 100644 index 00000000..36670424 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/WEB-INF/test.jsp @@ -0,0 +1,31 @@ +<%-- + Document : test + Created on : 25-10-2018, 15:39:27 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + JSP Page + + +

    Backup nothingness

    + <% String error = (String) request.getAttribute("error"); + if (error != null) { + out.println("

    Error!!

    "); + out.println(error); + } else { + %> +
    + + +
    + + + <% } + %> + + diff --git a/RaceTimer/webproject/src/main/webapp/index.jsp b/RaceTimer/webproject/src/main/webapp/index.jsp new file mode 100644 index 00000000..e667ee76 --- /dev/null +++ b/RaceTimer/webproject/src/main/webapp/index.jsp @@ -0,0 +1,22 @@ +<%-- + Document : dummy + Created on : 21-10-2018, 17:07:46 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + StartPoint + + +
    + + Loading Avatars, please wait 20-30 seconds... +
    + + + \ No newline at end of file diff --git a/RaceTimer/webproject/target/ROOT.war b/RaceTimer/webproject/target/ROOT.war new file mode 100644 index 00000000..f1190ca0 Binary files /dev/null and b/RaceTimer/webproject/target/ROOT.war differ diff --git a/RaceTimer/webproject/target/classes/.netbeans_automatic_build b/RaceTimer/webproject/target/classes/.netbeans_automatic_build new file mode 100644 index 00000000..e69de29b diff --git a/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource.class b/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource.class new file mode 100644 index 00000000..8b611e48 Binary files /dev/null and b/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource.class differ diff --git a/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource2.class b/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource2.class new file mode 100644 index 00000000..7d5eb3fd Binary files /dev/null and b/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource2.class differ diff --git a/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource3.class b/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource3.class new file mode 100644 index 00000000..88101e27 Binary files /dev/null and b/RaceTimer/webproject/target/classes/DBAcess/DBCPDataSource3.class differ diff --git a/RaceTimer/webproject/target/classes/DBAcess/DataMapper.class b/RaceTimer/webproject/target/classes/DBAcess/DataMapper.class new file mode 100644 index 00000000..27f08297 Binary files /dev/null and b/RaceTimer/webproject/target/classes/DBAcess/DataMapper.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/Caching/GACaching.class b/RaceTimer/webproject/target/classes/FunctionLayer/Caching/GACaching.class new file mode 100644 index 00000000..8e1e73ab Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/Caching/GACaching.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/Caching/Guava.class b/RaceTimer/webproject/target/classes/FunctionLayer/Caching/Guava.class new file mode 100644 index 00000000..249a3f42 Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/Caching/Guava.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/ErrorMessageDisplay.class b/RaceTimer/webproject/target/classes/FunctionLayer/ErrorMessageDisplay.class new file mode 100644 index 00000000..22d8311f Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/ErrorMessageDisplay.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/LogicFacade.class b/RaceTimer/webproject/target/classes/FunctionLayer/LogicFacade.class new file mode 100644 index 00000000..af26372c Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/LogicFacade.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/MapBoard.class b/RaceTimer/webproject/target/classes/FunctionLayer/MapBoard.class new file mode 100644 index 00000000..5b6fb276 Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/MapBoard.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/MapValues.class b/RaceTimer/webproject/target/classes/FunctionLayer/MapValues.class new file mode 100644 index 00000000..3d8f175f Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/MapValues.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/Maps.class b/RaceTimer/webproject/target/classes/FunctionLayer/Maps.class new file mode 100644 index 00000000..5a72e2d2 Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/Maps.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/RecentTimes.class b/RaceTimer/webproject/target/classes/FunctionLayer/RecentTimes.class new file mode 100644 index 00000000..f65d5dcb Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/RecentTimes.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/UserBanners.class b/RaceTimer/webproject/target/classes/FunctionLayer/UserBanners.class new file mode 100644 index 00000000..dd27c836 Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/UserBanners.class differ diff --git a/RaceTimer/webproject/target/classes/FunctionLayer/Users.class b/RaceTimer/webproject/target/classes/FunctionLayer/Users.class new file mode 100644 index 00000000..abbc1ab3 Binary files /dev/null and b/RaceTimer/webproject/target/classes/FunctionLayer/Users.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/AdminLogin.class b/RaceTimer/webproject/target/classes/Presentation/AdminLogin.class new file mode 100644 index 00000000..122cdc05 Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/AdminLogin.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/Authenticatelogin.class b/RaceTimer/webproject/target/classes/Presentation/Authenticatelogin.class new file mode 100644 index 00000000..29b45f4d Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/Authenticatelogin.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/Command.class b/RaceTimer/webproject/target/classes/Presentation/Command.class new file mode 100644 index 00000000..084e4d0c Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/Command.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/CreateAdmin.class b/RaceTimer/webproject/target/classes/Presentation/CreateAdmin.class new file mode 100644 index 00000000..a00fed66 Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/CreateAdmin.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/DeleteIndex.class b/RaceTimer/webproject/target/classes/Presentation/DeleteIndex.class new file mode 100644 index 00000000..8946ad21 Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/DeleteIndex.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/DisplayContent$1.class b/RaceTimer/webproject/target/classes/Presentation/DisplayContent$1.class new file mode 100644 index 00000000..a50b473c Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/DisplayContent$1.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/DisplayContent.class b/RaceTimer/webproject/target/classes/Presentation/DisplayContent.class new file mode 100644 index 00000000..872780ad Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/DisplayContent.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/FrontController.class b/RaceTimer/webproject/target/classes/Presentation/FrontController.class new file mode 100644 index 00000000..399897df Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/FrontController.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/MapInfo.class b/RaceTimer/webproject/target/classes/Presentation/MapInfo.class new file mode 100644 index 00000000..4d808667 Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/MapInfo.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/PlayerInfo.class b/RaceTimer/webproject/target/classes/Presentation/PlayerInfo.class new file mode 100644 index 00000000..b3daeedd Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/PlayerInfo.class differ diff --git a/RaceTimer/webproject/target/classes/Presentation/SessionAttributeHandler.class b/RaceTimer/webproject/target/classes/Presentation/SessionAttributeHandler.class new file mode 100644 index 00000000..5105e522 Binary files /dev/null and b/RaceTimer/webproject/target/classes/Presentation/SessionAttributeHandler.class differ diff --git a/RaceTimer/webproject/target/classes/cache.ccf b/RaceTimer/webproject/target/classes/cache.ccf new file mode 100644 index 00000000..b1f346d9 --- /dev/null +++ b/RaceTimer/webproject/target/classes/cache.ccf @@ -0,0 +1,15 @@ +# DEFAULT CACHE REGION +jcs.default=DC +jcs.default.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes +jcs.default.cacheattributes.MaxObjects=1000 +jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache +jcs.default.cacheattributes.UseMemoryShrinker=false +jcs.default.cacheattributes.MaxMemoryIdleTime=3600 +jcs.default.cacheattributes.ShrinkerInterval=60 +jcs.default.elementattributes=org.apache.commons.jcs.engine.ElementAttributes +jcs.default.elementattributes.IsEternal=false +jcs.default.elementattributes.MaxLife=21600 +jcs.default.elementattributes.IdleTime=1800 +jcs.default.elementattributes.IsSpool=true +jcs.default.elementattributes.IsRemote=true +jcs.default.elementattributes.IsLateral=true \ No newline at end of file diff --git a/RaceTimer/webproject/target/dependency/javaee-endorsed-api-7.0.jar b/RaceTimer/webproject/target/dependency/javaee-endorsed-api-7.0.jar new file mode 100644 index 00000000..7f2e96d0 Binary files /dev/null and b/RaceTimer/webproject/target/dependency/javaee-endorsed-api-7.0.jar differ diff --git a/RaceTimer/webproject/target/maven-archiver/pom.properties b/RaceTimer/webproject/target/maven-archiver/pom.properties new file mode 100644 index 00000000..56b2cfce --- /dev/null +++ b/RaceTimer/webproject/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Dec 26 12:49:35 CET 2018 +version=1.0-SNAPSHOT +groupId=com.mycompany +artifactId=racetimer_web diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT.war b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT.war new file mode 100644 index 00000000..1972da4b Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT.war differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/META-INF/context.xml b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/META-INF/context.xml new file mode 100644 index 00000000..21e9aa2a --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/Tomcat.dpf b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/Tomcat.dpf new file mode 100644 index 00000000..21e9aa2a --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/Tomcat.dpf @@ -0,0 +1,2 @@ + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/AdminLogin.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/AdminLogin.jsp new file mode 100644 index 00000000..2ae20811 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/AdminLogin.jsp @@ -0,0 +1,49 @@ +<%-- + Document : AdminLogin + Created on : 08-11-2018, 21:08:22 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + + + + + + Admin Login + + +
    + +
    +
    +
    + +
    + + + + + +
    +
    +
    + +
    + +
    + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/AdminPage.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/AdminPage.jsp new file mode 100644 index 00000000..eaa0c928 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/AdminPage.jsp @@ -0,0 +1,95 @@ +<%-- + Document : AdminPage + Created on : 13-11-2018, 22:35:37 + Author : install1 +--%> + +<%@page import="java.util.List"%> +<%@page import="java.util.Map"%> +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + + + + + Administration Page + + +
    + +
    +
    +
    +
    + +
    +
    + +
    + + + + + + +
    +
    +
    +
    +
    +
    + <% + Map map = (Map) session.getAttribute("adminMap"); + for (Map.Entry entry : map.entrySet()) { + %> +
    + +
    + <% + out.println(entry.getKey()); + + %> +
    +
    + <% out.println(entry.getValue()); + %> +
    +
    +
    +
    + <% + } + + %> +
    +
    +
    + + +
    + +
    + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/Content.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/Content.jsp new file mode 100644 index 00000000..7bb1f9b3 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/Content.jsp @@ -0,0 +1,259 @@ +<%-- + Document : index + Created on : 21-10-2018, 14:28:06 + Author : install1 +--%> +<%@page import="java.text.DecimalFormat"%> +<%@page import="FunctionLayer.RecentTimes"%> +<%@page import="java.util.Collections"%> +<%@page import="FunctionLayer.UserBanners"%> +<%@page import="FunctionLayer.MapBoard"%> +<%@page import="FunctionLayer.Users"%> +<%@page import="java.util.List"%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + + + + + Maptimers + + + <% String AdminName = (String) session.getAttribute("AdminName"); + if (AdminName != null) { + %> +

    You are logged in as: <%=AdminName%>

    + <% + } + %> + +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + <% + List AllMapColoumns = (List) session.getAttribute("MapBoard"); + if (AllMapColoumns != null) { + for (int i = 0; i < AllMapColoumns.size(); i++) { + %> + + <% + } + } else { %> +
  • No map Entries, call jenz!
  • + <% } %> +
    +
    + <% + List recentTimes = (List) session.getAttribute("RecentTimes"); + if (recentTimes != null) { + for (int i = 0; i < recentTimes.size(); i++) { + %> + + <% } + } + %> +
    +
    +
    +
    +
    + <% List UB = (List) session.getAttribute("UserBanners"); + List PlayerLeaderBoard = (List) session.getAttribute("LeaderBoard"); + int UBIndex = 0; + if (PlayerLeaderBoard != null && UB != null) { + // out.println("UB size: " + UB.size()); + for (int j = 0; j < PlayerLeaderBoard.size(); j++) { + %> + + <% } + + } else { + %> +
  • No Player Entries
  • + <% }%> +
    + +
    + + +
    +
    + + +
    +
    + +
    + + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/MapInfo.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/MapInfo.jsp new file mode 100644 index 00000000..976cfae8 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/MapInfo.jsp @@ -0,0 +1,205 @@ +<%-- + Document : Mapdetails + Created on : 23-10-2018, 14:12:31 + Author : install1 +--%> + +<%@page import="FunctionLayer.UserBanners"%> +<%@page import="FunctionLayer.MapBoard"%> +<%@page import="java.text.DecimalFormat"%> +<%@page import="java.math.BigDecimal"%> +<%@page import="java.util.List"%> +<%@page import="java.util.List"%> +<%@page import="java.util.Iterator"%> +<%@page import="java.util.Map"%> +<%@page import="FunctionLayer.Users"%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + + + + LeaderBoards + + + <% String AdminName = (String) request.getSession().getAttribute("AdminName"); + if (AdminName != null) { + %> +

    You are logged in as: <%=AdminName%>

    + <% + } + %> +
    +
    +
    +
    + +
    +
    +
    + <% + List UB = (List) session.getAttribute("UserBanners"); + List mapBoard = (List) session.getAttribute("MapBoard"); + //might not find mapname as parameter + int index = (Integer) request.getAttribute("SpecificMapIndex"); + String map = (String) request.getParameter("mapname"); + String VerifyAdmins = session.getAttribute("VerifyAdmin") == null ? "0" : String.valueOf(session.getAttribute("VerifyAdmin")); + int VerifyAdmin = Integer.valueOf(VerifyAdmins); + DecimalFormat df = new DecimalFormat(); + df.setMaximumFractionDigits(1); + out.println("

    " + map + "

    "); + if (mapBoard != null) { + for (int i = 0; i < mapBoard.get(index).getMapvalues().size(); i++) { + %> + + <% + if (VerifyAdmin > 0) { + %> +
    + +
    + <% + } + %> +
    +
    + <% } + } + %> +
    +
    +
    + + +
    + + +
    +
    + +
    +
    + + + +
    + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/PlayerInfo.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/PlayerInfo.jsp new file mode 100644 index 00000000..b662ac38 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/PlayerInfo.jsp @@ -0,0 +1,329 @@ +<%-- + Document : PlayerInfo + Created on : 04-11-2018, 20:57:35 + Author : install1 +--%> + +<%@page import="java.util.ArrayList"%> +<%@page import="FunctionLayer.RecentTimes"%> +<%@page import="FunctionLayer.UserBanners"%> +<%@page import="FunctionLayer.MapBoard"%> +<%@page import="java.text.DecimalFormat"%> +<%@page import="java.util.List"%> +<%@page import="FunctionLayer.Users"%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + + + + Player Stats + + +
    +
    Overview
    +
    + <% + DecimalFormat df = new DecimalFormat(); + List recentTimes = (List) session.getAttribute("RecentTimes"); + List UB = (List) session.getAttribute("UserBanners"); + List DifferentiateMapBoard = (List) session.getAttribute("MapBoard"); + String VerifyAdmins = session.getAttribute("VerifyAdmin") == null ? "0" : String.valueOf(session.getAttribute("VerifyAdmin")); + int VerifyAdmin = Integer.valueOf(VerifyAdmins); + StringBuilder sb = new StringBuilder(); + String SteamID64 = (String) request.getAttribute("CommunityID"); + if (SteamID64 != null) { + sb.append("https://steamcommunity.com/profiles/").append(SteamID64); + } else { + sb.append("https://steamcommunity.com/profiles/"); + } + List PlayerPositions = (List) request.getAttribute("positions"); + Users user = (Users) request.getAttribute("user"); + List PlayerRelatedMapBoard = (List) request.getAttribute("PlayerRelatedMapBoard"); + df.setMaximumFractionDigits(1); + if (user != null && recentTimes != null) { + %> +
    +
    +
    + + <% + for (int i = 0; i < PlayerRelatedMapBoard.size(); i++) { + %> +
    +
    + + <%out.println(" Map " + PlayerRelatedMapBoard.get(i).getMapName());%> + +
    +
    + +
    + <%out.println("Map Position: " + (PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getPosition() + 1)); %> +
    +
    <%out.println("Time: 0" + (int) Math.floor(PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getTime()) + + ":" + (df.format((PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getTime() - Math.floor(PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getTime())) * 100)));%>
    +
    <%out.println("Map Points: " + PlayerRelatedMapBoard.get(i).getMapvalues().get(PlayerPositions.get(i)).getMapPoints() + "/100"); %>
    +
    + <% + if (VerifyAdmin > 0) { + %> +
    + +
    + <% + } + %> +
    +
    + <% + } + } + %> +
    +
    +
    +
    +
    +
    + <% String AdminName = (String) request.getSession().getAttribute("AdminName"); + if (AdminName != null) { + %> +

    You are logged in as: <%=AdminName%>

    + <% + } %> +

    Recently improved times:

    +
    + <% + for (int i = 0; i < recentTimes.size(); i++) { + if (recentTimes.get(i).getUser().equals(user)) { + %> +
    + <%out.print("\n" + recentTimes.get(i).getMYSQLStage()); %> +
    +
    + <% + float fdefault = recentTimes.get(i).getImprovedTime(); + int MinuteAdjusterImproved = (int) fdefault; + float secondsAdjusterImproved = Float.valueOf(String.format("%.2f", (fdefault - MinuteAdjusterImproved) * 100)); + out.print("\nImproved by: 0" + MinuteAdjusterImproved + ":" + + secondsAdjusterImproved); + %> +
    +
    + <% + } + } + %> +
    +
    +
    +
    +
    +

    Maps with no time yet:

    +
    + <% + List feex = new ArrayList(PlayerRelatedMapBoard); + List feex1 = new ArrayList(DifferentiateMapBoard); + feex1.removeAll(feex); + for (int i = 0; i < feex1.size(); i++) { + %> +
    + + <%out.print("\n" + feex1.get(i).getMapName()); %> + +
    +
    + <% + } + %> +
    +
    + + + +
    + + +
    +
    + +
    +
    + + + +
    +
    + + +
    + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/SessionTimeoutRedirect.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/SessionTimeoutRedirect.jsp new file mode 100644 index 00000000..1252473b --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/SessionTimeoutRedirect.jsp @@ -0,0 +1,21 @@ +<%-- + Document : SessionTimeoutRedirect + Created on : 08-11-2018, 17:49:13 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + TimeoutHandling + + +
    + + Loading Avatars, please wait 20-30 seconds... +
    + + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource.class new file mode 100644 index 00000000..8b611e48 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource2.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource2.class new file mode 100644 index 00000000..7d5eb3fd Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource2.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource3.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource3.class new file mode 100644 index 00000000..88101e27 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DBCPDataSource3.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DataMapper.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DataMapper.class new file mode 100644 index 00000000..27f08297 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/DBAcess/DataMapper.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Caching/GACaching.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Caching/GACaching.class new file mode 100644 index 00000000..8e1e73ab Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Caching/GACaching.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Caching/Guava.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Caching/Guava.class new file mode 100644 index 00000000..249a3f42 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Caching/Guava.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/ErrorMessageDisplay.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/ErrorMessageDisplay.class new file mode 100644 index 00000000..22d8311f Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/ErrorMessageDisplay.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/LogicFacade$1.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/LogicFacade$1.class new file mode 100644 index 00000000..c462b4cd Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/LogicFacade$1.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/LogicFacade.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/LogicFacade.class new file mode 100644 index 00000000..af26372c Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/LogicFacade.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/MapBoard.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/MapBoard.class new file mode 100644 index 00000000..5b6fb276 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/MapBoard.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/MapValues.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/MapValues.class new file mode 100644 index 00000000..3d8f175f Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/MapValues.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Maps.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Maps.class new file mode 100644 index 00000000..5a72e2d2 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Maps.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/RecentTimes.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/RecentTimes.class new file mode 100644 index 00000000..f65d5dcb Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/RecentTimes.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/UserBanners.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/UserBanners.class new file mode 100644 index 00000000..dd27c836 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/UserBanners.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Users.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Users.class new file mode 100644 index 00000000..abbc1ab3 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/FunctionLayer/Users.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/AdminLogin.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/AdminLogin.class new file mode 100644 index 00000000..122cdc05 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/AdminLogin.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/Authenticatelogin.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/Authenticatelogin.class new file mode 100644 index 00000000..29b45f4d Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/Authenticatelogin.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/Command.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/Command.class new file mode 100644 index 00000000..084e4d0c Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/Command.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/CreateAdmin.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/CreateAdmin.class new file mode 100644 index 00000000..a00fed66 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/CreateAdmin.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DeleteIndex.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DeleteIndex.class new file mode 100644 index 00000000..8946ad21 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DeleteIndex.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DisplayContent$1.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DisplayContent$1.class new file mode 100644 index 00000000..a50b473c Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DisplayContent$1.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DisplayContent.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DisplayContent.class new file mode 100644 index 00000000..872780ad Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/DisplayContent.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/FrontController.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/FrontController.class new file mode 100644 index 00000000..399897df Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/FrontController.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/MapInfo.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/MapInfo.class new file mode 100644 index 00000000..4d808667 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/MapInfo.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/PlayerInfo.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/PlayerInfo.class new file mode 100644 index 00000000..b3daeedd Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/PlayerInfo.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/SessionAttributeHandler.class b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/SessionAttributeHandler.class new file mode 100644 index 00000000..5105e522 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/Presentation/SessionAttributeHandler.class differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/cache.ccf b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/cache.ccf new file mode 100644 index 00000000..b1f346d9 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/classes/cache.ccf @@ -0,0 +1,15 @@ +# DEFAULT CACHE REGION +jcs.default=DC +jcs.default.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes +jcs.default.cacheattributes.MaxObjects=1000 +jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache +jcs.default.cacheattributes.UseMemoryShrinker=false +jcs.default.cacheattributes.MaxMemoryIdleTime=3600 +jcs.default.cacheattributes.ShrinkerInterval=60 +jcs.default.elementattributes=org.apache.commons.jcs.engine.ElementAttributes +jcs.default.elementattributes.IsEternal=false +jcs.default.elementattributes.MaxLife=21600 +jcs.default.elementattributes.IdleTime=1800 +jcs.default.elementattributes.IsSpool=true +jcs.default.elementattributes.IsRemote=true +jcs.default.elementattributes.IsLateral=true \ No newline at end of file diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/animal-sniffer-annotations-1.14.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/animal-sniffer-annotations-1.14.jar new file mode 100644 index 00000000..fb76acf7 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/animal-sniffer-annotations-1.14.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/c3p0-0.9.1.1.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/c3p0-0.9.1.1.jar new file mode 100644 index 00000000..8d283e4e Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/c3p0-0.9.1.1.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/checker-qual-2.5.2.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/checker-qual-2.5.2.jar new file mode 100644 index 00000000..ae4e7f1f Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/checker-qual-2.5.2.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-dbcp2-2.5.0.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-dbcp2-2.5.0.jar new file mode 100644 index 00000000..bfe23c8a Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-dbcp2-2.5.0.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-io-2.2.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-io-2.2.jar new file mode 100644 index 00000000..84ca5658 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-io-2.2.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-lang3-3.5.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-lang3-3.5.jar new file mode 100644 index 00000000..6328c8de Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-lang3-3.5.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-logging-1.2-adapters.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-logging-1.2-adapters.jar new file mode 100644 index 00000000..584fc8c4 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-logging-1.2-adapters.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-logging-1.2.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-logging-1.2.jar new file mode 100644 index 00000000..93a3b9f6 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-logging-1.2.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-pool2-2.6.0.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-pool2-2.6.0.jar new file mode 100644 index 00000000..8273c7bb Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/commons-pool2-2.6.0.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/error_prone_annotations-2.1.3.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/error_prone_annotations-2.1.3.jar new file mode 100644 index 00000000..ec3b1856 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/error_prone_annotations-2.1.3.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/gson-2.5.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/gson-2.5.jar new file mode 100644 index 00000000..5c35c5d5 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/gson-2.5.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/guava-26.0-jre.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/guava-26.0-jre.jar new file mode 100644 index 00000000..cd71a92f Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/guava-26.0-jre.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/j2objc-annotations-1.1.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/j2objc-annotations-1.1.jar new file mode 100644 index 00000000..4b6f1274 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/j2objc-annotations-1.1.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-annotations-2.8.0.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-annotations-2.8.0.jar new file mode 100644 index 00000000..d19b67b0 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-annotations-2.8.0.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-core-2.8.4.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-core-2.8.4.jar new file mode 100644 index 00000000..352bd5db Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-core-2.8.4.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-databind-2.8.4.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-databind-2.8.4.jar new file mode 100644 index 00000000..37a0b2c4 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jackson-databind-2.8.4.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/json-20170516.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/json-20170516.jar new file mode 100644 index 00000000..5033f66d Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/json-20170516.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jsr305-3.0.2.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jsr305-3.0.2.jar new file mode 100644 index 00000000..59222d9c Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jsr305-3.0.2.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jstl-1.1.2.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jstl-1.1.2.jar new file mode 100644 index 00000000..a02abecc Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/jstl-1.1.2.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/log4j-1.2.17.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/log4j-1.2.17.jar new file mode 100644 index 00000000..1d425cf7 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/log4j-1.2.17.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/mysql-connector-java-8.0.13.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/mysql-connector-java-8.0.13.jar new file mode 100644 index 00000000..a4efaf50 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/mysql-connector-java-8.0.13.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/protobuf-java-3.6.1.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/protobuf-java-3.6.1.jar new file mode 100644 index 00000000..8a187891 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/protobuf-java-3.6.1.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/quartz-2.2.1.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/quartz-2.2.1.jar new file mode 100644 index 00000000..7cf3ca4d Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/quartz-2.2.1.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/quartz-jobs-2.2.1.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/quartz-jobs-2.2.1.jar new file mode 100644 index 00000000..27d91625 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/quartz-jobs-2.2.1.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-api-1.6.6.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-api-1.6.6.jar new file mode 100644 index 00000000..4c03fa6b Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-api-1.6.6.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-api-1.7.2.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-api-1.7.2.jar new file mode 100644 index 00000000..1a887083 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-api-1.7.2.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-log4j12-1.7.21.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-log4j12-1.7.21.jar new file mode 100644 index 00000000..ff4fddd6 Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/slf4j-log4j12-1.7.21.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/steam-api-5.0.jar b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/steam-api-5.0.jar new file mode 100644 index 00000000..6fc0212f Binary files /dev/null and b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/lib/steam-api-5.0.jar differ diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/test.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/test.jsp new file mode 100644 index 00000000..36670424 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/WEB-INF/test.jsp @@ -0,0 +1,31 @@ +<%-- + Document : test + Created on : 25-10-2018, 15:39:27 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="windows-1252"%> + + + + + JSP Page + + +

    Backup nothingness

    + <% String error = (String) request.getAttribute("error"); + if (error != null) { + out.println("

    Error!!

    "); + out.println(error); + } else { + %> +
    + + +
    + + + <% } + %> + + diff --git a/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/index.jsp b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/index.jsp new file mode 100644 index 00000000..e667ee76 --- /dev/null +++ b/RaceTimer/webproject/target/racetimer_web-1.0-SNAPSHOT/index.jsp @@ -0,0 +1,22 @@ +<%-- + Document : dummy + Created on : 21-10-2018, 17:07:46 + Author : install1 +--%> + +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + + StartPoint + + +
    + + Loading Avatars, please wait 20-30 seconds... +
    + + + \ No newline at end of file diff --git a/RaceTimer/webproject/target/test-classes/.netbeans_automatic_build b/RaceTimer/webproject/target/test-classes/.netbeans_automatic_build new file mode 100644 index 00000000..e69de29b