Staredit Network > Forums > SC1 UMS Theory and Ideas > Topic: Simple Banning System
Simple Banning System
Mar 24 2010, 1:43 am
By: flagitious  

Mar 24 2010, 1:43 am flagitious Post #1



Didn't see a guide for this, so thought it might help someone (there is absolutely nothing new technically but I suspect alot of people don't want to learn EUD's just for this):

It can be useful to use a trigger to cause a player to drop since if you just use defeat, players with hacks can remain in the game indefinitely and annoy/spam/lag/etc you. There are many ways to do this, but I will demonstrate one basic way (if you are reading this and know a simpler way, let me know).

display "B A N N E D" to the banned player 11+ times to fill their text screen completely
use the defeat trigger, and other optional things like killing all their units
use EUD to detect the B A N N E D text, then add 1 ore to all players. (Memory(186879, exactly, 541139010) in scmdraft2)

Some things to note about this. "B A N N E D" is chosen because the text only bothers to check the first 4 characters, "B A " which cannot be accidentally seen since no battle.net username can start with "B ". This will cause defeat and drop to the banned player. Even though triggers are not run for defeated players, that players computer still processes triggers for the other players, it will be the other players triggers that run +1 ore (but only from the banned player's perspective). This player will then drop because starcraft checks sync (one of many ways) by comparing resources. The "B A N N E D" message needs to be displayed 11+ times to ensure that it is on at least the one line that the text detection checks. You could ofcourse use different text and only display it once, but you would need more triggers to detect it.

Below are some triggers that implement this that you can just copy exactly and will work (if you change the force names). Note that these triggers are for team games (where you would normally not unally a player). Since banning is initiated by the host unallying a player (it actually does this for the first trigger player, but you could change this so it is only a certain player, remove 2nd trigger and run 3rd only for 1 player). You could also switch this to use a voting system or a more tradition unit at location banning. It also displays to all other players why the player has dropped.

Trigger("players"){
Conditions:
Deaths("players", "Jump Gate", at most, 0);
Actions:
Set Deaths("current player", "Jump Gate", set to, 1);
}

Trigger("players"){
Conditions:
Deaths("current player", "Jump Gate", at least, 1);
Actions:
Preserve Trigger();
Set Deaths("Foes", "Independent Starport", set to, 1);
}

Trigger("players"){
Conditions:
Deaths("current player", "Independent Starport", at least, 1);
Actions:
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Display Text Message(always display, "B A N N E D");
Kill Unit("current player", "any unit");
Set Deaths("all players", "Independent Command Center", add, 1);
Set Deaths("current player", "Independent Command Center", subtract, 1);
Defeat();
}

Trigger("players"){
Conditions:
Deaths("current player", "Independent Command Center", at least, 1);
Actions:
Set Deaths("current player", "Independent Command Center", subtract, 1);
Display Text Message(always display, "<4>player banned, reason: host doesn't like you");
preserve trigger();
}

Trigger("players"){
Conditions:
Memory(186879, exactly, 541139010);
Actions:
Set Resources("current player", add, 1, ore);
}



None.

Mar 24 2010, 2:02 am Leeroy_Jenkins Post #2



Would there be a way to drop the player after a given amount of time? I mean, it's kind of annoying to drop even the players that don't hack. Is it possible to drop them after they've had their chance to accept the defeat dialogue?



None.

Mar 24 2010, 2:10 am flagitious Post #3



Yes, after text detection, add a wait or death counter wait before adding the ore. Although I don't think it would be that annoying.



None.

Mar 24 2010, 2:43 am Leeroy_Jenkins Post #4



Yeah. I love getting banned from a game and having to restart Starcraft. Also the addition to my disconnects is nice too.
</sarcasm>
I think only hackers would deserve to get dropped.



None.

Mar 24 2010, 2:56 am Aristocrat Post #5



Wouldn't playing an invalid WAV instantly crash SC? Or does oblivion protect against that also?



None.

Mar 24 2010, 2:57 am Cinolt Post #6



Couldn't someone spoof as "B A N N E D" and drop everyone? I think you could achieve the same effect with Leaderboard text detection if that's the case.

Quote from Leeroy_Jenkins
Yeah. I love getting banned from a game and having to restart Starcraft.
You don't need to restart StarCraft after just getting dropped.



None.

Mar 24 2010, 3:32 am flagitious Post #7



Quote from name:yoonkwun
Couldn't someone spoof as "B A N N E D" and drop everyone? I think you could achieve the same effect with Leaderboard text detection if that's the case.

Quote from Leeroy_Jenkins
Yeah. I love getting banned from a game and having to restart Starcraft.
You don't need to restart StarCraft after just getting dropped.

Yes someone could spoof that, but before the game starts you should ban obvious spoofers anyways. I did not realize you could detect leaderboard text, but yes, that sounds like a very good method, I will update the topic post once I find the addresses and test it.

Also thanks for pointing that this does not crash them, clearly you only would want that to happen if they really deserve it (hack detection/etc). The goal of this is not to punish banned people, but to get them out of the game.



None.

Mar 24 2010, 3:48 am Fallen Post #8



How is this practical? wouldnt it just be a lot more simple to have a trigger to make that person lose (aka banned).



None.

Mar 24 2010, 3:51 am flagitious Post #9



Quote from Fallen
How is this practical? wouldnt it just be a lot more simple to have a trigger to make that person lose (aka banned).

This is explained in the second sentence of the topic.

yoonkwun: I did a memory search for the strings in the leaderboard text and all locations appear to be dynamic, I don't think that method can be used. If you are using this what memory address do you use?



None.

Mar 24 2010, 4:37 am fat_flying_pigs Post #10



I'm confused as to why we need to text detect and then desync. Can't you just make the player desync w/o text detect? Unally -> kill all units/buildings for player -> desync -> defeat

And crashing is more annoying for non hackers that were banned than hackers that were banned. It's very likely that a host will ban a player simply because he wants his spot, or doesn't like the player, or blindly suspects him of lagging/hacking.

Just a note for some maps: a player who has already had the "defeat" trigger will not appear on the player list, and therefore cannot be unallied. They can use a stay alive hack, and just troll/drop players after the defeat trigger. There is no way to squelch a user after they have defeat trigger + stay alive hack. So: If a player can have the "defeat" trigger run for them before victory is declared for a player, be sure to desync them first, before defeat.



None.

Mar 24 2010, 4:55 am Fallen Post #11



Ya but you cant use EUD's anymore... you can but not on BNET



None.

Mar 24 2010, 4:57 am Leeroy_Jenkins Post #12



I was misunderstanding it. It would still be annoying to get disconnects on your record if you don't hack.



None.

Mar 24 2010, 6:52 am rockz Post #13

ᴄʜᴇᴇsᴇ ɪᴛ!

Quote from Fallen
Ya but you cant use EUD's anymore... you can but not on BNET
Conditions work fine. Actions are patched.
Quote from Leeroy_Jenkins
I was misunderstanding it. It would still be annoying to get disconnects on your record if you don't hack.
This is UMS. Stats are not recorded.

You can save strings by detecting the player number rather than text, then banning the player number (it will take up to 7 triggers though). If you're interested, I can find the offset for that, or you can just search for heinermann's map which has it in it, somewhere in the UMS MMA. Leaderboard detection is pointless, since you'd just chain some other non-shared value.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Mar 24 2010, 7:13 pm Cinolt Post #14



Yeah, detecting player number would be simpler/better.

The extended player is -122683 and the value is the 0-based player ID (value of 0 is Player 1, value of 1 is Player 2 etc)



None.

Mar 24 2010, 7:31 pm CecilSunkure Post #15



I find it's easy to desync the player by detecting screen position. If the screen position is at the top left of the map (along with any other conditions you want), then create a unit for that player to desync them. Fast and easy.

Player 4 has suffered exactly 0 deaths of unit:id13488
Player 6 has suffered exactly 0 deaths of unit:id13487

I believe one detects the x while the other detects the y axis.



None.

Mar 25 2010, 2:26 am flagitious Post #16



Quote from name:yoonkwun
Yeah, detecting player number would be simpler/better.

The extended player is -122683 and the value is the 0-based player ID (value of 0 is Player 1, value of 1 is Player 2 etc)

This would require more triggers (1 for each player), and it can't work after the banned player is already defeated like the method I presented (minor issue for some).

Quote from CecilSunkure
I find it's easy to desync the player by detecting screen position. If the screen position is at the top left of the map (along with any other conditions you want), then create a unit for that player to desync them. Fast and easy.

Player 4 has suffered exactly 0 deaths of unit:id13488
Player 6 has suffered exactly 0 deaths of unit:id13487

I believe one detects the x while the other detects the y axis.

But what if a non banned player is at this screen location by chance? It would drop them too.



None.

Mar 25 2010, 3:19 am Cinolt Post #17



Quote from flagitious
it can't work after the banned player is already defeated like the method I presented (minor issue for some).

Oh wow I missed that little detail, I overlooked that it was setting the ore for the ones not being banned. That's actually more clever than I thought. With a ton more triggers it's possible with player ID detection but in this case your method is much better. I'll attempt to find the Leaderboard EUD tomorrow if it's possible.

Also, has this been tested to drop them instantly? I'm thinking resources act like death counters in EUD-condition triggers in that it only drops when something happens that relies on it. If it doesn't drop instantly you can do create one any unit at anywhere.


Post has been edited 1 time(s), last time on Mar 25 2010, 7:50 pm by yoonkwun.



None.

Mar 25 2010, 6:26 am CecilSunkure Post #18



Quote from flagitious
But what if a non banned player is at this screen location by chance? It would drop them too.
That's why you incorporate some other conditions that need to be met, like the killing of a unit named "BAN ME", or something.

And yes, this instantly drops players without the countdown screen.



None.

Mar 25 2010, 7:49 am rockz Post #19

ᴄʜᴇᴇsᴇ ɪᴛ!

Quote from flagitious
and it can't work after the banned player is already defeated like the method I presented (minor issue for some).
I don't understand. Why would you want it to work after the banned player is already defeated? They're banned.

In terms of map space, triggers are cheaper than strings.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Mar 25 2010, 6:23 pm ImagoDeo Post #20



Quote from rockz
Quote from flagitious
and it can't work after the banned player is already defeated like the method I presented (minor issue for some).
I don't understand. Why would you want it to work after the banned player is already defeated? They're banned.

In terms of map space, triggers are cheaper than strings.

Stay-in-game hacks.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[09:38 pm]
NudeRaider -- Ultraviolet
Ultraviolet shouted: NudeRaider sing it brother
trust me, you don't wanna hear that. I defer that to the pros.
[07:56 pm]
Ultraviolet -- NudeRaider
NudeRaider shouted: "War nie wirklich weg" 🎵
sing it brother
[06:24 pm]
NudeRaider -- "War nie wirklich weg" 🎵
[2024-4-27. : 3:33 pm]
O)FaRTy1billion[MM] -- o sen is back
[2024-4-27. : 1:53 am]
Ultraviolet -- :lol:
[2024-4-26. : 6:51 pm]
Vrael -- It is, and I could definitely use a company with a commitment to flexibility, quality, and customer satisfaction to provide effective solutions to dampness and humidity in my urban environment.
[2024-4-26. : 6:50 pm]
NudeRaider -- Vrael
Vrael shouted: Idk, I was looking more for a dehumidifer company which maybe stands out as a beacon of relief amidst damp and unpredictable climates of bustling metropolises. Not sure Amazon qualifies
sounds like moisture control is often a pressing concern in your city
[2024-4-26. : 6:50 pm]
Vrael -- Maybe here on the StarEdit Network I could look through the Forums for some Introductions to people who care about the Topics of Dehumidifiers and Carpet Cleaning?
[2024-4-26. : 6:49 pm]
Vrael -- Perhaps even here I on the StarEdit Network I could look for some Introductions.
[2024-4-26. : 6:48 pm]
Vrael -- On this Topic, I could definitely use some Introductions.
Please log in to shout.


Members Online: Roy, Oh_Man