public Authorization(Entities.User u) : base((ushort)Enums.Packets.Authorization) { Append(Core.Constants.Error_OK); Append(string.Concat("Gameserver", Config.SERVER_ID)); Append(u.SessionID); Append(u.ID); // User id. Append(u.SessionID); // User session id. Append(u.Displayname); // User Displayname (Nickname). // CLAN BLOCKS // if (u.ClanId == -1) { Fill(4, -1); } else { Objects.Clan Clan = Managers.ClanManager.Instance.GetClan(u.ClanId); if (Clan != null) { Append(u.ClanId); Append(Clan.Name); Append(u.ClanRank); Append(u.ClanRank); } else { Log.Instance.WriteError("User clan is " + u.ClanId.ToString() + " but the server failed to load the clan"); Fill(4, -1); } } // CLAN BLOCKS Append((byte)u.Premium); // Premium Type. Append(0); // Unknown. Append(0); // Unknown. Append(Core.LevelCalculator.GetLevelforExp(u.XP)); // User Level (based on XP). Append(u.XP); // User XP. Append(0); // Unknown. Append(0); // Unknown. Append(u.Money); // User Money Append(u.Kills); // User Kills Append(u.Deaths); // User Deaths Fill(5, 0); // 5 Unknown blocks // SLOT STATE // Append(u.Inventory.SlotState); // T = Slot Enabled, F = Slot disabled. // EQUIPMENT // Append(u.Inventory.Equipment.ListsInternal[(byte)Classes.Engineer]); // Equipment - Engeneer Append(u.Inventory.Equipment.ListsInternal[(byte)Classes.Medic]); // Equipment - Medic Append(u.Inventory.Equipment.ListsInternal[(byte)Classes.Sniper]); // Equipment - Sniper Append(u.Inventory.Equipment.ListsInternal[(byte)Classes.Assault]); // Equipment - Assault Append(u.Inventory.Equipment.ListsInternal[(byte)Classes.Heavy]); // Equipment - Heavy // INVENTORY // Append(u.Inventory.Itemlist); // END INVENTORY // Fill(2, 0); // Two unknown blocks. }
//Called when the server could not find a clan... maybe the list is outdated private Objects.Clan QueueForClan(uint _clanId) { Objects.Clan NewClan = null; ServerLogger.Instance.Append(ServerLogger.AlertLevel.Information, "Attempting to perform a DB search for a missing clan"); try { MySqlCommand CMD = new MySqlCommand("SELECT name, members, tag, wins, losses, draws, master FROM clan WHERE disbanded = 0 AND validated = 1 AND id = " + _clanId.ToString(), Databases.Game.connection); MySqlDataReader Reader = CMD.ExecuteReader(); Objects.Clan TempClan = null; if (Reader.HasRows) { while (Reader.Read()) { string _name = Reader.GetString("name"); string _tag = Reader.GetString("tag"); uint _members = Reader.GetUInt32("members"); uint _wins = Reader.GetUInt32("wins"); uint _losses = Reader.GetUInt32("losses"); uint _draws = Reader.GetUInt32("draws"); uint _master = Reader.GetUInt32("master"); TempClan = new Objects.Clan(_name, _tag, _clanId, _members, _wins, _losses, _draws, _master); } NewClan = TempClan; } else { ServerLogger.Instance.Append(ServerLogger.AlertLevel.ServerError, "Could not find clan with id after performing a queue to DB" + _clanId.ToString()); } if (!Reader.IsClosed) { Reader.Close(); } } catch { ServerLogger.Instance.Append(ServerLogger.AlertLevel.ServerError, "Failed to perform a queue to update ClanList"); } if (NewClan != null) { ClanList.TryAdd(NewClan.Id, NewClan); } ServerLogger.Instance.Append(ServerLogger.AlertLevel.Information, "A new clan has been found. Updating the Concurrent Dictionary..."); return(NewClan); }
public Objects.Clan GetClan(int _clanId) { Objects.Clan UserClan = null; if (_clanId != -1) //-1 means NO clan { if (!ClanList.TryGetValue(Convert.ToUInt32(_clanId), out UserClan)) { UserClan = QueueForClan(Convert.ToUInt32(_clanId)); } } return(UserClan); }
public RoomPlayers(ArrayList arrPlayers) : base((ushort)Enums.Packets.PlayerInfo) { Append(arrPlayers.Count); foreach (Entities.Player p in arrPlayers) { Append(p.User.ID); // Player account id. Append(p.User.SessionID); // Player session id. Append(p.Id); // The id of the room slot. Append(p.Ready); // Indicates if the player is ready. Append((byte)p.Team); // The team side of the player. Append(p.Weapon); // The weapon that the player is currently wearing. Append(0); // Unknown? Append((byte)p.Class); // The current class of the player. Append(p.Health); // The current health of the player. Append(p.User.Displayname); // The nickname of the player. // CLAN INFORMATION Objects.Clan Clan = Managers.ClanManager.Instance.GetClan(p.User.ClanId); if (Clan == null) { Fill(3, -1); } else { Append(p.User.ClanId); Append(Clan.Name); Append(p.User.ClanRank); } // END CLAN Append(1); // Unknown? Append(0); // Unknown? Append(910); // Unknown? Append((byte)p.User.Premium); // The premium of the current player. Append(-1); // Unknown? Append(p.User.Kills); // The total kills of the player. Append(p.User.Deaths); // The total deaths of the player. Append(new Random().Next(150)); // Unknown? Append(p.User.XP); // The current XP of the player | -1 = Special Badge Append(-1); // The id of the vehicle that the player is in. //DARKRAPTOR: CHECK THIS Append(-1); // The current slot of the vehicle that the player is in. //DARKRAPTOR: CHECK THIS // CONNECTION INFORMATION // Append(p.User.RemoteEndPoint.Address.Address); // The Remote endpoint ip as a long. Append(p.User.RemotePort); // The remote port. Append(p.User.LocalEndPoint.Address.Address); // The Remote endpoint ip as a long. Append(p.User.LocalPort); // The remote port. // END CONNECTION INFO // Append(0); // Unknown? } }
public bool Load() { bool _result = false; ConcurrentDictionary <uint, Objects.Clan> TempList = new ConcurrentDictionary <uint, Objects.Clan>(); try { MySqlCommand CMD = new MySqlCommand("SELECT id, name, members, tag, wins, losses, draws, master FROM clan WHERE disbanded = 0 AND validated = 1", Databases.Game.connection); MySqlDataReader Reader = CMD.ExecuteReader(); if (Reader.HasRows) { while (Reader.Read()) { uint _id = Reader.GetUInt32("id"); string _name = Reader.GetString("name"); string _tag = Reader.GetString("tag"); uint _members = Reader.GetUInt32("members"); uint _wins = Reader.GetUInt32("wins"); uint _losses = Reader.GetUInt32("losses"); uint _draws = Reader.GetUInt32("draws"); uint _master = Reader.GetUInt32("master"); Objects.Clan Clan = new Objects.Clan(_name, _tag, _id, _members, _wins, _losses, _draws, _master); TempList.TryAdd(_id, Clan); } } if (!Reader.IsClosed) { Reader.Close(); } ClanList = TempList; _result = true; } catch { ServerLogger.Instance.Append(ServerLogger.AlertLevel.ServerError, "Could not load clan table from DB"); } return(_result); }
public UserList(int _intPage, ArrayList _userList) : base(28928) { Append(_userList.Count); Append(_intPage); for (int i = 0; i < _userList.Count; i++) { Entities.User u = (Entities.User)_userList[i]; Append(i + _intPage * 10); // List Index Append(u.ID); // UID Append(u.SessionID); // Session ID Append(u.Displayname); // Nickname Objects.Clan Clan = Managers.ClanManager.Instance.GetClan(u.ClanId); if (Clan == null) Fill(4, -1); else { Append(u.ClanId); Append(Clan.Name); Append(u.ClanRank); Append(((u.ClanId > 0) ? 0 : -1)); // Unknown? } Append(0); // Unknown Append(16); // Unknown Append(u.XP); Append((byte)u.Premium); Append(0); } }
public RoomInvite(Entities.User User, string Message) : base((ushort)Enums.Packets.RoomInvite) { //29520 dark Let´s play a room together, come in!!!! Append(1); Append(0); Append(-1); Append(User.SessionID); Append(User.SessionID); // Ping ?! Append(User.Displayname); Objects.Clan UserClan = Managers.ClanManager.Instance.GetClan(User.ClanId); if (UserClan == null) { Fill(4, -1); } else { Append(User.ClanId); Append(UserClan.Tag); Append(User.ClanRank); Append(User.ClanRank); } Append(1); Append(18); Append(User.XP); Append(3); Append(0); Append(-1); Append(Message); Append(User.Room.ID); Append(User.Room.Password); }