I'm getting headaches from an ancient exploit in the game regarding duplicating round wins by standing in certain areas of the map when the bomb explodes.
You can see a demonstration of the exploit here https://www.youtube.com/watch?v=2CUuQp7UnWg (skip to min 1, if you stand on that line when bomb explodes, you win multiple times)
The problem (besides terrorists winning the first round being able to buy full awp/deag/vesthelm/nades) is that in my PUG manager, since I'm detecting round ends as such:
When this exploit happens, eT_win() is called multiple times (from testing, it seems to depend on number of players somehow, hence why in the video or most singleplayer local tests, it only duplicates the round win money, but online it's possible to get 3x or more). Because of this the T team receives 3 rounds won in the match and a huge money bonus and the match is ruined.
Is there any way to fix this? The exploit happens on multiple maps (just happened to me on airstrip near the pit) and completely breaks the game if abused, but is very hard to counter manually.
Even if I use some other way of detecting who won the round, the money problem is still there.
The exploit can be reproduced on de_dust2 by standing on the line in the video, on latest steam version of 1.6, with latest hlds, amxmodx 1.8.2 and no other plugins / modules loaded
PHP Code:
#include <amxmodx>
new g_count
public plugin_init() {
register_event("SendAudio", "eT_win" , "a", "2&%!MRAD_terwin");
}
I'm not sure if this is even the right place to ask this, I've searched a lot but can't find much on google about this. I'd assume something like "amxx money fix" if this problem was well known and solved.
__________________
Meanwhile, in 2050:
Quote:
Originally Posted by aron9forever
useless small optimizations
Quote:
Originally Posted by Black Rose
On a map that is 512x512x128 units you end up with 3,355,443,200,000 different "positions". To store each one of those positions individually in the variable "user_or" you need 12 terabytes of memory.
This plugin checks if ct or ts win is called twice or more and block it.
this requires Orpheu though, and I need this to work without it
__________________
Meanwhile, in 2050:
Quote:
Originally Posted by aron9forever
useless small optimizations
Quote:
Originally Posted by Black Rose
On a map that is 512x512x128 units you end up with 3,355,443,200,000 different "positions". To store each one of those positions individually in the variable "user_or" you need 12 terabytes of memory.
Orpheu is an important module of the amxmodx.
There's no reason why you shouldnt use it.
reHLDS is the reason
I'll look into ReAPI and see if I can do it; tbh I was hoping someone here already faced and fixed this some other way
an explanation of WHY it's happening in the first place would be a good start, if anyone has a clue
__________________
Meanwhile, in 2050:
Quote:
Originally Posted by aron9forever
useless small optimizations
Quote:
Originally Posted by Black Rose
On a map that is 512x512x128 units you end up with 3,355,443,200,000 different "positions". To store each one of those positions individually in the variable "user_or" you need 12 terabytes of memory.