Jump to content

Language Enforcer [1.0.3.0] (Apr 11.)


ImportBot

Recommended Posts

Originally Posted by PacmanTRT*:

 

This is because of the Regex Entry

^\W*(g+\W+)_(so\W+)_(win\W)*(((to{2,})|(2))\W+)_(v ery\W+)_(([e3][a4][sz5][yi1]_)|(e+z+))(\Wwin)*

 

I added this to prevent unsporting behaviour on my server, since I interpret that like he was saying it was no challenge for him due to enemy team are all noobs.

Interestingly mostly people who had a hard time reaching a KD ratio of 1 write that into the chat.

 

Update on development process: There currently is almost no progress since I need to find a ned dev-environment first. The mere presence of Visual Studio on my disk (SSD) does awful things to my BF4 loading times.

* Restored post. It could be that the author is no longer active.
Link to comment
  • 2 months later...
  • Replies 228
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Originally Posted by Strudaklitt*:

 

Hi!

 

Me and my clan are VERY interested in your plugin, Language Enforcer. How do I install this on a procon layer? I mean, where do the files go? : )

 

Hope you can help!

 

Best regards

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

Hi!

 

Your hosting provider should have given you a FTP connection to your Layer server. In there somewhere must be a folder named "Plugins" which contains subfolders for the specific games. Put the .cs file in one of those and restart your Layer server.

 

Best Regards

Pac

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

I am proud to introduce a new version today. It is long awaited by many (or at least some ^^) of you.

Finally the enforcer can treat some words differently to others!

 

1.0.0.0 --> 1.0.1.0

  • Introduced Wordlist sections with section based overrides. (I hope Doom69 likes it ^^)
  • New details tab design to match the first post

You now can define a wordlist section by putting a line which begins and ends with curly brackets.

After that, the according settings appear in the list!

 

These settings are:

  • Severity: Increase the counter with a specified value
  • Measure: Set a fixed or minimum measure
  • Min. counter: Badword counter for the player has minimum value applied beforehand.
  • Override messages: Put different messages for public/private/yell messages
  • Yell/TBan time: Set different yell/tban time for triggered words in that section.

Todo:

  • Make more message variables available (e.g. clock or nextmap to better cover auto-responder functionality (via severity set to zero))
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

The Enforcer tries to save the counters to the disk every now and then...

This error message only should bother you if you are about to restart the layer.

I can imagine that this error also occurs when no counters are defined so far.

 

Just wait and see what it does... If you don't restart your layer very often this is the most irrelevant error anyways ^^

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Strudaklitt*:

 

We've run the plugin all day now, and I can tell you, it works GREAT! There's just one tiny, annoying thing we've come across. When the server reports that a player (with a name that includes a badword-listed word) e.g "Server: Idiottekk joined the game!", Language Enforcer warns the actual server and wants to kill it upon next violation... This is quite humoristic, but still a negative thing, since it gives an image of not being too much of a serious server ^^

 

So, my question - is there any way to make the plugin not warn the server? : )

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

Hm... Thats actually very interesting. My server has perm banned itself numerous times, but that is months ago.

I've now looked through the source and I think I know why it does that...

 

You must have enabled "Warn Whitelisted".

The actual behaviour is to force whitelisting of the speaker named "Server". Therefore it is possible to issue commands that way. A whitelisted player who is warned will go through the very same steps as a non-whitelisted player but the Enforcer will auto-reset him afterwards.

The obvious downside now is, that the server will warn itself... This actually is a bug :-/

 

A bugfix is available. Just re-download and re-install the plugin.

The version number stays the same, because I don't want to bother you guys with a "new version" message in procon.

 

THANKS for the compliment and for the bug-report! :tongue:

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

Yes.

Even if you already have 1.0.1.0 and you suffer from the bug you can update to the "updated 1.0.1.0"

 

If you update from 1.0.0.0 you also get a new feature.

You can read about it in the first post or ...*.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

I've run into this problem myself.

Even if you tell them that they must use English in the all/team-chat (because nobody can understand them) they still keep spamming and remain without any response.

 

The real problem now is (as you might have seen yourself), that the battlefield servers themselves do not support russian characters for a RCON connection. So there sadly is NO WAY to really determine if a player uses russian characters. Those characters are all deleted before transmission.

 

Since you mostly will get empfy messages you can try putting the Regex "^$" for empty messages or the Regex "^\s*$" for messages that only contain spaces. Both are to be used without the quotes.

This certainly is not a very good solution since I saw players use empty messages for various reasons. I don't know if those messages really were empty or if they contained a space. I will test that on my server with a special override to only warn those players.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

How do You do this? need Help please. Best Reg

I've run into this problem myself.

Even if you tell them that they must use English in the all/team-chat (because nobody can understand them) they still keep spamming and remain without any response.

 

The real problem now is (as you might have seen yourself), that the battlefield servers themselves do not support russian characters for a RCON connection. So there sadly is NO WAY to really determine if a player uses russian characters. Those characters are all deleted before transmission.

 

Since you mostly will get empfy messages you can try putting the Regex "^$" for empty messages or the Regex "^\s*$" for messages that only contain spaces. Both are to be used without the quotes.

This certainly is not a very good solution since I saw players use empty messages for various reasons. I don't know if those messages really were empty or if they contained a space. I will test that on my server with a special override to only warn those players.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

Assuming you use Version 1.0.1.0:

In the Plugin Settings tab of the Enforcer add following to the Regex Badwords (in category 4 - Wordlists):
 

{russian}
^\s*$

 

Then a new settings category named 6._ - Measure override section "russian" will appear.
In this category set Enabled to Yes.

Furthermore I've set following things
Severity
Measure
Allow highter measures
Min. counter
Public message
Private message 
Yell message 
Yell time
TBan time



Another thing you can achieve with overrides:
If you want you can use the Enforcer as an AutoResponder that way.
For instance if you want to respond to a player asking for rules:

{rules}
^rules\__$
^(is )_\w+ allowed\__$
^(are )_\w+ allowed\__$ 
Edited by maxdralle
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

The question may seem simple, but you can't really tell if something is not english programatically.

You can only add common words of non-english languages to the russian section

 

For instance this might be useful to prevent german chat:

http://www.lsa.umich.edu/german/hmr/...ent_words.html

 

I would definitely skip the numbers section in there. Also you must keep in mind that procon will not recieve non-ASCII characters from the chat. Here's a list of them: http://en.wikipedia.org/wiki/Ascii#A...ble_code_chart

For instance if someone writes "können" (example from the first link) procon will only recieve "knnen".

Even worse: "für" becomes "fr"

 

You also have to be careful with the regular wordlist. It checks via a contains method.

So if you add "fr" to the wordlist it will also match "infrared"

Either you put spaces on both ends of the word or you do it via regex and put "\b" instead of spaces. (regex would be better but it is slower)

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

OK .. i made it so now ... its ok ?

 

look here please lenf.jpg

The question may seem simple, but you can't really tell if something is not english programatically.

You can only add common words of non-english languages to the russian section

 

For instance this might be useful to prevent german chat:

http://www.lsa.umich.edu/german/hmr/...ent_words.html

 

I would definitely skip the numbers section in there. Also you must keep in mind that procon will not recieve non-ASCII characters from the chat. Here's a list of them: http://en.wikipedia.org/wiki/Ascii#A...ble_code_chart

For instance if someone writes "können" (example from the first link) procon will only recieve "knnen".

Even worse: "für" becomes "fr"

 

You also have to be careful with the regular wordlist. It checks via a contains method.

So if you add "fr" to the wordlist it will also match "infrared"

Either you put spaces on both ends of the word or you do it via regex and put "\b" instead of spaces. (regex would be better but it is slower)

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

You really should put something different in the private messages.

The player will just recieve the same message twice. (others will see it once)

For the rules you should put the rules text in there. For the "russian" section you can put a message that tells people that squad chat is not monitored by the enforcer (depending on your settings).

 

I also would set the Yell time in the rules section to zero, to prevent the yell message.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

Hi Pacman ... i delet my Regex Badwords.txt ... so i have only the codes against russian language in there. Its OK? but i think words like fuck ... bitch and noob are not bad words for me. I only use now the bad words.txt ... or its not ok when i do it so ?

 

sorry for my bad english

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

Hello ... now i have a Problem. Every Day the settings for the russian sections are gone and i have to set it new. why dont save the settings. And when i uploaded my config from PC the Console tells me that exec LanguageEnforcer.cfg is an unknown command.Sorry for my bad english

You really should put something different in the private messages.

The player will just recieve the same message twice. (others will see it once)

For the rules you should put the rules text in there. For the "russian" section you can put a message that tells people that squad chat is not monitored by the enforcer (depending on your settings).

 

I also would set the Yell time in the rules section to zero, to prevent the yell message.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

Hi!

 

My Procon hoster lately deleted all of our Procon Accounts (needed e.g. for ingame-admin).

If your settings are deleted again, please tell me. (You can also PM me in german ^^)

 

To the cfg copying thing. I dont think there is a way to execute a cfg file. You have to replace the existing cfg file on your layer server.

 

Best Regards

Pac

 

(and sorry for the long time I needed to reply)

* Restored post. It could be that the author is no longer active.
Link to comment
  • 2 weeks later...

Originally Posted by PacmanTRT*:

 

You might want to be more specific when describing something next time.

I cannot actually smell whats wrong just by the words "doesn't work".

Well... let the guesswork begin...

 

Did it install properly? Can you see it in the plugins list?

No? --> try restarting the layer

 

(I suspect you mean "Chain link")

The game mode can not affect the plugin.

Just to be sure: try to put something inside both wordlists.

Try to find a file named "LangEnforcer.log" on your server an PM the contents to me. I might be able to tell what the problem is.

 

(Your provider might prevent creation of that file :-/ )

If you can't find that file you might want to try to disable and re-enable the plugin.

Since the logging is also written to the console (or whatever you have configured) that might bring up some interesting log entries.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

Hi there,

* I have a question. If I upload only the Badword.txt without the RegexBadwords.txt. Then everything works as it should _, or even the RegexBadwords.txt must necessarily be shared with_. Also when I type !admin in Chat .. the plugin told me that there is no Admin online... why ?

 

Best Regards

 

Crawfy

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

The !admin command lists PLAYERS with Kill-rights. It does not check if an admin is connected to procon. (yet...)

 

Not deploying any TXT file to a server should not cause any difficulties.

In earlier versions there were 2 possibilities what could go wrong if you don't deploy them:

1) Nothing works (fixed in version 1.0)

2) It interprets everything as a violation, but afaik it checks if there is nothing in the wordlist before looking in messages, so it is safe (please tell me if it does do that)

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

Hi,

 

I only have the following in the RegexBadwords.txt

 

 

{russian}

^ \ s * $

 

{rules}

^ rules \? $

^ (is)? \ w + allowed \? $

^ (are)? \ w + allowed \? $

 

it seems as if the Badwords.txt works. But I still have the problem that the settings for this section are not saved. After restarting the server, this section still exists, but it is disabled and everything is set to zero. Why?

 

is it possible to insert the settings in the RegexBadwords.txt?

 

Best Regards

Crawfy

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Crawfy2D*:

 

only the section settings are at zero every time ... other sections are OK

that is not possible, sry...

but i'll think about that!

 

does it lose any other setting or just the section settings?

* Restored post. It could be that the author is no longer active.
Link to comment
  • 3 weeks later...

Originally Posted by dyn*:

 

Came back from an extended leave and am updating a few things, one of items updated is Watchdog to Language Enforcer. Very nice so far.

 

Can't seem to properly format the regex string to catch what we need to catch, and not end up punishing the entire server. Right now the only words to limit are "faggot" "fag" "nigger" "phaggot" "phag" and probably additional strings down the road once we snuff out what the kids are changing them to. We currently have:

 

Code:

n+[1i]+g+[3ea]+r*
f+[a4]+g+[ao0il]+t*
f+[a4]+g+
f+[a4]+q+
So now that they're getting warned what they've started doing is adding a bunch of spaces and multiple letters. Examples: F AAAA G & F A G. I thought \W would do whitespaces but that failed and started kicking a bunch of people. I'm stumped.

 

To catch:

Multiple characters if they are included in a forbidden word.

Case-insensitive.

Characters preceding or following banned word.

Spaces within the word.

Dashes (and all non-letter symbols_) if it is contained in a a forbidden word. Ex: F-A-G

 

Suggestions of possible solutions or where to start with the regex? There are some examples on the forum here but nothing that quite catches everything .

 

Secondly, all of our admin roles are handled by ADKATS*. Taking advantage of the manual admin punishment would be ideal as then your plugin, Language Enforcer, will keep track of all warnings. It is my understanding that all admin roles are pulled from Procon.

 

I would purpose a new feature: The ability to pull the admin list from from ADKATS or having a specific in-plugin list of authorized admins who were able to issue the punish command in game. Having this functionality would decrease the workload of adding multiple admins to multiple layers and then having to keep that updated as well.

 

Thanks for your consideration.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PacmanTRT*:

 

Hi!

 

Thanks for your input! I don't know ADKATS, but it sounds cool.

At the moment there is not much time I have left so it will take its time.

 

To the Regex stuff:

First of all Regex is case insensitive and it looks via "contains".

So "f+[a4]+g+[ao0il]+t" is unnecessary when you have "f+[a4]+g+".

Also a leading / trailing + operator is unnecessary.

So the simplest version of that (which does exactly the same) would be "f[a4]+g".

 

With the help of IAF SDS I have developed a somewhat sophisticated regex to catch "nigga" and its variations.

It is well commented so you can delete what you dont need. To avoid false positives it is split in 2 sections. "with spaces" and "in words". The first one will also catch dashes, dots and so on. This is to avoid that it e.g. catches "if a gun" in the "fag" section.

Code:

### "Nigger" written with spaces ###
\b((n)|([il1]\\[il1!]))+(\W*[1ilj!])+(\W*[gq&])+(\W*[e3])*(\W*r)+\b(_<!niger)# nigger
(\|\\\|)+(\W*[1ilj!])*(\W*[gq&])+(\W*[e3])*(\W*r)+\b# |\|igger
\b((n)|([il1]\\[il1!]))+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4yi])*\b# nigga / niggy
(\|\\\|)+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4yi])*\b# |\|igga
\b((n)|([il1]\\[il1!]))+(\W*[1ilj!])+(\W*[gq&])+(\W*[li1!])+(\W*[3e])*(\W*[dt])+\b# Niglet
(\|\\\|)+(\W*[1ilj!])+(\W*[gq&])+(\W*[li1!])+(\W*[3e])*(\W*[dt])+\b# |\|iglet
\b((n)|([il1]\\[il1!]))+(\W*[e3])*(\W*[gq&])+(\W*r)+(\W*[o0qc])+(\W*[1ilj])*(\W*[dt])*\b# negro
(\|\\\|)+(\W*[e3])*(\W*[gq&])+(\W*r)+(\W*[o0qc])+(\W*[1ilj!])*(\W*[dt])*\b# |\|egro
\b((n)|([il1]\\[il1!]))+(\W*[e3])+(\W*[gq&])+(\W*[e3])*(\W*r)+\b# neger
(\|\\\|)+(\W*[e3])*(\W*[gq&])+(\W*[e3])*(\W*r)+\b# |\|eger
\b((n)|([il1]\\[il1!]))+(\W*[e3])+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4])+r+\b# neigar
(\|\\\|)+(\W*[e3])+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4])+r+\b# |\|eigar

### "Nigger" contained in a word ###
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[1ilj!]*[gq&]{2,}[e3]*r(_<!pingger)# nigger
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[1ilj!]*[gq&]{2,}[ayi]# nigga
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[1ilj!]*[gq&]+[li1!]+[e3]*[dt]# niglet
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[e3]*[gq&]+r+[o0qc]+# negro

### "Jigger" written with spaces ###
\bj+(\W*[1ilj])+(\W*[gq&])+(\W*[e3a4])*(\W*r)+((\W*B)+(\W*[ocq])+)*(\W*[sz])*\b# jigger / jiggaboo

### "Jigger" contained in a word ###
(_!jig+(l|s|ery|ing))j+[1il]+[gq&]+[e3a4]*r*(b+[ocq]+)*[sz]*# jigger / jiggaboo
For the "fag" stuff you may take some "inspiration" from the following list:

Code:

f[a4]+[gq&]# contained in a word
\bf\W*([a4]\W*)+[gq&]\b# written with spaces
\bf[a4e3]*g+[a4o0ile3]*t\b# shortened versions like "fgt"
Please note that "niger" is an actual country and therefore is excluded from being punished.
* Restored post. It could be that the author is no longer active.
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.