コード例 #1
0
ファイル: LoginPacketHandler.cs プロジェクト: rincew1nd/melia
        public void CB_BUY_THEMA(LoginConnection conn, Packet packet)
        {
            var unkInt   = packet.GetInt();
            var newMapId = packet.GetInt();
            var oldMapId = packet.GetInt();

            // Get barrack
            var barrackData = LoginServer.Instance.Data.BarrackDb.Find(newMapId);

            if (barrackData == null)
            {
                return;
            }

            // Check medals
            if (conn.Account.Medals < barrackData.Price)
            {
                Log.Warning("CB_BUY_THEMA: User '{0}' tried to buy barrack without having the necessary coins.");
                return;
            }

            conn.Account.Medals         -= barrackData.Price;
            conn.Account.SelectedBarrack = newMapId;

            Send.BC_ACCOUNT_PROP(conn, conn.Account);
            Send.BC_NORMAL_Run(conn, "THEMA_BUY_SUCCESS");
        }
コード例 #2
0
        public void CB_BUY_THEMA(LoginConnection conn, Packet packet)
        {
            var unkInt   = packet.GetInt();
            var newMapId = packet.GetInt();
            var oldMapId = packet.GetInt();

            // Get barrack
            var mapData = LoginServer.Instance.ClientData.MapDB.FirstOrDefault(x => x.MapId == newMapId);

            if (mapData == null)
            {
                return;
            }

            var barrackData = LoginServer.Instance.ClientData.BarrackDB.FirstOrDefault(x => x.ClassName == mapData.ClassName);

            if (barrackData == null)
            {
                return;
            }

            if (!conn.Account.Money.CanAfford(barrackData.Price))
            {
                Log.Warning("CB_BUY_THEMA: User '{0}' tried to buy barrack without having the necessary coins.");
                return;
            }

            conn.Account.PurchaseBarrack(newMapId, barrackData.Price);

            Send.BC_ACCOUNT_PROP(conn, conn.Account);
            Send.BC_NORMAL_Run(conn, BCNormalMsg.THEMA_BUY_SUCCESS);
        }
コード例 #3
0
ファイル: LoginPacketHandler.cs プロジェクト: LewisGet/melia
        public void CB_BARRACKNAME_CHANGE(LoginConnection conn, Packet packet)
        {
            var extra      = packet.GetBin(12);
            var name       = packet.GetString(10);
            var l1         = packet.GetLong();
            var checkName  = packet.GetString(10);
            var i1         = packet.GetInt();
            var s1         = packet.GetShort();
            var l2         = packet.GetLong();
            var nameLength = packet.GetLong();
            var l3         = packet.GetLong();

            // Check availability
            var exists = LoginServer.Instance.Database.TeamNameExists(name);

            if (exists)
            {
                Send.BC_BARRACKNAME_CHECK_RESULT(conn, TeamNameChangeResult.TeamNameAlreadyExist, conn.Account.Name);
                return;
            }

            if (name != checkName)
            {
                Send.BC_BARRACKNAME_CHECK_RESULT(conn, TeamNameChangeResult.TeamChangeFailed, conn.Account.Name);
                return;
            }

            // Set team name
            conn.Account.TeamName = name;
            LoginServer.Instance.Database.UpdateTeamName(conn.Account.Id, name);

            Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.Okay, name);
            Send.BC_ACCOUNT_PROP(conn, conn.Account);
            Send.BC_NORMAL_Run(conn, BarrackMessage.THEMA_BUY_SUCCESS);
        }
コード例 #4
0
        public void CB_BARRACKNAME_CHANGE(LoginConnection conn, Packet packet)
        {
            var name = packet.GetString(64);

            if (!conn.Account.IsTeamNameValid(name))
            {
                Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.TeamChangeFailed);
                return;
            }

            var exists = LoginServer.Instance.Database.TeamNameExists(name);

            if (exists)
            {
                Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.TeamNameAlreadyExist);
                return;
            }

            if (String.IsNullOrEmpty(conn.Account.TeamName))
            {
                conn.Account.AssignTeamName(name);
                Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.Okay);
            }
            else
            {
                conn.Account.PurchaseTeamNameChange(name, 150);
                Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.Okay);
                Send.BC_ACCOUNT_PROP(conn, conn.Account);
                Send.BC_NORMAL_Run(conn, BCNormalMsg.THEMA_BUY_SUCCESS);
            }

            LoginServer.Instance.Database.SaveAccount(conn.Account);
        }
コード例 #5
0
        public void CB_BARRACKNAME_CHANGE(LoginConnection conn, Packet packet)
        {
            var name = packet.GetString(64);

            // Don't do anything if nothing's changed
            if (name == conn.Account.TeamName)
            {
                return;
            }

            // Check validity
            var valid = (name.Length >= 2 && name.Length <= 16 && !name.Any(a => char.IsWhiteSpace(a)));

            if (!valid)
            {
                Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.TeamChangeFailed, name);
                return;
            }

            // Check availability
            var exists = LoginServer.Instance.Database.TeamNameExists(name);

            if (exists)
            {
                Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.TeamNameAlreadyExist, name);
                return;
            }

            // Set team name
            conn.Account.TeamName = name;
            LoginServer.Instance.Database.UpdateTeamName(conn.Account.Id, name);

            Send.BC_BARRACKNAME_CHANGE(conn, TeamNameChangeResult.Okay, name);
            Send.BC_ACCOUNT_PROP(conn, conn.Account);
            Send.BC_NORMAL_Run(conn, BarrackMessage.THEMA_BUY_SUCCESS);
        }