So I saw the anti prop kill on Coder-hire a while ago and I was thinking I can so one up this... and so I started making this and after some ups and downs I now have a some what working anti prop kill that can be changed and modified live without having to restart your server. Now there are a few glitches here and there such as con vars not sticking and the anti prop kill getting disabled after a map change but those will be fixed shortly. This should work with any sandbox based game-mode as long as you have a prop protection, but was really meant for DarkRP. Most variables an be changed using the console variables how ever some things such as the white list and black list would have to be changed manually in the code, but have no fear I made the config really easy to understand and if you need help just PM me or some thing and I will help you out.
Due to the recent argument in the comments section of this post I added a handy skip button.
[URL="http://facepunch.com/showthread.php?t=1376557&p=44457513#post44457513"][IMG]http://facepunch.com/fp/posticons/rant_2.gif[/IMG] - Skip Argument[/URL]
[IMG]http://cloud-4.steampowered.com/ugc/469803097759157814/ADB07DA80BFE413969BCA0DEE1B9D82BEB46B877/#.png[/IMG]
Workshop: [URL=http://steamcommunity.com/sharedfiles/filedetails/?id=184927431]http://steamcommunity.com/sharedfiles/filedetails/?id=184927431[/url]
GitHub: [url]https://github.com/LuaTenshi/GLua/tree/master/APAnti[/url]
Pronunciation: Ae Pea Anti
Note: What is it with you guys being so lewd and calling this "a panty".
Features:
• Blocks and returns prop damage.
• Attempts to stop explosives from exploding.
• Allows you to stops prop pushing.
• Allows you to ghosts props when they spawn.
• Allows you to stop vehicles from hitting players.
• Allows you to stop vehicles from doing any damage.
• Allows you to stop players from being able to fling props.
• Allows you to automatically remove large props.
↑ (...and add them to the block list if you have Falcos Prop Protection).
• Allows you to blacklist additional classes. (So that they are not allowed to do damage)
• Allows you to whitelist additional classes. (So that they are allowed to do damage)
• Allows you to auto freeze unfrozen props over time. (To reduce lag)
• Allows you to make weapons nocollide with every thing accept the world.
• You can toggle all of the above features to make this Anti Prop Kill work exactly how you want it to.
CVars: Type "apa_help" in your servers console. (The commands and their descriptions will be printed there.)
CVars Manual: [URL=https://github.com/LuaTenshi/GLua/blob/master/APAnti/commands.txt]https://github.com/LuaTenshi/GLua/blob/master/APAnti/commands.txt[/URL]
Coming Soon: The ability to turn off the damage returning.
✓ The ability to turn off the damage returning.
✓ Updated auto blocking script.
• Tool logs that don't spam your console as much as other tool logs.
If you would like to contribute, or if you would like to suggest a feature please post a comment below!
Great addon. Thanks
Looking at the code, this does much more than just try to stop propkilling, so maybe rebrand it as a general anti prop abuse addon.
Also I'm looking at some potential errors right now, but I'll send them as an issue on github.
FPtje, I summon thee.
[QUOTE=BFG9000;44282215]FPtje, I summon thee.[/QUOTE]
after hours of doing my BIG O NOTATION (O(n^2)) i decided to test this i successfully got a guy banned after spamming props for 6 hours do not use this it will be heavily abused
PM me hao u diddit pls
You left an actual backdoor in your code.
When you call APA.CMsg it sends actual LUA to clients with someone's nick in it.
This "someone" can make Lua-injection (like sql injection, you know what's that, eh?) with his/her nick and get access to server if there are any people currently on server with admin privilegies (admins with luarun or rcon for example?).
I recommend you removing your garbage method (using SendLua), send raw string over umsg. or net. instead.
[QUOTE=BFG9000;44282215]FPtje, I summon thee.[/QUOTE]
If the servers turn on that "return damage" thing, I can have a god damn field day. People will randomly die in the server and they won't know why they got prop killed, haha! This is an anti prop kill of the [U]worst[/U] kind: it's a [I]detection[/I] script. Specifically, it returns the damage to the "detected prop killer". You can fool the script into punishing the wrong people.
I can repeat my arguments, but I might as well [url=http://facepunch.com/showthread.php?t=1251297&p=39806678&viewfull=1#post39806678]link to them[/url].
[url=http://facepunch.com/showthread.php?t=1251297&p=39851914&viewfull=1#post39851914]This post[/url] proves that prop kill detection is impossible.
The problem with this addon is very simple: Give me a server running this addon and I will abuse the addon to [B]fuck shit up[/B]. big time. How? See the links.
This addon attempts [url=https://github.com/LuaTenshi/GLua/blob/master/APAnti/lua/autorun/server/sv_apanti.lua#L232]prop kill detection[/url] and it fails at it.
[media]http://www.youtube.com/watch?v=PHiDushdnpo[/media]
[QUOTE=FPtje;44286336]If the servers turn on that "return damage" thing, I can have a god damn field day. People will randomly die in the server and they won't know why they got prop killed, haha! This is an anti prop kill of the [U]worst[/U] kind: it's a [I]detection[/I] script. Specifically, it returns the damage to the "detected prop killer". You can fool the script into punishing the wrong people.
I can repeat my arguments, but I might as well [url=http://facepunch.com/showthread.php?t=1251297&p=39806678&viewfull=1#post39806678]link to them[/url].
[url=http://facepunch.com/showthread.php?t=1251297&p=39851914&viewfull=1#post39851914]This post[/url] proves that prop kill detection is impossible.
The problem with this addon is very simple: Give me a server running this addon and I will abuse the addon to [B]fuck shit up[/B]. big time. How? See the links.
This addon attempts [url=https://github.com/LuaTenshi/GLua/blob/master/APAnti/lua/autorun/server/sv_apanti.lua#L232]prop kill detection[/url] and it fails at it. [/QUOTE]
Yes I am aware that this can be abused, although I am only giving people [B]the option[/B] to use it. They can completely disable that feature and only use that parts that block prop damage or the parts ghost props when they are moving/being picked up. But again when you really think about it all I can do with a script is help people, if those people are smart enough to depend on a bot that may or may not be wrong without using their brain to actually look in to see if the information that they are getting is correct, should they really be admins? [URL="https://github.com/LuaTenshi/GLua/blob/master/APAnti/lua/autorun/server/sv_apanti.lua#L306"]Also again the damage returning can be turned off...[/URL]
Edit: Also I would like to point out that its only saying that a persons prop hit another person, its not saying that the owner of the prop was a prop killer.
Edit: But now that you mention it I probably should make the message more clear. (Thanks for your help.)
[QUOTE=LuaTenshi;44289013]Yes I am aware that this can be abused, although I am only giving people [B]the option[/B] to use it.[/QUOTE]
Take your goddamn responsibility. [B]YOU[/B] made this script. [B]YOU[/B] made exploitable. [B]YOU [/B] allow people to minge. Therefore, [B]YOU[/B] are responsible.
Do not expect server owners to know the details of your implementation like the minges do.
I recommend everyone who reads this to abuse the detection part of this addon. The more it is abused, the sooner server owners will get rid of this addon.
The creator acknowledges its exploit, yet purposefully leaves it in, shoving all responsibility to server owners to turn it off.
[editline]19th March 2014[/editline]
[QUOTE=LuaTenshi;44289013]But again when you really think about it all I can do with a script is help people, if those people are smart enough to depend on a bot that may or may not be wrong without using their brain to actually look in to see if the information that they are getting is correct, should they really be admins? [/QUOTE]
[url]http://facepunch.com/showthread.php?t=1251297&p=39806678&viewfull=1#post39806678[/url]
[quote=me]Lua never lies, on everything admins are right to trust Lua to get information. when lua prints gun kills, it is always right. when lua prints admins, money or health it is always right. Good admins can trust Lua, and rightfully so.
that is unless you make an incorrect script. prop kill detection scripts are incorrect. To any admin, a prop kill message looks exactly like any other kill message. To an admin, they are equally reliable.
unless the admin knows the mechanism and the exploits of such scripts precisely like a prop killer does, only then can he know that these scripts are unreliable and therefore useless. These scripts abuse lua to bend it to do things it cannot do. This is disastrous regardless of how good admins are.
[/quote]
[editline]19th March 2014[/editline]
Punishing the innocent by script is a capital sin.
Alright I have removed the damage returning and changed the message to look more like this...
"A prop belonging to Alpha[STEAM_0:1:000000] has hit Beta[STEAM_0:1:000000]!"
I will update the code on the Github when I have time to test it.
[QUOTE=FPtje;44289684]Take your goddamn responsibility. [B]YOU[/B] made this script. [B]YOU[/B] made exploitable. [B]YOU [/B] allow people to minge. Therefore, [B]YOU[/B] are responsible.
Do not expect server owners to know the details of your implementation like the minges do.
I recommend everyone who reads this to abuse the detection part of this addon. The more it is abused, the sooner server owners will get rid of this addon.
The creator acknowledges its exploit, yet purposefully leaves it in, shoving all responsibility to server owners to turn it off.
[editline]19th March 2014[/editline]
[url]http://facepunch.com/showthread.php?t=1251297&p=39806678&viewfull=1#post39806678[/url]
[editline]19th March 2014[/editline]
Punishing the innocent by script is a capital sin.[/QUOTE]
Congrats on the 5,200 Posts exactly ;D, But God dam you got a sexy voice (No Homo), Plus nice to see you again too. Personally I've seen that video before ages ago and just remembered about it and I love finding servers with the exact addon, Because you can abuse the shit out of it and half of the Darkrp servers these days are run by 12 year old Owners/Admins.
[QUOTE=FPtje;44289684]Punishing the innocent by script is a capital sin.[/QUOTE]
Says the guy who wastes hours trying to punish innocent players by abusing scripts just so he can act like he's right about everything. "But, it's the developer's fault, not mine for abusing it!" I agree that developers shouldn't make this shit, but get off your high horse and stop acting like you're taking the moral high road by getting people punished just to prove a point.
And believe it or not, saying "Unban this person now. I am FPtje" doesn't get the people who were banned off the hook.
[QUOTE=ks_uw-the_cat;44285978]You left an actual backdoor in your code.
When you call APA.CMsg it sends actual LUA to clients with someone's nick in it.
This "someone" can make Lua-injection (like sql injection, you know what's that, eh?) with his/her nick and get access to server if there are any people currently on server with admin privilegies (admins with luarun or rcon for example?).
I recommend you removing your garbage method (using SendLua), send raw string over umsg. or net. instead.[/QUOTE]
Yeah I have been notified of this and I have already fixed it, I just need to test the code before updating it on the Github.
Edit: Also I have decided to leave the damage returning in how ever it will now be disabled by default and when turned on a warning will be displayed linking to the post Falco has made. Because although I understand that things like that may be abused I still want to provide every thing I can so that server owners can make my script work exactly how they want, for better or for worse.
[QUOTE=Greetings;44290079]Says the guy who wastes hours trying to punish innocent players by abusing scripts just so he can act like he's right about everything. "But, it's the developer's fault, not mine for abusing it!" I agree that developers shouldn't make this shit, but get off your high horse and stop acting like you're taking the moral high road by getting people punished just to prove a point.
And believe it or not, saying "Unban this person now. I am FPtje" doesn't get the people who were banned off the hook.[/QUOTE]
The alternative was to ask a friend of mine to document what he did already.
You're attacking me on how much of a dick I am. What if I'm the most evil fucker in Gmod, would that have any effect on the value of my arguments? It wouldn't.
The problem falco describes could be easily rectified by instead tracking the source of the "force" which allowed the prop kill to occure perhaps by calculating the change in an entity's velocity caused by each collision and tracking the largest sources (entities) that have resulted in a given entitiy's velocity. This linked set of forces could be used to trace back to the player who initially pushed the props. This is more than most anti prop kill designers are willing to do but it would completely combat prop killing essentially.
[QUOTE=FPtje;44290898]The alternative was to ask a friend of mine to document what he did already.
You're attacking me on how much of a dick I am. What if I'm the most evil fucker in Gmod, would that have any effect on the value of my arguments? It wouldn't.[/QUOTE]
And I couldn't give 2 shits less about your arguments that you like to repost in every thread you're in. I'm just pointing out that you're a total hypocrite who is willing to punish innocent people just to win some stupid argument online. Okay, we get it, you're the God of Lua for coding DarkRP and nobody can stop propkilling.
[QUOTE=Greetings;44296164]And I couldn't give 2 shits less about your arguments that you like to repost in every thread you're in. I'm just pointing out that you're a total hypocrite who is willing to punish innocent people just to win some stupid argument online. Okay, we get it, you're the God of Lua for coding DarkRP and nobody can stop propkilling.[/QUOTE]
You're just here to call me a cunt, aren't you? I see no argument in your post other than "you're a bad person". The guy who got banned got unbanned again, making the situation a minor nuisance for him. Stop attacking me like I'm Joseph Mengele.
[editline]20th March 2014[/editline]
[QUOTE=thelastpenguin;44294623]The problem falco describes could be easily rectified by instead tracking the source of the "force" which allowed the prop kill to occure perhaps by calculating the change in an entity's velocity caused by each collision and tracking the largest sources (entities) that have resulted in a given entitiy's velocity. This linked set of forces could be used to trace back to the player who initially pushed the props. This is more than most anti prop kill designers are willing to do but it would completely combat prop killing essentially.[/QUOTE]
That's an interesting idea, but I'm afraid it still won't work. Think of the dropping prop example where the frozen prop in the middle is owned by the malevolent person (I'll link to the example later). It might be hard to get around it, but it would still be possible. Since minges are quite ingenious, I reckon they will find a quick way of abusing it.
[url=http://facepunch.com/showthread.php?t=1251297&p=39851914&viewfull=1#post39851914]here's the link[/url]. Note that I mention "the whole chain of entities".
Everything is abusable if you give someone with the time, knowledge or will to abuse it. The problem has been rectified it seems and the video example was for good intentions of educating people and the person got unbanned and might have even been in on the video.
@OP, Good for you for releasing something to the community and I look forward to seeing more from you in the future.
Well of course any system trying to look at a data set and interpret it will have a certain margin of error, however it is somewhat naive not to account for the error you have described.
Here is the full idea for an algorithm I'm fairly confident would be able to achieve extremely high accuracies:
Track velocity sources that have lead to a given prop's velocity particularly the forces and the contributing players or sets of players if a source has multiple sources contributing to it's own velocity.
Based on velocity sources assign a probability to each player that the given player is a prop killer.
having generated these probabilities apply biases such as:
- Previously generated probabilities
- how likely is it that the player initiated it (ie if the player can't even see it the probability is lower)
and so on...
Finally calculate the differences between each generated probability and, if the certainty is high enough, punish the given player.
The described algorithm is rather processing intensive but mathematically it is possible to categorize the actions of a prop killer and the actions of a non prop killer or choose to do nothing in the event of ambiguity. An algorithm accomplishing even half of what this might entail would still be effective enough to counter most prop killing I expect.
note: you could also do things such as using a neural network or some sort of classification algorithm in order to compute the "probability biases" essentially allowing you to give a case that has never been seen before a very low probability of being punished, but as the algorithm is exposed to a larger number of examples of "clearly prop killing" it should be possible to expand a definition to include some rather complicated cases. The issue with something like this is, of course, determining what data actually can be expected to show trends. Off the top of my head I would expect values like the prop's relationship to the player (how many physics interactions is it seperate a by) what was the prop's velocity relative to the player (moving towards or away?) and perhaps information about the prop's density and bounding box which could be used to actually identify props frequently employed in prop killing (ie if a specific prop size and weight is used a lot the algorithm will associate that with rule breaking)
now the real question is "is any of this worth it?" my answer being "unless you are really bored and have a thing for math... No"
Ah, a learning algorithm. I've had a course on that in uni called "interaction technology", it's quite an interesting subject and you can do a lot of cool stuff with it. I can link you to the course page if you're interested in learning stuff about it. That aside I don't think it's appropriate for this situation.
Probabilities, even in a learning algorithm, are still probabilities. Even if you make the probabilities huge, there is still error. Any error, even if the chance of it is tiny, is disastrous. Besides, I doubt the error margin is as tiny as you claim it is. After all, every learning algorithm requires a learning step. Fool the learning step and you'll fool the algorithm. Have an example:
Take the dropping prop example and let's say the minge fools your learning algorithm just a tiny bit. E.g. Your algorithm does nothing yet because it considers the situation ambiguous, but raises the "suspicion" for an innocent player by a tiny fraction. The minge repeats this experiment with the same innocent person. After a while your algorithm assigns a big rate of suspicion to the innocent player and a low one to the minge.
That's a recipe for disaster.
Learning Algorithms are appropriate when an occasional error is okay. it's annoying, but not disastrous when the kinekt thinks your arm is not where it really is. No people are hurt when a face recognition fails to see the face of one out of ten people in a group picture. A punishing script should not depend on probabilities, for any error, regardless of its probability is disastrous.
Punishing the innocent by script is capital sin, even if happens oh so rarely ;)
honestly guys, calm down a bit
something like this can be obviously abused, however there are other features here that prove to be useful. I should also note that any server with admins that use only a script to see whats going on instead of their own eyes is probably not worth playing in the slightest.
I see this useful for calling admins to see whats going on, sort of like an aid. any auto kick or ban feature can be abused.
I know we all have our opinions on things like this, but I for one would like to thank you for trying to make something to make gmod a better place.
[QUOTE=da space core;44331479]I should also note that any server with admins that use only a script to see whats going on instead of their own eyes is probably not worth playing in the slightest.
[/QUOTE]
But then what about this argument I posted earlier? Surely you are saying the exact same thing LuaTenshi was?
[QUOTE=LuaTenshi;44289013]But again when you really think about it all I can do with a script is help people, if those people are smart enough to depend on a bot that may or may not be wrong without using their brain to actually look in to see if the information that they are getting is correct, should they really be admins? [/QUOTE]
[url]http://facepunch.com/showthread.php?t=1251297&p=39806678&viewfull=1#post39806678[/url]
[quote=me]Lua never lies, on everything admins are right to trust Lua to get information. when lua prints gun kills, it is always right. when lua prints admins, money or health it is always right. Good admins can trust Lua, and rightfully so.
that is unless you make an incorrect script. prop kill detection scripts are incorrect. To any admin, a prop kill message looks exactly like any other kill message. To an admin, they are equally reliable.
unless the admin knows the mechanism and the exploits of such scripts precisely like a prop killer does, only then can he know that these scripts are unreliable and therefore useless. These scripts abuse lua to bend it to do things it cannot do. This is disastrous regardless of how good admins are.
[/quote]
[QUOTE=FPtje;44331999]But then what about this argument I posted earlier? Surely you are saying the exact same thing LuaTenshi was?
[url]http://facepunch.com/showthread.php?t=1251297&p=39806678&viewfull=1#post39806678[/url][/QUOTE]
there is something that is called common sense. if an admin went with the script a 100% of the time, then the admin is an idiot. any script can be abused. the point of this is to guide admins to problems. but they themselves must figure out who the problem is.
As for Luatenshi, thank you for spending the time making an addon for gmod, and better yet, releasing it for free. I seen multiple listing on coderhire that do single things and they cost 5 dollars.
[QUOTE=da space core;44334077]there is something that is called common sense. if an admin went with the script a 100% of the time, then the admin is an idiot. any script can be abused. the point of this is to guide admins to problems. but they themselves must figure out who the problem is.
As for Luatenshi, thank you for spending the time making an addon for gmod, and better yet, releasing it for free. I seen multiple listing on coderhire that do single things and they cost 5 dollars.[/QUOTE]
False. Normal kill logs are 100% reliable. When the console says person a shot person B, you're 100% sure that's what happened.
Lua doesn't lie unless you're making it guess. You cannot expect admins to know when a lua script is guessing, especially if it's so similar to the kill logs that [b]are[/b] reliable.
Not every admin is a lua scripter. Not every admin knows the detection mechanism. Can you really expect them to?
I can see both side of this argument about anti propkill / propkill detectors, like the autoban / autokick thing is just purely dumb (though it doesn't exist in this addon but was mentioned in this thread earlier), but any *decent* admin is going to investigate the situation to its full extent. I don't think it's the problem of the [I]script[/I] but more the problem of the people [I]relying[/I] on the script.
Falco, the videos you've provided of you abusing these systems are prime examples of terrible server staff, people who don't investigate the situation - not really a valid source of "proof" as many of the popular DarkRP servers have sv_allowcslua set to 0 anyway. They also involve servers where sv_allowcslua is enabled - a stupid idea from the beginning, as it makes it easier for people to use propkill scripts and other "minge" tools.
[quote=Features]• Blocks and returns prop damage. [/quote]
This is terrible - worse than autokick/autoban. Too abusable. A chat notification to online admins would be a sufficient course of action if someone is attempting to damage another player with a prop.
[B]tl;dr:[/B] autokick / autoban / autokill are dumb ideas, admins who rely only on scripts are terrible, and notifications would be sufficient.
Other than that, this addon looks good.
And yet again the same argument was repeated.
The best admin in the world can be fooled by the script because it looks as though prop kill detections are as accurate as gun kill detections.
Detected gun kills are 100% accurate
Detected prop kills are NOT
A prop kill detection script is one that gives [highlight]FALSE INFORMATION[/highlight]
False information is deceitful to [b]The best admin in the world[/b].
Please someone give me an argument that doesn't reduce to "admins are terrible if they rely on this system".
Take the next situation with the following three actors:
Minge
Victim1
Victim2
Best admin in the world
Minge prop kills Victim1 and fools the script to blame Victim2
Victim1 screams prop kill
Minge gets away from the situation (disconnect or fuck off to corner of map)
Best admin in the world investigates the situation because he's the best admin in the world
Best admin finds a dead Victim1 and Victim2 nearby in denial.
Best admin in the world has to decide based on the given information. All evidence points towards Victim2, not a single piece of evidence indicates the guilt of Minge.
Best admin in the world must decide on who's guilty in this very specific situation. Best admin in the world may spectate some people to see if it happens again, but he won't find any decisive evidence for the situation I want him to decide on. After all, even if Best admin in the world finds that Minge is minging, that doesn't mean Minge was the minge in the first prop kill.
Wouldn't it be more reliable to list the last person to physgun the prop?
It would be even less reliable.
Sorry, you need to Log In to post a reply to this thread.