So I started some work on this project in my map. Ive heard that its impossible to make a ban list for custom maps, but that isnt my idea. What I want it to do is alter gameplay for the listed people, its still the same concept, you need the players names to ban or to alter.
Heres what I have come up with so far, which Im stuck on transferring the name from text to string.
First there is a record called Player Names with 2 "text" variables, name_list [# of players on my list], and reason [# of reasons the names are on list].
I have a global variable called Names to link to the record.
Then I have an action definition called Find Player Names.
FindPlayerNameOptions:ActionReturnType:(None)ParametersGrammarText:FindPlayerName()HintText:(None)CustomScriptCodeLocalVariablesname_string=""<String[13]>
number = 0 <Integer>
name_max_number = 13 <Integer>
Actions
Variable - Set Names.reason[1] = "Unsporting conduct"
Variable - Set Names.reason[2] = "AFK (as game started)"
Variable - Set Names.reason[3] = "Early leaver"
Variable - Set Names.reason[4] = "Team killer"
Variable - Set Names.reason[5] = "Spam"
Variable - Set Names.name_list[1] = "-------"
Variable - Set Names.name_list[2] = "-----------"
Variable - Set Names.name_list[3] = "--------"
Variable - Set Names.name_list[4] = "------------"
Variable - Set Names.name_list[5] = "------------"
Variable - Set Names.name_list[6] = "------"
Variable - Set Names.name_list[7] = "-------"
Variable - Set Names.name_list[8] = "-----------"
Variable - Set Names.name_list[9] = "-------"
Variable - Set Names.name_list[10] = "------------"
Variable - Set Names.name_list[11] = "---------"
Variable - Set Names.name_list[12] = "-------"
Variable - Set Names.name_list[13] = "---------"
Each reason will have different effects.
Spam might fill the screen with text every minute, team killing might kill random units or set units life to low %, AFK might randomly issue orders to random units, etc.
Making a banlist is possible. Lots of maps have them and it is not very hard to create one.
What you are doing is the same principle.
You cannot convert a text into a string. You need to store the players names and the reasons for being banned in a string and then convert them to text if nescissary.
The function "player handle" returns a unique string identifier for each person on Bnet. You can store that string along with a string for the reason. When the map starts up get the handle of each player, use it to look up your table and then apply modifications if needed. If you want to print out the reasons then you can easily convert a string into text with the "convert string to text" function.
I thought this was possible, and as far as player handles I figured this was how to do it. But Im not too sure how to make it work.
How do you get a player handle from their Bnet name? Like my list has names on it but how do you get those specific peoples handles and apply it to the trigger and not effect anyone elses?
Ban list implies preventing people from getting into the game at all.... removing them in lobby.
Nothing you do with banks is going to prevent a player from playing prior to the game starting.
No, but you can prevent them from impacting the game by not giving them any units and removing their chat window from view. About the only way I can think of for them to be disruptive after that is to pause (only works three times) or disconnect.
OK so you guys don't like banlists (or simillar functionality if you don't want to call it a banlist)... how does deriding someone for asking about it help do anything but drive them away?
If you want to link them to a reasoned post to dissuade them then do so. But don't just call them stupid for wondering how to implement a common feature and at LEAST try and add something useful to the discussion.
First of all I'm unsure what format handles have, I just know that it is a string which is a unique identifier.
Players handles remain the same even if they change their name so I doubt there is any way you can get a players handle from their name. If you want to keep track of thier name you could store that as well.
Say you have a list of handles for people who have hacked/spammed/been abusive. I'll use the setup you had above.
reasons and handles should both be strings
Variable - Set Names.reason[1] = "Unsporting conduct"
Variable - Set Names.reason[2] = "AFK (as game started)"
Variable - Set Names.reason[3] = "Early leaver"
Variable - Set Names.handle_list[1] = "qwoidu9823yhe"
Variable - Set Names.handle_list[2] = "987uyhwejkdh"
Variable - Set Names.handle_list[3] = "0csd98hjk1"
in the melee init trigger have code simillar to
intthis_player;intlist_number;stringhandle;foreach(this_player)inplayergroup(allplayers){setvariablehandle=handleofplayer(this_player)foreach(list_number)from1to3withincrement1{ifNames.handle_list[list_number]==handle{textmessage(combinetext(nameofplayer(this_player),"is on the ban list because",Names.Reason[list_number]));/*** put code here to perform actions on people on ban list ***/}}}
Although it requires that you have a bit of familiarity with loops and arrays. If you don't then I would strongly suggest you go and find a tutorial and muck around with the basics first.
AFAIK there is no way to find a player's handle if they are not currently in the game or if the handle isn't already stored in your map (via bank or triggers.)
I use banning using handles in a couple of my maps. It's useful as a deterrent for undesirable activity. The idea is to make being a douchebag more inconvenient than being a normal, decent human being. That being said, most of my deterrent activity modifies a player's bank and applies some kind of temporary handicap for people who violate rules. I generally try to avoid permanently preventing people from playing my games...
Banning and other similar deterrents shouldn't replace built-in game functionality, but when faced with certain limitations set in place by Blizzard, such measures may be necessary at times.
For all you guys who are complaining about it and saying not to make a ban list, READ the original post. Im NOT making a ban list. Its more like a penalty list for people who I have personally seen make a game undesirable to play, and I wouldnt add any player to this list without a good reason.
For the ones helping, thank you for understanding and trying to help.
Now thats out of the way, finiteturtle your trigger is extremely close to what I had on my trigger. Im going to mess with it a bit and see if I can get it working.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
So I started some work on this project in my map. Ive heard that its impossible to make a ban list for custom maps, but that isnt my idea. What I want it to do is alter gameplay for the listed people, its still the same concept, you need the players names to ban or to alter.
Heres what I have come up with so far, which Im stuck on transferring the name from text to string.
First there is a record called Player Names with 2 "text" variables, name_list [# of players on my list], and reason [# of reasons the names are on list].
I have a global variable called Names to link to the record.
Then I have an action definition called Find Player Names.
Each reason will have different effects.
Spam might fill the screen with text every minute, team killing might kill random units or set units life to low %, AFK might randomly issue orders to random units, etc.
Any way to make this work?
You need a way to uniquely identify the players, that is all I am saying.
Who says banlists are impossible? Lol. Even before getting sc2 handles was possible you could do a banlist
Making a banlist is possible. Lots of maps have them and it is not very hard to create one.
What you are doing is the same principle.
You cannot convert a text into a string. You need to store the players names and the reasons for being banned in a string and then convert them to text if nescissary.
The function "player handle" returns a unique string identifier for each person on Bnet. You can store that string along with a string for the reason. When the map starts up get the handle of each player, use it to look up your table and then apply modifications if needed. If you want to print out the reasons then you can easily convert a string into text with the "convert string to text" function.
I thought this was possible, and as far as player handles I figured this was how to do it. But Im not too sure how to make it work.
How do you get a player handle from their Bnet name? Like my list has names on it but how do you get those specific peoples handles and apply it to the trigger and not effect anyone elses?
Ban list implies preventing people from getting into the game at all.... removing them in lobby.
Nothing you do with banks is going to prevent a player from playing prior to the game starting.
Morons ... did you miss the part where I said that if you don't know how to make a banlist you probably shouldn't be making one.
ban list are stupid anyways... wow, look at me, im a big man, i am banning nerds from a sc2 map...
lol just think about that for a minute. :P
No, but you can prevent them from impacting the game by not giving them any units and removing their chat window from view. About the only way I can think of for them to be disruptive after that is to pause (only works three times) or disconnect.
OK so you guys don't like banlists (or simillar functionality if you don't want to call it a banlist)... how does deriding someone for asking about it help do anything but drive them away?
If you want to link them to a reasoned post to dissuade them then do so. But don't just call them stupid for wondering how to implement a common feature and at LEAST try and add something useful to the discussion.
@xHydrAx74: Go
First of all I'm unsure what format handles have, I just know that it is a string which is a unique identifier.
Players handles remain the same even if they change their name so I doubt there is any way you can get a players handle from their name. If you want to keep track of thier name you could store that as well.
Say you have a list of handles for people who have hacked/spammed/been abusive. I'll use the setup you had above.
reasons and handles should both be strings
Variable - Set Names.reason[1] = "Unsporting conduct"
Variable - Set Names.reason[2] = "AFK (as game started)"
Variable - Set Names.reason[3] = "Early leaver"
Variable - Set Names.handle_list[1] = "qwoidu9823yhe"
Variable - Set Names.handle_list[2] = "987uyhwejkdh"
Variable - Set Names.handle_list[3] = "0csd98hjk1"
in the melee init trigger have code simillar to
Although it requires that you have a bit of familiarity with loops and arrays. If you don't then I would strongly suggest you go and find a tutorial and muck around with the basics first.
AFAIK there is no way to find a player's handle if they are not currently in the game or if the handle isn't already stored in your map (via bank or triggers.)
I use banning using handles in a couple of my maps. It's useful as a deterrent for undesirable activity. The idea is to make being a douchebag more inconvenient than being a normal, decent human being. That being said, most of my deterrent activity modifies a player's bank and applies some kind of temporary handicap for people who violate rules. I generally try to avoid permanently preventing people from playing my games...
Banning and other similar deterrents shouldn't replace built-in game functionality, but when faced with certain limitations set in place by Blizzard, such measures may be necessary at times.
For all you guys who are complaining about it and saying not to make a ban list, READ the original post. Im NOT making a ban list. Its more like a penalty list for people who I have personally seen make a game undesirable to play, and I wouldnt add any player to this list without a good reason.
For the ones helping, thank you for understanding and trying to help.
Now thats out of the way, finiteturtle your trigger is extremely close to what I had on my trigger. Im going to mess with it a bit and see if I can get it working.