elmzeny

Untitled

Sep 1st, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 57.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.InteropServices;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using System.IO;
  9. using Project_Terror_v2.Game.MsgServer;
  10. using Project_Terror_v2.Game;
  11. using Project_Terror_v2.Cryptography;
  12. using ProtoBuf;
  13. using Project_Terror_v2.Database;
  14. using System.Net;
  15.  
  16.  
  17. namespace Project_Terror_v2
  18. {
  19.     using PacketInvoker = CachedAttributeInvocation<Action<Client.GameClient, ServerSockets.Packet>, PacketAttribute, ushort>;
  20.     using Project_Terror_v2.Panels;
  21.     using COServer.Database;
  22.     using System.Collections.Concurrent;
  23.     using Project_Terror_v2.Role;
  24.  
  25.     class Program
  26.     {
  27.         public static Extensions.Time32 CurrentTime
  28.         {
  29.             get
  30.             {
  31.                 return new Extensions.Time32();
  32.             }
  33.         }
  34.         public static Encoding Encoding = ASCIIEncoding.Default;
  35.         public static List<uint> RankableFamilyIds = new List<uint>() { 20300, 20160, 20070, 29370, 29360, 29300, 29363 };
  36.         public static List<byte[]> LoadPackets = new List<byte[]>();
  37.         public static ServerSockets.SocketThread SocketsGroup;
  38.         public static List<uint> ProtectMapSpells = new List<uint>() { 1038, Game.MsgTournaments.MsgSuperGuildWar.MapID };
  39.         public static List<uint> MapCounterHits = new List<uint>() { 1005, 6000 };
  40.         public static bool OnMainternance = false;
  41.         public static Cryptography.TransferCipher transferCipher;
  42.         public static Extensions.Time32 SaveDBStamp = Extensions.Time32.Now.AddMilliseconds(KernelThread.SaveDatabaseStamp);
  43.         public static ConcurrentDictionary<uint, Client.GameClient> GamePool = new ConcurrentDictionary<uint, Client.GameClient>();
  44.  
  45.         public static List<uint> NoDropItems = new List<uint>() { 1764, 700, 3954, 3820 };
  46.         public static List<uint> FreePkMap = new List<uint>() { 3998,3071, 5100, 5101, 5102, 5103, 5104, 5105, 5106, 6000, 6001,1505, 1005, 1038, 10137, 10166, 700,1508/*PkWar*/, Game.MsgTournaments.MsgSuperGuildWar.MapID, Game.MsgTournaments.MsgCaptureTheFlag.MapID
  47.         , Game.MsgTournaments.MsgTeamDeathMatch.MapID };
  48.         public static List<uint> BlockAttackMap = new List<uint>() { 3825,3830, 3831, 3832,3834,3826,3827,3828,3829,3833, 9995,1068, 4020, 4000, 4003, 4006, 4008, 4009 , 1860 ,1858, 1801, 1780, 1779/*Ghost Map*/, 9972, 1806, 1002, 3954, 3081, 1036, 1004, 1008, 601, 1006, 1511, 1039, 700, Game.MsgTournaments.MsgEliteGroup.WaitingAreaID, (uint)Game.MsgTournaments.MsgSteedRace.Maps.DungeonRace, (uint)Game.MsgTournaments.MsgSteedRace.Maps.IceRace
  49.         ,(uint)Game.MsgTournaments.MsgSteedRace.Maps.IslandRace, (uint)Game.MsgTournaments.MsgSteedRace.Maps.LavaRace, (uint)Game.MsgTournaments.MsgSteedRace.Maps.MarketRace};
  50.         public static List<uint> BlockTeleportMap = new List<uint>() { 601, 6000, 6001, 1005, 700, 1858, 1860, 3852, Game.MsgTournaments.MsgEliteGroup.WaitingAreaID, 1768 };
  51.         public static Role.Instance.Nobility.NobilityRanking NobilityRanking = new Role.Instance.Nobility.NobilityRanking();
  52.         public static Role.Instance.ChiRank ChiRanking = new Role.Instance.ChiRank();
  53.         public static Role.Instance.Flowers.FlowersRankingToday FlowersRankToday = new Role.Instance.Flowers.FlowersRankingToday();
  54.         public static Role.Instance.Flowers.FlowerRanking GirlsFlowersRanking = new Role.Instance.Flowers.FlowerRanking();
  55.         public static Role.Instance.Flowers.FlowerRanking BoysFlowersRanking = new Role.Instance.Flowers.FlowerRanking(false);
  56.  
  57.         public static ShowChatItems GlobalItems;
  58.         public static SendGlobalPacket SendGlobalPackets;
  59.         public static PacketInvoker MsgInvoker;
  60.         public static ServerSockets.ServerSocket GameServer;
  61.  
  62.         [DllImport("kernel32.dll")]
  63.         private static extern bool SetConsoleCtrlHandler(ConsoleHandlerDelegate handler, bool add);
  64.         private delegate bool ConsoleHandlerDelegate(int type);
  65.         private static ConsoleHandlerDelegate handlerKeepAlive;
  66.  
  67.         public static bool ProcessConsoleEvent(int type)
  68.         {
  69.             try
  70.             {
  71.                 if (ServerConfig.IsInterServer)
  72.                 {
  73.                     foreach (var client in Database.Server.GamePoll.Values)
  74.                     {
  75.                         try
  76.                         {
  77.                             if (client.Socket != null)//for my fake accounts !
  78.                                 client.Socket.Disconnect();
  79.                         }
  80.                         catch (Exception e)
  81.                         {
  82.                             MyConsole.WriteLine(e.ToString());
  83.                         }
  84.                     }
  85.                     return true;
  86.                 }
  87.                 try
  88.                 {
  89.                     /*if (WebServer.Proces.AccServer != null)
  90.                     {
  91.                         WebServer.Proces.Close();
  92.                         WebServer.Proces.AccServer.Close();
  93.                     }*/
  94.                     if (GameServer != null)
  95.                         GameServer.Close();
  96.  
  97.  
  98.                 }
  99.                 catch (Exception e) { MyConsole.SaveException(e); }
  100.  
  101.                 MyConsole.WriteLine("Saving Database...");
  102.  
  103.  
  104.                 foreach (var client in Database.Server.GamePoll.Values)
  105.                 {
  106.                     try
  107.                     {
  108.                         if (client.Socket != null)//for my fake accounts !
  109.                             client.Socket.Disconnect();
  110.                     }
  111.                     catch (Exception e)
  112.                     {
  113.                         MyConsole.WriteLine(e.ToString());
  114.                     }
  115.                 }
  116.                 Role.Instance.Clan.ProcessChangeNames();
  117.  
  118.                 Database.Server.SaveDatabase();
  119.                 if (Database.ServerDatabase.LoginQueue.Finish())
  120.                 {
  121.                     System.Threading.Thread.Sleep(1000);
  122.                     MyConsole.WriteLine("Database Save Succefull.");
  123.                 }
  124.             }
  125.             catch (Exception e)
  126.             {
  127.                 MyConsole.SaveException(e);
  128.             }
  129.             return true;
  130.         }
  131.  
  132.         public static Extensions.Time32 ResetRandom = new Extensions.Time32();
  133.  
  134.         public static Extensions.SafeRandom GetRandom = new Extensions.SafeRandom();
  135.         public static Extensions.RandomLite LiteRandom = new Extensions.RandomLite();
  136.  
  137.         public static class ServerConfig
  138.         {
  139.             public static string CO2Folder = "";
  140. #if Encore
  141.            public static string XtremeTopLink = http://www.xtremetop100.com/in.php?site=1132365121";
  142.             public static string Chatbox = "https://www.facebook.com/avengerco10/?ref=bookmarks/";
  143.             public static string ChangePassword = "http://137.74.55.14/index.php?pages=changepassword#";
  144.             public static string StorePage = "https://www.facebook.com/avengerco10/?ref=bookmarks/";
  145.  
  146. #else
  147.             public static string XtremeTopLink = "http://www.xtremetop100.com/in.php?site=1132365121";
  148. #endif
  149.  
  150.             public static uint ServerID = 0;
  151.  
  152.             public static string IPAddres = "178.128.201.95";
  153.             public static ushort GamePort = 30020;
  154.             public static string ServerName = "Realm1";
  155.             // سيبو هو بيقرأ من ا لكونفج ا مسحه هنا سيبو وخلاص ملهوش لزمه عامل
  156.             public static string OfficialWebSite = "Realm1.com";
  157.             public static ushort Port_BackLog;
  158.             public static ushort Port_ReceiveSize = 4096;
  159.             public static ushort Port_SendSize = 2048;
  160.  
  161.             //Database// هتعدل اللي ف شيل ؟ ا ها بس نا قص ا لى بقولك عليها  دي 16 هيا ف شيل لا امال فين سوكت ابعتها فيس
  162.             public static string DbLocation = "";
  163.  
  164.             public static uint ExpRateSpell = 50;
  165.             public static uint ExpRateProf = 15;
  166.             public static uint UserExpRate = 15;
  167.             public static uint PhysicalDamage = 100;// + 150%
  168.  
  169.             //interServer
  170.             public static string InterServerAddress = "178.128.201.95";
  171.             public static ushort InterServerPort = 0;
  172.             public static bool IsInterServer = false;
  173.             public static string ServerShadowClone = "Royal";
  174.         }
  175.  
  176.         //You do not have 500 silvers with you.
  177.         //Sorry, but you don`t have enough CPs.
  178.         //Please come back when you will have 1 Star Crystal in your inventory.
  179.         public static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
  180.         {
  181.             Console.WriteLine(e.ToString());
  182.         }
  183.  
  184.         static int CutTrail(int x, int y) { return (x >= y) ? x : y; }
  185.         static int AdjustDefence(int nDef, int power2, int bless)
  186.         {
  187.             int nAddDef = 0;
  188.             nAddDef += Game.MsgServer.AttackHandler.Calculate.Base.MulDiv(nDef, 100 - power2, 100) - nDef;
  189.  
  190.             return Game.MsgServer.AttackHandler.Calculate.Base.MulDiv(nDef + nAddDef, 100 - power2, 100);
  191.  
  192.         }
  193.  
  194.  
  195.         /*# The base (at 0 defense) difference between attack and defense needed to add/subtract 50% damage
  196.   base_d_factor = 10
  197.  
  198.   # Amount added to the base factor for every point of defense over 0
  199.   scaled_d_factor = 0.5
  200.  
  201.   # ...(stuff goes here)
  202.  
  203.   dif = attack - defense
  204.   if dif:
  205.     sign_dif = sign(dif)
  206.     scale = 1.0 + (-1.0/(sign_dif + dif/(base_d_factor + defense*scaled_d_factor)) + sign_dif)
  207.     return attack * scale
  208.   else:  
  209.         # else we'd be dividing by 0
  210.     return attack*/
  211.  
  212.  
  213.         public static void TESTT()
  214.         {
  215.             double base_d_factor = 130;
  216.             double scaled_d_factor = 0.5;
  217.             double dif = 139500 - 25000;
  218.             double sign_dif = Math.Sign(dif);
  219.             double scale = 1.0 + (-1.0 / (sign_dif + dif / (base_d_factor + 25000 * scaled_d_factor)) + sign_dif);
  220.             double ttt = 139500 * scale;
  221.         }
  222.  
  223.  
  224.         public class sorine
  225.         {
  226.             public uint uid = 333;
  227.         }
  228.  
  229.  
  230.         static byte[] DecryptString(char[] str)
  231.         {
  232.             int i = 0;
  233.             byte[] nstr = new byte[1000];
  234.             do
  235.             {
  236.                 nstr[i] = Convert.ToByte(str[i + 1] ^ 0x34);
  237.             } while (nstr[i++] != 0);
  238.             return nstr;
  239.         }
  240.         public static void writetext(string tes99)
  241.         {
  242.             char[] tg = new char[tes99.Length];
  243.             for (int x = 0; x < tes99.Length; x++)
  244.                 tg[x] = tes99[x];
  245.             var hhhh = DecryptString(tg);
  246.             Console.WriteLine(ASCIIEncoding.ASCII.GetString(hhhh));
  247.         }
  248.         public static int n = 0;
  249.         public static int sol;
  250.         public static int[] v = new int[100];
  251.         public static void afisare()
  252.         {
  253.             Console.WriteLine("");
  254.             int i;
  255.             // int x;
  256.             //  int j;
  257.             sol++;
  258.  
  259.             Console.WriteLine("sol: " + sol);
  260.             for (i = 1; i <= n; i++)
  261.             {
  262.                 Console.Write(v[i] + " ");
  263.                 /* for (j = 1; j <= n; j++)
  264.  
  265.                      /*if (v[i] == j)
  266.                          Console.Write("D ");
  267.                      else
  268.                          Console.Write("_ ");
  269.                  Console.Write(Environment.NewLine);*/
  270.             }
  271.             Console.Write(Environment.NewLine);
  272.         }
  273.         public static int valid(int k)
  274.         {
  275.             int i;
  276.             for (i = 1; i <= k - 1; i++)
  277.                 if ((v[k] <= v[i]))//|| (Math.Abs(v[k] - v[i]) == (k - i)))
  278.                     return 0;
  279.             return 1;
  280.         }
  281.         public static int solutie(int k)
  282.         {
  283.             if (k == n)
  284.                 return 1;
  285.             return 0;
  286.         }
  287.         public static void BK(int k)
  288.         {
  289.             for (int i = 1; i <= n; i++)
  290.             {
  291.                 v[k] = i;
  292.                 if (valid(k) == 1)
  293.                 {
  294.                     if (solutie(k) == 1)
  295.                         afisare();
  296.                     else
  297.                         BK(k + 1);
  298.                 }
  299.             }
  300.         }
  301.         public static unsafe void Main(string[] args)
  302.         {
  303.  
  304.             try
  305.             {
  306.  
  307.                 MyConsole.DissableButton();
  308.  
  309.                 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
  310.  
  311.                 ServerSockets.Packet.SealString = "TQServer";
  312.  
  313.                 Console.ForegroundColor = ConsoleColor.DarkRed;
  314.                 Console.Title = "THERoyal BEST SERVER 3.0 CONQUER ."; Console.BackgroundColor = ConsoleColor.Black;
  315.                 //Console.ForegroundColor = ConsoleColor.Cyan;
  316.                 //Console.ForegroundColor = ConsoleColor.DarkMagenta;
  317.                 //Console.ForegroundColor = ConsoleColor.DarkRed;
  318.                 //Console.ForegroundColor = ConsoleColor.DarkYellow;
  319.                 Console.ForegroundColor = ConsoleColor.DarkGray;
  320.                 COServer.Database.DataHolder.CreateConnection();
  321.  
  322.  
  323.                 MsgInvoker = new PacketInvoker(PacketAttribute.Translator);
  324.                 Cryptography.DHKeyExchange.KeyExchange.CreateKeys();
  325.                 //GlobalLotteryTable.LoadDBConditions();
  326.                 Game.MsgTournaments.MsgSchedules.Create();
  327.                 Poker.Database.Load();
  328.                 Project_Terror_v2.Loader_Server.SystemBannedAccount.Load();
  329.                 Database.Server.Initialize();
  330.  
  331.                 SendGlobalPackets = new SendGlobalPacket();
  332.  
  333.                 Cryptography.AuthCryptography.PrepareAuthCryptography();
  334.  
  335.                 Database.Server.LoadDatabase();
  336.                 BossDatabase.Load();
  337.                 handlerKeepAlive = ProcessConsoleEvent;
  338.                 SetConsoleCtrlHandler(handlerKeepAlive, true);
  339.                 TransferCipher.Key = Encoding.ASCII.GetBytes("EypKhLvYJ3zdLCTyz9Ak8RAgM78tY5F32b7CUXDuLDJDFBH8H67BWy9QThmaN5VS");
  340.                 TransferCipher.Salt = Encoding.ASCII.GetBytes("MyqVgBf3ytALHWLXbJxSUX4uFEu3Xmz2UAY9sTTm8AScB7Kk2uwqDSnuNJske4BJ");
  341.                 transferCipher = new TransferCipher("127.0.0.1");
  342.  
  343.  
  344.  
  345.  
  346.                 if (ServerConfig.IsInterServer == false)
  347.                 {
  348.                     GameServer = new ServerSockets.ServerSocket(
  349.                         new Action<ServerSockets.SecuritySocket>(p => new Client.GameClient(p))
  350.                         , Game_Receive, Game_Disconnect);
  351.                     GameServer.Initilize(ServerConfig.Port_SendSize, ServerConfig.Port_ReceiveSize, 1, 3);
  352.                     GameServer.Open(ServerConfig.IPAddres, ServerConfig.GamePort, ServerConfig.Port_BackLog);
  353.  
  354.                 }
  355.  
  356.  
  357.                 GlobalItems = new ShowChatItems();
  358.  
  359.                 Database.NpcServer.LoadServerTraps();
  360.  
  361.                 MsgInterServer.PipeServer.Initialize();
  362.  
  363.                 ThreadPoll.Create();
  364.  
  365.  
  366.                 //     ServerSockets.SocketPoll.Create("ConquerSockets");
  367.  
  368.                 SocketsGroup = new ServerSockets.SocketThread("ConquerServer"
  369.                     , GameServer, MsgInterServer.PipeServer.Server
  370.                     );//,
  371.  
  372.                 SocketsGroup.Start();
  373.  
  374.                 MsgInterServer.StaticConnexion.Create();
  375.  
  376.                 Game.MsgTournaments.MsgSchedules.ClanWar = new Game.MsgTournaments.MsgClanWar();
  377.  
  378.  
  379.                 new KernelThread(500, "ConquerServer2").Start();
  380.                 new MapGroupThread(100, "ConquerServer3").Start();
  381.                 //new MapItemThread(300, "ConquerServer4").Start();
  382.                 //    Database.ServerDatabase.Testtt();
  383.  
  384.             }
  385.             catch (Exception e) { MyConsole.WriteException(e); }
  386.  
  387.             for (; ; )
  388.                 ConsoleCMD(MyConsole.ReadLine());
  389.         }
  390.  
  391.         public static void SaveDBPayers(Extensions.Time32 clock)
  392.         {
  393.  
  394.             if (clock > SaveDBStamp)
  395.             {
  396.                 if (Database.Server.FullLoading && !Program.ServerConfig.IsInterServer)
  397.                 {
  398.                     foreach (var user in Database.Server.GamePoll.Values)
  399.                     {
  400.                         if (user.OnInterServer)
  401.                             continue;
  402.                         if ((user.ClientFlag & Client.ServerFlag.LoginFull) == Client.ServerFlag.LoginFull)
  403.                         {
  404.                             user.ClientFlag |= Client.ServerFlag.QueuesSave;
  405.                             Database.ServerDatabase.LoginQueue.TryEnqueue(user);
  406.                         }
  407.                     }
  408.                     Database.Server.SaveDatabase();
  409.                     MyConsole.WriteLine("Database got saved ! ");
  410.                 }
  411.                 SaveDBStamp.Value = clock.Value + KernelThread.SaveDatabaseStamp;
  412.             }
  413.  
  414.         }
  415.         public unsafe static void ConsoleCMD(string cmd)
  416.         {
  417.             try
  418.             {
  419.                 string[] line = cmd.Split(' ');
  420.  
  421.                 switch (line[0])
  422.                 {
  423.                     case "islam1":
  424.                         {
  425.                             var ChatCon = new Panels.ChatPanal();
  426.                             ChatCon.ShowDialog();
  427.                             break;
  428.                         }
  429.                     case "islam":
  430.                         {
  431.                             Controlpanel cp = new Controlpanel();
  432.                             cp.ShowDialog();
  433.                             break;
  434.                         }
  435.                     case "powerarena":
  436.                         {
  437.                             Game.MsgTournaments.MsgSchedules.PowerArena.Start();
  438.                             break;
  439.                         }
  440.                     case "squidward":
  441.                         {
  442.                             Game.MsgTournaments.MsgSchedules.SquidwardOctopus.Start();
  443.                             break;
  444.                         }
  445.                     case "save":
  446.                         {
  447.                             Database.Server.SaveDatabase();
  448.                             if (Database.Server.FullLoading && !Program.ServerConfig.IsInterServer)
  449.                             {
  450.                                 foreach (var user in Database.Server.GamePoll.Values)
  451.                                 {
  452.                                     if (user.OnInterServer)
  453.                                         continue;
  454.                                     if ((user.ClientFlag & Client.ServerFlag.LoginFull) == Client.ServerFlag.LoginFull)
  455.                                     {
  456.                                         user.ClientFlag |= Client.ServerFlag.QueuesSave;
  457.                                         Database.ServerDatabase.LoginQueue.TryEnqueue(user);
  458.                                     }
  459.                                 }
  460.                                 MyConsole.WriteLine("Database got saved ! ");
  461.                             }
  462.                             if (Database.ServerDatabase.LoginQueue.Finish())
  463.                             {
  464.                                 System.Threading.Thread.Sleep(1000);
  465.                                 MyConsole.WriteLine("Database saved successfully.");
  466.                             }
  467.                             break;
  468.                         }
  469.  
  470.                     case "steed":
  471.                         {
  472.                             Game.MsgTournaments.MsgSchedules.SteedRace.Create();
  473.                             break;
  474.                         }
  475.                     case "ctfon":
  476.                         {
  477.                             Game.MsgTournaments.MsgSchedules.CaptureTheFlag.Start();
  478.                             break;
  479.                         }
  480.                     case "kick":
  481.                         {
  482.  
  483.                             foreach (var user in Database.Server.GamePoll.Values)
  484.                             {
  485.                                 if (user.Player.Name.Contains(line[1]))
  486.                                 {
  487.                                     user.EndQualifier();
  488.                                 }
  489.                             }
  490.                             break;
  491.                         }
  492.  
  493.                     case "pk":
  494.                         {
  495.                             Game.MsgTournaments.MsgSchedules.ElitePkTournament.Start();
  496.                             break;
  497.                         }
  498.                     case "teampk":
  499.                         {
  500.                             Game.MsgTournaments.MsgSchedules.SkillTeamPkTournament.Start();
  501.                             var array = Database.Server.GamePoll.Values.ToArray();
  502.  
  503.  
  504.                             for (int x = 0; x < array.Length - 5; x += 5)
  505.                             {
  506.                                 if (array[x].Team == null)
  507.                                 {
  508.                                     try
  509.                                     {
  510.                                         array[x].Team = new Role.Instance.Team(array[x]);
  511.                                         Game.MsgTournaments.MsgSchedules.SkillTeamPkTournament.SignUp(array[x]);
  512.                                         using (var rec = new ServerSockets.RecycledPacket())
  513.                                         {
  514.                                             var stream = rec.GetStream();
  515.                                             array[x + 1].Team = array[0].Team;
  516.                                             array[x].Team.Add(stream, array[x + 1]);
  517.                                             Game.MsgTournaments.MsgSchedules.SkillTeamPkTournament.SignUp(array[x + 1]);
  518.  
  519.                                             array[x + 2].Team = array[0].Team;
  520.                                             array[x].Team.Add(stream, array[x + 2]);
  521.                                             Game.MsgTournaments.MsgSchedules.SkillTeamPkTournament.SignUp(array[x + 2]);
  522.  
  523.                                             array[x + 3].Team = array[0].Team;
  524.                                             array[x].Team.Add(stream, array[x + 3]);
  525.                                             Game.MsgTournaments.MsgSchedules.SkillTeamPkTournament.SignUp(array[x + 3]);
  526.  
  527.                                             array[x + 4].Team = array[0].Team;
  528.                                             array[x].Team.Add(stream, array[x + 4]);
  529.                                             Game.MsgTournaments.MsgSchedules.SkillTeamPkTournament.SignUp(array[x + 4]);
  530.                                         }
  531.  
  532.                                     }
  533.                                     catch { }
  534.                                 }
  535.                             }
  536.                             break;
  537.                         }
  538.                     case "search":
  539.                         {
  540.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  541.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  542.                             {
  543.                                 ini.FileName = fname;
  544.  
  545.                                 string Name = ini.ReadString("Character", "Name", "None");
  546.                                 if (Name.ToLower() == line[1].ToLower() || Name.Contains(line[1]))
  547.                                 {
  548.                                     Console.WriteLine(ini.ReadUInt32("Character", "UID", 0));
  549.                                     break;
  550.                                 }
  551.  
  552.                             }
  553.                             break;
  554.                         }
  555.                     case "resetall":
  556.                         {
  557.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  558.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  559.                             {
  560.                                 ini.FileName = fname;
  561.  
  562.                                 //ulong nobility = ini.ReadUInt64("Character", "DonationNobility",pl);
  563.                                 //nobility = nobility * 30 / 100;
  564.                                 ini.Write<ulong>("Character", "DonationNobility", 0);
  565.                                 ini.Write<ulong>("Character", "Money", 0);
  566.                                 ini.Write<ulong>("Character", "ConquerPoints", 0);
  567.                                 ini.Write<ulong>("Character", "VipLevel", 0);
  568.                                 ini.Write<ulong>("Character", "ExpireVip", 0);
  569.                             }
  570.  
  571.                             break;
  572.                         }
  573.                     case "reset50nobility":
  574.                         {
  575.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  576.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  577.                             {
  578.                                 ini.FileName = fname;
  579.  
  580.                                 ulong nobility = ini.ReadUInt64("Character", "DonationNobility", 0);
  581.                                 nobility = nobility * 30 / 100;
  582.                                 ini.Write<ulong>("Character", "DonationNobility", nobility);
  583.                             }
  584.                             Console.WriteLine("DonationRank Reset Done");
  585.                             break;
  586.                         }
  587.                     case "resetnobility":
  588.                         {
  589.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  590.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  591.                             {
  592.                                 ini.FileName = fname;
  593.  
  594.                                 //ulong nobility = ini.ReadUInt64("Character", "DonationNobility", 0);
  595.                                 //nobility = nobility * 30 / 100;
  596.                                 ini.Write<ulong>("Character", "DonationNobility", 0);
  597.                             }
  598.  
  599.                             break;
  600.                         }
  601.                     case "resetall0":
  602.                         {
  603.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  604.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  605.                             {
  606.                                 ini.FileName = fname;
  607.                                 ini.Write<int>("Character", "Money", 0);
  608.                                 ini.Write<int>("Character", "ConquerPoints", 0);
  609.                                 ini.Write<int>("Character", "DonationNobility", 0);
  610.                                 ini.Write<int>("Character", "WHMoney", 0);
  611.                             }
  612.                             Console.WriteLine("Reset Done");
  613.                             break;
  614.                         }
  615.                     case "resetcps":
  616.                         {// seb rakmk w rn 3lya 010 920 47 925  brb smoke
  617.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  618.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  619.                             {
  620.                                 ini.FileName = fname;
  621.  
  622.                                 ulong nobility = ini.ReadUInt64("Character", "ConquerPoints", 0);
  623.                                 nobility = nobility * 30 / 100;
  624.                                 ini.Write<ulong>("Character", "ConquerPoints", 0);
  625.                             }
  626.  
  627.                             break;
  628.                         }
  629.                     case "resetbcps":
  630.                         {
  631.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  632.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  633.                             {
  634.                                 ini.FileName = fname;
  635.  
  636.                                 ulong nobility = ini.ReadUInt64("Character", "BoundConquerPoints", 0);
  637.                                 nobility = nobility * 30 / 100;
  638.                                 ini.Write<ulong>("Character", "BoundConquerPoints", 0);
  639.                             }
  640.  
  641.                             break;
  642.                         }
  643.                     case "check":
  644.                         {
  645.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  646.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  647.                             {
  648.                                 ini.FileName = fname;
  649.  
  650.                                 long nobility = ini.ReadInt64("Character", "Money", 0);
  651.                                 if (nobility < 0)
  652.                                 {
  653.                                     Console.WriteLine("");
  654.                                 }
  655.  
  656.                             }
  657.                             break;
  658.                         }
  659.                     case "reset":
  660.                         {
  661.                             WindowsAPI.IniFile ini = new WindowsAPI.IniFile("");
  662.                             foreach (string fname in System.IO.Directory.GetFiles(Program.ServerConfig.DbLocation + "\\Users\\"))
  663.                             {
  664.                                 ini.FileName = fname;
  665.                                 ini.Write<int>("Character", "Money", 0);
  666.                                 ini.Write<int>("Character", "ConquerPoints", 0);
  667.                                 ini.Write<int>("Character", "DonationNobility", 0);
  668.                                 ini.Write<int>("Character", "WHMoney", 0);
  669.                             }
  670.                             Console.WriteLine("Reset Done");
  671.                             break;
  672.                         }
  673.                     case "fixedgamemap":
  674.                         {
  675.                             Dictionary<int, string> maps = new Dictionary<int, string>();
  676.                             using (var gamemap = new BinaryReader(new FileStream(Path.Combine(Program.ServerConfig.CO2Folder, "ini/gamemap.dat"), FileMode.Open)))
  677.                             {
  678.  
  679.                                 var amount = gamemap.ReadInt32();
  680.                                 for (var i = 0; i < amount; i++)
  681.                                 {
  682.  
  683.                                     var id = gamemap.ReadInt32();
  684.                                     var fileName = Encoding.ASCII.GetString(gamemap.ReadBytes(gamemap.ReadInt32()));
  685.                                     var puzzleSize = gamemap.ReadInt32();
  686.                                     if (id == 1017)
  687.                                     {
  688.                                         Console.WriteLine(puzzleSize);
  689.                                     }
  690.                                     if (!maps.ContainsKey(id))
  691.                                         maps.Add(id, fileName);
  692.                                     else
  693.                                         maps[id] = fileName;
  694.                                 }
  695.                             }
  696.                             break;
  697.                         }
  698.  
  699.  
  700.                     case "startgw":
  701.                         {
  702.                             Game.MsgTournaments.MsgSchedules.GuildWar.Proces = Game.MsgTournaments.ProcesType.Alive;
  703.                             Game.MsgTournaments.MsgSchedules.GuildWar.Start();
  704.                             break;
  705.                         }
  706.                     case "startsgw":
  707.                         {
  708.                             Game.MsgTournaments.MsgSchedules.SuperGuildWar.Start();
  709.                             break;
  710.                         }
  711.                     case "finishsgw":
  712.                         {
  713.                             Game.MsgTournaments.MsgSchedules.SuperGuildWar.Proces = Game.MsgTournaments.ProcesType.Dead;
  714.                             Game.MsgTournaments.MsgSchedules.SuperGuildWar.CompleteEndGuildWar();
  715.                             break;
  716.                         }
  717.                     case "finishgw":
  718.                         {
  719.                             Game.MsgTournaments.MsgSchedules.GuildWar.Proces = Game.MsgTournaments.ProcesType.Dead;
  720.                             Game.MsgTournaments.MsgSchedules.GuildWar.CompleteEndGuildWar();
  721.                             break;
  722.                         }
  723.  
  724.                     case "exit":
  725.                         {
  726.                             new Thread(new ThreadStart(Maintenance)).Start();
  727.                             break;
  728.                         }
  729.                     case "forceexit":
  730.                         {
  731.                             ProcessConsoleEvent(0);
  732.  
  733.                             Environment.Exit(0);
  734.                             break;
  735.                         }
  736.                     case "loada":
  737.                         {
  738.                             Server.Initialize();
  739.                             break;
  740.                         }
  741.                     case "restart":
  742.                         {
  743.                             ProcessConsoleEvent(0);
  744.  
  745.                             System.Diagnostics.Process hproces = new System.Diagnostics.Process();
  746.                             hproces.StartInfo.FileName = "Project_Terror_v2.exe";
  747.                             hproces.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
  748.                             hproces.Start();
  749.  
  750.                             Environment.Exit(0);
  751.  
  752.                             break;
  753.                         }
  754.  
  755.                 }
  756.             }
  757.             catch (Exception e) { Console.WriteLine(e.ToString()); }
  758.         }
  759.         public static void Maintenance()
  760.         {
  761.             using (var rec = new ServerSockets.RecycledPacket())
  762.             {
  763.                 var stream = rec.GetStream();
  764.                 OnMainternance = true;
  765.                 MyConsole.WriteLine("The server will be brought down for maintenance in (5 Minutes). Please log off immediately to avoid data loss.");
  766. #if Arabic
  767.                   MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 5minute0second. Please exitthe game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  768.              
  769. #else
  770.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (5 Minutes). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  771.  
  772. #endif
  773.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  774.             }
  775.             Thread.Sleep(1000 * 30);
  776.             using (var rec = new ServerSockets.RecycledPacket())
  777.             {
  778.                 var stream = rec.GetStream();
  779.                 MyConsole.WriteLine("The server will be brought down for maintenance in (4 Minutes & 30 Seconds). Please log off immediately to avoid data loss.");
  780. #if Arabic
  781.                   MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 4minute30second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  782.                
  783. #else
  784.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (4 Minutes & 30 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  785.  
  786. #endif
  787.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  788.             }
  789.             Thread.Sleep(1000 * 30);
  790.             using (var rec = new ServerSockets.RecycledPacket())
  791.             {
  792.                 var stream = rec.GetStream();
  793.                 MyConsole.WriteLine("The server will be brought down for maintenance in (4 Minutes & 00 Seconds). Please log off immediately to avoid data loss.");
  794. #if Arabic
  795.                   MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 4minute0second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  796.              
  797. #else
  798.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (4 Minutes & 00 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  799.  
  800. #endif
  801.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  802.             }
  803.             Thread.Sleep(1000 * 30);
  804.             using (var rec = new ServerSockets.RecycledPacket())
  805.             {
  806.                 var stream = rec.GetStream();
  807.                 MyConsole.WriteLine("The server will be brought down for maintenance in (3 Minutes & 30 Seconds). Please log off immediately to avoid data loss.");
  808. #if Arabic
  809.                        MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 3minute30second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  810.          
  811. #else
  812.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (3 Minutes & 30 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  813.  
  814. #endif
  815.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  816.             }
  817.             Thread.Sleep(1000 * 30);
  818.             using (var rec = new ServerSockets.RecycledPacket())
  819.             {
  820.                 var stream = rec.GetStream();
  821.                 MyConsole.WriteLine("The server will be brought down for maintenance in (3 Minutes & 00 Seconds). Please log off immediately to avoid data loss.");
  822. #if Arabic
  823.                   MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 3minute0second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  824.              
  825. #else
  826.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (3 Minutes & 00 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  827.  
  828. #endif
  829.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  830.             }
  831.             Thread.Sleep(1000 * 30);
  832.             using (var rec = new ServerSockets.RecycledPacket())
  833.             {
  834.                 var stream = rec.GetStream();
  835.                 MyConsole.WriteLine("The server will be brought down for maintenance in (2 Minutes & 30 Seconds). Please log off immediately to avoid data loss.");
  836. #if Arabic
  837.                   MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 2minute30second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  838.              
  839. #else
  840.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (2 Minutes & 30 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  841.  
  842. #endif
  843.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  844.             }
  845.             Thread.Sleep(1000 * 30);
  846.             using (var rec = new ServerSockets.RecycledPacket())
  847.             {
  848.                 var stream = rec.GetStream();
  849.                 MyConsole.WriteLine("The server will be brought down for maintenance in (2 Minutes & 00 Seconds). Please log off immediately to avoid data loss.");
  850. #if Arabic
  851.                         MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 2minute0second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  852.          
  853. #else
  854.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (2 Minutes & 00 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  855.  
  856. #endif
  857.             }
  858.             Thread.Sleep(1000 * 30);
  859.             using (var rec = new ServerSockets.RecycledPacket())
  860.             {
  861.                 var stream = rec.GetStream();
  862.                 MyConsole.WriteLine("The server will be brought down for maintenance in (1 Minutes & 30 Seconds). Please log off immediately to avoid data loss.");
  863. #if Arabic
  864.                    MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 1minute30second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  865.              
  866. #else
  867.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (1 Minutes & 30 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  868.  
  869. #endif
  870.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  871.             }
  872.             Thread.Sleep(1000 * 30);
  873.             using (var rec = new ServerSockets.RecycledPacket())
  874.             {
  875.                 var stream = rec.GetStream();
  876.                 MyConsole.WriteLine("The server will be brought down for maintenance in (1 Minutes & 00 Seconds). Please log off immediately to avoid data loss.");
  877. #if Arabic
  878.                  MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 1minute0second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  879.                
  880. #else
  881.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (1 Minutes & 00 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  882.  
  883. #endif
  884.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  885.             }
  886.             Thread.Sleep(1000 * 30);
  887.             using (var rec = new ServerSockets.RecycledPacket())
  888.             {
  889.                 var stream = rec.GetStream();
  890.                 MyConsole.WriteLine("The server will be brought down for maintenance in (0 Minutes & 30 Seconds). Please log off immediately to avoid data loss.");
  891. #if Arabic
  892.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in 0minute30second. Please exit the game now.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  893.                
  894. #else
  895.                 MsgMessage msg = new MsgMessage("The server will be brought down for maintenance in (0 Minutes & 30 Seconds). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  896.  
  897. #endif
  898.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  899.             }
  900.             Thread.Sleep(1000 * 20);
  901.             using (var rec = new ServerSockets.RecycledPacket())
  902.             {
  903.                 var stream = rec.GetStream();
  904. #if Arabic
  905.                   MsgMessage msg = new MsgMessage("Server maintenance(2 minutes). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  906.              
  907. #else
  908.                 MsgMessage msg = new MsgMessage("Server maintenance(few minutes). Please log off immediately to avoid data loss.", "ALLUSERS", "GM", MsgMessage.MsgColor.red, MsgMessage.ChatMode.Center);
  909.  
  910. #endif
  911.                 SendGlobalPackets.Enqueue(msg.GetArray(stream));
  912.             }
  913.             Thread.Sleep(1000 * 10);
  914.             ProcessConsoleEvent(0);
  915.  
  916.             Environment.Exit(0);
  917.         }
  918.  
  919.         public unsafe static void Game_Receive(ServerSockets.SecuritySocket obj, ServerSockets.Packet stream)//ServerSockets.Packet data)
  920.         {
  921.             if (!obj.SetDHKey)
  922.                 CreateDHKey(obj, stream);
  923.             else
  924.             {
  925.                 try
  926.                 {
  927.                     if (obj.Game == null)
  928.                         return;
  929.                     ushort PacketID = stream.ReadUInt16();
  930.  
  931.                     if (obj.Game.Player.CheckTransfer)
  932.                         goto jmp;
  933.                     if (obj.Game.PipeClient != null && PacketID != Game.GamePackets.Achievement)
  934.                     {
  935.                         if (PacketID == (ushort)Game.GamePackets.MsgOsShop
  936.              || PacketID == (ushort)Game.GamePackets.SecondaryPassword
  937.                       || PacketID >= (ushort)Game.GamePackets.LeagueOpt && PacketID <= (ushort)Game.GamePackets.LeagueConcubines
  938.                       || PacketID == (ushort)Game.GamePackets.LeagueRobOpt)
  939.                             goto jmp;
  940.  
  941.                         stream.Seek(stream.Size);
  942.                         obj.Game.PipeClient.Send(stream);
  943.  
  944.                         if (PacketID != 1009)
  945.                         {
  946.  
  947.                             return;
  948.                         }
  949.                         stream.Seek(4);
  950.                     }
  951.  
  952. #if TEST
  953.                     MyConsole.WriteLine("Receive -> PacketID: " + PacketID);
  954. #endif
  955.  
  956.                 //   Database.ServerDatabase.LoginQueue.Enqueue("[CallStack]" + MyConsole.log1(obj.Game.Player.Name, stream.Memory, stream.Size));
  957.                 jmp:
  958.                     if (PacketID == 2171 || PacketID == 2088 || PacketID == 2096 || PacketID == 2090 || PacketID == 2093)
  959.                     {
  960.                         PokerHandler.Handler(obj.Game, stream);
  961.                     }
  962.                     else
  963.                     {
  964.                         Action<Client.GameClient, ServerSockets.Packet> hinvoker;
  965.                         if (MsgInvoker.TryGetInvoker(PacketID, out hinvoker))
  966.                         {
  967.                             hinvoker(obj.Game, stream);
  968.                         }
  969.                         else
  970.                         {
  971. #if TEST
  972.                         MyConsole.WriteLine("Not found the packet ----> " + PacketID);
  973. #endif
  974.                         }
  975.                     }
  976.  
  977.                 }
  978.                 catch (Exception e) { MyConsole.WriteException(e); }
  979.                 finally
  980.                 {
  981.                     ServerSockets.PacketRecycle.Reuse(stream);
  982.                 }
  983.             }
  984.  
  985.         }
  986.         public unsafe static void CreateDHKey(ServerSockets.SecuritySocket obj, ServerSockets.Packet Stream)
  987.         {
  988.             try
  989.             {
  990.                 byte[] buffer = new byte[40];
  991.                 bool extra = false;
  992.                 string text = System.Text.ASCIIEncoding.ASCII.GetString(obj.DHKeyBuffer.buffer, 0, obj.DHKeyBuffer.Length());
  993.                 if (!text.EndsWith("TQClient"))
  994.                 {
  995.                     System.Buffer.BlockCopy(obj.EncryptedDHKeyBuffer.buffer, obj.EncryptedDHKeyBuffer.Length() - 40, buffer, 0, 40);
  996.                     extra = true;
  997.                 }
  998.                 //                MyConsole.PrintPacketAdvanced(Stream.Memory, Stream.Size);
  999.  
  1000.                 string key;
  1001.                 if (Stream.GetHandshakeReplyKey(out key))
  1002.                 {
  1003.                     obj.SetDHKey = true;
  1004.                     obj.Game.DHKey.HandleResponse(key);
  1005.                     var compute_key = obj.Game.DHKeyExchance.PostProcessDHKey(obj.Game.DHKey.ToBytes());
  1006.                     //obj.Game.Crypto.SetIVs(new byte[8], new byte[8]);
  1007.                     obj.Game.Crypto.GenerateKey(compute_key);
  1008.                     obj.Game.Crypto.Reset();
  1009.                 }
  1010.                 else
  1011.                 {
  1012.                     obj.Disconnect();
  1013.                     return;
  1014.                 }
  1015.                 if (extra)
  1016.                 {
  1017.  
  1018.                     Stream.Seek(0);
  1019.                     obj.Game.Crypto.Decrypt(buffer, 0, Stream.Memory, 0, 40);
  1020.                     Stream.Size = buffer.Length;
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.                     Stream.Size = buffer.Length;
  1027.                     Stream.Seek(2);
  1028.                     ushort PacketID = Stream.ReadUInt16();
  1029.                     Action<Client.GameClient, ServerSockets.Packet> hinvoker;
  1030.                     if (MsgInvoker.TryGetInvoker(PacketID, out hinvoker))
  1031.                     {
  1032.                         hinvoker(obj.Game, Stream);
  1033.                     }
  1034.                     else
  1035.                     {
  1036.                         obj.Disconnect();
  1037.  
  1038.                         MyConsole.WriteLine("DH KEY Not found the packet ----> " + PacketID);
  1039.  
  1040.                     }
  1041.                 }
  1042.  
  1043.             }
  1044.             catch (Exception e) { MyConsole.WriteException(e); }
  1045.         }
  1046.         public unsafe static void Game_Disconnect(ServerSockets.SecuritySocket obj)
  1047.         {
  1048.  
  1049.             if (obj.Game != null && obj.Game.Player != null)
  1050.             {
  1051.                 try
  1052.                 {
  1053.                     Client.GameClient client;
  1054.                     if (Database.Server.GamePoll.TryGetValue(obj.Game.Player.UID, out client))
  1055.                     {
  1056.                         try
  1057.                         {
  1058.                             PokerHandler.Shutdown(client);
  1059.                         }
  1060.                         catch (Exception e)
  1061.                         {
  1062.                             Console.WriteLine(e.ToString());
  1063.                         }
  1064.                         if (client.OnInterServer)
  1065.                             return;
  1066.                         if ((client.ClientFlag & Client.ServerFlag.LoginFull) == Client.ServerFlag.LoginFull)
  1067.                         {
  1068.                             if (obj.Game.PipeClient != null)
  1069.                                 obj.Game.PipeClient.Disconnect();
  1070.                             if (Game.MsgServer.MsgAutoHunt.AutoLock.ContainsKey(client.Player.Mac))
  1071.                             {
  1072.                                 if (Game.MsgServer.MsgAutoHunt.AutoLock[client.Player.Mac].Contains(client.Player.UID))
  1073.                                 {
  1074.                                     Game.MsgServer.MsgAutoHunt.AutoLock[client.Player.Mac].Remove(client.Player.UID);
  1075.                                 }
  1076.                             }
  1077.                             /*    using (MySqlCommand cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("playersonline")
  1078.                                                       .Set("Online", 0).Where("EntityID", client.Player.UID)) cmd.Execute();
  1079.                                 using (MySqlCommand cmd1 = new MySqlCommand(MySqlCommandType.UPDATE).Update("playersonline")
  1080.                                       .Set("Online", 0).Where("EntityID", client.Player.UID)) cmd1.Execute(); */
  1081.  
  1082.                             MyConsole.WriteLine("Client " + client.Player.Name + " was loggin out.");
  1083.  
  1084.                             using (var rec = new ServerSockets.RecycledPacket())
  1085.                             {
  1086.                                 var stream = rec.GetStream();
  1087.  
  1088.                                 try
  1089.                                 {
  1090.                                     if (client.Player.InUnion)
  1091.                                     {
  1092.                                         client.Player.UnionMemeber.Owner = null;
  1093.                                     }
  1094.                                     client.CheckRouletteDisconnect();
  1095.                                     client.EndQualifier();
  1096.  
  1097.                                     if (client.Team != null)
  1098.                                         client.Team.Remove(client, true);
  1099.                                     if (client.Player.MyClanMember != null)
  1100.                                         client.Player.MyClanMember.Online = false;
  1101.                                     if (client.IsVendor)
  1102.                                         client.MyVendor.StopVending(stream);
  1103.                                     if (client.InTrade)
  1104.                                         client.MyTrade.CloseTrade();
  1105.                                     if (client.Player.MyGuildMember != null)
  1106.                                         client.Player.MyGuildMember.IsOnline = false;
  1107.  
  1108.                                     if (client.Player.ObjInteraction != null)
  1109.                                     {
  1110.                                         client.Player.InteractionEffect.AtkType = Game.MsgServer.MsgAttackPacket.AttackID.InteractionStopEffect;
  1111.  
  1112.                                         InteractQuery action = InteractQuery.ShallowCopy(client.Player.InteractionEffect);
  1113.  
  1114.                                         client.Send(stream.InteractionCreate(&action));
  1115.  
  1116.                                         client.Player.ObjInteraction.Player.OnInteractionEffect = false;
  1117.                                         client.Player.ObjInteraction.Player.ObjInteraction = null;
  1118.                                     }
  1119.  
  1120.  
  1121.                                     client.Player.View.Clear(stream);
  1122.  
  1123.  
  1124.                                 }
  1125.                                 catch (Exception e)
  1126.                                 {
  1127.                                     MyConsole.WriteException(e);
  1128.                                     client.Player.View.Clear(stream);
  1129.                                 }
  1130.                                 finally
  1131.                                 {
  1132.                                     client.ClientFlag &= ~Client.ServerFlag.LoginFull;
  1133.                                     client.ClientFlag |= Client.ServerFlag.Disconnect;
  1134.                                     client.ClientFlag |= Client.ServerFlag.QueuesSave;
  1135.                                     Database.ServerDatabase.LoginQueue.TryEnqueue(client);
  1136.                                 }
  1137.  
  1138.                                 try
  1139.                                 {
  1140.                                     client.Player.Associate.OnDisconnect(stream, client);
  1141.  
  1142.                                     //remove mentor and apprentice
  1143.                                     if (client.Player.MyMentor != null)
  1144.                                     {
  1145.                                         Client.GameClient me;
  1146.                                         client.Player.MyMentor.OnlineApprentice.TryRemove(client.Player.UID, out me);
  1147.                                         client.Player.MyMentor = null;
  1148.                                     }
  1149.                                     client.Player.Associate.Online = false;
  1150.                                     lock (client.Player.Associate.MyClient)
  1151.                                         client.Player.Associate.MyClient = null;
  1152.                                     foreach (var clien in client.Player.Associate.OnlineApprentice.Values)
  1153.                                         clien.Player.SetMentorBattlePowers(0, 0);
  1154.                                     client.Player.Associate.OnlineApprentice.Clear();
  1155.                                     //done remove
  1156.                                 }
  1157.                                 catch (Exception e) { MyConsole.WriteLine(e.ToString()); }
  1158.                             }
  1159.                         }
  1160.                     }
  1161.                 }
  1162.                 catch (Exception e) { MyConsole.WriteLine(e.ToString()); }
  1163.             }
  1164.             else if (obj.Game != null)
  1165.             {
  1166.                 if (obj.Game.ConnectionUID != 0)
  1167.                 {
  1168.  
  1169.                     try
  1170.                     {
  1171.                         PokerHandler.Shutdown(obj.Game);
  1172.                     }
  1173.                     catch (Exception e)
  1174.                     {
  1175.                         Console.WriteLine(e.ToString());
  1176.                     }
  1177.                     Client.GameClient client;
  1178.                     Database.Server.GamePoll.TryRemove(obj.Game.ConnectionUID, out client);
  1179.                 }
  1180.             }
  1181.         }
  1182.  
  1183.  
  1184.         public static bool NameStrCheck(string name, bool ExceptedSize = true)
  1185.         {
  1186.             if (name == null)
  1187.                 return false;
  1188.             if (name == "")
  1189.                 return false;
  1190.             string ValidChars = "[^A-Za-z0-9ء-ي*~.&.$]$";
  1191.             System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(ValidChars);
  1192.             if (r.IsMatch(name))
  1193.                 return false;
  1194.             if (name.ToLower().Contains("ali"))
  1195.                 return false;
  1196.             if (name.ToLower().Contains("ramy"))
  1197.                 return false;
  1198.             if (name.ToLower().Contains("rima"))
  1199.                 return false;
  1200.             if (name.ToLower().Contains("PiraTes"))
  1201.                 return false;
  1202.             if (name.ToLower().Contains("EgyConqur"))
  1203.                 return false;
  1204.             if (name.ToLower().Contains("gm"))
  1205.                 return false;
  1206.             if (name.ToLower().Contains("pm"))
  1207.                 return false;
  1208.             if (name.ToLower().Contains("p~m"))
  1209.                 return false;
  1210.             if (name.ToLower().Contains("p!m"))
  1211.                 return false;
  1212.             if (name.ToLower().Contains("g~m"))
  1213.                 return false;
  1214.             if (name.ToLower().Contains("g!m"))
  1215.                 return false;
  1216.             if (name.ToLower().Contains("help"))
  1217.                 return false;
  1218.             if (name.ToLower().Contains("desk"))
  1219.                 return false;
  1220.             if (name.ToLower().Contains("abdallah"))
  1221.                 return false;
  1222.             if (name.Contains('/'))
  1223.                 return false;
  1224.             if (name.Contains(@"\"))
  1225.                 return false;
  1226.             if (name.Contains(@"'"))
  1227.                 return false;
  1228.             //    if (name.Contains('#'))
  1229.             //      return false;
  1230.             if (name.Contains("GM") ||
  1231.                 name.Contains("PM") ||
  1232.                 name.Contains("SYSTEM") ||
  1233.                 name.Contains("{") || name.Contains("}") || name.Contains("[") || name.Contains("]"))
  1234.                 return false;
  1235.             if (name.Length > 16 && ExceptedSize)
  1236.                 return false;
  1237.             for (int x = 0; x < name.Length; x++)
  1238.                 if (name[x] == 25)
  1239.                     return false;
  1240.             return true;
  1241.         }
  1242.         public static bool StringCheck(string pszString)
  1243.         {
  1244.             for (int x = 0; x < pszString.Length; x++)
  1245.             {
  1246.                 if (pszString[x] > ' ' && pszString[x] <= '~')
  1247.                     return false;
  1248.             }
  1249.             return true;
  1250.         }
  1251.  
  1252.          //public static string LogginKey = "C238xs65pjy7HU9Q";
  1253.         public static string LogginKey = "XCheatLoaderMeGo";
  1254.  
  1255.         public static bool DeleteItems = false;
  1256.         public const string LoaderPrograms = "database\\LoaderPrograms\\";
  1257.  
  1258.     }
  1259. }
  1260.  
Add Comment
Please, Sign In to add comment