Beispiel #1
0
        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.
        }
Beispiel #2
0
        //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);
        }
Beispiel #3
0
        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?
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);

            }

        }
Beispiel #7
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);
        }