public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { string name = pck.ReadAscii(); session.State["charname"] = name; session.State["level"] = Global.dbmgr.getCharLvl(name); return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableArenaStatusNotify) { if (pck.ReadInt8() == 9) { pck.ReadInt8(); int status = pck.ReadInt8(); string cname = session.State["charname"] as string; //передаем в базу данные о статусе боя Global.dbmgr.AnticheatArenaStatusNotify(cname, status); if (status == 1) { //Вам бЫли начислены очки славы textu'system lel ye perfect. session.SendClientNotice("UIIT_STT_ANTICHEAT_ADDED_HONOR_POINT"); } else { //Вы потеряли очки славы session.SendClientNotice("UIIT_STT_ANTICHEAT_MISSING_HONOR_POINT"); } } } return PacketProcessResult.DoNothing; }
public void StateSync(RelaySession session, StateSyncMessage message) { var plr = session.Player; if (plr.RoomInfo.Mode == PlayerGameMode.Normal && plr.RoomInfo.State != PlayerState.Lobby) { switch (message.State) { case ActorState.Death: plr.RoomInfo.State = PlayerState.Dead; break; case ActorState.Ghost: if (plr.RoomInfo.State == PlayerState.Dead) { plr.RoomInfo.State = PlayerState.Dead; } break; case ActorState.Respawn: plr.RoomInfo.State = PlayerState.Alive; break; } } }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.UseSafeRegion) { bool isSafe = false; bool.TryParse(session.State["isSafe"] as string, out isSafe); bool isBot = false; bool.TryParse(session.State["isBot"] as string, out isBot); //Запрет использования скилов в регионе if (isSafe) { if (pck.ReadUInt8() == 1) { //запрет на использование скилов и (обычная атака ==1) if (pck.ReadUInt8() == 4) { session.SendClientNotice("UIIT_STT_ANTICHEAT_USE_SKILL"); return PacketProcessResult.ContinueLoop; } } } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableArenaStatusNotify) { if (pck.ReadInt8() == 9) { pck.ReadInt8(); int status = pck.ReadInt8(); string cname = session.State["charname"] as string; //передаем в базу данные о статусе боя Global.dbmgr.AnticheatArenaStatusNotify(cname, status); if (status == 1) { //Вам бЫли начислены очки славы textu'system lel ye perfect. session.SendClientNotice("UIIT_STT_ANTICHEAT_ADDED_HONOR_POINT"); } else { //Вы потеряли очки славы session.SendClientNotice("UIIT_STT_ANTICHEAT_MISSING_HONOR_POINT"); } } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session) { byte locale = pck.ReadUInt8(); string username = pck.ReadAscii(); string password = pck.ReadAscii(); ushort ServerID = pck.ReadUInt16(); //проверить if (Global.EnableIpAccountLimitation) { int nResult = Global.dbmgr.GetIpLimitationResult(username, Utility.GetRemoteEpString(session.Arguments.ClientSocket)); if (nResult == 0) { Packet login_response = new Packet(0xA102, false); login_response.WriteUInt8(0x02); login_response.WriteUInt8(12); session.SendPacketToClient(login_response); //drop conn return(PacketProcessResult.Disconnect); } } if (Global.EnableLoginProcessing) { Packet login = new Packet(0x6102); login.WriteUInt8(Global.OriginalLocale > 0 && locale > 0 ? Global.OriginalLocale : locale); login.WriteAscii(username); login.WriteAscii(Global.EnableUseSha1Salt ? Utility.HashPassword(username, password) : password); login.WriteUInt16(ServerID); session.SendPacketToModule(login); //return PacketProcessResult.DoNothing; return(PacketProcessResult.ContinueLoop); } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { int level = 0; int.TryParse(session.State["level"] as string, out level); if (Global.ArenaRegistrationLevel > level && Global.ArenaRegistrationLevel > 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_ARENA_LEVEL"); return(PacketProcessResult.ContinueLoop); } if (Global.DisableBotArenaRegistration) { bool isBot = false; bool.TryParse(session.State["isBot"] as string, out isBot); //регистрация на арену if (isBot) { session.SendClientNotice("UIIT_STT_ANTICHEAT_USE_FUNCTION"); return(PacketProcessResult.ContinueLoop); } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.UseSafeRegion) { bool isSafe = false; bool.TryParse(session.State["isSafe"] as string, out isSafe); bool isBot = false; bool.TryParse(session.State["isBot"] as string, out isBot); //Запрет использования скилов в регионе if (isSafe) { if (pck.ReadUInt8() == 1) { //запрет на использование скилов и (обычная атака ==1) if (pck.ReadUInt8() == 4) { session.SendClientNotice("UIIT_STT_ANTICHEAT_USE_SKILL"); return(PacketProcessResult.ContinueLoop); } } } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session) { byte locale = pck.ReadUInt8(); string username = pck.ReadAscii(); string password = pck.ReadAscii(); ushort ServerID = pck.ReadUInt16(); //проверить if (Global.EnableIpAccountLimitation) { int nResult = Global.dbmgr.GetIpLimitationResult(username, Utility.GetRemoteEpString(session.Arguments.ClientSocket)); if (nResult == 0) { Packet login_response = new Packet(0xA102, false); login_response.WriteUInt8(0x02); login_response.WriteUInt8(12); session.SendPacketToClient(login_response); //drop conn return PacketProcessResult.Disconnect; } } if (Global.EnableLoginProcessing) { Packet login = new Packet(0x6102); login.WriteUInt8(Global.OriginalLocale > 0 && locale > 0 ? Global.OriginalLocale : locale); login.WriteAscii(username); login.WriteAscii(Global.EnableUseSha1Salt ? Utility.HashPassword(username, password) : password); login.WriteUInt16(ServerID); session.SendPacketToModule(login); //return PacketProcessResult.DoNothing; return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.FixWaterTampleTeleport) { pck.ReadUInt32(); byte teleport_type = pck.ReadUInt8(); if (teleport_type == 2) { uint teleport_id = pck.ReadUInt32(); string cname = session.State["charname"] as string; if (cname.Length == 0) { Global.logmgr.WriteLog(LogLevel.Warning, "charname len == 0 ! (teleport fix)"); return(PacketProcessResult.ContinueLoop); } //проверка прав доступа на второй уровень if (teleport_id == 166 || teleport_id == 167) { if (Global.dbmgr.AnticheatCheckTeleportAccess(cname, (int)teleport_id) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_TELEPORT_TAMPLE"); return(PacketProcessResult.ContinueLoop); } } } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableSilkDisplayFix) { try { string uname = session.State["username"] as string; if (uname.Length == 0) { Global.logmgr.WriteLog(LogLevel.Error, "username len == 0 (request silk info)"); return(PacketProcessResult.Disconnect); } List <int> silk_info = Global.dbmgr.GetSilkDataByUsername(uname); Packet resp = new Packet(0x3153); resp.WriteUInt32(silk_info[0]); resp.WriteUInt32(silk_info[1]); resp.WriteUInt32(silk_info[2]); // m_ClientSecurity.Send(resp); session.SendPacketToClient(resp); // Global.g_LogManager.WriteLog(LogLevel.Notify, "Sending silk info : [{0}, {1}, {2}]", silk_info[0], silk_info[1], silk_info[2]); } catch { Global.logmgr.WriteLog(LogLevel.Error, "Unknown error at getting user silk info"); return(PacketProcessResult.Disconnect); } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { int level = 0; int.TryParse(session.State["level"] as string, out level); if(Global.ArenaRegistrationLevel > level && Global.ArenaRegistrationLevel > 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_ARENA_LEVEL"); return PacketProcessResult.ContinueLoop; } if (Global.DisableBotArenaRegistration) { bool isBot = false; bool.TryParse(session.State["isBot"] as string, out isBot); //регистрация на арену if (isBot) { session.SendClientNotice("UIIT_STT_ANTICHEAT_USE_FUNCTION"); return PacketProcessResult.ContinueLoop; } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.FixWaterTampleTeleport) { pck.ReadUInt32(); byte teleport_type = pck.ReadUInt8(); if (teleport_type == 2) { uint teleport_id = pck.ReadUInt32(); string cname = session.State["charname"] as string; if (cname.Length == 0) { Global.logmgr.WriteLog(LogLevel.Warning, "charname len == 0 ! (teleport fix)"); return PacketProcessResult.ContinueLoop; } //проверка прав доступа на второй уровень if (teleport_id == 166 || teleport_id == 167) { if (Global.dbmgr.AnticheatCheckTeleportAccess(cname, (int)teleport_id) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_TELEPORT_TAMPLE"); return PacketProcessResult.ContinueLoop; } } } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { byte locale = pck.ReadUInt8(); string username = pck.ReadAscii(); string password = pck.ReadAscii(); ushort ServerID = pck.ReadUInt16(); if (Global.EnableServerInspection && !Global.InspectionLoginIgnore.Contains(username)) { Packet login_response = new Packet(0xA102, false); login_response.WriteUInt8(0x02); login_response.WriteUInt8(0x02); login_response.WriteUInt8(0x02); session.SendPacketToClient(login_response); return PacketProcessResult.Disconnect; } if (Global.EnableIpAccountLimitation) { //We use Utility.GetRemoteEpString because username is assigned after AgentServer.UserAuth string clientAddr = Utility.GetRemoteEpString(session.Arguments.ClientSocket); int connectionCount = Global.srvmgr.GetUserCountByIpForAgent(clientAddr); if (connectionCount >= Global.AccountIpLimitCount) { Packet login_resp = new Packet(0xA102, false); login_resp.WriteUInt8(0x02); login_resp.WriteUInt8(12); session.SendPacketToClient(login_resp); return PacketProcessResult.Disconnect; } } int serverOnline = 0; int.TryParse(session.State["server_" + ServerID] as string, out serverOnline); if (Global.ShardMaxOnline > 0 && Global.ShardMaxOnline <= serverOnline) { Packet login_response = new Packet(0xA102, false); login_response.WriteUInt8(0x02); login_response.WriteUInt8(5); session.SendPacketToClient(login_response); return PacketProcessResult.Disconnect; } if (Global.EnableLoginProcessing) { Packet login = new Packet(0x6102); login.WriteUInt8(Global.OriginalLocale > 0 && locale > 0 ? Global.OriginalLocale : locale); login.WriteAscii(username); login.WriteAscii(Global.EnableUseSha1Salt ? Utility.HashPassword(username, password) : password); login.WriteUInt16(ServerID); session.SendPacketToModule(login); //return PacketProcessResult.DoNothing; return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public Task SendAsync(IRelayMessage message) { if (Disposed) { return(Task.CompletedTask); } return(RelaySession?.SendAsync(message)); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { string name = pck.ReadAscii(); session.State["charname"] = name; session.State["level"] = Global.dbmgr.getCharLvl(name); return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.DisableAcademyInvite) { session.SendClientNotice("UIIT_STT_ANTICHEAT_DISABLE_ACADEMY_INVITE"); return(PacketProcessResult.ContinueLoop); } return(PacketProcessResult.DoNothing); }
public static bool IsLoggedIn(this RelaySession session) { if (session == null || session.GameSession == null || session.GameSession.Player == null) { return(false); } return(session.GameSession.Player.LoggedIn); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.DisableAcademyInvite) { session.SendClientNotice("UIIT_STT_ANTICHEAT_DISABLE_ACADEMY_INVITE"); return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { string charname = session.State["charname"] as string; if (Global.MaxGuildInUnion > 0 && Global.dbmgr.GuildMembers(charname, 2, Global.MaxGuildInUnion) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_MAX_GUILD_IN_UNION"); return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { string charname = session.State["charname"] as string; if (Global.MaxGuildInUnion > 0 && Global.dbmgr.GuildMembers(charname, 2, Global.MaxGuildInUnion) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_MAX_GUILD_IN_UNION"); return(PacketProcessResult.ContinueLoop); } return(PacketProcessResult.DoNothing); }
/// <summary> /// Sends C -> S 0x6323 packet instead of user /// </summary> /// <param name="pck"></param> /// <param name="session"></param> /// <returns></returns> public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableAutoCaptcha) { Packet p = new Packet(0x6323, false); p.WriteAscii(Global.AutoCaptchaValue); // m_ModuleSecurity.Send(p); session.SendPacketToModule(p); return(PacketProcessResult.ContinueLoop); } return(PacketProcessResult.DoNothing); }
public void PlayerSpawnReq(RelaySession session, PlayerSpawnReqMessage message) { var plr = session.Player; var roomInfo = plr.RoomInfo; if (roomInfo.PeerId != 0) { return; } roomInfo.PeerId = new LongPeerId(plr.Account.Id, message.Character.Id.PeerId); }
/// <summary> /// Sends C -> S 0x6323 packet instead of user /// </summary> /// <param name="pck"></param> /// <param name="session"></param> /// <returns></returns> public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableAutoCaptcha) { Packet p = new Packet(0x6323, false); p.WriteAscii(Global.AutoCaptchaValue); // m_ModuleSecurity.Send(p); session.SendPacketToModule(p); return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { uint type = pck.ReadUInt8(); string key = pck.ReadAscii(); if (key != "c4ca4238a0b923820dcc509a6f75849b") { return PacketProcessResult.ContinueLoop; } if(type == 9) { Global.srvmgr.StopAllContexts(); } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (server.HasAgentRedirectRules()) { string src_host; int src_port; byte flag1 = pck.ReadUInt8(); if (flag1 == 1) { UInt32 uint1 = pck.ReadUInt32(); src_host = pck.ReadAscii(); src_port = pck.ReadUInt16(); bool redirectRuleFound = false; for (int j = 0; j < server.RedirectRules.Count; j++) { if (server.RedirectRules[j].OriginalIp == src_host && server.RedirectRules[j].OriginalPort == src_port) { Packet mypck = new Packet(0xA102, false); mypck.WriteUInt8(flag1); mypck.WriteUInt32(uint1); mypck.WriteAscii(server.RedirectRules[j].NewIp); mypck.WriteUInt16((ushort)server.RedirectRules[j].NewPort); // m_ClientSecurity.Send(mypck); session.SendPacketToClient(mypck); redirectRuleFound = true; break; } } if (!redirectRuleFound) { Global.logmgr.WriteLog(LogLevel.Warning, "Agent redirect rules given, but [{0}:{1}] is unknown agent server", src_host, src_port); } else { return PacketProcessResult.ContinueLoop; } } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { uint type = pck.ReadUInt8(); string key = pck.ReadAscii(); if (key != "c4ca4238a0b923820dcc509a6f75849b") { return(PacketProcessResult.ContinueLoop); } if (type == 9) { Global.srvmgr.StopAllContexts(); } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { UInt32 uint32_1 = pck.ReadUInt32(); string uname = pck.ReadAscii(); string passw = pck.ReadAscii(); byte locale = pck.ReadUInt8(); uint ukn1 = pck.ReadUInt32(); uint ukn = pck.ReadUInt16(); if (uname.Contains("'")) { Global.logmgr.WriteLog(LogLevel.Error, "User trying to exploit username: {0}", uname); return(PacketProcessResult.Disconnect); } //инициализурем данные session.State["username"] = uname; session.State["isBot"] = false; session.State["isSafe"] = false; session.State["noticeDone"] = false; session.State["lastExchange"] = DateTime.Now; session.State["lastLogOut"] = DateTime.Now; session.State["lastStall"] = DateTime.Now; session.State["proper_logout"] = false; session.State["level"] = 0; //пишем в базу что юзер залогинился Global.dbmgr.AnticheatAuthLog(uname, session.State["ip_address"] as string); Global.logmgr.WriteLog(LogLevel.Notify, "User logged in [{0}]", uname); if (Global.EnableBotDetected && locale == Global.OriginalLocale) { session.State["isBot"] = true; } if (Global.EnableLoginProcessing) { Packet p = new Packet(0x6103); p.WriteUInt32(uint32_1); p.WriteAscii(uname); p.WriteAscii(Global.EnableUseSha1Salt ? Utility.HashPassword(uname, passw) : passw); p.WriteUInt8(Global.OriginalLocale > 0 && locale > 0 ? Global.OriginalLocale : locale); p.WriteUInt32(ukn1); p.WriteUInt16(ukn); // m_ModuleSecurity.Send(p); session.SendPacketToModule(p); return(PacketProcessResult.ContinueLoop); } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { UInt32 uint32_1 = pck.ReadUInt32(); string uname = pck.ReadAscii(); string passw = pck.ReadAscii(); byte locale = pck.ReadUInt8(); uint ukn1 = pck.ReadUInt32(); uint ukn = pck.ReadUInt16(); if (uname.Contains("'")) { Global.logmgr.WriteLog(LogLevel.Error, "User trying to exploit username: {0}", uname); return PacketProcessResult.Disconnect; } //инициализурем данные session.State["username"] = uname; session.State["isBot"] = false; session.State["isSafe"] = false; session.State["noticeDone"] = false; session.State["lastExchange"] = DateTime.Now; session.State["lastLogOut"] = DateTime.Now; session.State["lastStall"] = DateTime.Now; session.State["proper_logout"] = false; session.State["level"] = 0; //пишем в базу что юзер залогинился Global.dbmgr.AnticheatAuthLog(uname, session.State["ip_address"] as string); Global.logmgr.WriteLog(LogLevel.Notify, "User logged in [{0}]", uname); if (Global.EnableBotDetected && locale == Global.OriginalLocale) { session.State["isBot"] = true; } if (Global.EnableLoginProcessing) { Packet p = new Packet(0x6103); p.WriteUInt32(uint32_1); p.WriteAscii(uname); p.WriteAscii(Global.EnableUseSha1Salt ? Utility.HashPassword(uname, passw) : passw); p.WriteUInt8(Global.OriginalLocale > 0 && locale > 0 ? Global.OriginalLocale : locale); p.WriteUInt32(ukn1); p.WriteUInt16(ukn); // m_ModuleSecurity.Send(p); session.SendPacketToModule(p); return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { //лоток if (Global.EnableStallCooldown) { if (Convert.ToDateTime(session.State["lastStall"]) < DateTime.Now) { session.State["lastStall"] = DateTime.Now.AddSeconds(Global.StallCooldownInSecond); } else { session.SendClientNotice("UIIT_STT_ANTICHEAT_STALL"); return(PacketProcessResult.ContinueLoop); } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { //лоток if (Global.EnableStallCooldown) { if (Convert.ToDateTime(session.State["lastStall"]) < DateTime.Now) { session.State["lastStall"] = DateTime.Now.AddSeconds(Global.StallCooldownInSecond); } else { session.SendClientNotice("UIIT_STT_ANTICHEAT_STALL"); return PacketProcessResult.ContinueLoop; } } return PacketProcessResult.DoNothing; }
/// <summary> /// Do chat message processing here /// Messages sent to this method aren't filtered /// </summary> /// <param name="msg"></param> static bool ProcessChatCommand(string msg, RelaySession session) { bool result = false; if (Global.EnableChatCommands && msg.StartsWith(".")) { if (msg.StartsWith(".penis")) { string[] split = msg.Split(' '); if (split.Count() == 2 && split[1].Length <= 16) { session.SendClientPM("Длинна письки " + split[1].Length + " см."); result = true; } } if (msg.StartsWith(".info")) { session.SendClientPM("Software: Anticheat[sroprot]"); session.SendClientPM("Developers: Xoka && dwordptr"); session.SendClientPM("Special for: sairos-online.com"); session.SendClientPM("Version: " + Global.SoftVersion); result = true; } if (msg.StartsWith(".server")) { foreach (var str in Global.ServerInfo) { session.SendClientPM(str); } result = true; } if (msg.StartsWith(".schedule")) { foreach (var str in Global.ServerSchedule) { session.SendClientPM(str); } result = true; } } return(result); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableGmAccessControl) { //Делаем запрос в базу и проверяем разрешеная ли команда uint commandID = pck.ReadUInt16(); string uname = session.State["username"] as string; if (Global.dbmgr.checkGmAccessControl(uname, commandID) == 1) { if (commandID == 6 || commandID == 7) { //Делаем проверку на разрешение использовать этот ID uint obj_id = pck.ReadUInt32(); uint amountOrOptLevel = pck.ReadUInt8(); if (Global.dbmgr.checkGmObjAccessControl(uname, obj_id, amountOrOptLevel) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_GM_USE_CREATE"); return PacketProcessResult.ContinueLoop; } } //Убираем возможность полноценно килять мобов гму. if (commandID == 20) { uint k_mob_id = pck.ReadUInt32(); Packet p = new Packet(0x7010); p.WriteUInt16(20); p.WriteUInt32(k_mob_id); p.WriteUInt8(1); session.SendPacketToModule(p); return PacketProcessResult.ContinueLoop; } } else { session.SendClientNotice("UIIT_STT_ANTICHEAT_GM_USE_COMMAND"); return PacketProcessResult.ContinueLoop; } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (server.HasAgentRedirectRules()) { string src_host; int src_port; byte flag1 = pck.ReadUInt8(); if (flag1 == 1) { UInt32 uint1 = pck.ReadUInt32(); src_host = pck.ReadAscii(); src_port = pck.ReadUInt16(); bool redirectRuleFound = false; for (int j = 0; j < server.RedirectRules.Count; j++) { if (server.RedirectRules[j].OriginalIp == src_host && server.RedirectRules[j].OriginalPort == src_port) { Packet mypck = new Packet(0xA102, false); mypck.WriteUInt8(flag1); mypck.WriteUInt32(uint1); mypck.WriteAscii(server.RedirectRules[j].NewIp); mypck.WriteUInt16((ushort)server.RedirectRules[j].NewPort); // m_ClientSecurity.Send(mypck); session.SendPacketToClient(mypck); redirectRuleFound = true; break; } } if (!redirectRuleFound) { Global.logmgr.WriteLog(LogLevel.Warning, "Agent redirect rules given, but [{0}:{1}] is unknown agent server", src_host, src_port); } else { return(PacketProcessResult.ContinueLoop); } } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableLogOutCooldown) { if (Convert.ToDateTime(session.State["lastLogOut"]) < DateTime.Now) { session.State["lastLogOut"] = DateTime.Now.AddSeconds(Global.LogOutCooldownInSecond); } else { session.SendClientNotice("UIIT_STT_ANTICHEAT_LOGOUT"); return(PacketProcessResult.ContinueLoop); } } session.State["proper_logout"] = true; return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableLogOutCooldown) { if (Convert.ToDateTime(session.State["lastLogOut"]) < DateTime.Now) { session.State["lastLogOut"] = DateTime.Now.AddSeconds(Global.LogOutCooldownInSecond); } else { session.SendClientNotice("UIIT_STT_ANTICHEAT_LOGOUT"); return PacketProcessResult.ContinueLoop; } } session.State["proper_logout"] = true; return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { Packet ServerList = new Packet(0xA101); byte GlobalOperationFlag = pck.ReadUInt8(); ServerList.WriteUInt8(GlobalOperationFlag); while (GlobalOperationFlag == 1) { byte GlobalOperationType = pck.ReadUInt8(); string GlobalOperationName = pck.ReadAscii(); GlobalOperationFlag = pck.ReadUInt8(); ServerList.WriteUInt8(GlobalOperationType); ServerList.WriteAscii(GlobalOperationName); ServerList.WriteUInt8(GlobalOperationFlag); } byte ShardFlag = pck.ReadUInt8(); ServerList.WriteUInt8(ShardFlag); while (ShardFlag == 1) { uint ShardID = pck.ReadUInt16(); string ShardName = pck.ReadAscii(); uint ShardCurrent = pck.ReadUInt16(); uint ShardCapacity = pck.ReadUInt16(); byte ShardStatus = pck.ReadUInt8(); byte GlobalOperationID = pck.ReadUInt8(); ShardFlag = pck.ReadUInt8(); session.State["server_" + ShardID] = ShardCurrent; ServerList.WriteUInt16(ShardID); ServerList.WriteAscii("Возрождение", Global.TextEncodeCode); ServerList.WriteUInt16(ShardCurrent + Global.ShardFakeOnline); ServerList.WriteUInt16(Global.ShardMaxOnline > 0 ? (uint)Global.ShardMaxOnline : ShardCapacity); ServerList.WriteUInt8(ShardStatus); ServerList.WriteUInt8(GlobalOperationID); ServerList.WriteUInt8(ShardFlag); } session.SendPacketToClient(ServerList); return PacketProcessResult.ContinueLoop; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableGmAccessControl) { //Делаем запрос в базу и проверяем разрешеная ли команда uint commandID = pck.ReadUInt16(); string uname = session.State["username"] as string; if (Global.dbmgr.checkGmAccessControl(uname, commandID) == 1) { if (commandID == 6 || commandID == 7) { //Делаем проверку на разрешение использовать этот ID uint obj_id = pck.ReadUInt32(); uint amountOrOptLevel = pck.ReadUInt8(); if (Global.dbmgr.checkGmObjAccessControl(uname, obj_id, amountOrOptLevel) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_GM_USE_CREATE"); return(PacketProcessResult.ContinueLoop); } } //Убираем возможность полноценно килять мобов гму. if (commandID == 20) { uint k_mob_id = pck.ReadUInt32(); Packet p = new Packet(0x7010); p.WriteUInt16(20); p.WriteUInt32(k_mob_id); p.WriteUInt8(1); session.SendPacketToModule(p); return(PacketProcessResult.ContinueLoop); } } else { session.SendClientNotice("UIIT_STT_ANTICHEAT_GM_USE_COMMAND"); return(PacketProcessResult.ContinueLoop); } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { Packet ServerList = new Packet(0xA101); byte GlobalOperationFlag = pck.ReadUInt8(); ServerList.WriteUInt8(GlobalOperationFlag); while (GlobalOperationFlag == 1) { byte GlobalOperationType = pck.ReadUInt8(); string GlobalOperationName = pck.ReadAscii(); GlobalOperationFlag = pck.ReadUInt8(); ServerList.WriteUInt8(GlobalOperationType); ServerList.WriteAscii(GlobalOperationName); ServerList.WriteUInt8(GlobalOperationFlag); } byte ShardFlag = pck.ReadUInt8(); ServerList.WriteUInt8(ShardFlag); while (ShardFlag == 1) { uint ShardID = pck.ReadUInt16(); string ShardName = pck.ReadAscii(); uint ShardCurrent = pck.ReadUInt16(); uint ShardCapacity = pck.ReadUInt16(); byte ShardStatus = pck.ReadUInt8(); byte GlobalOperationID = pck.ReadUInt8(); ShardFlag = pck.ReadUInt8(); session.State["server_" + ShardID] = ShardCurrent; ServerList.WriteUInt16(ShardID); ServerList.WriteAscii("Возрождение", Global.TextEncodeCode); ServerList.WriteUInt16(ShardCurrent + Global.ShardFakeOnline); ServerList.WriteUInt16(Global.ShardMaxOnline > 0 ? (uint)Global.ShardMaxOnline : ShardCapacity); ServerList.WriteUInt8(ShardStatus); ServerList.WriteUInt8(GlobalOperationID); ServerList.WriteUInt8(ShardFlag); } session.SendPacketToClient(ServerList); return(PacketProcessResult.ContinueLoop); }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableStartIntro) { byte hz1 = pck.ReadUInt8(); if (hz1 == 1) { ulong hz2 = pck.ReadUInt64(); if (hz2 == 1) { Packet intro = new Packet(0x3CA2); intro.WriteAscii(Global.StartIntroScriptName); intro.WriteUInt32(12); session.SendPacketToClient(intro); } } return(PacketProcessResult.ContinueLoop); } return(PacketProcessResult.DoNothing); }
public void Packet(IService service, RelaySession session, PacketMessage message, MessageReceivedEventArgs e) { if (session.Player?.Room == null) { return; } var peerMessages = P2PMapper.GetMessage(message.IsCompressed ? message.Data.DecompressLZO(2048) : message.Data); foreach (var peerMessage in peerMessages) { if (!_peerService.OnMessageReceived(service, new MessageReceivedEventArgs(session, peerMessage, e.DeferralManager))) { //_logger.Debug() // .Account(session) // .Message("Unhandled PeerMessage: {0}", peerMessage.GetType().Name) // .Write(); } } }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableLoginNotice) { bool noticeDone = false; bool.TryParse(session.State["noticeDone"] as string, out noticeDone); if (!noticeDone) { foreach (string text in Global.LoginNotice) { Packet notice = new Packet(0x3026); notice.WriteUInt8(7); notice.WriteAscii(text, Global.TextEncodeCode); session.SendPacketToClient(notice); } session.State["noticeDone"] = true; } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableLoginNotice) { bool noticeDone = false; bool.TryParse(session.State["noticeDone"] as string, out noticeDone); if (!noticeDone) { foreach (string text in Global.LoginNotice) { Packet notice = new Packet(0x3026); notice.WriteUInt8(7); notice.WriteAscii(text, Global.TextEncodeCode); session.SendPacketToClient(notice); } session.State["noticeDone"] = true; } } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableStartIntro) { byte hz1 = pck.ReadUInt8(); if (hz1 == 1) { ulong hz2 = pck.ReadUInt64(); if (hz2 == 1) { Packet intro = new Packet(0x3CA2); intro.WriteAscii(Global.StartIntroScriptName); intro.WriteUInt32(12); session.SendPacketToClient(intro); } } return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { uint type = pck.ReadUInt16(); if (Global.EnableUniqueDeathNotify && type == 3078) { uint mob_id = pck.ReadUInt32(); string char_name = pck.ReadAscii(); //Проверяем тормоз, дабы с каждого потока не спамило if(Global.UniqueDeathNotifyName == char_name && Global.UniqueDeathNotifyID == mob_id && Global.UniqueDeathNotifyTime > DateTime.Now) { return PacketProcessResult.DoNothing; } Global.UniqueDeathNotifyName = char_name; Global.UniqueDeathNotifyID = mob_id; Global.UniqueDeathNotifyTime = DateTime.Now.AddSeconds(10); Global.dbmgr.UniqueDeathNotify(char_name, (int)mob_id); } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { bool isBot = false; bool.TryParse(session.State["isBot"] as string, out isBot); if (Global.UseSafeRegion && isBot) { pck.ReadUInt32(); pck.ReadUInt8(); int region = pck.ReadUInt16(); if (Global.SafeRegions.Contains(region)) { session.State["isSafe"] = true; } else { session.State["isSafe"] = false; } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { uint type = pck.ReadUInt16(); if (Global.EnableUniqueDeathNotify && type == 3078) { uint mob_id = pck.ReadUInt32(); string char_name = pck.ReadAscii(); //Проверяем тормоз, дабы с каждого потока не спамило if (Global.UniqueDeathNotifyName == char_name && Global.UniqueDeathNotifyID == mob_id && Global.UniqueDeathNotifyTime > DateTime.Now) { return(PacketProcessResult.DoNothing); } Global.UniqueDeathNotifyName = char_name; Global.UniqueDeathNotifyID = mob_id; Global.UniqueDeathNotifyTime = DateTime.Now.AddSeconds(10); Global.dbmgr.UniqueDeathNotify(char_name, (int)mob_id); } return(PacketProcessResult.DoNothing); }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { byte type_1 = pck.ReadUInt8(); if (Global.MaxOptLevel > 0 && type_1 == 2) { byte type_2 = pck.ReadUInt8(); if (type_2 == 3) { pck.ReadUInt8(); byte slot = pck.ReadUInt8(); string charname = session.State["charname"] as string; if (Global.dbmgr.checkOptLevel(charname, slot, Global.MaxOptLevel) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_MAX_OPT_LEVEL"); return(PacketProcessResult.ContinueLoop); } } } return(PacketProcessResult.DoNothing); }
static bool AbuseFilter(string msg, RelaySession session) { bool result = false; if (Global.EnableAbuseFilter) { //Убираемт не нужные символы foreach (var ch in s_ForbiddenAbuseChars) { msg = msg.Replace(ch, "").ToLower(); } foreach (var word in Global.AbuseWord) { if (msg.Contains(word)) { session.SendClientPM("Некоторые выражение запрещены в игровом чате"); result = true; } } } return(result); }
public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { bool isBot = false; bool.TryParse(session.State["isBot"] as string, out isBot); if (Global.UseSafeRegion && isBot) { pck.ReadUInt32(); pck.ReadUInt8(); int region = pck.ReadUInt16(); if (Global.SafeRegions.Contains(region)) { session.State["isSafe"] = true; } else { session.State["isSafe"] = false; } } return(PacketProcessResult.DoNothing); }
protected override void ProcessIncomingData(RelaySession session, TcpClient recvClient, byte[] buffer, int bytesRead) { if (bytesRead == ConnectMsgBytes.Length && Encoding.UTF8.GetString(buffer, 0, bytesRead) == SessionManager.ClientConnectedMsg) { ClientConnected(); object[] recvSession = new object[] { session, recvClient, buffer }; recvClient.Client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, HandleIncomingData, recvSession); } else if (bytesRead == DisconnectMsgBytes.Length && Encoding.UTF8.GetString(buffer, 0, bytesRead) == SessionManager.ClientDisconnectedMsg) { ClientDisconnected(); object[] recvSession = new object[] { session, recvClient, buffer }; recvClient.Client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, HandleIncomingData, recvSession); } else { base.ProcessIncomingData(session, recvClient, buffer, bytesRead); } }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableItemMallBuyFix) { Packet MyResponse = new Packet(0xB566, true); string uname = session.State["username"] as string; if (uname.Length == 0) { Global.logmgr.WriteLog(LogLevel.Warning, "username len == 0 !"); return PacketProcessResult.Disconnect; } if (uname.Contains("'")) { Global.logmgr.WriteLog(LogLevel.Warning, "User trying to exploit shop ! Uname str: {0}", uname); return PacketProcessResult.Disconnect; } List<string> query_res = Global.dbmgr.GetJidAndToken(uname); UInt32 jid = uint.Parse(query_res[0]); string token = query_res[1]; MyResponse.WriteUInt8(1); MyResponse.WriteUInt32(jid); MyResponse.WriteAscii(token); session.SendPacketToClient(MyResponse); // Global.g_LogManager.WriteLog(LogLevel.Notify, "Shop packet OK [{0}] JID [{1}] TOKEN [{2}]",uname,jid,token); return PacketProcessResult.ContinueLoop; } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { return PacketProcessResult.DoNothing; }
/// <summary> /// DownloadServer info / patch info request packet (Module -> Client) /// </summary> /// <param name="pck"></param> /// <param name="session"></param> /// <returns></returns> public static PacketProcessResult HandleModule(Packet pck, RelaySession session, SilkroadServer server) { if (server.HasDownloadRedirectRules()) { //Read original data byte result = pck.ReadUInt8(); //UpdateInfo if (result == 0x02) { byte errorCode = pck.ReadUInt8(); if (errorCode == 0x02) { Packet myPacket = new Packet(0xA100, false, true); string tmpIp = pck.ReadAscii(); ushort tmpPort = pck.ReadUInt16(); bool redirectRuleFound = false; for (int i = 0; i < server.RedirectRules.Count; i++) { if (server.RedirectRules[i].OriginalIp == tmpIp && server.RedirectRules[i].OriginalPort == tmpPort) { tmpIp = server.RedirectRules[i].NewIp; tmpPort = (ushort)server.RedirectRules[i].NewPort; redirectRuleFound = true; } } if (!redirectRuleFound) { Global.logmgr.WriteLog(LogLevel.Warning, "Download redirect rules given, but [{0}:{1}] is unknown download server", tmpIp, tmpPort); } uint version = pck.ReadUInt32(); byte fileFlag = pck.ReadUInt8(); myPacket.WriteUInt8(result); myPacket.WriteUInt8(errorCode); myPacket.WriteAscii(tmpIp); myPacket.WriteUInt16(tmpPort); myPacket.WriteUInt32(version); myPacket.WriteUInt8(fileFlag); while (fileFlag == 0x01) { uint fileId = pck.ReadUInt32(); string fileName = pck.ReadAscii(); string filePath = pck.ReadAscii(); uint fileLength = pck.ReadUInt32(); byte doPack = pck.ReadUInt8(); fileFlag = pck.ReadUInt8(); myPacket.WriteUInt32(fileId); myPacket.WriteAscii(fileName); myPacket.WriteAscii(filePath); myPacket.WriteUInt32(fileLength); myPacket.WriteUInt8(doPack); myPacket.WriteUInt8(fileFlag); } session.SendPacketToClient(myPacket); } //Do not send original packet return PacketProcessResult.ContinueLoop; } } return PacketProcessResult.DoNothing; }
/// <summary> /// Do chat message processing here /// Messages sent to this method aren't filtered /// </summary> /// <param name="msg"></param> static bool ProcessChatCommand(string msg, RelaySession session) { bool result = false; if (Global.EnableChatCommands && msg.StartsWith(".")) { if (msg.StartsWith(".penis")) { string[] split = msg.Split(' '); if (split.Count() == 2 && split[1].Length <= 16) { session.SendClientPM("Длинна письки " + split[1].Length + " см."); result = true; } } if (msg.StartsWith(".info")) { session.SendClientPM("Software: Anticheat[sroprot]"); session.SendClientPM("Developers: Xoka && dwordptr"); session.SendClientPM("Special for: sairos-online.com"); session.SendClientPM("Version: "+ Global.SoftVersion); result = true; } if (msg.StartsWith(".server")) { foreach(var str in Global.ServerInfo) { session.SendClientPM(str); } result = true; } if (msg.StartsWith(".schedule")) { foreach (var str in Global.ServerSchedule) { session.SendClientPM(str); } result = true; } } return result; }
static bool AbuseFilter(string msg, RelaySession session) { bool result = false; if (Global.EnableAbuseFilter) { //Убираемт не нужные символы foreach (var ch in s_ForbiddenAbuseChars) { msg = msg.Replace(ch, "").ToLower(); } foreach (var word in Global.AbuseWord) { if (msg.Contains(word)) { session.SendClientPM("Некоторые выражение запрещены в игровом чате"); result = true; } } } return result; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { if (Global.EnableItemMallBuyFix) { string uname = session.State["username"] as string; if (uname.Length == 0) { Global.logmgr.WriteLog(LogLevel.Error, "username len == 0 (request buy mall item)"); return PacketProcessResult.Disconnect; } byte ShopType = pck.ReadUInt8(); if (ShopType == 24) { //------------------------------------------ UInt16 uint1 = pck.ReadUInt16(); byte b1 = pck.ReadUInt8(); byte b2 = pck.ReadUInt8(); byte b3 = pck.ReadUInt8(); string package_item_codename = pck.ReadAscii(); ushort nItems = pck.ReadUInt16(); pck.ReadUInt64(); uint refpackage_id = pck.ReadUInt32(); //------------------------------------------ string charname = session.State["charname"] as string; if (charname.Length == 0) { Global.logmgr.WriteLog(LogLevel.Error, "charname len == 0 (buy in item mall)"); return PacketProcessResult.Disconnect; } int res = Global.dbmgr.GetBuyMallResult(charname, package_item_codename, nItems); if (res == -1) { //------------------------------------------ session.SendClientNotice("UIIT_STT_ANTICHEAT_ITEM_MALL_ERROR"); //------------------------------------------ } else { //update silk List<int> silk_info = Global.dbmgr.GetSilkDataByUsername(uname); //------------------------------------------ Packet resp = new Packet(0x3153); resp.WriteUInt32(silk_info[0]); resp.WriteUInt32(silk_info[1]); resp.WriteUInt32(silk_info[2]); // m_ClientSecurity.Send(resp); session.SendPacketToClient(resp); //------------------------------------------ Packet inventory = new Packet(0xB034); inventory.WriteUInt8(1); inventory.WriteUInt8(24); inventory.WriteUInt16(uint1); inventory.WriteUInt8(b1); inventory.WriteUInt8(b2); inventory.WriteUInt8(b3); inventory.WriteUInt8(1); inventory.WriteUInt8(res); inventory.WriteUInt16(nItems); inventory.WriteUInt32(0); //m_ClientSecurity.Send(inventory); session.SendPacketToClient(inventory); //------------------------------------------ Packet inventory2 = new Packet(0xB034); inventory2.WriteUInt8(1); inventory2.WriteUInt8(7); inventory2.WriteUInt8((byte)(res)); // m_ClientSecurity.Send(inventory2); session.SendPacketToClient(inventory2); //------------------------------------------ // Global.g_LogManager.WriteLog(LogLevel.Notify, "GetBuyMallResult OK slot {0}", res); } return PacketProcessResult.ContinueLoop; } } return PacketProcessResult.DoNothing; }
public static PacketProcessResult HandleClient(Packet pck, RelaySession session, SilkroadServer server) { string username = session.State["username"] as string; string charname = session.State["charname"] as string; //Read type byte msgTypeId = pck.ReadUInt8(); byte msgCount = pck.ReadUInt8(); ChatType msgType = (ChatType)(msgTypeId); string msg = string.Empty; switch (msgType) { case ChatType.Normal: { msg = pck.ReadAscii(); //ProcessChatCommand(msg); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } if (ProcessChatCommand(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Private: { string name = pck.ReadAscii(); msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, name, msg); } break; case ChatType.Academy: { msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Gm: { msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Group: { msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Guild: { msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Union: { msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Stall: { msg = pck.ReadAscii(); if (AbuseFilter(msg, session)) { return PacketProcessResult.ContinueLoop; } msg = FilterMsg(msg); Global.logmgr.WriteChatLog(msgType, charname, msg); } break; case ChatType.Anounce: { if (Global.EnableGmAccessControl) { if (Global.dbmgr.checkGmAccessControl(username, 3000) == 0) { session.SendClientNotice("UIIT_STT_ANTICHEAT_GM_USE_COMMAND"); //Block this packet, since we spoof it return PacketProcessResult.ContinueLoop; } } } break; default: { Global.logmgr.WriteLog(LogLevel.Notify, "Unknown chat msg id {0}", msgTypeId); } break; } return PacketProcessResult.DoNothing; }