From: LegendaryGuard Date: Mon, 14 Jun 2021 09:52:09 +0000 (+0200) Subject: Adding scoreboard created by z411 and improved by LegendGuard X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=872774d3cea807f2aea08058b6974208c620a1f0;p=xonotic%2Fxonotic-data.pk3dir.git Adding scoreboard created by z411 and improved by LegendGuard --- diff --git a/gfx/flags/0.tga b/gfx/flags/0.tga new file mode 100644 index 000000000..21259bfe5 Binary files /dev/null and b/gfx/flags/0.tga differ diff --git a/gfx/flags/1.tga b/gfx/flags/1.tga new file mode 100644 index 000000000..aa9fd4c22 Binary files /dev/null and b/gfx/flags/1.tga differ diff --git a/gfx/flags/10.tga b/gfx/flags/10.tga new file mode 100644 index 000000000..9d9acf79a Binary files /dev/null and b/gfx/flags/10.tga differ diff --git a/gfx/flags/100.tga b/gfx/flags/100.tga new file mode 100644 index 000000000..006547680 Binary files /dev/null and b/gfx/flags/100.tga differ diff --git a/gfx/flags/101.tga b/gfx/flags/101.tga new file mode 100644 index 000000000..cfb5e6cbd Binary files /dev/null and b/gfx/flags/101.tga differ diff --git a/gfx/flags/102.tga b/gfx/flags/102.tga new file mode 100644 index 000000000..f3a5fcf30 Binary files /dev/null and b/gfx/flags/102.tga differ diff --git a/gfx/flags/103.tga b/gfx/flags/103.tga new file mode 100644 index 000000000..60cf0a416 Binary files /dev/null and b/gfx/flags/103.tga differ diff --git a/gfx/flags/104.tga b/gfx/flags/104.tga new file mode 100644 index 000000000..81dac7ee6 Binary files /dev/null and b/gfx/flags/104.tga differ diff --git a/gfx/flags/105.tga b/gfx/flags/105.tga new file mode 100644 index 000000000..5e13fc6a4 Binary files /dev/null and b/gfx/flags/105.tga differ diff --git a/gfx/flags/106.tga b/gfx/flags/106.tga new file mode 100644 index 000000000..7386940df Binary files /dev/null and b/gfx/flags/106.tga differ diff --git a/gfx/flags/107.tga b/gfx/flags/107.tga new file mode 100644 index 000000000..6600c49d1 Binary files /dev/null and b/gfx/flags/107.tga differ diff --git a/gfx/flags/108.tga b/gfx/flags/108.tga new file mode 100644 index 000000000..c74d9bb1e Binary files /dev/null and b/gfx/flags/108.tga differ diff --git a/gfx/flags/109.tga b/gfx/flags/109.tga new file mode 100644 index 000000000..421a15817 Binary files /dev/null and b/gfx/flags/109.tga differ diff --git a/gfx/flags/11.tga b/gfx/flags/11.tga new file mode 100644 index 000000000..ec0317c24 Binary files /dev/null and b/gfx/flags/11.tga differ diff --git a/gfx/flags/110.tga b/gfx/flags/110.tga new file mode 100644 index 000000000..6a9453bab Binary files /dev/null and b/gfx/flags/110.tga differ diff --git a/gfx/flags/111.tga b/gfx/flags/111.tga new file mode 100644 index 000000000..51c2e2150 Binary files /dev/null and b/gfx/flags/111.tga differ diff --git a/gfx/flags/112.tga b/gfx/flags/112.tga new file mode 100644 index 000000000..d19567713 Binary files /dev/null and b/gfx/flags/112.tga differ diff --git a/gfx/flags/113.tga b/gfx/flags/113.tga new file mode 100644 index 000000000..79ca0292c Binary files /dev/null and b/gfx/flags/113.tga differ diff --git a/gfx/flags/114.tga b/gfx/flags/114.tga new file mode 100644 index 000000000..596455311 Binary files /dev/null and b/gfx/flags/114.tga differ diff --git a/gfx/flags/115.tga b/gfx/flags/115.tga new file mode 100644 index 000000000..40675df9f Binary files /dev/null and b/gfx/flags/115.tga differ diff --git a/gfx/flags/116.tga b/gfx/flags/116.tga new file mode 100644 index 000000000..922a09fa6 Binary files /dev/null and b/gfx/flags/116.tga differ diff --git a/gfx/flags/117.tga b/gfx/flags/117.tga new file mode 100644 index 000000000..b3c602f43 Binary files /dev/null and b/gfx/flags/117.tga differ diff --git a/gfx/flags/118.tga b/gfx/flags/118.tga new file mode 100644 index 000000000..6d21196b3 Binary files /dev/null and b/gfx/flags/118.tga differ diff --git a/gfx/flags/119.tga b/gfx/flags/119.tga new file mode 100644 index 000000000..418630be6 Binary files /dev/null and b/gfx/flags/119.tga differ diff --git a/gfx/flags/12.tga b/gfx/flags/12.tga new file mode 100644 index 000000000..6d17f335e Binary files /dev/null and b/gfx/flags/12.tga differ diff --git a/gfx/flags/120.tga b/gfx/flags/120.tga new file mode 100644 index 000000000..04e7e5b36 Binary files /dev/null and b/gfx/flags/120.tga differ diff --git a/gfx/flags/121.tga b/gfx/flags/121.tga new file mode 100644 index 000000000..9050be8d6 Binary files /dev/null and b/gfx/flags/121.tga differ diff --git a/gfx/flags/122.tga b/gfx/flags/122.tga new file mode 100644 index 000000000..8f7a9fb1a Binary files /dev/null and b/gfx/flags/122.tga differ diff --git a/gfx/flags/123.tga b/gfx/flags/123.tga new file mode 100644 index 000000000..c197895aa Binary files /dev/null and b/gfx/flags/123.tga differ diff --git a/gfx/flags/124.tga b/gfx/flags/124.tga new file mode 100644 index 000000000..4ecb9996a Binary files /dev/null and b/gfx/flags/124.tga differ diff --git a/gfx/flags/125.tga b/gfx/flags/125.tga new file mode 100644 index 000000000..71ab1e34f Binary files /dev/null and b/gfx/flags/125.tga differ diff --git a/gfx/flags/126.tga b/gfx/flags/126.tga new file mode 100644 index 000000000..e48602b86 Binary files /dev/null and b/gfx/flags/126.tga differ diff --git a/gfx/flags/127.tga b/gfx/flags/127.tga new file mode 100644 index 000000000..67152ae1d Binary files /dev/null and b/gfx/flags/127.tga differ diff --git a/gfx/flags/128.tga b/gfx/flags/128.tga new file mode 100644 index 000000000..7b4dc0ee0 Binary files /dev/null and b/gfx/flags/128.tga differ diff --git a/gfx/flags/129.tga b/gfx/flags/129.tga new file mode 100644 index 000000000..0d380fb89 Binary files /dev/null and b/gfx/flags/129.tga differ diff --git a/gfx/flags/13.tga b/gfx/flags/13.tga new file mode 100644 index 000000000..bac36ba39 Binary files /dev/null and b/gfx/flags/13.tga differ diff --git a/gfx/flags/130.tga b/gfx/flags/130.tga new file mode 100644 index 000000000..06409e789 Binary files /dev/null and b/gfx/flags/130.tga differ diff --git a/gfx/flags/131.tga b/gfx/flags/131.tga new file mode 100644 index 000000000..4ecb1e724 Binary files /dev/null and b/gfx/flags/131.tga differ diff --git a/gfx/flags/132.tga b/gfx/flags/132.tga new file mode 100644 index 000000000..0ebea40fb Binary files /dev/null and b/gfx/flags/132.tga differ diff --git a/gfx/flags/133.tga b/gfx/flags/133.tga new file mode 100644 index 000000000..5fa9b169e Binary files /dev/null and b/gfx/flags/133.tga differ diff --git a/gfx/flags/134.tga b/gfx/flags/134.tga new file mode 100644 index 000000000..4e33e7d2e Binary files /dev/null and b/gfx/flags/134.tga differ diff --git a/gfx/flags/135.tga b/gfx/flags/135.tga new file mode 100644 index 000000000..bb4f448e6 Binary files /dev/null and b/gfx/flags/135.tga differ diff --git a/gfx/flags/136.tga b/gfx/flags/136.tga new file mode 100644 index 000000000..4a30ca67d Binary files /dev/null and b/gfx/flags/136.tga differ diff --git a/gfx/flags/137.tga b/gfx/flags/137.tga new file mode 100644 index 000000000..3988cc5e3 Binary files /dev/null and b/gfx/flags/137.tga differ diff --git a/gfx/flags/138.tga b/gfx/flags/138.tga new file mode 100644 index 000000000..3677b703f Binary files /dev/null and b/gfx/flags/138.tga differ diff --git a/gfx/flags/139.tga b/gfx/flags/139.tga new file mode 100644 index 000000000..d3ee66567 Binary files /dev/null and b/gfx/flags/139.tga differ diff --git a/gfx/flags/14.tga b/gfx/flags/14.tga new file mode 100644 index 000000000..9e268819f Binary files /dev/null and b/gfx/flags/14.tga differ diff --git a/gfx/flags/140.tga b/gfx/flags/140.tga new file mode 100644 index 000000000..dd9b94829 Binary files /dev/null and b/gfx/flags/140.tga differ diff --git a/gfx/flags/141.tga b/gfx/flags/141.tga new file mode 100644 index 000000000..c019a7f99 Binary files /dev/null and b/gfx/flags/141.tga differ diff --git a/gfx/flags/142.tga b/gfx/flags/142.tga new file mode 100644 index 000000000..e60184dcd Binary files /dev/null and b/gfx/flags/142.tga differ diff --git a/gfx/flags/143.tga b/gfx/flags/143.tga new file mode 100644 index 000000000..f3eb443f4 Binary files /dev/null and b/gfx/flags/143.tga differ diff --git a/gfx/flags/144.tga b/gfx/flags/144.tga new file mode 100644 index 000000000..0d4554fe1 Binary files /dev/null and b/gfx/flags/144.tga differ diff --git a/gfx/flags/145.tga b/gfx/flags/145.tga new file mode 100644 index 000000000..6ecfb359d Binary files /dev/null and b/gfx/flags/145.tga differ diff --git a/gfx/flags/146.tga b/gfx/flags/146.tga new file mode 100644 index 000000000..8641672b3 Binary files /dev/null and b/gfx/flags/146.tga differ diff --git a/gfx/flags/147.tga b/gfx/flags/147.tga new file mode 100644 index 000000000..2e5ef72f4 Binary files /dev/null and b/gfx/flags/147.tga differ diff --git a/gfx/flags/148.tga b/gfx/flags/148.tga new file mode 100644 index 000000000..2ed5930a9 Binary files /dev/null and b/gfx/flags/148.tga differ diff --git a/gfx/flags/149.tga b/gfx/flags/149.tga new file mode 100644 index 000000000..a665deb3a Binary files /dev/null and b/gfx/flags/149.tga differ diff --git a/gfx/flags/15.tga b/gfx/flags/15.tga new file mode 100644 index 000000000..48d523d8d Binary files /dev/null and b/gfx/flags/15.tga differ diff --git a/gfx/flags/150.tga b/gfx/flags/150.tga new file mode 100644 index 000000000..a9368298c Binary files /dev/null and b/gfx/flags/150.tga differ diff --git a/gfx/flags/151.tga b/gfx/flags/151.tga new file mode 100644 index 000000000..5e38366a4 Binary files /dev/null and b/gfx/flags/151.tga differ diff --git a/gfx/flags/152.tga b/gfx/flags/152.tga new file mode 100644 index 000000000..a27ccd260 Binary files /dev/null and b/gfx/flags/152.tga differ diff --git a/gfx/flags/153.tga b/gfx/flags/153.tga new file mode 100644 index 000000000..246488521 Binary files /dev/null and b/gfx/flags/153.tga differ diff --git a/gfx/flags/154.tga b/gfx/flags/154.tga new file mode 100644 index 000000000..ec7e34891 Binary files /dev/null and b/gfx/flags/154.tga differ diff --git a/gfx/flags/155.tga b/gfx/flags/155.tga new file mode 100644 index 000000000..ae1116b65 Binary files /dev/null and b/gfx/flags/155.tga differ diff --git a/gfx/flags/156.tga b/gfx/flags/156.tga new file mode 100644 index 000000000..898fdeae0 Binary files /dev/null and b/gfx/flags/156.tga differ diff --git a/gfx/flags/157.tga b/gfx/flags/157.tga new file mode 100644 index 000000000..79a2ebdf1 Binary files /dev/null and b/gfx/flags/157.tga differ diff --git a/gfx/flags/158.tga b/gfx/flags/158.tga new file mode 100644 index 000000000..1b1249d14 Binary files /dev/null and b/gfx/flags/158.tga differ diff --git a/gfx/flags/159.tga b/gfx/flags/159.tga new file mode 100644 index 000000000..352ad2e16 Binary files /dev/null and b/gfx/flags/159.tga differ diff --git a/gfx/flags/16.tga b/gfx/flags/16.tga new file mode 100644 index 000000000..e5d796f75 Binary files /dev/null and b/gfx/flags/16.tga differ diff --git a/gfx/flags/160.tga b/gfx/flags/160.tga new file mode 100644 index 000000000..e8847cac4 Binary files /dev/null and b/gfx/flags/160.tga differ diff --git a/gfx/flags/161.tga b/gfx/flags/161.tga new file mode 100644 index 000000000..0ffb30746 Binary files /dev/null and b/gfx/flags/161.tga differ diff --git a/gfx/flags/162.tga b/gfx/flags/162.tga new file mode 100644 index 000000000..986871683 Binary files /dev/null and b/gfx/flags/162.tga differ diff --git a/gfx/flags/163.tga b/gfx/flags/163.tga new file mode 100644 index 000000000..6f39ba00f Binary files /dev/null and b/gfx/flags/163.tga differ diff --git a/gfx/flags/164.tga b/gfx/flags/164.tga new file mode 100644 index 000000000..a5be70d73 Binary files /dev/null and b/gfx/flags/164.tga differ diff --git a/gfx/flags/165.tga b/gfx/flags/165.tga new file mode 100644 index 000000000..87fac0af2 Binary files /dev/null and b/gfx/flags/165.tga differ diff --git a/gfx/flags/166.tga b/gfx/flags/166.tga new file mode 100644 index 000000000..a6a877481 Binary files /dev/null and b/gfx/flags/166.tga differ diff --git a/gfx/flags/167.tga b/gfx/flags/167.tga new file mode 100644 index 000000000..c9836c92b Binary files /dev/null and b/gfx/flags/167.tga differ diff --git a/gfx/flags/168.tga b/gfx/flags/168.tga new file mode 100644 index 000000000..a22816479 Binary files /dev/null and b/gfx/flags/168.tga differ diff --git a/gfx/flags/169.tga b/gfx/flags/169.tga new file mode 100644 index 000000000..93f2ed755 Binary files /dev/null and b/gfx/flags/169.tga differ diff --git a/gfx/flags/17.tga b/gfx/flags/17.tga new file mode 100644 index 000000000..4010a6db1 Binary files /dev/null and b/gfx/flags/17.tga differ diff --git a/gfx/flags/170.tga b/gfx/flags/170.tga new file mode 100644 index 000000000..73e57ac69 Binary files /dev/null and b/gfx/flags/170.tga differ diff --git a/gfx/flags/171.tga b/gfx/flags/171.tga new file mode 100644 index 000000000..99e6b48b0 Binary files /dev/null and b/gfx/flags/171.tga differ diff --git a/gfx/flags/172.tga b/gfx/flags/172.tga new file mode 100644 index 000000000..452e0704b Binary files /dev/null and b/gfx/flags/172.tga differ diff --git a/gfx/flags/173.tga b/gfx/flags/173.tga new file mode 100644 index 000000000..a351503c4 Binary files /dev/null and b/gfx/flags/173.tga differ diff --git a/gfx/flags/174.tga b/gfx/flags/174.tga new file mode 100644 index 000000000..7dbad2c89 Binary files /dev/null and b/gfx/flags/174.tga differ diff --git a/gfx/flags/175.tga b/gfx/flags/175.tga new file mode 100644 index 000000000..90fd6b3d4 Binary files /dev/null and b/gfx/flags/175.tga differ diff --git a/gfx/flags/176.tga b/gfx/flags/176.tga new file mode 100644 index 000000000..1d3db231a Binary files /dev/null and b/gfx/flags/176.tga differ diff --git a/gfx/flags/177.tga b/gfx/flags/177.tga new file mode 100644 index 000000000..39c938f7a Binary files /dev/null and b/gfx/flags/177.tga differ diff --git a/gfx/flags/178.tga b/gfx/flags/178.tga new file mode 100644 index 000000000..5dbb3d557 Binary files /dev/null and b/gfx/flags/178.tga differ diff --git a/gfx/flags/179.tga b/gfx/flags/179.tga new file mode 100644 index 000000000..3e5a9b4a8 Binary files /dev/null and b/gfx/flags/179.tga differ diff --git a/gfx/flags/18.tga b/gfx/flags/18.tga new file mode 100644 index 000000000..8b3e7239e Binary files /dev/null and b/gfx/flags/18.tga differ diff --git a/gfx/flags/180.tga b/gfx/flags/180.tga new file mode 100644 index 000000000..f2d998621 Binary files /dev/null and b/gfx/flags/180.tga differ diff --git a/gfx/flags/181.tga b/gfx/flags/181.tga new file mode 100644 index 000000000..45f3b063a Binary files /dev/null and b/gfx/flags/181.tga differ diff --git a/gfx/flags/182.tga b/gfx/flags/182.tga new file mode 100644 index 000000000..dda12119c Binary files /dev/null and b/gfx/flags/182.tga differ diff --git a/gfx/flags/183.tga b/gfx/flags/183.tga new file mode 100644 index 000000000..5621d52e5 Binary files /dev/null and b/gfx/flags/183.tga differ diff --git a/gfx/flags/184.tga b/gfx/flags/184.tga new file mode 100644 index 000000000..a7ea2820f Binary files /dev/null and b/gfx/flags/184.tga differ diff --git a/gfx/flags/185.tga b/gfx/flags/185.tga new file mode 100644 index 000000000..45f3b063a Binary files /dev/null and b/gfx/flags/185.tga differ diff --git a/gfx/flags/186.tga b/gfx/flags/186.tga new file mode 100644 index 000000000..588d04271 Binary files /dev/null and b/gfx/flags/186.tga differ diff --git a/gfx/flags/187.tga b/gfx/flags/187.tga new file mode 100644 index 000000000..0338eded8 Binary files /dev/null and b/gfx/flags/187.tga differ diff --git a/gfx/flags/188.tga b/gfx/flags/188.tga new file mode 100644 index 000000000..4a88b143b Binary files /dev/null and b/gfx/flags/188.tga differ diff --git a/gfx/flags/189.tga b/gfx/flags/189.tga new file mode 100644 index 000000000..45f3b063a Binary files /dev/null and b/gfx/flags/189.tga differ diff --git a/gfx/flags/19.tga b/gfx/flags/19.tga new file mode 100644 index 000000000..3b7d4876d Binary files /dev/null and b/gfx/flags/19.tga differ diff --git a/gfx/flags/190.tga b/gfx/flags/190.tga new file mode 100644 index 000000000..fed9fae14 Binary files /dev/null and b/gfx/flags/190.tga differ diff --git a/gfx/flags/191.tga b/gfx/flags/191.tga new file mode 100644 index 000000000..3892bddb5 Binary files /dev/null and b/gfx/flags/191.tga differ diff --git a/gfx/flags/192.tga b/gfx/flags/192.tga new file mode 100644 index 000000000..ba82f44d0 Binary files /dev/null and b/gfx/flags/192.tga differ diff --git a/gfx/flags/193.tga b/gfx/flags/193.tga new file mode 100644 index 000000000..c6c74a260 Binary files /dev/null and b/gfx/flags/193.tga differ diff --git a/gfx/flags/194.tga b/gfx/flags/194.tga new file mode 100644 index 000000000..3db1d0e0b Binary files /dev/null and b/gfx/flags/194.tga differ diff --git a/gfx/flags/195.tga b/gfx/flags/195.tga new file mode 100644 index 000000000..373905c4f Binary files /dev/null and b/gfx/flags/195.tga differ diff --git a/gfx/flags/196.tga b/gfx/flags/196.tga new file mode 100644 index 000000000..96451ca16 Binary files /dev/null and b/gfx/flags/196.tga differ diff --git a/gfx/flags/197.tga b/gfx/flags/197.tga new file mode 100644 index 000000000..77e3fed48 Binary files /dev/null and b/gfx/flags/197.tga differ diff --git a/gfx/flags/198.tga b/gfx/flags/198.tga new file mode 100644 index 000000000..f6e65b0b6 Binary files /dev/null and b/gfx/flags/198.tga differ diff --git a/gfx/flags/199.tga b/gfx/flags/199.tga new file mode 100644 index 000000000..3139c8db1 Binary files /dev/null and b/gfx/flags/199.tga differ diff --git a/gfx/flags/2.tga b/gfx/flags/2.tga new file mode 100644 index 000000000..9db5a0b71 Binary files /dev/null and b/gfx/flags/2.tga differ diff --git a/gfx/flags/20.tga b/gfx/flags/20.tga new file mode 100644 index 000000000..dd2c17213 Binary files /dev/null and b/gfx/flags/20.tga differ diff --git a/gfx/flags/200.tga b/gfx/flags/200.tga new file mode 100644 index 000000000..c394265c3 Binary files /dev/null and b/gfx/flags/200.tga differ diff --git a/gfx/flags/201.tga b/gfx/flags/201.tga new file mode 100644 index 000000000..457e91cb3 Binary files /dev/null and b/gfx/flags/201.tga differ diff --git a/gfx/flags/202.tga b/gfx/flags/202.tga new file mode 100644 index 000000000..a31ee6cc9 Binary files /dev/null and b/gfx/flags/202.tga differ diff --git a/gfx/flags/203.tga b/gfx/flags/203.tga new file mode 100644 index 000000000..0f4867455 Binary files /dev/null and b/gfx/flags/203.tga differ diff --git a/gfx/flags/204.tga b/gfx/flags/204.tga new file mode 100644 index 000000000..7105d693d Binary files /dev/null and b/gfx/flags/204.tga differ diff --git a/gfx/flags/205.tga b/gfx/flags/205.tga new file mode 100644 index 000000000..c13f3516a Binary files /dev/null and b/gfx/flags/205.tga differ diff --git a/gfx/flags/206.tga b/gfx/flags/206.tga new file mode 100644 index 000000000..832c937b3 Binary files /dev/null and b/gfx/flags/206.tga differ diff --git a/gfx/flags/207.tga b/gfx/flags/207.tga new file mode 100644 index 000000000..c4729a102 Binary files /dev/null and b/gfx/flags/207.tga differ diff --git a/gfx/flags/208.tga b/gfx/flags/208.tga new file mode 100644 index 000000000..d35b4041b Binary files /dev/null and b/gfx/flags/208.tga differ diff --git a/gfx/flags/209.tga b/gfx/flags/209.tga new file mode 100644 index 000000000..43e343946 Binary files /dev/null and b/gfx/flags/209.tga differ diff --git a/gfx/flags/21.tga b/gfx/flags/21.tga new file mode 100644 index 000000000..bd2030fa3 Binary files /dev/null and b/gfx/flags/21.tga differ diff --git a/gfx/flags/210.tga b/gfx/flags/210.tga new file mode 100644 index 000000000..e5187743b Binary files /dev/null and b/gfx/flags/210.tga differ diff --git a/gfx/flags/211.tga b/gfx/flags/211.tga new file mode 100644 index 000000000..47a7a8ef3 Binary files /dev/null and b/gfx/flags/211.tga differ diff --git a/gfx/flags/212.tga b/gfx/flags/212.tga new file mode 100644 index 000000000..44ed3c62d Binary files /dev/null and b/gfx/flags/212.tga differ diff --git a/gfx/flags/213.tga b/gfx/flags/213.tga new file mode 100644 index 000000000..a6a877481 Binary files /dev/null and b/gfx/flags/213.tga differ diff --git a/gfx/flags/214.tga b/gfx/flags/214.tga new file mode 100644 index 000000000..c2f3537ef Binary files /dev/null and b/gfx/flags/214.tga differ diff --git a/gfx/flags/215.tga b/gfx/flags/215.tga new file mode 100644 index 000000000..63032c921 Binary files /dev/null and b/gfx/flags/215.tga differ diff --git a/gfx/flags/216.tga b/gfx/flags/216.tga new file mode 100644 index 000000000..9f1bc1c58 Binary files /dev/null and b/gfx/flags/216.tga differ diff --git a/gfx/flags/217.tga b/gfx/flags/217.tga new file mode 100644 index 000000000..3e9cb94e8 Binary files /dev/null and b/gfx/flags/217.tga differ diff --git a/gfx/flags/218.tga b/gfx/flags/218.tga new file mode 100644 index 000000000..90533b6c0 Binary files /dev/null and b/gfx/flags/218.tga differ diff --git a/gfx/flags/219.tga b/gfx/flags/219.tga new file mode 100644 index 000000000..4ef3454ec Binary files /dev/null and b/gfx/flags/219.tga differ diff --git a/gfx/flags/22.tga b/gfx/flags/22.tga new file mode 100644 index 000000000..a4aff3253 Binary files /dev/null and b/gfx/flags/22.tga differ diff --git a/gfx/flags/220.tga b/gfx/flags/220.tga new file mode 100644 index 000000000..10acd54a6 Binary files /dev/null and b/gfx/flags/220.tga differ diff --git a/gfx/flags/221.tga b/gfx/flags/221.tga new file mode 100644 index 000000000..a931c016b Binary files /dev/null and b/gfx/flags/221.tga differ diff --git a/gfx/flags/222.tga b/gfx/flags/222.tga new file mode 100644 index 000000000..d0dc6cb92 Binary files /dev/null and b/gfx/flags/222.tga differ diff --git a/gfx/flags/223.tga b/gfx/flags/223.tga new file mode 100644 index 000000000..f46f58faf Binary files /dev/null and b/gfx/flags/223.tga differ diff --git a/gfx/flags/224.tga b/gfx/flags/224.tga new file mode 100644 index 000000000..5a4d863d0 Binary files /dev/null and b/gfx/flags/224.tga differ diff --git a/gfx/flags/225.tga b/gfx/flags/225.tga new file mode 100644 index 000000000..f6dd05010 Binary files /dev/null and b/gfx/flags/225.tga differ diff --git a/gfx/flags/226.tga b/gfx/flags/226.tga new file mode 100644 index 000000000..b044d5d6f Binary files /dev/null and b/gfx/flags/226.tga differ diff --git a/gfx/flags/227.tga b/gfx/flags/227.tga new file mode 100644 index 000000000..6223dcf4b Binary files /dev/null and b/gfx/flags/227.tga differ diff --git a/gfx/flags/228.tga b/gfx/flags/228.tga new file mode 100644 index 000000000..6ffc146a7 Binary files /dev/null and b/gfx/flags/228.tga differ diff --git a/gfx/flags/229.tga b/gfx/flags/229.tga new file mode 100644 index 000000000..29a65875a Binary files /dev/null and b/gfx/flags/229.tga differ diff --git a/gfx/flags/23.tga b/gfx/flags/23.tga new file mode 100644 index 000000000..b6efa3f5c Binary files /dev/null and b/gfx/flags/23.tga differ diff --git a/gfx/flags/230.tga b/gfx/flags/230.tga new file mode 100644 index 000000000..ddc9b680b Binary files /dev/null and b/gfx/flags/230.tga differ diff --git a/gfx/flags/231.tga b/gfx/flags/231.tga new file mode 100644 index 000000000..549e6b639 Binary files /dev/null and b/gfx/flags/231.tga differ diff --git a/gfx/flags/232.tga b/gfx/flags/232.tga new file mode 100644 index 000000000..b217e2656 Binary files /dev/null and b/gfx/flags/232.tga differ diff --git a/gfx/flags/233.tga b/gfx/flags/233.tga new file mode 100644 index 000000000..c979976ab Binary files /dev/null and b/gfx/flags/233.tga differ diff --git a/gfx/flags/234.tga b/gfx/flags/234.tga new file mode 100644 index 000000000..f27c86440 Binary files /dev/null and b/gfx/flags/234.tga differ diff --git a/gfx/flags/235.tga b/gfx/flags/235.tga new file mode 100644 index 000000000..b4a3e120c Binary files /dev/null and b/gfx/flags/235.tga differ diff --git a/gfx/flags/236.tga b/gfx/flags/236.tga new file mode 100644 index 000000000..76d597643 Binary files /dev/null and b/gfx/flags/236.tga differ diff --git a/gfx/flags/237.tga b/gfx/flags/237.tga new file mode 100644 index 000000000..76d597643 Binary files /dev/null and b/gfx/flags/237.tga differ diff --git a/gfx/flags/238.tga b/gfx/flags/238.tga new file mode 100644 index 000000000..e9f0a2afe Binary files /dev/null and b/gfx/flags/238.tga differ diff --git a/gfx/flags/239.tga b/gfx/flags/239.tga new file mode 100644 index 000000000..4ab4fbba9 Binary files /dev/null and b/gfx/flags/239.tga differ diff --git a/gfx/flags/24.tga b/gfx/flags/24.tga new file mode 100644 index 000000000..786558f8f Binary files /dev/null and b/gfx/flags/24.tga differ diff --git a/gfx/flags/240.tga b/gfx/flags/240.tga new file mode 100644 index 000000000..5580333b0 Binary files /dev/null and b/gfx/flags/240.tga differ diff --git a/gfx/flags/241.tga b/gfx/flags/241.tga new file mode 100644 index 000000000..66c542e39 Binary files /dev/null and b/gfx/flags/241.tga differ diff --git a/gfx/flags/242.tga b/gfx/flags/242.tga new file mode 100644 index 000000000..76cdf030f Binary files /dev/null and b/gfx/flags/242.tga differ diff --git a/gfx/flags/243.tga b/gfx/flags/243.tga new file mode 100644 index 000000000..741c23df0 Binary files /dev/null and b/gfx/flags/243.tga differ diff --git a/gfx/flags/244.tga b/gfx/flags/244.tga new file mode 100644 index 000000000..badcaa6bc Binary files /dev/null and b/gfx/flags/244.tga differ diff --git a/gfx/flags/245.tga b/gfx/flags/245.tga new file mode 100644 index 000000000..adf084615 Binary files /dev/null and b/gfx/flags/245.tga differ diff --git a/gfx/flags/246.tga b/gfx/flags/246.tga new file mode 100644 index 000000000..d6f25a145 Binary files /dev/null and b/gfx/flags/246.tga differ diff --git a/gfx/flags/247.tga b/gfx/flags/247.tga new file mode 100644 index 000000000..8be823712 Binary files /dev/null and b/gfx/flags/247.tga differ diff --git a/gfx/flags/248.tga b/gfx/flags/248.tga new file mode 100644 index 000000000..0f90ab19b Binary files /dev/null and b/gfx/flags/248.tga differ diff --git a/gfx/flags/249.tga b/gfx/flags/249.tga new file mode 100644 index 000000000..9b3ffa814 Binary files /dev/null and b/gfx/flags/249.tga differ diff --git a/gfx/flags/25.tga b/gfx/flags/25.tga new file mode 100644 index 000000000..a1a32bcd2 Binary files /dev/null and b/gfx/flags/25.tga differ diff --git a/gfx/flags/26.tga b/gfx/flags/26.tga new file mode 100644 index 000000000..5eff9abda Binary files /dev/null and b/gfx/flags/26.tga differ diff --git a/gfx/flags/27.tga b/gfx/flags/27.tga new file mode 100644 index 000000000..f3fe4e8fc Binary files /dev/null and b/gfx/flags/27.tga differ diff --git a/gfx/flags/28.tga b/gfx/flags/28.tga new file mode 100644 index 000000000..79a2ebdf1 Binary files /dev/null and b/gfx/flags/28.tga differ diff --git a/gfx/flags/29.tga b/gfx/flags/29.tga new file mode 100644 index 000000000..adfea302c Binary files /dev/null and b/gfx/flags/29.tga differ diff --git a/gfx/flags/3.tga b/gfx/flags/3.tga new file mode 100644 index 000000000..78f882bee Binary files /dev/null and b/gfx/flags/3.tga differ diff --git a/gfx/flags/30.tga b/gfx/flags/30.tga new file mode 100644 index 000000000..53fb99f99 Binary files /dev/null and b/gfx/flags/30.tga differ diff --git a/gfx/flags/31.tga b/gfx/flags/31.tga new file mode 100644 index 000000000..a6a877481 Binary files /dev/null and b/gfx/flags/31.tga differ diff --git a/gfx/flags/32.tga b/gfx/flags/32.tga new file mode 100644 index 000000000..525faadd8 Binary files /dev/null and b/gfx/flags/32.tga differ diff --git a/gfx/flags/33.tga b/gfx/flags/33.tga new file mode 100644 index 000000000..03a540ce0 Binary files /dev/null and b/gfx/flags/33.tga differ diff --git a/gfx/flags/34.tga b/gfx/flags/34.tga new file mode 100644 index 000000000..9d266f295 Binary files /dev/null and b/gfx/flags/34.tga differ diff --git a/gfx/flags/35.tga b/gfx/flags/35.tga new file mode 100644 index 000000000..8adeebf31 Binary files /dev/null and b/gfx/flags/35.tga differ diff --git a/gfx/flags/36.tga b/gfx/flags/36.tga new file mode 100644 index 000000000..5a9b775a9 Binary files /dev/null and b/gfx/flags/36.tga differ diff --git a/gfx/flags/37.tga b/gfx/flags/37.tga new file mode 100644 index 000000000..3cefd5ede Binary files /dev/null and b/gfx/flags/37.tga differ diff --git a/gfx/flags/38.tga b/gfx/flags/38.tga new file mode 100644 index 000000000..3dcc8f277 Binary files /dev/null and b/gfx/flags/38.tga differ diff --git a/gfx/flags/39.tga b/gfx/flags/39.tga new file mode 100644 index 000000000..cfe3e5e87 Binary files /dev/null and b/gfx/flags/39.tga differ diff --git a/gfx/flags/4.tga b/gfx/flags/4.tga new file mode 100644 index 000000000..ba81689f5 Binary files /dev/null and b/gfx/flags/4.tga differ diff --git a/gfx/flags/40.tga b/gfx/flags/40.tga new file mode 100644 index 000000000..a3d51a318 Binary files /dev/null and b/gfx/flags/40.tga differ diff --git a/gfx/flags/41.tga b/gfx/flags/41.tga new file mode 100644 index 000000000..e26f0b1e0 Binary files /dev/null and b/gfx/flags/41.tga differ diff --git a/gfx/flags/42.tga b/gfx/flags/42.tga new file mode 100644 index 000000000..0def96536 Binary files /dev/null and b/gfx/flags/42.tga differ diff --git a/gfx/flags/43.tga b/gfx/flags/43.tga new file mode 100644 index 000000000..24795fa74 Binary files /dev/null and b/gfx/flags/43.tga differ diff --git a/gfx/flags/44.tga b/gfx/flags/44.tga new file mode 100644 index 000000000..2467c4d9e Binary files /dev/null and b/gfx/flags/44.tga differ diff --git a/gfx/flags/45.tga b/gfx/flags/45.tga new file mode 100644 index 000000000..62009716b Binary files /dev/null and b/gfx/flags/45.tga differ diff --git a/gfx/flags/46.tga b/gfx/flags/46.tga new file mode 100644 index 000000000..f3b378ef2 Binary files /dev/null and b/gfx/flags/46.tga differ diff --git a/gfx/flags/47.tga b/gfx/flags/47.tga new file mode 100644 index 000000000..9741aa379 Binary files /dev/null and b/gfx/flags/47.tga differ diff --git a/gfx/flags/48.tga b/gfx/flags/48.tga new file mode 100644 index 000000000..030709e7d Binary files /dev/null and b/gfx/flags/48.tga differ diff --git a/gfx/flags/49.tga b/gfx/flags/49.tga new file mode 100644 index 000000000..9f114839f Binary files /dev/null and b/gfx/flags/49.tga differ diff --git a/gfx/flags/5.tga b/gfx/flags/5.tga new file mode 100644 index 000000000..68e3fdcce Binary files /dev/null and b/gfx/flags/5.tga differ diff --git a/gfx/flags/50.tga b/gfx/flags/50.tga new file mode 100644 index 000000000..0bc26aceb Binary files /dev/null and b/gfx/flags/50.tga differ diff --git a/gfx/flags/51.tga b/gfx/flags/51.tga new file mode 100644 index 000000000..b3af029c1 Binary files /dev/null and b/gfx/flags/51.tga differ diff --git a/gfx/flags/52.tga b/gfx/flags/52.tga new file mode 100644 index 000000000..f52fac25a Binary files /dev/null and b/gfx/flags/52.tga differ diff --git a/gfx/flags/53.tga b/gfx/flags/53.tga new file mode 100644 index 000000000..1ec32d31e Binary files /dev/null and b/gfx/flags/53.tga differ diff --git a/gfx/flags/54.tga b/gfx/flags/54.tga new file mode 100644 index 000000000..9d1f16a13 Binary files /dev/null and b/gfx/flags/54.tga differ diff --git a/gfx/flags/55.tga b/gfx/flags/55.tga new file mode 100644 index 000000000..9c9702951 Binary files /dev/null and b/gfx/flags/55.tga differ diff --git a/gfx/flags/56.tga b/gfx/flags/56.tga new file mode 100644 index 000000000..32a164146 Binary files /dev/null and b/gfx/flags/56.tga differ diff --git a/gfx/flags/57.tga b/gfx/flags/57.tga new file mode 100644 index 000000000..d31088d3a Binary files /dev/null and b/gfx/flags/57.tga differ diff --git a/gfx/flags/58.tga b/gfx/flags/58.tga new file mode 100644 index 000000000..f901e0262 Binary files /dev/null and b/gfx/flags/58.tga differ diff --git a/gfx/flags/59.tga b/gfx/flags/59.tga new file mode 100644 index 000000000..6daf97355 Binary files /dev/null and b/gfx/flags/59.tga differ diff --git a/gfx/flags/6.tga b/gfx/flags/6.tga new file mode 100644 index 000000000..e16320712 Binary files /dev/null and b/gfx/flags/6.tga differ diff --git a/gfx/flags/60.tga b/gfx/flags/60.tga new file mode 100644 index 000000000..a3a64fbbb Binary files /dev/null and b/gfx/flags/60.tga differ diff --git a/gfx/flags/61.tga b/gfx/flags/61.tga new file mode 100644 index 000000000..ce87b8466 Binary files /dev/null and b/gfx/flags/61.tga differ diff --git a/gfx/flags/62.tga b/gfx/flags/62.tga new file mode 100644 index 000000000..00874332b Binary files /dev/null and b/gfx/flags/62.tga differ diff --git a/gfx/flags/63.tga b/gfx/flags/63.tga new file mode 100644 index 000000000..55f909c1c Binary files /dev/null and b/gfx/flags/63.tga differ diff --git a/gfx/flags/64.tga b/gfx/flags/64.tga new file mode 100644 index 000000000..21371f2a8 Binary files /dev/null and b/gfx/flags/64.tga differ diff --git a/gfx/flags/65.tga b/gfx/flags/65.tga new file mode 100644 index 000000000..74188f7c1 Binary files /dev/null and b/gfx/flags/65.tga differ diff --git a/gfx/flags/66.tga b/gfx/flags/66.tga new file mode 100644 index 000000000..dc6d717aa Binary files /dev/null and b/gfx/flags/66.tga differ diff --git a/gfx/flags/67.tga b/gfx/flags/67.tga new file mode 100644 index 000000000..ac6187735 Binary files /dev/null and b/gfx/flags/67.tga differ diff --git a/gfx/flags/68.tga b/gfx/flags/68.tga new file mode 100644 index 000000000..ac4aeb965 Binary files /dev/null and b/gfx/flags/68.tga differ diff --git a/gfx/flags/69.tga b/gfx/flags/69.tga new file mode 100644 index 000000000..fdca68a74 Binary files /dev/null and b/gfx/flags/69.tga differ diff --git a/gfx/flags/7.tga b/gfx/flags/7.tga new file mode 100644 index 000000000..c99452176 Binary files /dev/null and b/gfx/flags/7.tga differ diff --git a/gfx/flags/70.tga b/gfx/flags/70.tga new file mode 100644 index 000000000..fd41787eb Binary files /dev/null and b/gfx/flags/70.tga differ diff --git a/gfx/flags/71.tga b/gfx/flags/71.tga new file mode 100644 index 000000000..588083d1d Binary files /dev/null and b/gfx/flags/71.tga differ diff --git a/gfx/flags/72.tga b/gfx/flags/72.tga new file mode 100644 index 000000000..9bad9b374 Binary files /dev/null and b/gfx/flags/72.tga differ diff --git a/gfx/flags/73.tga b/gfx/flags/73.tga new file mode 100644 index 000000000..508c56bb5 Binary files /dev/null and b/gfx/flags/73.tga differ diff --git a/gfx/flags/74.tga b/gfx/flags/74.tga new file mode 100644 index 000000000..eb86a3484 Binary files /dev/null and b/gfx/flags/74.tga differ diff --git a/gfx/flags/75.tga b/gfx/flags/75.tga new file mode 100644 index 000000000..910c0c7d6 Binary files /dev/null and b/gfx/flags/75.tga differ diff --git a/gfx/flags/76.tga b/gfx/flags/76.tga new file mode 100644 index 000000000..45f3b063a Binary files /dev/null and b/gfx/flags/76.tga differ diff --git a/gfx/flags/77.tga b/gfx/flags/77.tga new file mode 100644 index 000000000..db171ee03 Binary files /dev/null and b/gfx/flags/77.tga differ diff --git a/gfx/flags/78.tga b/gfx/flags/78.tga new file mode 100644 index 000000000..40b15775b Binary files /dev/null and b/gfx/flags/78.tga differ diff --git a/gfx/flags/79.tga b/gfx/flags/79.tga new file mode 100644 index 000000000..45f3b063a Binary files /dev/null and b/gfx/flags/79.tga differ diff --git a/gfx/flags/8.tga b/gfx/flags/8.tga new file mode 100644 index 000000000..abcfc3f1c Binary files /dev/null and b/gfx/flags/8.tga differ diff --git a/gfx/flags/80.tga b/gfx/flags/80.tga new file mode 100644 index 000000000..8f43eb8b2 Binary files /dev/null and b/gfx/flags/80.tga differ diff --git a/gfx/flags/81.tga b/gfx/flags/81.tga new file mode 100644 index 000000000..70aa897a9 Binary files /dev/null and b/gfx/flags/81.tga differ diff --git a/gfx/flags/82.tga b/gfx/flags/82.tga new file mode 100644 index 000000000..4e773109d Binary files /dev/null and b/gfx/flags/82.tga differ diff --git a/gfx/flags/83.tga b/gfx/flags/83.tga new file mode 100644 index 000000000..2087886c2 Binary files /dev/null and b/gfx/flags/83.tga differ diff --git a/gfx/flags/84.tga b/gfx/flags/84.tga new file mode 100644 index 000000000..115313662 Binary files /dev/null and b/gfx/flags/84.tga differ diff --git a/gfx/flags/85.tga b/gfx/flags/85.tga new file mode 100644 index 000000000..f03c9884d Binary files /dev/null and b/gfx/flags/85.tga differ diff --git a/gfx/flags/86.tga b/gfx/flags/86.tga new file mode 100644 index 000000000..05fd0e4c0 Binary files /dev/null and b/gfx/flags/86.tga differ diff --git a/gfx/flags/87.tga b/gfx/flags/87.tga new file mode 100644 index 000000000..daa98bd27 Binary files /dev/null and b/gfx/flags/87.tga differ diff --git a/gfx/flags/88.tga b/gfx/flags/88.tga new file mode 100644 index 000000000..fc8ed45da Binary files /dev/null and b/gfx/flags/88.tga differ diff --git a/gfx/flags/89.tga b/gfx/flags/89.tga new file mode 100644 index 000000000..5d0dbd42d Binary files /dev/null and b/gfx/flags/89.tga differ diff --git a/gfx/flags/9.tga b/gfx/flags/9.tga new file mode 100644 index 000000000..3507194b5 Binary files /dev/null and b/gfx/flags/9.tga differ diff --git a/gfx/flags/90.tga b/gfx/flags/90.tga new file mode 100644 index 000000000..2c2fce79c Binary files /dev/null and b/gfx/flags/90.tga differ diff --git a/gfx/flags/91.tga b/gfx/flags/91.tga new file mode 100644 index 000000000..52d7b31c6 Binary files /dev/null and b/gfx/flags/91.tga differ diff --git a/gfx/flags/92.tga b/gfx/flags/92.tga new file mode 100644 index 000000000..7ad7716ad Binary files /dev/null and b/gfx/flags/92.tga differ diff --git a/gfx/flags/93.tga b/gfx/flags/93.tga new file mode 100644 index 000000000..8429257b0 Binary files /dev/null and b/gfx/flags/93.tga differ diff --git a/gfx/flags/94.tga b/gfx/flags/94.tga new file mode 100644 index 000000000..2d25b4078 Binary files /dev/null and b/gfx/flags/94.tga differ diff --git a/gfx/flags/95.tga b/gfx/flags/95.tga new file mode 100644 index 000000000..efb3baae5 Binary files /dev/null and b/gfx/flags/95.tga differ diff --git a/gfx/flags/96.tga b/gfx/flags/96.tga new file mode 100644 index 000000000..d2f11f361 Binary files /dev/null and b/gfx/flags/96.tga differ diff --git a/gfx/flags/97.tga b/gfx/flags/97.tga new file mode 100644 index 000000000..9e268819f Binary files /dev/null and b/gfx/flags/97.tga differ diff --git a/gfx/flags/98.tga b/gfx/flags/98.tga new file mode 100644 index 000000000..d7876d857 Binary files /dev/null and b/gfx/flags/98.tga differ diff --git a/gfx/flags/99.tga b/gfx/flags/99.tga new file mode 100644 index 000000000..f4f9f3586 Binary files /dev/null and b/gfx/flags/99.tga differ diff --git a/gfx/logo.png b/gfx/logo.png new file mode 100644 index 000000000..146f24526 Binary files /dev/null and b/gfx/logo.png differ diff --git a/qcsrc/client/hud/panel/score.qc b/qcsrc/client/hud/panel/score.qc index 24a059a6c..15d2e6191 100644 --- a/qcsrc/client/hud/panel/score.qc +++ b/qcsrc/client/hud/panel/score.qc @@ -79,6 +79,7 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me) if (!scoreboard_fade_alpha) // the scoreboard too calls Scoreboard_UpdatePlayerTeams Scoreboard_UpdatePlayerTeams(); + /* if (team_count) { // show team scores in the first line @@ -97,45 +98,111 @@ void HUD_Score_Rankings(vector pos, vector mySize, entity me) first_pl = 1; pos.y += fontsize.y; tm = teams.sort_next; - } - i = first_pl; - - do - for (pl = players.sort_next; pl && i 0) ? '1 1 1' : '0.5 0.5 0.5'), + panel_fg_alpha, + DRAWFLAG_NORMAL); + + pos.y += sz.y * 1.1; + return pos; +} + +int left_pl_dmg = 50; +int right_pl_dmg = 50; +void Scoreboard_Duel_DrawTable(vector pos, bool invert, entity pl, entity tm) +{ + vector tmp, tmp_in, tmp_sz, tmp_acc; + string tmp_str; + float sz; + float average_acc = 0; + + panel_pos = pos; + + HUD_Panel_DrawBg(); + + // Stop here if there are no scores available + if(!pl) return; + if(entcs_GetSpecState(pl.sv_entnum) == ENTCS_SPEC_PURE) return; + + tmp = pos; + tmp.x += panel_bg_padding; + tmp.y += panel_bg_padding; + panel_size.x -= panel_bg_padding * 2; + + //if (sbt_bg_alpha) + // drawpic_tiled(pos, "gfx/scoreboard/scoreboard_bg", tmp, panel_size, rgb, sbt_bg_alpha, DRAWFLAG_NORMAL); + + // Score: highlight + if(invert) { tmp.x += panel_size.x; tmp.x -= duel_score_size.x; } + drawfill(tmp, duel_score_size, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL); + + // Score: text + tmp_str = ftos(pl.(scores(SP_SCORE))); + tmp_in = tmp; + tmp_in.x += (duel_score_size.x / 2) - (stringwidth(tmp_str, true, duel_score_fontsize) / 2); + tmp_in.y += (duel_score_size.y / 2) - (duel_score_fontsize.y / 2); + + draw_beginBoldFont(); + drawstring(tmp_in, tmp_str, duel_score_fontsize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + draw_endBoldFont(); + + // Player name + tmp_str = Scoreboard_GetField(pl, SP_NAME); + tmp_in = tmp; + if(invert) + tmp_in.x -= stringwidth_colors(tmp_str, duel_name_fontsize) + duel_name_fontsize.x * 0.5; + else + tmp_in.x += duel_score_size.x + duel_name_fontsize.x * 0.5; + tmp_in.y += (duel_score_size.y - duel_name_fontsize.y) / 2; + drawcolorcodedstring(tmp_in, tmp_str, duel_name_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); + + //LegendGuard adds a conditional sentence for country column 05-04-2021 + // Player country icon/flag + Scoreboard_GetField(pl, SP_COUNTRY); + if(sbt_field_icon3 != "") { + vector rsz = draw_getimagesize(sbt_field_icon3); + sbt_fixcolumnwidth_iconlen = rsz.x / rsz.y; + if(invert) + tmp_in.x -= hud_fontsize.x * sbt_fixcolumnwidth_iconlen + duel_name_fontsize.x * 0.5; + else + tmp_in.x += stringwidth_colors(tmp_str, duel_name_fontsize) + duel_name_fontsize.x * 0.5; + tmp_in.y += (duel_name_fontsize.y - hud_fontsize.y) / 2; + drawpic(tmp_in, sbt_field_icon3, vec2(hud_fontsize.x * sbt_fixcolumnwidth_iconlen, hud_fontsize.y), sbt_field_icon1_rgb, panel_fg_alpha, DRAWFLAG_NORMAL); + } + + // Header + float column_width = panel_size.x / 5; + tmp.x = pos.x + panel_bg_padding; + tmp.y += hud_fontsize.y * 3 + hud_fontsize.y; + + vector column_dim; + int i; + + i = (invert ? 4 : 0); + column_dim = vec2(column_width * 4, hud_fontsize.y); + + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("kills", false, hud_fontsize) / 2), + "kills", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("dmg", false, hud_fontsize) / 2), + "dmg", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("acc", false, hud_fontsize) / 2), + "acc", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("hits", false, hud_fontsize) / 2), + "hits", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth("ping", false, hud_fontsize) / 2), + "ping", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL); + + tmp.x = pos.x + panel_bg_padding; + tmp.y += hud_fontsize.y; + + // Main row + i = (invert ? 4 : 0); + + tmp_str = ftos(pl.(scores(SP_KILLS))); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2), + tmp_str, hud_fontsize * 1.25, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + + tmp_str = ftos(pl.(scores(SP_DMG))); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2), + tmp_str, hud_fontsize * 1.25, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + + tmp_acc = tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2); + + if(invert) + i--; + else + i++; + + tmp_str = Scoreboard_GetField(pl, SP_PING); + drawstring(tmp + eX * column_width * i + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2), + tmp_str, hud_fontsize * 1.25, sbt_field_rgb, panel_fg_alpha, DRAWFLAG_NORMAL); + + tmp_str = Scoreboard_GetField(pl, SP_PL); + drawstring(tmp + eX * column_width * (invert ? i-- : i++) + (eX * column_width / 2) - eX * (stringwidth(tmp_str, false, hud_fontsize * 0.75) / 2) + eY * (hud_fontsize.y * 1.25), + tmp_str, hud_fontsize * 0.75, sbt_field_rgb, panel_fg_alpha, DRAWFLAG_NORMAL); + + tmp.x = pos.x + panel_bg_padding; + tmp.y += hud_fontsize.y * 2; + + tmp_in = tmp; + + int total_weapons = 0; + + // Accuracy rows + int dmg_percent; + vector dmg_color; + + WepSet weapons_inmap = WepSet_GetFromStat_InMap(); + FOREACH(Weapons, it != WEP_Null, { + WepSet set = it.m_wepset; + if (!(weapons_inmap & set) && it != WEP_BLASTER && it != WEP_SHOTGUN) // z411 TODO : We'll be hardcoding this for now. + continue; + if (it.spawnflags & WEP_TYPE_OTHER) + continue; + + int weapon_cnt_fired = pl.accuracy_cnt_fired[i - WEP_FIRST]; + int weapon_cnt_hit = pl.accuracy_cnt_hit[i - WEP_FIRST]; + int weapon_acc = 0; + if(weapon_cnt_fired) + weapon_acc = floor((weapon_cnt_hit / weapon_cnt_fired) * 100); + average_acc += weapon_acc; + + // draw row background + drawfill(tmp_in + eX * column_width * (invert ? 1 : 0), column_dim, '0 0 0', sbt_highlight_alpha, DRAWFLAG_NORMAL); + + if(weapon_cnt_fired) { + if(invert) { + if(pl.accuracy_hit[i - WEP_FIRST] > left_pl_dmg) + left_pl_dmg = pl.accuracy_hit[i - WEP_FIRST]; + dmg_percent = pl.accuracy_hit[i - WEP_FIRST] / left_pl_dmg; + } else { + if(pl.accuracy_hit[i - WEP_FIRST] > right_pl_dmg) + right_pl_dmg = pl.accuracy_hit[i - WEP_FIRST]; + dmg_percent = pl.accuracy_hit[i - WEP_FIRST] / right_pl_dmg; + } + + // convert percentage range to 0.4 - 1 + dmg_percent = dmg_percent * (1 - 0.4) + 0.4; + + dmg_color.x = dmg_percent; + dmg_color.y = dmg_percent; + dmg_color.z = dmg_percent; + + string draw_str; + + // weapon stats + int c = (invert ? 4 : 0); + + draw_str = ftos(pl.accuracy_frags[i - WEP_FIRST]); + drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * ((column_width - stringwidth(draw_str, false, hud_fontsize)) / 2), + draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL); + + draw_str = ftos(pl.accuracy_hit[i - WEP_FIRST]); + drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * ((column_width - stringwidth(draw_str, false, hud_fontsize)) / 2), + draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL); + + draw_str = sprintf("%d%%", weapon_acc); + drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * ((column_width - stringwidth(draw_str, false, hud_fontsize)) / 2), + draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL); + + draw_str = strcat(ftos(weapon_cnt_hit), " / ", ftos(weapon_cnt_fired)); + drawstring(tmp_in + eX * column_width * (invert ? c-- : c++) + eX * (column_width / 2) - eX * stringwidth(ftos(weapon_cnt_hit), false, hud_fontsize) - eX * hud_fontsize.x * 0.5, + draw_str, hud_fontsize, dmg_color, panel_fg_alpha, DRAWFLAG_NORMAL); + + total_weapons++; + } + + // weapon icon + if(invert) { + tmp_in.x = pos.x + panel_size.x - panel_bg_padding - hud_fontsize.x / 2; + drawpic_aspect_skin(tmp_in, it.model2, vec2(50, hud_fontsize.y * 1.15), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + } + + tmp_in.x = pos.x + panel_bg_padding; + tmp_in.y += hud_fontsize.y * 1.25; + }); + if(total_weapons) + average_acc = floor((average_acc / total_weapons) + 0.5); + + // draw total accuracy now + tmp_str = sprintf("%d%%", average_acc); + drawstring(tmp_acc - eX * (stringwidth(tmp_str, false, hud_fontsize * 1.25) / 2), + tmp_str, hud_fontsize * 1.25, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + + // Icon column + vector icon_sz = vec2(column_width, hud_fontsize.y*1.5); + + if(!invert) + tmp.x += column_width * 4; + + // Item rows + drawstring(tmp + eX * ((column_width - stringwidth("items", false, hud_fontsize)) / 2), + "items", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL); + tmp.y += hud_fontsize.y * 1.25; + + float inv_num = -1; + FOREACH(Items, + it.m_id == ITEM_ArmorMega.m_id || + it.m_id == ITEM_HealthMega.m_id || + it.m_id == ITEM_ArmorBig.m_id, { + // If the match isn't over, Only show pickups if we're spectating or they're our own + /*if(intermission || warmup_stage || spectatee_status || pl.sv_entnum == current_player) + inv_num = inventoryslots[pl.sv_entnum].inv_items[it.m_id];*/ + tmp = Scoreboard_Duel_DrawPickup(tmp, true, it.m_icon, icon_sz, inv_num, invert); + + if(it.m_id == REGISTRY_MAX(Items)) + break; + }); +} + +vector Scoreboard_MakeDuelTable(vector pos, entity tm, vector rgb, vector bg_size) +{ + vector end_pos = pos; + float screen_half = panel_size.x / 2; + float weapon_margin = hud_fontsize.x; + + panel_size.x = screen_half - weapon_margin; + panel_size.y = (duel_score_size.y * 5.5); + + entity pl_left = players.sort_next; + entity pl_right = pl_left.sort_next; + + Scoreboard_Duel_DrawTable(pos, true, pl_left, tm); + Scoreboard_Duel_DrawTable(pos + eX * screen_half + eX * weapon_margin, false, pl_right, tm); + + end_pos.y += panel_size.y + (panel_bg_padding * 2); + panel_size.x = screen_half * 2; + return end_pos; +} + vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size) { int max_players = 999; @@ -1492,7 +1844,7 @@ vector MapStats_DrawKeyValue(vector pos, string key, string value) { return pos; } -vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) { +/*vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) { float stat_secrets_found, stat_secrets_total; float stat_monsters_killed, stat_monsters_total; float rows = 0; @@ -1559,7 +1911,7 @@ vector Scoreboard_MapStats_Draw(vector pos, vector rgb, vector bg_size) { panel_size.x += panel_bg_padding * 2; // restore initial width return end_pos; -} +}*/ vector Scoreboard_Rankings_Draw(vector pos, string ranktitle, entity pl, vector rgb, vector bg_size) @@ -1701,6 +2053,20 @@ bool Scoreboard_AccuracyStats_WouldDraw(float ypos) return true; } +.bool uninteresting; +STATIC_INIT(default_order_items_label) +{ + IL_EACH(default_order_items, true, { + if(!(it.instanceOfPowerup + || it == ITEM_HealthMega || it == ITEM_HealthBig + || it == ITEM_ArmorMega || it == ITEM_ArmorBig + )) + { + it.uninteresting = true; + } + }); +} + bool have_item_stats; bool Scoreboard_ItemStats_WouldDraw(float ypos) { @@ -1719,7 +2085,7 @@ bool Scoreboard_ItemStats_WouldDraw(float ypos) if (!have_item_stats) { IL_EACH(default_order_items, true, { - if (!is_item_filtered(it)) + if (!(autocvar_hud_panel_scoreboard_itemstats_filter && it.uninteresting)) { int q = g_inventory.inv_items[it.m_id]; //q = 1; // debug: display all items @@ -1849,11 +2215,26 @@ void Scoreboard_Draw() sb_gameinfo_type_fontsize = hud_fontsize * 2.5; sb_gameinfo_detail_fontsize = hud_fontsize * 1.3; + // z411 server name + //drawcolorcodedstring(pos, "xonotic.org", sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); + //drawpic_aspect(pos + '1 0 0' * (panel_size.x - 150), "gfx/logo", vec2(150, sb_gameinfo_type_fontsize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + //pos.y += sb_gameinfo_type_fontsize.y; + // Game Info: Game Type str = MapInfo_Type_ToText(gametype); + draw_beginBoldFont(); - drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_type_fontsize)), str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); + //drawcolorcodedstring(pos + '0.5 0 0' * (panel_size.x - stringwidth(str, true, sb_gameinfo_type_fontsize)), str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); + drawcolorcodedstring(pos, str, sb_gameinfo_type_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); draw_endBoldFont(); + + vector tmp_old_sz = draw_getimagesize("gfx/logo"); + float tmp_aspect = tmp_old_sz.x/tmp_old_sz.y; + vector tmp_new_sz = vec2(sb_gameinfo_type_fontsize.y * tmp_aspect, sb_gameinfo_type_fontsize.y); + + drawpic(pos + '1 0 0' * (panel_size.x - tmp_new_sz.x), "gfx/logo", tmp_new_sz, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + + pos.y += sb_gameinfo_type_fontsize.y; // Game Info: Game Detail float tl = STAT(TIMELIMIT); @@ -1973,20 +2354,20 @@ void Scoreboard_Draw() if(!tm.team) continue; - draw_beginBoldFont(); vector rgb = Team_ColorRGB(tm.team); + /*draw_beginBoldFont(); str = ftos(tm.(teamscores(ts_primary))); if (autocvar_hud_panel_scoreboard_team_size_position != 1) // team size not on left { // team score on the left (default) - str_pos = pos + team_score_baseoffset - eX * stringwidth(str, false, hud_fontsize * 1.5); + str_pos = pos + team_score_baseoffset - eX * stringwidth(str, false, hud_fontsize * 3); } else { // team score on the right - str_pos = pos + team_score_baseoffset + eX * (panel_size.x + hud_fontsize.x * 1.5); + str_pos = pos + team_score_baseoffset + eX * (panel_size.x + hud_fontsize.x * 3); } - drawstring(str_pos, str, hud_fontsize * 1.5, rgb, panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring(str_pos, str, hud_fontsize * 3, rgb, panel_fg_alpha, DRAWFLAG_NORMAL); // team size (if set to show on the side) if (autocvar_hud_panel_scoreboard_team_size_position != 0) // team size not off @@ -2029,6 +2410,31 @@ void Scoreboard_Draw() drawstring(str_pos, str, hud_fontsize, rgb, panel_fg_alpha, DRAWFLAG_NORMAL); } draw_endBoldFont(); + */ + + // z411 My team header + // Score: highlight + drawfill(pos, team_score_size, rgb * 0.5, sbt_highlight_alpha, DRAWFLAG_NORMAL); + + // Score: text + str = ftos(tm.(teamscores(ts_primary))); + str_pos = pos; + str_pos.x += (team_score_size.x / 2) - (stringwidth(str, true, team_score_fontsize) / 2); + str_pos.y += (team_score_size.y / 2) - (team_score_fontsize.y / 2); + + draw_beginBoldFont(); + drawstring(str_pos, str, team_score_fontsize, rgb, panel_fg_alpha, DRAWFLAG_NORMAL); + draw_endBoldFont(); + + // Team name + str = Team_CustomName(tm.team); + str_pos = pos; + str_pos.x += team_score_size.x + team_name_fontsize.x * 0.5; + str_pos.y += (team_score_size.y / 2) - (team_name_fontsize.y / 2); + drawcolorcodedstring(str_pos, str, team_name_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); + + pos.y += team_score_size.y + (hud_fontsize.y * 0.5); + if(autocvar_hud_panel_scoreboard_bg_teams_color_team > 0) panel_bg_color = rgb * autocvar_hud_panel_scoreboard_bg_teams_color_team; else if(panel_bg_color_team > 0) @@ -2039,6 +2445,15 @@ void Scoreboard_Draw() } panel_bg_color = panel_bg_color_save; } + else if(gametype == MAPINFO_TYPE_DUEL) + { + for(tm = teams.sort_next; tm; tm = tm.sort_next) + if(tm.team != NUM_SPECTATOR) + break; + + // z411 make DUEL TABLE + pos = Scoreboard_MakeDuelTable(pos, tm, panel_bg_color, bg_size); + } else { for(tm = teams.sort_next; tm; tm = tm.sort_next) @@ -2083,7 +2498,7 @@ void Scoreboard_Draw() pos = Scoreboard_Spectators_Draw(pos, tm, str, hud_fontsize); } - pos = Scoreboard_MapStats_Draw(pos, panel_bg_color, bg_size); + //pos = Scoreboard_MapStats_Draw(pos, panel_bg_color, bg_size); // draw scoreboard spectators after mapstats if (autocvar_hud_panel_scoreboard_spectators_position == 3) { diff --git a/qcsrc/client/main.qh b/qcsrc/client/main.qh index 83417c08d..622bf3e04 100644 --- a/qcsrc/client/main.qh +++ b/qcsrc/client/main.qh @@ -154,8 +154,15 @@ string GetSpeedUnit(int speed_unit); .int enttype; // entity type sent from server .int sv_entnum; // entity number sent from server +// z411 accuracy info +.float accuracy_frags[REGISTRY_MAX(Weapons)]; +.float accuracy_hit[REGISTRY_MAX(Weapons)]; +.float accuracy_cnt_hit[REGISTRY_MAX(Weapons)]; +.float accuracy_cnt_fired[REGISTRY_MAX(Weapons)]; + .int team; .int team_size; +.int countrycode; int binddb; diff --git a/qcsrc/common/ent_cs.qc b/qcsrc/common/ent_cs.qc index a3691386b..c4d24ed1f 100644 --- a/qcsrc/common/ent_cs.qc +++ b/qcsrc/common/ent_cs.qc @@ -152,6 +152,10 @@ ENTCS_PROP(FRAGS, true, frags, frags, ENTCS_SET_NORMAL, { WriteShort(chan, ent.frags); }, { ent.frags = ReadShort(); }) +ENTCS_PROP(COUNTRYCODE, true, countrycode, countrycode, ENTCS_SET_NORMAL, + { WriteByte(chan, ent.countrycode); }, + { ent.countrycode = ReadByte(); }) + // use sv_solid to avoid changing solidity state of entcs entities ENTCS_PROP(SOLID, true, sv_solid, solid, ENTCS_SET_NORMAL, { WriteByte(chan, ent.sv_solid); }, diff --git a/qcsrc/common/ent_cs.qh b/qcsrc/common/ent_cs.qh index db0dc466b..e708be1c3 100644 --- a/qcsrc/common/ent_cs.qh +++ b/qcsrc/common/ent_cs.qh @@ -133,6 +133,12 @@ REGISTER_NET_TEMP(CLIENT_ENTCS) return ColorTranslateRGB(e ? e.netname : getplayerkeyvalue(i, "name")); } + int entcs_GetCountryCode(int i) + { + entity e = entcs_receiver(i); + return e.countrycode; + } + /** * @param i zero indexed player */ diff --git a/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qc b/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qc index 65f21fdd2..82844386c 100644 --- a/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qc +++ b/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qc @@ -1,6 +1,6 @@ #include "cl_clanarena.qh" -#include +/*#include void HUD_Mod_CA_Export(int fh) { @@ -78,4 +78,19 @@ void HUD_Mod_CA(vector myPos, vector mySize) mod_active = 1; // required in each mod function that always shows something HUD_Mod_CA_Draw(myPos, mySize, autocvar_hud_panel_modicons_ca_layout); -} +}*/ + +// Clan Arena and Freeze Tag scores +int HUD_Scores_CA(int team) +{ + switch(team) + { + case NUM_TEAM_1: return STAT(REDALIVE); + case NUM_TEAM_2: return STAT(BLUEALIVE); + case NUM_TEAM_3: return STAT(YELLOWALIVE); + default: + case NUM_TEAM_4: return STAT(PINKALIVE); + } + + return 0; +} \ No newline at end of file diff --git a/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qh b/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qh index 586d7eb17..1c0be1e72 100644 --- a/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qh +++ b/qcsrc/common/gamemodes/gamemode/clanarena/cl_clanarena.qh @@ -1,7 +1,8 @@ #pragma once -int autocvar_hud_panel_modicons_ca_layout; +int HUD_Scores_CA(int team); +/*int autocvar_hud_panel_modicons_ca_layout; void HUD_Mod_CA(vector myPos, vector mySize); void HUD_Mod_CA_Draw(vector myPos, vector mySize, int layout); -void HUD_Mod_CA_Export(int fh); +void HUD_Mod_CA_Export(int fh);*/ \ No newline at end of file diff --git a/qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh b/qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh index 3b3dace64..27846b3ca 100644 --- a/qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh +++ b/qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh @@ -3,8 +3,9 @@ #include #ifdef CSQC -void HUD_Mod_CA(vector pos, vector mySize); -void HUD_Mod_CA_Export(int fh); +//void HUD_Mod_CA(vector pos, vector mySize); +//void HUD_Mod_CA_Export(int fh); +int HUD_Scores_CA(int team); #endif CLASS(ClanArena, Gametype) INIT(ClanArena) @@ -40,8 +41,9 @@ CLASS(ClanArena, Gametype) returns(menu, _("Frag limit:"), 5, 100, 5, "fraglimit_override", "g_ca_teams_override", _("The amount of frags needed before the match will end")); } #ifdef CSQC - ATTRIB(ClanArena, m_modicons, void(vector pos, vector mySize), HUD_Mod_CA); - ATTRIB(ClanArena, m_modicons_export, void(int fh), HUD_Mod_CA_Export); + //ATTRIB(ClanArena, m_modicons, void(vector pos, vector mySize), HUD_Mod_CA); + //ATTRIB(ClanArena, m_modicons_export, void(int fh), HUD_Mod_CA_Export); + ATTRIB(ClanArena, m_modscores, int(int team), HUD_Scores_CA); #endif ATTRIB(ClanArena, m_legacydefaults, string, "10 20 0"); ENDCLASS(ClanArena) diff --git a/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qc b/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qc index df4931a37..b4e3118c7 100644 --- a/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qc +++ b/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qc @@ -1,6 +1,6 @@ #include "cl_freezetag.qh" -#include +/*#include void HUD_Mod_FreezeTag_Export(int fh) { @@ -12,4 +12,4 @@ void HUD_Mod_FreezeTag(vector myPos, vector mySize) mod_active = 1; // required in each mod function that always shows something HUD_Mod_CA_Draw(myPos, mySize, autocvar_hud_panel_modicons_freezetag_layout); -} +}*/ diff --git a/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qh b/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qh index 75bfeefd4..6640be936 100644 --- a/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qh +++ b/qcsrc/common/gamemodes/gamemode/freezetag/cl_freezetag.qh @@ -1,5 +1,5 @@ #pragma once -int autocvar_hud_panel_modicons_freezetag_layout; +/*int autocvar_hud_panel_modicons_freezetag_layout; -void HUD_Mod_FreezeTag_Export(int fh); +void HUD_Mod_FreezeTag_Export(int fh);*/ diff --git a/qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh b/qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh index 61d3b91e9..f9270bdec 100644 --- a/qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh +++ b/qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh @@ -5,10 +5,10 @@ #include #endif -#ifdef CSQC -void HUD_Mod_FreezeTag(vector myPos, vector mySize); -void HUD_Mod_FreezeTag_Export(int fh); -#endif +//#ifdef CSQC +//void HUD_Mod_FreezeTag(vector myPos, vector mySize); +//void HUD_Mod_FreezeTag_Export(int fh); +//#endif CLASS(FreezeTag, Gametype) INIT(FreezeTag) { @@ -43,8 +43,9 @@ CLASS(FreezeTag, Gametype) returns(menu, _("Frag limit:"), 5, 100, 5, "fraglimit_override", "g_freezetag_teams_override", _("The amount of frags needed before the match will end")); } #ifdef CSQC - ATTRIB(FreezeTag, m_modicons, void(vector pos, vector mySize), HUD_Mod_FreezeTag); - ATTRIB(FreezeTag, m_modicons_export, void(int fh), HUD_Mod_FreezeTag_Export); + //ATTRIB(FreezeTag, m_modicons, void(vector pos, vector mySize), HUD_Mod_FreezeTag); + //ATTRIB(FreezeTag, m_modicons_export, void(int fh), HUD_Mod_FreezeTag_Export); + ATTRIB(FreezeTag, m_modscores, int(int team), HUD_Scores_CA); #endif ATTRIB(FreezeTag, m_legacydefaults, string, "10 20 0"); ENDCLASS(FreezeTag) diff --git a/qcsrc/common/items/inventory.qh b/qcsrc/common/items/inventory.qh index 22a4d94c3..749af8ed9 100644 --- a/qcsrc/common/items/inventory.qh +++ b/qcsrc/common/items/inventory.qh @@ -1,160 +1,158 @@ -#pragma once - -#include "all.qh" - -#ifdef GAMEQC -CLASS(Inventory, Object) - /** Stores counts of items, the id being the index */ - ATTRIBARRAY(Inventory, inv_items, int, REGISTRY_MAX(Items)); -ENDCLASS(Inventory) - -/** Player inventory */ -.Inventory inventory; -/** Player inventory storage (holds previous state) */ -.Inventory inventory_store; - -REGISTER_NET_LINKED(ENT_CLIENT_INVENTORY) - -const int Inventory_groups_minor = 8; // must be a multiple of 8 (one byte) to optimize bandwidth usage -const int Inventory_groups_major = 4; // must be >= ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor) -#endif - -// no need to perform these checks on both server and client -#ifdef CSQC -STATIC_INIT(Inventory) -{ - if (Inventory_groups_minor / 8 != floor(Inventory_groups_minor / 8)) - error("Inventory_groups_minor is not a multiple of 8."); - int min_major_value = ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor); - if (Inventory_groups_major < min_major_value) - error(sprintf("Inventory_groups_major can not be < %d.", min_major_value)); -} -#endif - -#ifdef SVQC -#define G_MAJOR(id) (floor((id) / Inventory_groups_minor)) -#define G_MINOR(id) ((id) % Inventory_groups_minor) -#endif - -#ifdef CSQC -Inventory g_inventory; -void Inventory_remove(entity this) -{ - if(g_inventory == this) - g_inventory = NULL; -} - -NET_HANDLE(ENT_CLIENT_INVENTORY, bool isnew) -{ - make_pure(this); - g_inventory = this; - this.entremove = Inventory_remove; - const int majorBits = Readbits(Inventory_groups_major); - for (int i = 0; i < Inventory_groups_major; ++i) { - if (!(majorBits & BIT(i))) { - continue; - } - const int minorBits = Readbits(Inventory_groups_minor); - for (int j = 0; j < Inventory_groups_minor; ++j) { - if (!(minorBits & BIT(j))) { - continue; - } - const GameItem it = REGISTRY_GET(Items, Inventory_groups_minor * i + j); - .int fld = inv_items[it.m_id]; - int prev = this.(fld); - int next = this.(fld) = ReadByte(); - LOG_DEBUGF("%s: %.0f -> %.0f", it.m_name, prev, next); - } - } - return true; -} -#endif - -#ifdef SVQC -int minorBitsArr[Inventory_groups_major]; -void Inventory_Write(Inventory data, Inventory store) -{ - if (!data) { - WriteShort(MSG_ENTITY, 0); - return; - } - TC(Inventory, data); - - for (int i = 0; i < Inventory_groups_major; ++i) - minorBitsArr[i] = 0; - - int majorBits = 0; - FOREACH(Items, true, { - .int fld = inv_items[it.m_id]; - const bool changed = store.(fld) != data.(fld); - store.(fld) = data.(fld); - if (changed) { - int maj = G_MAJOR(it.m_id); - majorBits = BITSET(majorBits, BIT(maj), true); - minorBitsArr[maj] = BITSET(minorBitsArr[maj], BIT(G_MINOR(it.m_id)), true); - } - }); - - Writebits(MSG_ENTITY, majorBits, Inventory_groups_major); - for (int i = 0; i < Inventory_groups_major; ++i) - { - if (!(majorBits & BIT(i))) - continue; - - const int minorBits = minorBitsArr[i]; - Writebits(MSG_ENTITY, minorBits, Inventory_groups_minor); - for (int j = 0; j < Inventory_groups_minor; ++j) - { - if (!(minorBits & BIT(j))) - continue; - - const entity it = REGISTRY_GET(Items, Inventory_groups_minor * i + j); - WriteByte(MSG_ENTITY, data.inv_items[it.m_id]); - } - } -} -#endif - -#undef G_MAJOR -#undef G_MINOR - -#ifdef SVQC -bool Inventory_Send(Inventory this, Client to, int sf) -{ - TC(Inventory, this); - WriteHeader(MSG_ENTITY, ENT_CLIENT_INVENTORY); - TC(PlayerState, this.owner); - Inventory_Write(this, to.inventory_store); - return true; -} - -bool Inventory_customize(entity this, entity client) -{ - // sends to spectators too! - return (PS(client) && PS(client).inventory == this); -} - -void Inventory_new(PlayerState this) -{ - Inventory inv = NEW(Inventory); - setcefc(inv, Inventory_customize); - this.inventory = inv; - inv.owner = this; - Net_LinkEntity(inv, false, 0, Inventory_Send); -} -void Inventory_delete(entity e) { delete(e.inventory); } -void Inventory_update(entity e) { e.inventory.SendFlags = 0xFFFFFF; } - -void Inventory_clear(entity store) -{ - // NOTE: you will need to perform Inventory_update after this to update the storage entity - // (unless store is the storage entity) - FOREACH(Items, true, { - .int fld = inv_items[it.m_id]; - store.(fld) = 0; - }); -} - -void InventoryStorage_attach(entity e) { e.inventory_store = NEW(Inventory); e.inventory_store.drawonlytoclient = e; } -void InventoryStorage_delete(entity e) { delete(e.inventory_store); } -#endif + #pragma once + + #include "all.qh" + + #ifdef GAMEQC + CLASS(Inventory, Object) + ATTRIBARRAY(Inventory, inv_items, int, REGISTRY_MAX(Items)); + ENDCLASS(Inventory) + + + .Inventory inventory; + .Inventory inventory_store; + + REGISTER_NET_LINKED(ENT_CLIENT_INVENTORY) + + const int Inventory_groups_minor = 8; // must be a multiple of 8 (one byte) to optimize bandwidth usage + const int Inventory_groups_major = 4; // must be >= ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor) + #endif + + // no need to perform these checks on both server and client + #ifdef CSQC + STATIC_INIT(Inventory) + { + if (Inventory_groups_minor / 8 != floor(Inventory_groups_minor / 8)) + error("Inventory_groups_minor is not a multiple of 8."); + int min_major_value = ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor); + if (Inventory_groups_major < min_major_value) + error(sprintf("Inventory_groups_major can not be < %d.", min_major_value)); + } + #endif + + #ifdef SVQC + #define G_MAJOR(id) (floor((id) / Inventory_groups_minor)) + #define G_MINOR(id) ((id) % Inventory_groups_minor) + #endif + + #ifdef CSQC + Inventory g_inventory; + void Inventory_remove(entity this) + { + if(g_inventory == this) + g_inventory = NULL; + } + + NET_HANDLE(ENT_CLIENT_INVENTORY, bool isnew) + { + make_pure(this); + g_inventory = this; + this.entremove = Inventory_remove; + const int majorBits = Readbits(Inventory_groups_major); + for (int i = 0; i < Inventory_groups_major; ++i) { + if (!(majorBits & BIT(i))) { + continue; + } + const int minorBits = Readbits(Inventory_groups_minor); + for (int j = 0; j < Inventory_groups_minor; ++j) { + if (!(minorBits & BIT(j))) { + continue; + } + const GameItem it = REGISTRY_GET(Items, Inventory_groups_minor * i + j); + .int fld = inv_items[it.m_id]; + int prev = this.(fld); + int next = this.(fld) = ReadByte(); + LOG_DEBUGF("%s: %.0f -> %.0f", it.m_name, prev, next); + } + } + return true; + } + #endif + + #ifdef SVQC + int minorBitsArr[Inventory_groups_major]; + void Inventory_Write(Inventory data, Inventory store) + { + if (!data) { + WriteShort(MSG_ENTITY, 0); + return; + } + TC(Inventory, data); + + for (int i = 0; i < Inventory_groups_major; ++i) + minorBitsArr[i] = 0; + + int majorBits = 0; + FOREACH(Items, true, { + .int fld = inv_items[it.m_id]; + const bool changed = store.(fld) != data.(fld); + store.(fld) = data.(fld); + if (changed) { + int maj = G_MAJOR(it.m_id); + majorBits = BITSET(majorBits, BIT(maj), true); + minorBitsArr[maj] = BITSET(minorBitsArr[maj], BIT(G_MINOR(it.m_id)), true); + } + }); + + Writebits(MSG_ENTITY, majorBits, Inventory_groups_major); + for (int i = 0; i < Inventory_groups_major; ++i) + { + if (!(majorBits & BIT(i))) + continue; + + const int minorBits = minorBitsArr[i]; + Writebits(MSG_ENTITY, minorBits, Inventory_groups_minor); + for (int j = 0; j < Inventory_groups_minor; ++j) + { + if (!(minorBits & BIT(j))) + continue; + + const entity it = REGISTRY_GET(Items, Inventory_groups_minor * i + j); + WriteByte(MSG_ENTITY, data.inv_items[it.m_id]); + } + } + } + #endif + + #undef G_MAJOR + #undef G_MINOR + + #ifdef SVQC + bool Inventory_Send(Inventory this, Client to, int sf) + { + TC(Inventory, this); + WriteHeader(MSG_ENTITY, ENT_CLIENT_INVENTORY); + TC(PlayerState, this.owner); + Inventory_Write(this, to.inventory_store); + return true; + } + + bool Inventory_customize(entity this, entity client) + { + // sends to spectators too! + return (PS(client) && PS(client).inventory == this); + } + + void Inventory_new(PlayerState this) + { + Inventory inv = NEW(Inventory); + setcefc(inv, Inventory_customize); + this.inventory = inv; + inv.owner = this; + Net_LinkEntity(inv, false, 0, Inventory_Send); + } + void Inventory_delete(entity e) { delete(e.inventory); } + void Inventory_update(entity e) { e.inventory.SendFlags = 0xFFFFFF; } + + void Inventory_clear(entity store) + { + // NOTE: you will need to perform Inventory_update after this to update the storage entity + // (unless store is the storage entity) + FOREACH(Items, true, { + .int fld = inv_items[it.m_id]; + store.(fld) = 0; + }); + } + + void InventoryStorage_attach(entity e) { e.inventory_store = NEW(Inventory); e.inventory_store.drawonlytoclient = e; } + void InventoryStorage_delete(entity e) { delete(e.inventory_store); } + #endif \ No newline at end of file diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index 0ac0c6230..ab02af59b 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -51,9 +51,10 @@ CLASS(Gametype, Object) /** game type priority in random selections */ ATTRIB(Gametype, m_priority, int, 0); #ifdef CSQC - ATTRIB(Gametype, m_modicons, void(vector pos, vector mySize)); - ATTRIB(Gametype, m_modicons_reset, void()); - ATTRIB(Gametype, m_modicons_export, void(int fh)); + //ATTRIB(Gametype, m_modicons, void(vector pos, vector mySize)); + //ATTRIB(Gametype, m_modicons_reset, void()); + //ATTRIB(Gametype, m_modicons_export, void(int fh)); + ATTRIB(Gametype, m_modscores, int(int team)); #endif /** DO NOT USE, this is compatibility for legacy maps! */ diff --git a/qcsrc/common/scores.qh b/qcsrc/common/scores.qh index cf50a7fd1..ae728e0aa 100644 --- a/qcsrc/common/scores.qh +++ b/qcsrc/common/scores.qh @@ -22,6 +22,7 @@ REGISTER_SP(END); REGISTER_SP(PING); REGISTER_SP(PL); +REGISTER_SP(COUNTRY); //LegendGuard adds new column for country label 05-04-2021 REGISTER_SP(NAME); REGISTER_SP(SEPARATOR); diff --git a/qcsrc/common/teams.qh b/qcsrc/common/teams.qh index 62c3e7b16..e99b001b2 100644 --- a/qcsrc/common/teams.qh +++ b/qcsrc/common/teams.qh @@ -58,6 +58,12 @@ const string STATIC_NAME_TEAM_4 = "Pink"; #ifdef CSQC bool teamplay; int myteam; + +// z411 used for custom names +string teamname_red; +string teamname_blue; +string teamname_yellow; +string teamname_pink; #endif string Team_ColorCode(int teamid) @@ -86,6 +92,21 @@ vector Team_ColorRGB(int teamid) return '0 0 0'; } +#ifdef CSQC +string Team_CustomName(int teamid) +{ + switch(teamid) + { + case NUM_TEAM_1: return ((teamname_red != "") ? teamname_red : "^1RED^7 team"); + case NUM_TEAM_2: return ((teamname_blue != "")? teamname_blue : "^4BLUE^7 team"); + case NUM_TEAM_3: return ((teamname_yellow != "") ? teamname_yellow : "^3YELLOW^7 team"); + case NUM_TEAM_4: return ((teamname_pink != "") ? teamname_pink : "^6PINK^7 team"); + } + + return NAME_NEUTRAL; +} +#endif + string Team_ColorName(int teamid) { switch(teamid) diff --git a/qcsrc/server/client.qh b/qcsrc/server/client.qh index 31d65f948..0de2deb02 100644 --- a/qcsrc/server/client.qh +++ b/qcsrc/server/client.qh @@ -89,6 +89,7 @@ CLASS(Client, Object) ATTRIB(Client, colormap, int, this.colormap); ATTRIB(Client, team, int, this.team); ATTRIB(Client, clientcolors, int, this.clientcolors); + ATTRIB(Client, countrycode, int, this.countrycode); /** Client IP */ ATTRIB(Client, netaddress, string, this.netaddress); ATTRIB(Client, playermodel, string, this.playermodel); @@ -317,6 +318,7 @@ bool independent_players; #define MAKE_INDEPENDENT_PLAYER(e) (((e).solid = SOLID_TRIGGER), ((e).frags = FRAGS_PLAYER_OUT_OF_GAME)) .int killcount; +.int countrycode; //flood fields .float nickspamtime; // time of last nick change diff --git a/qcsrc/server/command/sv_cmd.qc b/qcsrc/server/command/sv_cmd.qc index 6ada10451..e20b42d85 100644 --- a/qcsrc/server/command/sv_cmd.qc +++ b/qcsrc/server/command/sv_cmd.qc @@ -972,6 +972,39 @@ void GameCommand_make_mapinfo(int request) } } +void GameCommand_setflag(int request, int argc) +{ + switch (request) + { + case CMD_REQUEST_COMMAND: + { + entity client; + float accepted; + + client = GetFilteredEntity(argv(1)); + accepted = VerifyClientEntity(client, false, false); + + if (accepted <= 0) + { + LOG_INFO("^1ERROR^7: Couldn't set country flag"); + LOG_HELP("Usage:^3 sv_cmd setflag #client_id countrycode[0-249]"); + return; + } + + client.countrycode = stof(argv(2)); + LOG_INFO("^2SUCCESS^7: Country flag set!"); + return; + } + default: + LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0)); + case CMD_REQUEST_USAGE: + { + LOG_HELP("Usage:^3 sv_cmd setflag #client_id countrycode[0-249]"); + return; + } + } +} + void GameCommand_moveplayer(int request, int argc) { switch (request) @@ -1622,6 +1655,8 @@ void GameCommand_(int request) // ================================== // Do not hard code aliases for these, instead create them in commands.cfg... also: keep in alphabetical order, please ;) +SERVER_COMMAND(setflag, "Set client flag") { GameCommand_setflag(request, arguments); } + SERVER_COMMAND(adminmsg, "Send an admin message to a client directly") { GameCommand_adminmsg(request, arguments); } SERVER_COMMAND(allready, "Restart the server and reset the players") { GameCommand_allready(request); } SERVER_COMMAND(allspec, "Force all players to spectate") { GameCommand_allspec(request, arguments); }