Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using COServer.Network.Sockets;
- using COServer.Database;
- using System.Net.Sockets;
- using System.Net;
- using System.Collections.Concurrent;
- using COServer.Network;
- using COServer.Game;
- using COServer.Game.ConquerStructures.Society;
- using COServer.Client;
- using COServer.Network.GamePackets;
- using System.IO;
- using COServer.Game.ConquerStructures;
- using MYSQLCOMMAND = MySql.Data.MySqlClient.MySqlCommand;
- using MYSQLREADER = MySql.Data.MySqlClient.MySqlDataReader;
- using MYSQLCONNECTION = MySql.Data.MySqlClient.MySqlConnection;
- namespace COServer
- {
- public class CrossServer
- {
- public static Dictionary<string, Server> Scores = new Dictionary<string, Server>(20);
- public static SafeDictionary<string, uint> ConnectedServer = new SafeDictionary<string, uint>(20);
- public static SafeDictionary<string, ConcurrentDictionary<uint, IJiangHu>> JiangHuClients = new SafeDictionary<string, ConcurrentDictionary<uint, IJiangHu>>();
- public static SafeDictionary<string, SafeDictionary<uint, NobilityInformation>> Board = new SafeDictionary<string, SafeDictionary<uint, NobilityInformation>>(20);
- public static ConcurrentDictionary<uint, Client.GameState> CrossPool = new ConcurrentDictionary<uint, Client.GameState>();
- public static SafeDictionary<string, SafeDictionary<uint, Game.ConquerStructures.Society.Guild>> Guilds = new SafeDictionary<string, SafeDictionary<uint, Game.ConquerStructures.Society.Guild>>(20);
- public static ServerSocket Socket;
- public static ushort Port;
- public static bool Mode = false;
- public static DateTime StartTime;
- public static MyServerInfo Connection = new MyServerInfo();
- public static bool Loading = false;
- public static Map map;
- public static Server winner;
- private static bool changed = false;
- private static string[] scoreMessages;
- public static Time32 ScoreSendStamp;
- public static void AddScore(uint addScore, string name)
- {
- if (Scores.ContainsKey(name))
- {
- addScore += Scores[name].score;
- var server = new Server();
- server.score = addScore;
- server.name = name;
- Scores.Remove(server.name);
- Scores.Add(server.name, server);
- }
- else
- {
- var server = new Server();
- server.score = addScore;
- server.name = name;
- Scores.Add(server.name, server);
- }
- changed = true;
- }
- static string GetString(byte[] bytes)
- {
- char[] chars = new char[bytes.Length / sizeof(char)];
- System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
- return new string(chars);
- }
- public struct Server
- {
- public string name;
- public uint score;
- }
- public static void SendScores()
- {
- if (scoreMessages == null)
- scoreMessages = new string[0];
- if (Scores.Count == 0)
- return;
- if (changed)
- SortScores(out winner);
- for (int c = 0; c < scoreMessages.Length; c++)
- {
- Message msg = new Message(scoreMessages[c], System.Drawing.Color.Red, c == 0 ? Message.FirstRightCorner : Message.ContinueRightCorner);
- Kernel.SendWorldMessage(msg, Server.Values, (ushort)map.ID);
- }
- }
- private static void SortScores(out Server winner)
- {
- winner = new Server();
- List<string> ret = new List<string>();
- int Place = 0;
- foreach (Server server in Scores.Values.OrderByDescending((p) => p.score))
- {
- if (Place == 0)
- winner = server;
- string str = "No " + (Place + 1).ToString() + ": " + server.name + "(" + server.score + ")";
- ret.Add(str);
- Place++;
- if (Place == 4)
- break;
- }
- changed = false;
- scoreMessages = ret.ToArray();
- }
- public static void Receive(byte[] buffer, int length, ClientWrapper obj)
- {
- if (Mode == false)
- {
- Mode = true;
- StartTime = DateTime.Now;
- map = Kernel.Maps[1038].MakeDynamicMap();
- Constants.PKFreeMaps.Add(map.ID);
- Scores = new Dictionary<string, Server>();
- COServer.Interfaces.INpc npc = new Network.GamePackets.NpcSpawn();
- npc.UID = 3;
- npc.Name = "CrossServer";
- npc.Mesh = 30;
- npc.Type = Enums.NpcType.Shop;
- npc.X = 51;
- npc.Y = 54;
- npc.MapID = map.ID;
- map.AddNpc(npc);
- foreach (var client in Server.Values)
- client.MessageBox("CrossServer War start would you like to join",
- p => { p.Player.Teleport(1002, 423, 291); }, null);
- }
- var Database = new DatabasePacket(0);
- Database.Deserialize(buffer);
- if (Database.ID == 8001)
- {
- Client.GameState client = new Client.GameState();
- client.Server = new MyServerInfo();
- client.Server.CreateConnection(Database);
- client.Account = new AccountTable(null);
- client.Account.OriginalPlayerID = Database.Identifier;
- client.Account = CrossDatabase.LoadAccount(client.Account, client.Server.MySqlConnection);
- if (!CrossPool.ContainsKey(client.Account.OriginalPlayerID))
- {
- CrossPool.Add(client.Account.OriginalPlayerID, client);
- }
- else
- {
- CrossPool.Clear();
- CrossPool.Add(client.Account.OriginalPlayerID, client);
- }
- }
- else if (Database.ID == 8000)
- {
- Connection.CreateConnection(Database);
- CrossDatabase.NobilityLoad(Connection.MySqlConnection, Connection.ServerName);
- CrossDatabase.LoadGuild(Connection.MySqlConnection, Connection.ServerName);
- }
- else if (Database.ID == 8002)
- {
- System.Console.WriteLine("Server {0} load done", Database.ServerName);
- ConnectedServer.Add(Database.ServerName, Database.Identifier);
- }
- else if (Database.ID == 8003)
- {
- System.Console.WriteLine("CrossServer Has been finshed");
- }
- }
- public static void AppendConnect(MsgConnect appendConnect, Client.GameState client)
- {
- bool doLogin = false;
- client.Account = CrossPool[appendConnect.Identifier].Account;
- client.Server = CrossPool[appendConnect.Identifier].Server;
- VariableVault variables;
- CrossDatabase.Loadvariables(client.Account.OriginalPlayerID, out variables, client.Server.MySqlConnection);
- client.Variables = variables;
- if (client["banhours"] == 0)
- {
- client["banhours"] = -1;
- client["banreason"] = "Infinite time.";
- client["banstamp"] = DateTime.Now.AddYears(100);
- }
- if (client.Account.State == Database.AccountTable.AccountState.Banned)
- {
- if (client["banhours"] != -1)
- {
- DateTime banStamp = client["banstamp"];
- if (DateTime.Now > banStamp.AddDays(((int)client["banhours"]) / 24).AddHours(((int)client["banhours"]) % 24))
- client.Account.State = Database.AccountTable.AccountState.Player;
- }
- }
- string Message = "";
- if (client.Account.State == Database.AccountTable.AccountState.Banned)
- {
- DateTime banStamp = client["banstamp"];
- banStamp = banStamp.AddHours(client["banhours"]);
- Message = "You are banned for " + client["banhours"] + " hours [until " + banStamp.ToString("HH:mm MM/dd/yyyy") + "]. Reason: " + client["banreason"];
- }
- else if (!ConnectedServer.ContainsKey(client.Server.ServerName))
- {
- Message = "Game Server is offline";
- }
- else if (client.Account.State == Database.AccountTable.AccountState.NotActivated)
- Message = "You cannot login until your account is activated.";
- if (Message == string.Empty)
- {
- Client.GameState aclient;
- if (CrossPool.TryGetValue(client.Account.OriginalPlayerID, out aclient))
- {
- if (aclient.LoggedIn == true)
- aclient.Disconnect();
- }
- CrossPool.Remove(client.Account.OriginalPlayerID);
- client.Player = new Player(PlayerFlag.Monster, false);
- CrossPool.Add(client.Account.OriginalPlayerID, client);
- doLogin = true;
- }
- else
- {
- client.Send(new Message(Message, "ALLUSERS", System.Drawing.Color.Orange, COServer.Network.GamePackets.Message.Dialog));
- }
- if (doLogin)
- {
- client.GetLanguages(appendConnect.Language);
- client.ReadyToPlay();
- if (CrossDatabase.LoadPlayer(client, 0, client.Server.MySqlConnection))
- {
- if (client.Player.FullyLoaded)
- {
- CrossDatabase.LoadItems(client, client.Server.MySqlConnection);
- CrossDatabase.SubclassLoad(client.Player, client.Server.MySqlConnection);
- CrossDatabase.LoadProficiencies(client, client.Server.MySqlConnection);
- CrossDatabase.LoadSpells(client, client.Server.MySqlConnection);
- client.ClaimableItem = new SafeDictionary<uint, DetainedItem>();
- client.DeatinedItem = new SafeDictionary<uint, DetainedItem>();
- client.Partners = new SafeDictionary<uint, Game.ConquerStructures.Society.TradePartner>();
- client.Enemy = new SafeDictionary<uint, Game.ConquerStructures.Society.Enemy>();
- client.Friends = new SafeDictionary<uint, Game.ConquerStructures.Society.Friend>();
- client.Apprentices = new SafeDictionary<uint, Game.ConquerStructures.Society.Apprentice>();
- CrossDatabase.ChiLoad(client, client.Server.MySqlConnection);
- CrossDatabase.RewardLoad(client, client.Server.MySqlConnection);
- CrossDatabase.Way2HeroesLoad(client, client.Server.MySqlConnection);
- if (client.BackupArmorLook != 0) client.SetNewArmorLook(client.BackupArmorLook);
- else client.SetNewArmorLook(client.ArmorLook);
- client.SetNewHeadgearLook(client.HeadgearLook);
- client.BackupArmorLook = 0;
- client.SetNewWeaponLook(client.WeaponLook);
- client.SetNewWeaponLook2(client.WeaponLook2);
- if (client.Player.GuildID != 0)
- {
- client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(client.Player.GuildRank);
- }
- client.Send(new Message("ANSWER_OK", "ALLUSERS", System.Drawing.Color.Orange, Network.GamePackets.Message.Dialog));
- Server.World.CrossRegister(client);
- CrossPool[client.Account.PlayerID] = client;
- client.Send(new MsgUserInfo(client));
- string IP = client.IP;
- client.Account.SetCurrentIP(IP);
- client.Account.Save();
- if (!client.LoggedIn)
- System.Console.WriteLine(client.Player.Name + " from " + client.Server.ServerName + " has logged on! Ip:[" + client.Account.IP + "]", ConsoleColor.Green);
- client.LoggedIn = true;
- client.Action = 2;
- if (client.Server.ServerName.ToLower() == "zirox")
- {
- client.Player.ServerID = 1;
- client.SendScreenSpawn(client.Player, true);
- }
- else if (client.Server.ServerName.ToLower() == "scorpoin")
- {
- client.Player.ServerID = 2;
- client.SendScreenSpawn(client.Player, true);
- }
- else if (client.Server.ServerName.ToLower() == "mega")
- {
- client.Player.ServerID = 4;
- client.SendScreenSpawn(client.Player, true);
- }
- }
- }
- }
- }
- public static void LoginMessages(GameState client, MYSQLCONNECTION mySqlConnection)
- {
- var coords = map.RandomCoordinates();
- client.Player.Teleport(map.ID, coords.Item1, coords.Item2);
- client.Filtering = true;
- if (!(client.Player.VIPLevel == 6 || client.Account.State >= Database.AccountTable.AccountState.ProjectManager))
- client.Send(new Message("" + Database.helpdesk.Register + "", System.Drawing.Color.Red, Network.GamePackets.Message.Website));
- if (client.WentToComplete)
- return;
- for (ushort i = 1415; i <= 1423; i++)
- if (!client.Spells.ContainsKey(i))
- client.AddSpell(new Spell(true) { ID = i });
- if (!client.TransferedPlayer)
- Network.PacketHandler.RemoveBadSkills(client);
- DateTime now = DateTime.Now;
- Network.GamePackets.AutoHunt AutoHunting = new Network.GamePackets.AutoHunt(true) { Show = 341 }; AutoHunting.Send(client);
- if (client.WarehousePW != 0)
- {
- WareHousePassword whp = new WareHousePassword(true);
- whp.type = WareHousePassword.PasswordCorrect;
- whp.OldPassword = 0x1;
- client.Send(whp);
- }
- if (client.Player.Class >= 40 && client.Player.Class <= 45)
- {
- client.RemoveSpell(new Spell(true) { ID = 1025 });//SuperMan
- }
- if (client.Player.Class >= 60 && client.Player.Class <= 65)
- {
- client.RemoveSpell(new Spell(true) { ID = 1025 });//Superman
- }
- if (client.Player.Class >= 132 && client.Player.Class <= 135)
- {
- client.RemoveSpell(new Spell(true) { ID = 10425 });//tranq
- }
- if (client.Player.Class >= 50 && client.Player.Class <= 55)
- {
- client.RemoveSpell(new Spell(true) { ID = 1025 });//Superman
- }
- if (client.Player.Class >= 10 && client.Player.Class <= 15)
- {
- client.RemoveSpell(new Spell(true) { ID = 1025 });//Superman
- }
- if (client.Player.Class >= 142 && client.Player.Class <= 145)
- {
- client.RemoveSpell(new Spell(true) { ID = 11180 });//MortalDrag
- }
- if (client.Player.Class >= 142 && client.Player.Class <= 145)
- {
- client.RemoveSpell(new Spell(true) { ID = 11190 });//MortalDrag
- }
- if (client.Player.Class >= 142 && client.Player.Class <= 145)
- {
- client.RemoveSpell(new Spell(true) { ID = 11200 });//MortalDrag
- }
- if (client.Player.Class >= 42 && client.Player.Class <= 45)
- {
- client.RemoveSpell(new Spell(true) { ID = 10425 });//Tranquality
- }
- client.WentToComplete = true;
- client.Player.SendUpdates = true;
- if (client.Player.MyJiang != null)
- client.Player.MyJiang.OnloginClient(client);
- else if (client.Player.Reborn == 2)
- {
- Network.GamePackets.JiangHu jiang = new Network.GamePackets.JiangHu();
- jiang.Texts.Add("0");
- jiang.CreateArray();
- jiang.Send(client);
- }
- if (CrossServer.Guilds[client.Server.ServerName] != null)
- {
- foreach (var Guild in CrossServer.Guilds[client.Server.ServerName].Values)
- {
- Guild.SendName(client);
- }
- }
- ServerTime time = new ServerTime();
- time.Year = (uint)DateTime.Now.Year;
- time.Month = (uint)DateTime.Now.Month;
- time.DayOfYear = (uint)DateTime.Now.DayOfYear;
- time.DayOfMonth = (uint)DateTime.Now.Day;
- time.Hour = (uint)DateTime.Now.Hour;
- time.Minute = (uint)DateTime.Now.Minute;
- time.Second = (uint)DateTime.Now.Second;
- client.Send(time);
- client.Player.DoubleExperienceTime = (ushort)(client.Player.DoubleExperienceTime + (1 - 1));
- client.SuperPotion = (ushort)(client.SuperPotion + (1 - 1));
- client.Player.HeavenBlessing = (ushort)(client.Player.HeavenBlessing + (1 - 1));
- client.OnlineTrainingPoints = (ushort)(client.OnlineTrainingPoints + (1 - 1));
- if (Kernel.QuizShow.Open)
- Kernel.QuizShow.AddPlayer(client);
- client.Player.Update(Network.GamePackets.Update.QuizPoints, client.Player.QuizPoints, true);
- NobilityInfo update = new NobilityInfo(true);
- update.Type = NobilityInfo.Icon;
- update.dwParam = client.NobilityInformation.PlayerUID;
- update.UpdateString(client.NobilityInformation);
- client.Send(update);
- foreach (ConquerItem item in client.Inventory.Objects)
- item.Send(client);
- foreach (ConquerItem item in client.Equipment.Objects)
- {
- if (item != null)
- {
- if (Database.ConquerItemInformation.BaseInformations.ContainsKey(item.ID))
- {
- item.Send(client);
- }
- }
- }
- client.Player.Update(0x80, 0x27b1, false);
- client.Player.Update(Update.Merchant, 255, false);
- client.LoadItemStats();
- if (!client.Equipment.Free(5))
- {
- if (Network.PacketHandler.IsArrow(client.Equipment.TryGetItem(5).ID))
- {
- if (client.Equipment.Free(4))
- client.Equipment.DestroyArrow(5);
- else
- {
- if (client.Equipment.TryGetItem(4).ID / 1000 != 500)
- client.Equipment.DestroyArrow(5);
- }
- }
- }
- client.GemAlgorithm();
- client.CalculateStatBonus();
- client.CalculateHPBonus();
- client.Player.Stamina = 100;
- DateTime lastLogin = client["lastlogin"];
- string prevLoc = client["lastlocation"];
- client.Send(new LastLogin()
- {
- TotalSeconds = (uint)(lastLogin - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds,
- DifferentCity = prevLoc == client.Account.IP,
- DifferentPlace = prevLoc != client.Account.IP
- });
- client["lastlogin"] = DateTime.Now;
- client["lastlocation"] = prevLoc;
- string[] wm = File.ReadAllLines(Constants.WelcomeMessages);
- foreach (string line in wm)
- {
- if (line.Length == 0)
- continue;
- if (line[0] == ';')
- continue;
- client.Send(new Message(line, System.Drawing.Color.Red, Message.Talk));
- }
- #region New Titles
- if (client.Player.Titles.Count > 0)
- {
- TitlePacket tpacket = new TitlePacket(true);
- tpacket.Identifier = client.Player.UID;
- tpacket.Title = client.Player.MyTitle;
- tpacket.Type = TitlePacket.Types.Switch;
- tpacket.Count = 1;
- tpacket.Add((byte)client.Player.MyTitle);
- client.Player.MyTitle = tpacket.Title;
- client.Send(tpacket);
- }
- #endregion
- if (Server.Today == DayOfWeek.Saturday || Server.Today == DayOfWeek.Sunday || Server.Today == DayOfWeek.Monday || Server.Today == DayOfWeek.Thursday || Server.Today == DayOfWeek.Tuesday || Server.Today == DayOfWeek.Wednesday || Server.Today == DayOfWeek.Friday)
- client.Send(new Message("Double experience is on.", System.Drawing.Color.Red, Message.World));
- if (client.Player.VIPLevel > 0)
- {
- Network.GamePackets.VipStatus vip = new Network.GamePackets.VipStatus();
- client.Send(vip.ToArray());
- }
- client.Send(new MapStatus() { BaseID = client.Map.BaseID, ID = client.Map.ID, Status = Database.MapsTable.MapInformations[client.Map.ID].Status, Weather = Database.MapsTable.MapInformations[client.Map.ID].Weather });
- if (client.Player.Hitpoints == 0)
- client.Player.Hitpoints = 1;
- client.Player.HandleTiming = true;
- if (client.Player.MentorBattlePower != 0)
- client.Player.Update(Network.GamePackets.Update.MentorBattlePower, client.Player.MentorBattlePower, false);
- if (client.Guild != null)
- {
- client.Guild.SendAllyAndEnemy(client);
- client.Player.GuildBattlePower = client.Guild.GetSharedBattlepower(client.AsMember.Rank);
- }
- if (Game.ConquerStructures.Broadcast.CurrentBroadcast.PlayerID > 2)
- client.Send(new Network.GamePackets.Message(Game.ConquerStructures.Broadcast.CurrentBroadcast.Message, "ALLUSERS", Game.ConquerStructures.Broadcast.CurrentBroadcast.PlayerName, System.Drawing.Color.Red, Network.GamePackets.Message.BroadcastMessage));
- client.Player.Update(Update.RaceShopPoints, client.RacePoints, false);
- client.Player.Update(Network.GamePackets.Update.LuckyTimeTimer, client.BlessTime, false);
- if (client.Player.HeavenBlessing != 0)
- {
- client.Player.AddFlag(Network.GamePackets.Update.Flags.HeavenBlessing);
- client.Player.Update(Network.GamePackets.Update.HeavensBlessing, client.Player.HeavenBlessing, false);
- client.Player.Update(Network.GamePackets._String.Effect, "bless", true);
- client.Player.Update(Network.GamePackets.Update.OnlineTraining, client.OnlineTrainingPoints, false);
- }
- client.Equipment.UpdatePlayerPacket();
- client.Send(new ChiPowers(true).Query(client));
- DateTime Now64 = DateTime.Now;
- Network.PacketHandler.ChangeAppearance(client, (AppearanceType)client.Appearance);
- client.Challenge = null;
- if (client.Prizes.Count > 0)
- client.GetArsenalDonation();
- client.Player.UpdateEffects(true);
- if (client.Player.VIPLevel != 0)
- client.Player.VipBattlePower = 5;
- }
- public static void ShutDown(GameState client)
- {
- if (client.Socket.Connector == null) return;
- client.Socket.Connector = null;
- using (var conn = client.Server.MySqlConnection)
- {
- conn.Open();
- CrossDatabase.SaveVariables(client, conn);
- }
- client.RemoveScreenSpawn(client.Player, false);
- if (CrossPool.ContainsKey(client.Player.OriginalUID))
- {
- CrossPool.Remove(client.Player.UID);
- }
- if (client.Booth != null)
- client.Booth.Remove();
- if (client.Player.MyClones.Count > 0)
- {
- foreach (var item in client.Player.MyClones.Values)
- {
- Data data = new Data(true);
- data.UID = item.UID;
- data.ID = Network.GamePackets.Data.RemovePlayer;
- item.MonsterInfo.SendScreen(data);
- }
- client.Player.MyClones.Clear();
- }
- if (client.Pet != null)
- client.Pet.ClearAll();
- if (client.Team != null)
- {
- client.Team.Remove(client, true);
- }
- Console.WriteLine(client.Player.Name + " form server " + client.Server.ServerName + " has logged off! Ip:[" + client.Account.IP + "]", ConsoleColor.Green);
- }
- }
- public class MyServerInfo
- {
- private string ConnectionString;
- public void CreateConnection(DatabasePacket Database)
- {
- ConnectionString = "Server=" + Database.Host + ";Port=3306;Database=" + Database.Database + ";Uid=" + Database.Username + ";Password=" + Database.Password + ";Persist Security Info=True;Pooling=true; Min Pool Size = 32; Max Pool Size = 300;";
- ServerName = Database.ServerName;
- }
- public MYSQLCONNECTION MySqlConnection
- {
- get
- {
- MYSQLCONNECTION conn = new MYSQLCONNECTION();
- conn.ConnectionString = ConnectionString;
- return conn;
- }
- }
- public string ServerName = "";
- }
- public class CrossDatabase
- {
- public static void SaveVariables(Client.GameState GameState, MYSQLCONNECTION conn)
- {
- var vars = GameState.Variables;
- if (vars == null) return;
- if (!vars.Changed) return;
- vars.Changed = false;
- string SQL = "UPDATE `variablevault` set data=@Data where Playerid=@PlayerID;";
- byte[] rawData = vars.Serialize();
- using (var cmd = new MySql.Data.MySqlClient.MySqlCommand(SQL, conn))
- {
- cmd.Parameters.AddWithValue("@PlayerID", GameState.Player.OriginalUID);
- cmd.Parameters.AddWithValue("@Data", rawData);
- cmd.ExecuteNonQuery();
- }
- }
- public static void NobilityLoad(MYSQLCONNECTION Connection, string name)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("nobility"))
- using (var reader = cmd.CreateReader(Connection))
- {
- while (reader.Read())
- {
- NobilityInformation nobilityinfo = new NobilityInformation();
- nobilityinfo.PlayerUID = reader.ReadUInt32("PlayerUID");
- nobilityinfo.Name = reader.ReadString("PlayerName");
- nobilityinfo.Donation = reader.ReadUInt64("Donation");
- nobilityinfo.Gender = reader.ReadByte("Gender");
- nobilityinfo.Mesh = reader.ReadUInt32("Mesh");
- if (CrossServer.Board.ContainsKey(name))
- {
- CrossServer.Board[name].Add(nobilityinfo.PlayerUID, nobilityinfo);
- }
- else
- {
- CrossServer.Board.Add(name, new SafeDictionary<uint, NobilityInformation>(10000));
- CrossServer.Board[name].Add(nobilityinfo.PlayerUID, nobilityinfo);
- }
- }
- }
- Console.WriteLine("Server " + name + " Nobility information loaded.");
- }
- public static void LoadGuild(MYSQLCONNECTION Connection, string name)
- {
- Dictionary<uint, SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member>> dict = new Dictionary<uint, SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member>>();
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("entities").Where("guildid", 0, true))
- using (var reader = new MySqlReader(cmd, Connection))
- {
- while (reader.Read())
- {
- Game.ConquerStructures.Society.Guild.Member member = new Game.ConquerStructures.Society.Guild.Member(reader.ReadUInt16("guildid"));
- member.ID = reader.ReadUInt32("uid");
- member.Name = reader.ReadString("name");
- member.Level = reader.ReadByte("level");
- member.Spouse = reader.ReadString("Spouse");
- if (CrossServer.Board[name] != null)
- {
- if (CrossServer.Board[name].ContainsKey(member.ID))
- {
- member.NobilityRank = CrossServer.Board[name][member.ID].Rank;
- member.Gender = CrossServer.Board[name][member.ID].Gender;
- }
- }
- member.Rank = (Game.Enums.GuildMemberRank)reader.ReadUInt16("guildrank");
- member.SilverDonation = reader.ReadUInt64("GuildSilverDonation");
- member.ConquerPointDonation = reader.ReadUInt64("GuildConquerPointDonation");
- member.ArsenalDonation = reader.ReadUInt32("GuildArsenalDonation");
- member.Class = reader.ReadByte("Class");
- member.VirtutePointes = reader.ReadUInt32("VirtuePoints");
- member.Lilies = reader.ReadUInt32("GuildLilies");
- member.Rouses = reader.ReadUInt32("GuildRouses");
- member.Orchids = reader.ReadUInt32("GuildOrchids");
- member.Tulips = reader.ReadUInt32("GuildTulips");
- member.PkDonation = reader.ReadUInt32("GuildPkDonation");
- member.LastLogin = reader.ReadUInt64("GuildLastlod");
- member.Exploits = reader.ReadUInt32("Exploits");
- member.CTFCpsReward = reader.ReadUInt32("CTFCpsReward");
- member.CTFSilverReward = reader.ReadUInt32("CTFSilverReward");
- member.Mesh = uint.Parse(reader.ReadUInt16("Face").ToString() + reader.ReadUInt16("Body").ToString());
- if (!dict.ContainsKey(member.GuildID)) dict.Add(member.GuildID, new SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member>());
- dict[member.GuildID].Add(member.ID, member);
- }
- }
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("guilds"))
- using (var reader = new MySqlReader(cmd, Connection))
- {
- while (reader.Read())
- {
- Game.ConquerStructures.Society.Guild guild = new Game.ConquerStructures.Society.Guild(reader.ReadString("LeaderName"));
- guild.ID = reader.ReadUInt32("Id");
- guild.Name = reader.ReadString("Name");
- guild.Wins = reader.ReadUInt32("Wins");
- guild.Losts = reader.ReadUInt32("Losts");
- guild.Bulletin = reader.ReadString("Bulletin");
- guild.SilverFund = reader.ReadUInt64("SilverFund");
- guild.CTFPoints = reader.ReadUInt32("CTFPoints");
- guild.CTFReward = reader.ReadUInt32("CTFReward");
- guild.ConquerPointFund = reader.ReadUInt32("ConquerPointFund");
- guild.LevelRequirement = reader.ReadUInt32("LevelRequirement");
- guild.RebornRequirement = reader.ReadUInt32("RebornRequirement");
- guild.ClassRequirement = reader.ReadUInt32("ClassRequirement");
- guild.AdvertiseRecruit.Load(reader.ReadString("Advertise"));
- guild.GuildEnrole = reader.ReadUInt32("GuildEnrole");
- guild.CreateTime(guild.GuildEnrole);
- guild.BuletinEnrole = reader.ReadUInt32("BuletinEnrole");
- guild.CTFdonationCPs = reader.ReadUInt32("CTFdonationCPs");
- guild.CTFdonationSilver = reader.ReadUInt32("CTFdonationSilver");
- guild.CTFdonationSilverold = reader.ReadUInt32("CTFdonationSilverold");
- guild.CTFdonationCPsold = reader.ReadUInt32("CTFdonationCPsold");
- guild.CreateTime(guild.BuletinEnrole);
- if (dict.ContainsKey(guild.ID))
- {
- guild.Members = dict[guild.ID];
- guild.MemberCount = (uint)guild.Members.Count;
- }
- else
- guild.Members = new SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member>();
- if (CrossServer.Guilds.ContainsKey(name))
- {
- CrossServer.Guilds[name].Add(guild.ID, guild);
- }
- else
- {
- CrossServer.Guilds.Add(name, new SafeDictionary<uint, Game.ConquerStructures.Society.Guild>(100000));
- CrossServer.Guilds[name].Add(guild.ID, guild);
- }
- foreach (var member in guild.Members.Values)
- {
- if (member.Rank == Game.Enums.GuildMemberRank.GuildLeader)
- guild.Leader = member;
- guild.RanksCounts[(ushort)member.Rank]++;
- }
- LoadArsenal(guild, Connection);
- }
- }
- Console.WriteLine("Server " + name + " guild information loaded.");
- }
- public static void LoadArsenal(Guild guild, MYSQLCONNECTION Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("guildarsenal").Where("ID", guild.ID))
- using (var rdr = new MySqlReader(cmd, Connection))
- {
- if (rdr.Read())
- {
- var array = rdr.ReadBlob("Data");
- if (array == null) return;
- MemoryStream stream = new MemoryStream(rdr.ReadBlob("Data"));
- BinaryReader reader = new BinaryReader(stream);
- for (int i = 0; i < 8; i++)
- guild.Arsenals[i].Load(reader);
- guild.ArsenalBPChanged = true;
- guild.GetMaxSharedBattlepower();
- }
- }
- }
- public static void Way2HeroesLoad(Client.GameState client, MYSQLCONNECTION Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT))
- {
- cmd.Select("rewards").Where("UID", client.Player.OriginalUID);
- using (MySqlReader rdr = new MySqlReader(cmd, Connection))
- {
- if (rdr.Read())
- {
- byte[] data = rdr.ReadBlob("Rewards");
- if (data.Length > 0)
- {
- using (var stream = new MemoryStream(data))
- using (var reader = new BinaryReader(stream))
- {
- int count = reader.ReadByte();
- for (uint x = 0; x < count; x++)
- {
- MaTrix.Reward.RewardInfo item = new MaTrix.Reward.RewardInfo();
- item = item.ReadItem(reader);
- client.Rewards.Add(item.ID, item);
- }
- }
- }
- }
- else
- {
- using (var command = new MySqlCommand(MySqlCommandType.INSERT))
- {
- command.Insert("rewards").Insert("UID", client.Player.OriginalUID).Insert("Name", client.Player.Name);
- command.Execute();
- }
- }
- }
- }
- foreach (var re in MaTrix.Reward.Rewards.Keys)
- {
- if (!client.Rewards.ContainsKey(re))
- {
- MaTrix.Reward.RewardInfo info = new MaTrix.Reward.RewardInfo()
- {
- ID = re
- };
- client.Rewards.Add(info.ID, info);
- }
- }
- }
- public static void RewardLoad(Client.GameState client, MYSQLCONNECTION Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT))
- {
- cmd.Select("Way2Heroes").Where("UID", client.Player.OriginalUID);
- using (MySqlReader rdr = new MySqlReader(cmd, Connection))
- {
- if (rdr.Read())
- {
- byte[] data = rdr.ReadBlob("Way2Heroes");
- if (data.Length > 0)
- {
- using (var stream = new MemoryStream(data))
- using (var reader = new BinaryReader(stream))
- {
- int count = reader.ReadByte();
- for (uint x = 0; x < count; x++)
- {
- MaTrix.Way2Heroes.StageInfo item = new MaTrix.Way2Heroes.StageInfo();
- item = item.ReadItem(reader);
- client.Way2Heroes.Add(item.UID, item);
- }
- }
- }
- }
- else
- {
- using (var command = new MySqlCommand(MySqlCommandType.INSERT))
- {
- command.Insert("Way2Heroes").Insert("UID", client.Player.OriginalUID).Insert("Name", client.Player.Name);
- command.Execute();
- }
- }
- }
- }
- }
- public static void ChiLoad(Client.GameState client, MYSQLCONNECTION Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT))
- {
- cmd.Select("chi").Where("uid", client.Player.OriginalUID);
- using (MySqlReader rdr = new MySqlReader(cmd, Connection))
- {
- if (rdr.Read())
- {
- client.ChiPoints = rdr.ReadUInt32("points");
- byte[] data = rdr.ReadBlob("chipowers");
- if (data.Length > 0)
- {
- using (var stream = new MemoryStream(data))
- using (var reader = new BinaryReader(stream))
- {
- int count = reader.ReadByte();
- for (int i = 0; i < count; i++)
- {
- var power = new Game.ConquerStructures.ChiPowerStructure().Deserialize(reader);
- if (power.Power == (Enums.ChiPowerType)(i + 1))
- client.ChiPowers.Add(power);
- }
- }
- }
- data = rdr.ReadBlob("rchipowers");
- if (data.Length > 0)
- {
- using (var stream = new MemoryStream(data))
- using (var reader = new BinaryReader(stream))
- {
- int count = reader.ReadByte();
- for (int i = 0; i < count; i++)
- {
- var power = new Game.ConquerStructures.ChiPowerStructure().Deserialize(reader, true);
- // if (power.Power == (Enums.ChiPowerType)(i + 1))
- client.Retretead_ChiPowers[i] = power;
- }
- }
- }
- }
- else
- {
- using (var command = new MySqlCommand(MySqlCommandType.INSERT))
- {
- command.Insert("chi").Insert("uid", client.Player.OriginalUID).Insert("name", client.Player.Name);
- command.Execute();
- }
- }
- client.ChiData = new ChiTable.ChiData() { UID = client.Player.UID, Name = client.Player.Name, Powers = client.ChiPowers };
- }
- }
- }
- public static void LoadSpells(GameState client, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- if (client.Fake) return;
- if (client.TransferedPlayer) return;
- if (client.Player != null)
- {
- client.Spells = new SafeDictionary<ushort, Interfaces.ISkill>(100);
- MySqlReader reader = new MySqlReader(new COServer.Database.MySqlCommand(MySqlCommandType.SELECT).Select("cq_skills").Where("PlayerID", (long)client.Player.OriginalUID), Connection);
- while (reader.Read())
- {
- Interfaces.ISkill skill = new Spell(true)
- {
- ID = reader.ReadUInt16("ID"),
- Level = reader.ReadByte("Level"),
- PreviousLevel = reader.ReadByte("PreviousLevel"),
- Experience = reader.ReadUInt32("Experience"),
- Souls = (Spell.Soul_Level)reader.ReadByte("LevelJH"),
- LevelJH2 = reader.ReadByte("LevelJH2"),
- Available = true
- };
- if (!client.Spells.ContainsKey(skill.ID))
- {
- client.Spells.Add(skill.ID, skill);
- }
- }
- }
- }
- public static void LoadProficiencies(GameState client, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- if (client.Fake) return;
- if (client.TransferedPlayer) return;
- if (client.Player != null)
- {
- client.Proficiencies = new SafeDictionary<ushort, Interfaces.IProf>(100);
- MySqlReader reader = new MySqlReader(new COServer.Database.MySqlCommand(MySqlCommandType.SELECT).Select("cq_profs").Where("PlayerID", (long)client.Player.OriginalUID), Connection);
- while (reader.Read())
- {
- Interfaces.IProf prof = new Proficiency(true)
- {
- ID = reader.ReadUInt16("ID"),
- Level = reader.ReadByte("Level"),
- PreviousLevel = reader.ReadByte("PreviousLevel"),
- Experience = reader.ReadUInt32("Experience"),
- Available = true
- };
- if (!client.Proficiencies.ContainsKey(prof.ID))
- {
- client.Proficiencies.Add(prof.ID, prof);
- }
- }
- }
- }
- public static void SubclassLoad(Player Player, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- using (MySqlCommand mySqlCommand = new MySqlCommand(MySqlCommandType.SELECT).Select("subclasses").Where("id", (long)((ulong)Player.OriginalUID)))
- {
- using (MySqlReader mySqlReader = mySqlCommand.CreateReader(Connection))
- {
- while (mySqlReader.Read())
- {
- Game.SubClass subClass = new Game.SubClass();
- subClass.ID = mySqlReader.ReadByte("Uid");
- subClass.Level = mySqlReader.ReadByte("Level");
- subClass.Phase = mySqlReader.ReadByte("Phase");
- Player.SubClasses.Classes.Add(subClass.ID, subClass);
- // Player.SubClasses.SendLearn((ID)subClass.ID, subClass.Level, Player.Owner);
- }
- }
- }
- }
- public static void LoadItems(Client.GameState client, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("PlayerID", client.Player.OriginalUID))
- using (var reader = new MySqlReader(cmd, Connection))//htsht8al kda el 3eeb kont nasy dh bs :D b2olk m3ak program item type?el byfok itemtype 3lshan a3ml file el client?
- {
- while (reader.Read())
- {
- var item = deserialzeItem(reader);
- if (!ConquerItemInformation.BaseInformations.ContainsKey(item.ID))
- continue;
- HandleInscribing(item, client);
- ItemAddingTable.GetAddingsForItem(item);
- #region WareHouse
- if (item.Warehouse == 0)
- {
- switch (item.Position)
- {
- case 0: client.Inventory.Add(item, Game.Enums.ItemUse.None); break;
- default:
- if (item.Position > 29) continue;
- if (client.Equipment.Free((byte)item.Position))
- client.Equipment.Add(item, Game.Enums.ItemUse.None);
- else
- {
- if (client.Inventory.Count < 40)
- {
- item.Position = 0;
- client.Inventory.Add(item, Game.Enums.ItemUse.None);
- if (client.Warehouses[COServer.Game.ConquerStructures.Warehouse.WarehouseID.Market].Count < 20)
- client.Warehouses[COServer.Game.ConquerStructures.Warehouse.WarehouseID.Market].Add(item);
- }
- }
- break;
- }
- }
- else
- {
- if (item != null)
- {
- COServer.Game.ConquerStructures.Warehouse.WarehouseID whID = (Game.ConquerStructures.Warehouse.WarehouseID)item.Warehouse;
- if (client.Warehouses.ContainsKey(whID))
- {
- client.Warehouses[whID].Add(item);
- }
- else
- {
- using (var cmdx = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("Uid", (uint)item.Warehouse))
- using (var readerx = new MySqlReader(cmdx))
- if (readerx.Read())
- {
- client.Warehouses.Add((COServer.Game.ConquerStructures.Warehouse.WarehouseID)(uint)item.Warehouse, new COServer.Game.ConquerStructures.Warehouse(client, (COServer.Game.ConquerStructures.Warehouse.WarehouseID)(uint)item.Warehouse));
- client.Warehouses[(COServer.Game.ConquerStructures.Warehouse.WarehouseID)(uint)whID].Add(item);
- }
- }
- }
- }
- #endregion WareHouse
- if (item.ID == 720828)
- {
- string str = reader.ReadString("agate");
- uint key = 0;
- string[] strArray = str.Split(new char[] { '#' });
- foreach (string str2 in strArray)
- {
- if (str2.Length > 6)
- {
- item.Agate_map.Add(key, str2);
- key++;
- }
- }
- }
- }
- }
- }
- public static ConquerItem deserialzeItem(MySqlReader reader)
- {
- ConquerItem item = new Network.GamePackets.ConquerItem(true);
- item.ID = reader.ReadUInt32("Id");
- item.UID = ConquerItem.ItemUID.Next;
- item.OriginalUID = reader.ReadUInt32("Uid");
- item.Durability = reader.ReadUInt16("Durability");
- item.MaximDurability = reader.ReadUInt16("MaximDurability");
- item.Position = reader.ReadUInt16("Position");
- item.Agate = reader.ReadString("Agate");
- item.SocketProgress = reader.ReadUInt32("SocketProgress");
- item.PlusProgress = reader.ReadUInt32("PlusProgress");
- item.SocketOne = (Game.Enums.Gem)reader.ReadUInt16("SocketOne");
- item.SocketTwo = (Game.Enums.Gem)reader.ReadUInt16("SocketTwo");
- item.Effect = (Game.Enums.ItemEffect)reader.ReadUInt16("Effect");
- item.Mode = Game.Enums.ItemMode.Default;
- item.Plus = reader.ReadByte("Plus");
- item.Bless = reader.ReadByte("Bless");
- item.Bound = reader.ReadBoolean("Bound");
- item.Enchant = reader.ReadByte("Enchant");
- item.Lock = reader.ReadByte("Locked");
- item.UnlockEnd = DateTime.FromBinary(reader.ReadInt64("UnlockEnd"));
- item.Suspicious = reader.ReadBoolean("Suspicious");
- item.SuspiciousStart = DateTime.FromBinary(reader.ReadInt64("SuspiciousStart"));
- item.Color = (Game.Enums.Color)reader.ReadUInt32("Color");
- item.Warehouse = reader.ReadUInt32("Warehouse");
- item.StackSize = reader.ReadUInt16("StackSize");
- item.RefineItem = reader.ReadUInt32("RefineryItem");
- Int64 rTime = reader.ReadInt64("RefineryTime");
- if (item.ID == 300000)
- {
- uint NextSteedColor = reader.ReadUInt32("NextSteedColor");
- item.NextGreen = (byte)(NextSteedColor & 0xFF);
- item.NextBlue = (byte)((NextSteedColor >> 8) & 0xFF);
- item.NextRed = (byte)((NextSteedColor >> 16) & 0xFF);
- }
- if (item.RefineItem > 0 && rTime != 0)
- {
- item.RefineryTime = DateTime.FromBinary(rTime);
- if (DateTime.Now > item.RefineryTime)
- {
- item.RefineryTime = new DateTime(0);
- item.RefineItem = 0;
- }
- }
- if (item.Lock == 2)
- if (DateTime.Now >= item.UnlockEnd)
- item.Lock = 0;
- item.DayStamp = DateTime.FromBinary(reader.ReadInt64("DayStamp"));
- item.Days = reader.ReadByte("Days");
- return item;
- }
- public static void GetAddingsForItem(ConquerItem item, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("itemadding").Where("UID", item.OriginalUID))
- using (var reader = cmd.CreateReader(Connection))
- {
- while (reader.Read())
- {
- if (reader.ReadInt32("Addingtype") == 0)
- {
- ItemAdding.Purification_ purification = new ItemAdding.Purification_();
- purification.ItemUID = item.UID;
- purification.Available = true;
- purification.PurificationItemID = reader.ReadUInt32("Addingid");
- purification.PurificationDuration = reader.ReadUInt32("Duration");
- purification.PurificationLevel = reader.ReadUInt32("Addinglevel");
- purification.AddedOn = DateTime.FromBinary(reader.ReadInt64("Addedon"));
- item.Purification = purification;
- }
- else
- {
- ItemAdding.Refinery_ extraeffect = new ItemAdding.Refinery_();
- extraeffect.ItemUID = item.UID;
- extraeffect.Available = true;
- extraeffect.EffectID = reader.ReadUInt32("Addingid");
- extraeffect.EffectLevel = reader.ReadUInt32("Addinglevel");
- extraeffect.EffectPercent = reader.ReadUInt32("Addingpercent");
- extraeffect.EffectDuration = reader.ReadUInt32("Duration");
- extraeffect.AddedOn = DateTime.FromBinary(reader.ReadInt64("Addedon"));
- item.ExtraEffect = extraeffect;
- }
- }
- }
- }
- public static void HandleInscribing(ConquerItem item, Client.GameState client, bool detained = false)
- {
- if (client.Player.GuildID != 0)
- {
- if (client.Guild != null)
- {
- int itemPosition = Network.PacketHandler.ArsenalPosition(item.ID);
- if (itemPosition != -1)
- {
- var arsenal = client.Guild.Arsenals[itemPosition];
- if (arsenal.Unlocked)
- {
- if (arsenal.ItemDictionary.ContainsKey(item.OriginalUID))
- {
- var arsenalItem = arsenal.ItemDictionary[item.OriginalUID];
- arsenalItem.Update(item, client);
- item.Inscribed = true;
- client.ArsenalDonations[itemPosition] += arsenalItem.DonationWorth;
- }
- }
- }
- }
- }
- }
- public static bool LoadPlayer(Client.GameState client, uint uid = 0, MySql.Data.MySqlClient.MySqlConnection Connection = null)
- {
- if (uid == 0)
- uid = client.Account.OriginalPlayerID;
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("entities").Where("UID", uid))
- using (var reader = new MySqlReader(cmd, Connection))
- {
- if (reader.Read())
- {
- client.WarehousePW = reader.ReadUInt32("WarehousePW");
- client.Player = new Game.Player(Game.PlayerFlag.Player, false);
- client.Player.Name = reader.ReadString("Name");
- client.Player.NobalityDonation = reader.ReadUInt64("Donation");
- if (client.Player.Name.Length > 15)
- client.Player.Name = client.Player.Name.Substring(0, 15);
- client.HeadgearClaim = reader.ReadBoolean("HeadgearClaim");
- client.Player.Spouse = reader.ReadString("Spouse");
- client.Player.Owner = client;
- client.Voted = reader.ReadBoolean("VotePoint");
- client.Player.MonstersPoints = reader.ReadUInt32("MonstersPoints");
- client.Player.AddFlower = reader.ReadUInt32("Flower");
- client.MoneySave = reader.ReadUInt32("MoneySave");
- client.Player.Experience = reader.ReadUInt64("Experience");
- client.Player.Money = reader.ReadUInt32("Money");
- client.Player.ConquerPoints = reader.ReadUInt32("ConquerPoints");
- client.Player.TreasuerPoints = reader.ReadUInt32("TreasuerPoints");
- client.Player.OriginalUID = reader.ReadUInt32("UID");
- client.Player.UID = client.Account.PlayerID;
- client.Player.MyAchievement = new Game.Achievement(client.Player);
- client.Player.MyAchievement.Load(reader.ReadString("Achievement"));
- client.Player.Hitpoints = reader.ReadUInt32("Hitpoints");
- client.Player.QuizPoints = reader.ReadUInt32("QuizPoints");
- client.Player.Body = reader.ReadUInt16("Body");
- client.Player.Face = reader.ReadUInt16("Face");
- client.Player.Strength = reader.ReadUInt16("Strength");
- client.Player.Titles = new ConcurrentDictionary<TitlePacket.Titles, DateTime>();
- client.Player.MyTitle = (TitlePacket.Titles)reader.ReadUInt32("My_Title");
- client.Player.Agility = reader.ReadUInt16("Agility");
- client.Player.Spirit = reader.ReadUInt16("Spirit");
- client.Player.Vitality = reader.ReadUInt16("Vitality");
- client.Player.Atributes = reader.ReadUInt16("Atributes");
- PlayerTable.SetFlowers(client);
- client.ElitePKStats = new ElitePK.FighterStats(client.Player.UID, client.Player.Name, client.Player.Mesh);
- client.Player.SubClass = reader.ReadByte("SubClass");
- client.Player.SubClassLevel = reader.ReadByte("SubClassLevel");
- client.Player.SubClasses.Active = client.Player.SubClass;
- client.Player.SubClassesActive = client.Player.SubClass;
- client.Player.SubClasses.StudyPoints = reader.ReadUInt16("StudyPoints");
- client.VirtuePoints = (uint)reader.ReadUInt32("VirtuePoints");
- client.Player.Mana = reader.ReadUInt16("Mana");
- client.Player.HairStyle = reader.ReadUInt16("HairStyle");
- client.Player.OnlinePoints = reader.ReadUInt32("OnlinePoints");
- client.Player.OnlinePointStamp = Time32.Now;
- client.Player.MapID = reader.ReadUInt16("MapID");
- client.VendingDisguise = reader.ReadUInt16("VendingDisguise");
- client.SpiritBeadQ.CanAccept = !Convert.ToBoolean(reader.ReadUInt32("CanAcceptSpiritBead"));
- client.SpiritBeadQ.Bead = (uint)reader.ReadUInt32("SpiritQuestBead");
- client.SpiritBeadQ.CollectedSpirits = (uint)reader.ReadUInt32("CollectedSpirits");
- client.Player.CountryID = (Game.Enums.CountryID)reader.ReadUInt32("CountryID");
- if (client.VendingDisguise == 0)
- client.VendingDisguise = 223;
- client.Player.X = reader.ReadUInt16("X");
- client.Player.Y = reader.ReadUInt16("Y");
- client.NecklaceClaim = reader.ReadBoolean("NecklaceClaim");
- client.ArmorClaim = reader.ReadBoolean("ArmorClaim");
- client.WeaponClaim = reader.ReadBoolean("WeaponClaim");
- client.RingClaim = reader.ReadBoolean("RingClaim");
- client.BootsClaim = reader.ReadBoolean("BootsClaim");
- client.FanClaim = reader.ReadBoolean("FanClaim");
- client.TowerClaim = reader.ReadBoolean("TowerClaim");
- client.HeadgearClaim = reader.ReadBoolean("HeadgearClaim");
- client.InLottery = reader.ReadBoolean("InLottery");
- client.LotteryEntries = reader.ReadByte("LotteryEntries");
- client.LastLotteryEntry = DateTime.FromBinary(reader.ReadInt64("LastLotteryEntry"));
- client.Player.PreviousMapID = reader.ReadUInt16("PreviousMapID");
- client.Player.PKPoints = reader.ReadUInt16("PKPoints");
- client.Player.Class = reader.ReadByte("Class");
- client.Player.Reborn = reader.ReadByte("Reborn");
- client.Player.Level = reader.ReadByte("Level");
- client.Player.FirstRebornClass = reader.ReadByte("FirstRebornClass");
- client.Player.SecondRebornClass = reader.ReadByte("SecondRebornClass");
- client.Player.FirstRebornLevel = reader.ReadByte("FirstRebornLevel");
- client.Player.SecondRebornLevel = reader.ReadByte("SecondRebornLevel");
- client.LastDragonBallUse = DateTime.FromBinary(reader.ReadInt64("LastDragonBallUse"));
- client.LastResetTime = DateTime.FromBinary(reader.ReadInt64("LastResetTime"));
- client.Player.EnlightenPoints = reader.ReadUInt16("EnlightenPoints");
- client.Player.EnlightmentTime = reader.ReadUInt16("EnlightmentWait");
- client.Player.ReceivedEnlightenPoints = reader.ReadByte("EnlightsReceived");
- client.Player.DoubleExperienceTime = reader.ReadUInt16("DoubleExpTime");
- client.DoubleExpToday = reader.ReadBoolean("DoubleExpToday");
- client.Player.HeavenBlessing = reader.ReadUInt32("HeavenBlessingTime");
- client.Player.VIPLevel = reader.ReadByte("VIPLevel");
- client.Player.PrevX = reader.ReadUInt16("PreviousX");
- client.Player.PrevY = reader.ReadUInt16("PreviousY");
- client.ExpBalls = reader.ReadByte("ExpBalls");
- client.Player.ClanId = reader.ReadUInt32("ClanId");
- client.Player.ClanRank = (Clan.Ranks)reader.ReadUInt32("ClanRank");
- UInt64 lastLoginInt = reader.ReadUInt32("LastLogin");
- if (lastLoginInt != 0)
- client.Player.LastLogin = Kernel.FromDateTimeInt(lastLoginInt);
- else
- client.Player.LastLogin = DateTime.Now;
- Game.ConquerStructures.Nobility.Sort(client.Player.OriginalUID);
- if (CrossServer.Guilds[client.Server.ServerName] != null)
- {
- if (CrossServer.Guilds[client.Server.ServerName].ContainsKey(reader.ReadUInt32("GuildID")))
- {
- client.Guild = CrossServer.Guilds[client.Server.ServerName][reader.ReadUInt32("GuildID")];
- if (client.Guild.Members.ContainsKey(client.Player.OriginalUID))
- {
- client.AsMember = client.Guild.Members[client.Player.OriginalUID];
- client.AsMember.ArsenalDonation = client.GetArsenalDonation();
- client.AsMember.LastLogin = reader.ReadUInt32("GuildLastLogin");
- if (client.AsMember.GuildID == 0)
- {
- client.AsMember = null;
- client.Guild = null;
- }
- else
- {
- client.Player.GuildID = (ushort)client.Guild.ID;
- client.Player.GuildRank = (ushort)client.AsMember.Rank;
- }
- }
- }
- }
- else
- client.Guild = null;
- if (CrossServer.Board[client.Server.ServerName] != null)
- {
- if (!CrossServer.Board[client.Server.ServerName].TryGetValue(client.Player.OriginalUID, out client.NobilityInformation))
- {
- client.NobilityInformation = new COServer.Game.ConquerStructures.NobilityInformation();
- client.NobilityInformation.PlayerUID = client.Player.UID;
- client.NobilityInformation.Name = client.Player.Name;
- client.NobilityInformation.Donation = 0;
- client.NobilityInformation.Rank = COServer.Game.ConquerStructures.NobilityRank.Serf;
- client.NobilityInformation.Position = -1;
- client.NobilityInformation.Gender = 1;
- client.NobilityInformation.Mesh = client.Player.Mesh;
- if (client.Player.Body % 10 >= 3)
- client.NobilityInformation.Gender = 0;
- }
- else
- {
- client.Player.NobilityRank = client.NobilityInformation.Rank;
- }
- }
- Game.IJiangHu Jiang;
- if (CrossServer.JiangHuClients[client.Server.ServerName] != null)
- {
- if (CrossServer.JiangHuClients[client.Server.ServerName].TryGetValue(client.Player.OriginalUID, out Jiang))
- {
- client.Player.MyJiang = Jiang as Game.JiangHu;
- client.Player.MyJiang.TimerStamp = DateTime.Now;
- client.Player.MyJiang.Level = client.Player.Level;
- }
- }
- LoadTopStatus(client.Player, client.Server.MySqlConnection);
- client.Player.FullyLoaded = true;
- return true;
- }
- else
- return false;
- }
- }
- public static void LoadTopStatus(Player client, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- using (MySqlCommand Command = new MySqlCommand(MySqlCommandType.SELECT))
- {
- Command.Select("status").Where("Playerid", client.OriginalUID).Execute();
- using (MySqlReader Reader = new MySqlReader(Command, Connection))
- {
- while (Reader.Read())
- {
- UInt64 Title = Reader.ReadUInt64("status");
- DateTime Time = Kernel.FromDateTimeInt(Reader.ReadUInt64("time"));
- if (DateTime.Now > Time)
- client.RemoveTopStatus(Title);
- else
- {
- client.AddTopStatus(Title, Time, false);
- }
- }
- }
- }
- }
- public static void Loadvariables(uint uid, out Game.VariableVault vars, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("variablevault").Where("Playerid", uid))
- using (var reader = cmd.CreateReader(Connection))
- {
- vars = new Game.VariableVault();
- if (reader.Read())
- {
- vars.Deserialize(reader.ReadBlob("data"));
- }
- else
- {
- string SQL = "INSERT INTO `variablevault` (Playerid, data) VALUES (@PlayerID, @Data)";
- byte[] rawData = vars.Serialize();
- using (var conn = Connection)
- {
- conn.Open();
- using (var cmd2 = new MySql.Data.MySqlClient.MySqlCommand(SQL, conn))
- {
- cmd2.Parameters.AddWithValue("@PlayerID", uid);
- cmd2.Parameters.AddWithValue("@Data", rawData);
- cmd2.ExecuteNonQuery();
- }
- }
- }
- }
- }
- public static AccountTable LoadAccount(AccountTable Account, MySql.Data.MySqlClient.MySqlConnection Connection)
- {
- if (Account.OriginalPlayerID == 0) return null;
- Account.Username = "";
- Account.Password = "";
- Account.IP = "";
- Account.LastCheck = DateTime.Now;
- using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("accounts").Where("PlayerID", Account.OriginalPlayerID))
- using (var reader = new MySqlReader(cmd, Connection))
- {
- if (reader.Read())
- {
- Account.Password = reader.ReadString("Password");
- Account.MasterPassword = reader.ReadString("MasterPassword");
- Account.IP = reader.ReadString("Ip");
- Account.PlayerID = Server.PlayerUID.Next;
- Account.LastCheck = DateTime.FromBinary(reader.ReadInt64("LastCheck"));
- Account.State = (AccountTable.AccountState)reader.ReadInt32("State");
- Account.Email = reader.ReadString("Email");
- }
- }
- return Account;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement