Jump to content

Recommended Posts

Posted

Chat filter system, with a log to write the words you don't allow in your server.

 

Index: /trunk/Eclipse-Game/java/net/sf/l2j/gameserver/network/clientpackets/Say2.java
===================================================================
--- /trunk/Eclipse-Game/java/net/sf/l2j/gameserver/network/clientpackets/Say2.java (revision 12)
+++ /trunk/Eclipse-Game/java/net/sf/l2j/gameserver/network/clientpackets/Say2.java (revision 130)
@@ -192,4 +192,48 @@

			_logChat.log(record);
+		}
+		
+		if (L2Config.USE_CHAT_FILTER)
+		{            
+            if (_type == SHOUT || _type == TRADE || _type == HERO_VOICE)
+            {
+            	String filteredText = _text;
+            	filteredText = filteredText.replace("=", "");
+        		filteredText = filteredText.replace("*", "");
+        		filteredText = filteredText.replace(" ", "");
+        		filteredText = filteredText.replace("-", "");
+        		filteredText = filteredText.replace("_", "");
+        		filteredText = filteredText.replace(".", "");
+        		filteredText = filteredText.replace(",", "");
+    			filteredText = filteredText.replace("'", "");
+    			filteredText = filteredText.replace("/", "");
+    			filteredText = filteredText.replace("+", "");
+    			filteredText = filteredText.toLowerCase();
+            	if(!activeChar.inObserverMode() && !activeChar.isInDuel() && !activeChar.isInOlympiadMode() 
+            			&& L2Config.CHAT_FILTER_PUNISHMENT.equalsIgnoreCase("jail") && !activeChar.isInCombat()) {
+	    			for (int i = 0; i < L2Config.FILTER_LIST.size(); i++)
+	    			{
+	    				if(filteredText.contains(L2Config.FILTER_LIST.get(i).toString())) {
+	    					int punishmentLength = 0;                
+	    					punishmentLength = L2Config.CHAT_FILTER_PUNISHMENT_PARAM1 + (L2Config.CHAT_FILTER_PUNISHMENT_PARAM2*activeChar.ChatFilterCount);                
+	    					activeChar.sendMessage("[ChatFilterSystem] Be careful whith words"); 
+	    					activeChar.sendMessage("[ChatFilterSystem] Word " + L2Config.FILTER_LIST.get(i).toString()+ " is untolerable");
+	    					activeChar.setInJail(true, punishmentLength);
+	    					activeChar.ChatFilterCount += 1;
+	    					_text = "[CFS] Jailed for " + punishmentLength + "mins";
+	    					break;
+	    				}
+	    			}
+            	} else {
+	    			for (int i = 0; i < L2Config.FILTER_LIST.size(); i++)
+	    			{
+	    				if(filteredText.contains(L2Config.FILTER_LIST.get(i).toString())) {
+	    					activeChar.sendMessage("[ChatFilterSystem] Be careful whith words");
+	    					activeChar.sendMessage("[ChatFilterSystem] Word " + L2Config.FILTER_LIST.get(i).toString()+ " is untolerable");
+	    					_text = "[CFS] Text cleared";
+	    				}
+	    			}
+            	}
+            }
		}
        
Index: /trunk/Eclipse-Game/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /trunk/Eclipse-Game/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 105)
+++ /trunk/Eclipse-Game/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 130)
@@ -216,6 +216,6 @@
	private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";

-    private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE obj_id=?";
-    private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE obj_id=?";
+    private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,in_jail=?,jail_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,chat_filter_count=? WHERE obj_id=?";
+    private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, in_jail, jail_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,chat_filter_count FROM characters WHERE obj_id=?";
    private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC";
    private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
@@ -5910,5 +5910,6 @@

                player.setDeathPenaltyBuffLevel(rset.getInt("death_penalty_level"));
-
+                player.setChatFilterCount(rset.getInt("chat_filter_count"));
+                
				// Add the L2PcInstance object in _allObjects
				//L2World.getInstance().storeObject(player);
@@ -6274,5 +6275,6 @@
			statement.setString(55, getName());
			statement.setLong(56, getDeathPenaltyBuffLevel());
-            statement.setInt(57, getObjectId());
+			statement.setInt(57, getChatFilterCount());
+            statement.setInt(58, getObjectId());

			statement.execute();
@@ -6393,5 +6395,16 @@
		finally { try { con.close(); } catch (Exception e) {} }
	}
-
+   
+	/** ChatFilterCounter */
+	public int ChatFilterCount = 0;
+	
+	public void setChatFilterCount(int cfcount)
+	{
+		ChatFilterCount = cfcount;
+	}
+	public int getChatFilterCount()
+	{
+		return ChatFilterCount;
+	}
	/**
	 * Return True if the L2PcInstance is on line.<BR><BR>
Index: /trunk/Eclipse-Game/java/net/sf/l2j/L2Config.java
===================================================================
--- /trunk/Eclipse-Game/java/net/sf/l2j/L2Config.java (revision 128)
+++ /trunk/Eclipse-Game/java/net/sf/l2j/L2Config.java (revision 130)
@@ -6,4 +6,7 @@
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.LineNumberReader;
+import java.io.BufferedReader;
+import java.io.FileReader;
import java.math.BigInteger;
import java.util.List;
@@ -60,4 +63,5 @@
    public static final String  DATAPACK_VERSION_FILE         = "./config/l2jdp-version.properties";
    public static final String  LOGIN_CONFIGURATION_FILE      = "./config/loginserver.properties";
+    public static final String  CHAT_FILTER_FILE              = "./config/ChatFilter.txt";
    public static int   MAX_ITEM_IN_PACKET;

@@ -770,6 +774,10 @@
	public static final FloodProtectorConfig FLOOD_PROTECTOR_WEREHOUSE = new FloodProtectorConfig("WerehouseFloodProtector");
    public static final FloodProtectorConfig FLOOD_PROTECTOR_MISC = new FloodProtectorConfig("MiscFloodProtector");
-	public static final FloodProtectorConfig FLOOD_PROTECTOR_CHAT = new FloodProtectorConfig("ChatFloodProtector");
-
+	public static final FloodProtectorConfig FLOOD_PROTECTOR_CHAT = new FloodProtectorConfig("ChatFloodProtector");  
+    public static boolean	USE_CHAT_FILTER;
+    public static List<String> FILTER_LIST = new FastList<String>();
+    public static String	CHAT_FILTER_PUNISHMENT;
+    public static int	CHAT_FILTER_PUNISHMENT_PARAM1;
+    public static int	CHAT_FILTER_PUNISHMENT_PARAM2;
    
    // Class Balance 
@@ -2100,4 +2108,33 @@
                floodprotectorSettings.load(is);
                is.close();
+                
+                USE_CHAT_FILTER                  = Boolean.parseBoolean(floodprotectorSettings.getProperty("UseChatFilter", "True"));
+                CHAT_FILTER_PUNISHMENT           = floodprotectorSettings.getProperty("ChatFilterPunishment", "off");
+                CHAT_FILTER_PUNISHMENT_PARAM1    = Integer.parseInt(floodprotectorSettings.getProperty("ChatFilterPunishmentParam1", "1")); 
+                CHAT_FILTER_PUNISHMENT_PARAM2    = Integer.parseInt(floodprotectorSettings.getProperty("ChatFilterPunishmentParam2", "1")); 
+
+                if (USE_CHAT_FILTER)
+                {
+                    try
+                    {
+                        LineNumberReader lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(CHAT_FILTER_FILE))));
+                        String line = null;
+                        while ((line = lnr.readLine()) != null)
+                        {
+                            if (line.trim().length() == 0 || line.startsWith("#"))
+                            {
+                                continue;
+                            }
+                            FILTER_LIST.add(line.trim());
+                        }
+                        _log.info("Chat Filter: Loaded " + FILTER_LIST.size() + " words");
+                    }
+                    catch (Exception e)
+                    {
+                        e.printStackTrace();
+                        throw new Error("Failed to Load "+CHAT_FILTER_FILE+" File.");
+                    }
+                }
+                
                loadFloodProtectorConfigs(floodprotectorSettings);
                _log.info("# " + FLOODPROTECTOR_CONFIG_FILE + " Sucessfully LOADED #");
Index: /trunk/Eclipse-Game/config/ChatFilter.txt
===================================================================
--- /trunk/Eclipse-Game/config/ChatFilter.txt (revision 130)
+++ /trunk/Eclipse-Game/config/ChatFilter.txt (revision 130)
@@ -0,0 +1,7 @@
+lag
+laag
+laaag
+laaaag
+laaaaag
+laaaaaag
+laaaaaaag
Index: /trunk/Eclipse-Game/config/Custom/FloodProtector.properties
===================================================================
--- /trunk/Eclipse-Game/config/Custom/FloodProtector.properties (revision 76)
+++ /trunk/Eclipse-Game/config/Custom/FloodProtector.properties (revision 130)
@@ -7,4 +7,16 @@
# PunishmentType - type of the punishment ('none', 'ban', 'jail'), used only, if PunishmentLimit is greater than zero
# PunishmentTime - for how many minutes should be the player/account punished, player is punished in case of 'jail', account is punishedin case of 'ban' (0 = forever)
+
+#---------------------------------------------------------------
+# Chat Filter system                                           -
+#---------------------------------------------------------------
+# Enable chat filter
+UseChatFilter = False
+# Player punishment for illegal word: off, jail
+ChatFilterPunishment = off
+# How long the punishment is in effect, min
+ChatFilterPunishmentParam1 = 10
+# How much to increase every new punishment for player, min
+ChatFilterPunishmentParam2 = 5

FloodProtectorUseItemInterval = 4

 

Credits: one guy from L2JForum, and ŚyśţęmƒяәдҚς for some modifications, nothing special, just removal effect.

  • 6 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • @Seamless  find this guy , is the best guy that u can find , plus is ULTRA trusted , rare to find trusted in maxcheaters
    • Looking for someone to setup a website for me with account panel and donate panel, I require to explain me how to setup the account panel to be working with player's emails and my lineage2 server and donate panel in order to be working with my paypal and my lineage2 server. Contact me here in forum, I will pick the best offert. Thank you.
    • TILL START - LEFT 3 DAYS ! GRAND OPENING FROM - 12/052025, FRIDAY, 20:00 +3 GMT !
    • SOCNET — BIRTHDAY! Thank you for staying with us! A week of maximum gifts, bonuses, and discounts! Today we celebrate the SOCNET project’s birthday — and YOU get the gifts! We’ve prepared powerful promotions across all our services: ⭐ SOCNET STORE — SHOP (website/telegram) 1. Promo code BIRTHDAY — 20% discount Use it for any product purchase! 2. Gift for a large purchase Spend $200 on any products and choose any item up to $10 — for free! 3. Gift balance for a comment in our store threads "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. ➡ 1 forum = $1 to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. ⭐ SOCNET SMM PANEL 1. Top-up = bonus Top up your balance by $100 and get +$5 to your balance. After topping up — create a ticket in the panel. 2. Gift balance for a comment in our SMM Panel threads "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. ➡ 1 forum = $1 to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. ⭐SOCNET STARS — BOT FOR BUYING TELEGRAM STARS/PREMIUM 1. Large purchase = huge bonus Buy >1000 Stars in one transaction and get +100 Stars as a gift! After purchase, write to support. 2. Gift balance for a comment in our bot threads for star purchases "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. Leave a comment: ➡ 1 forum = +50 Stars to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. ⭐SOCNET SMS SERVICE OF VIRTUAL NUMBERS 1. Top-up with bonus Top up your balance by $50 and get +$10 as a gift. After topping up — simply write to support. 2. Gift balance for a comment in our SMS service threads "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. ➡ 1 forum = $1 to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. Let’s celebrate together! Promotions are valid from 02.12.2025 to 07.12.2025 inclusive. Don’t miss it — these are the best conditions of the year! News: ➡ Telegram channel: https://t.me/accsforyou_shop ➡ WhatsApp channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord server: https://discord.gg/y9AStFFsrh Contacts & Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • SOCNET — BIRTHDAY! Thank you for staying with us! A week of maximum gifts, bonuses, and discounts! Today we celebrate the SOCNET project’s birthday — and YOU get the gifts! We’ve prepared powerful promotions across all our services: ⭐ SOCNET STORE — SHOP (website/telegram) 1. Promo code BIRTHDAY — 20% discount Use it for any product purchase! 2. Gift for a large purchase Spend $200 on any products and choose any item up to $10 — for free! 3. Gift balance for a comment in our store threads "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. ➡ 1 forum = $1 to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. ⭐ SOCNET SMM PANEL 1. Top-up = bonus Top up your balance by $100 and get +$5 to your balance. After topping up — create a ticket in the panel. 2. Gift balance for a comment in our SMM Panel threads "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. ➡ 1 forum = $1 to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. ⭐SOCNET STARS — BOT FOR BUYING TELEGRAM STARS/PREMIUM 1. Large purchase = huge bonus Buy >1000 Stars in one transaction and get +100 Stars as a gift! After purchase, write to support. 2. Gift balance for a comment in our bot threads for star purchases "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. Leave a comment: ➡ 1 forum = +50 Stars to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. ⭐SOCNET SMS SERVICE OF VIRTUAL NUMBERS 1. Top-up with bonus Top up your balance by $50 and get +$10 as a gift. After topping up — simply write to support. 2. Gift balance for a comment in our SMS service threads "Happy Birthday, SOCNET. My username/email is": BHW, BFD, voided, nulled, and patched forums. ➡ 1 forum = $1 to your balance! Send screenshots of your posts to support through the listed contacts, include your login/email, and receive the bonus on your account. Let’s celebrate together! Promotions are valid from 02.12.2025 to 07.12.2025 inclusive. Don’t miss it — these are the best conditions of the year! News: ➡ Telegram channel: https://t.me/accsforyou_shop ➡ WhatsApp channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord server: https://discord.gg/y9AStFFsrh Contacts & Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock