TTT Advanced RDM Manager

This addon detects when someone is RDMed and prompts the victim if they want to condemn the person that killed them to die in the next round.
I developed this addon for my No Admins - No Bullshit server so that I would not have to intervene with RDM issues or have moderators on staff.

Everyone is protected against RDMs when the round starts.

How players lose their RDM protection

Traitors


Fire their weapon
Prop kill
Goomba stomp
Pull out any traitor weapon
Or if there are too many proven players

Innocent


Hurt or kill any Innocents or Detectives

How to be considered proven


Shot by a traitor
Kill a traitor
Are a detective
Or are dead

The RDMs accumulate and dissipate based on your behavior:


1 RDM = 1 Slay added to your queue
2 RDM = 3 Slay added to your queue
3 RDM = 4 Slays added to your queue

The accumulator lowers down to zero down with every round that you do not RDM any players.
When the round starts, you are told how many condemns (slays) you will receive if you RDM that round.
If you are slayed, it is announced to everyone.
The slays and RDMs are stored in a remote MySQL database so that people that RDM and leave will still have their slays when they return.
You can manually condemn a player by name with the console command condemn.

Victim Screenshot after being RDMed

RDMer screenshot after RDMing 4 people in one round

Inspired by the RDM Manager developed by Deathtitan77.
With this addon, I’ve been able to keep a populated and unmoderated server for three weeks now.
This addon has bugs that I am aware of, but haven’t worked on so expect some lua errors every now and again.
Add your MySQL info to line 266 in servergui.lua and add the table included to your database.
This addon requires mysqloo.

Download

And what if a traitor ignores an unidentified body? Or if a traitor that isn’t suspected doesn’t pretend to shoot at a traitor that has already revealed himself? What if an innocent player shoots near a player, intentionally missing the shots, just to get the other person (likely innocent) to kill him?

There are too many possible situations for this to completely replace moderation. Don’t get me wrong - it looks like you put a lot more effort into this than the majority who try. Not trying to bash your script. But, this has the same fault as any anti-propkilling script that doesn’t make the action itself impossible. It can discourage many people from doing it, yet at the same time there will be those who exploit the faults in it and get other players wrongfully punished.

>and what if a traitor ignores an unidentified body

Its suspicious, and you can kill the traitor, but you will risk being wrong.

> Or if a traitor that isn’t suspected doesn’t pretend to shoot at a traitor that has already revealed himself?

What?

>What if an innocent player shoots near a player, intentionally missing the shots, just to get the other person (likely innocent) to kill him?

Everyone is aware of traitor baitors and they ignore them. They don’t risk getting condemned over a bait.

>There are too many possible situations for this to completely replace moderation.

It can and has completely replaced moderation for my server. It just depends if you want to spend your free time looking at logs and having people scream into their mics over he said she said, or use an automated method like this.

As much as this could be useful, I find it’s better to just have active admins.

Nice work, anyway.

I don’t have admins. Admins abuse. Admins are bias.

Seems like you had a bad experience with admins. Not all of em’ suck you know.

Though, because I’ve actually never dealt with it before in my life.

Can you explain to me how MySQL work? The process and etc.

I’m not even sure I’d be able to install mysqloo correctly on the server.

>Seems like you had a bad experience with admins.

Indeed, most do though.

I don’t feel like writing a crash course on what MySQL is and how to use it. There are plenty of online resources you can use though.

-snip-

Looks great but the thing is…Trolls will just trap people and when they kill them they will just say “Condem to die”

For what it is, I think this is very good and clearly a lot of effort has gone into this, so good stuff.

I do, on the other hand, think TTT has an infinite amount of scenarios that could occur, with various small details which may be left out.

That may be an exaggeration.

There still some situations I need to implement detection for:

Triggering traitor traps, going into traitor rooms, being proven by the T tester, breaking vital equipment.
This addon isn’t an absolute substitute for the intuition that a person has, but it cleans up most of the drama that comes with TTT.

This addon prevents being slayed for killing an RDMer.
The traitors are protected until they choose to make their first kill.
It protects players against revenge RDM and mass RDM by severely incrementing their slays with every RDM and keeping them on probation.
They are judged and slayed by the people they killed so they are given 10 seconds to ask for forgiveness and explain the situation before the condemn (slay) button is enabled.

I haven’t even been on my server today and its already full to the brink with people that prefer no admins looming over them.
Its a successful social experiment in which people prefer to be ungoverned with the small risk of being unjustifiably killed.

Do you seriously think you can make an efficient AI that can detect rdms ?
I’m thinking about releasing mine but it requires admins. Admins not abusing

Its not really an AI, but rather a set of rules to play by.

Everyone is protected until they break one of the rules that is set for them.

It sounds like you are describing a RDM detector that prompts the Admin to slay rather than the victim.

Interesting. I’m working on a Justified/Unjustified kill system. Basically shooting in the direction of people, them being scared for their life and shooting back warrants a justified kill.

If a Traitor pulls out a traitor weapon, justified kill. If an innocent pulls out a traitor weapon that was not declared in chat, justified kill, unless proven innocent in chat.

etc etc… It is AI in a sense that all of these determinations need to be made, and there is a TON of monitoring that needs to go along with it such as when the traitor weapon is pulled out, can the innocent actually see the weapon, or does the weapon have a trademark pose such as knife which as long as you see the person, you know what it is? Etc etc…

When I recode my version of TTT it’s going in ( my version ) but if you want to collaborate a bit, maybe improve yours, feel free to add me on steam.

Sent you an invite.

I have considered making it more specific, but I am afraid that it will bloat the code and slow down the server.

I like the idea of this RDM Manager. Only suggestion is to improve the GUI that pops up.

Accepted. Well, it depends; if you optimize the bloat well enough, it won’t be much of a bother. As long as it’s not file IO during key points, local vars can hold key points until it’s ready to be pushed, or you could compile everything at the end of the round with exact time stamps.

Sort based on time stamp what was done when how why where etc… If an anomaly is noticed, allow for RDM.

So for example, player shooting in the air like an ALLAH or GOD praising Terrorist may do wouldn’t be suspicious, but if someone shot him for that claiming defense might get away with it. At the end of the round, it’s then all put together, the angles are shown to be no where near Innocent number 2, and thus the RDM is noted.

So gathering data and processing at the end for bloat might be better. Gathering can be hefty, so maybe gather important events, person just looked at person ( can be checked with the target draw name hook ), etc etc…

/tired, laying down for an hour.

I wrote a system I thought was better since my server worked with a levels and xp mod. Killing people you weren’t supposed to added to your bounty every death decreases it, bounties multiply the xp per kill you get. If you got above a certain bounty you would have your bounty quintupled and a big red flashing KILL ON SIGHT added above your head. It was a fun way to deal with incessant rdm to say the least

Learned mysql myself, installed and confirmed it was connected (via the log in /data)

I have two lua errors that cause it not to work

[lua]ServerLog: 00:31.39 - DMG: Zero The Fallen [traitor] damaged Bot02 [innocent] for 63 dmg

[ERROR] addons/rdm system/lua/autorun/server/servergui.lua:202: attempt to index a nil value

  1. fn - addons/rdm system/lua/autorun/server/servergui.lua:202
  2. unknown - addons/ulib/lua/ulib/shared/hook.lua:183

ServerLog: 00:31.39 - KILL: Zero The Fallen [traitor] killed Bot02 [innocent]

[ERROR] addons/rdm system/lua/autorun/server/servergui.lua:147: attempt to index a nil value

  1. fn - addons/rdm system/lua/autorun/server/servergui.lua:147
  2. unknown - addons/ulib/lua/ulib/shared/hook.lua:183
    [/lua]

This will happen regardless of role, and traitors lose their protection the instant the round starts for some reason.

(ps yes there was 4-5 people people, not just 2)

The players table is built using authenticated players. It will throw nil errors when using bots since they are never authenticated as actual players.

Whenever a traitor loses their protection, it gives the reason to them in the chat log.
What message are you receiving when you lose your protection?