Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Chat Filter System

Iniciado por Swarlog, Sep 01, 2022, 12:38 AM

Tema anterior - Siguiente tema

Swarlog

Ya viene por defecto en muchos poryectos, pero por si no lo tienen aquí os lo dejo ^^

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