public void Parse(GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId))
            {
                return;
            }

            Habbo Habbo = ButterflyEnvironment.GetHabboById(UserId);

            if (Habbo == null)
            {
                return;
            }

            Group.MakeAdmin(UserId);

            Room Room = null;

            if (ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(UserId);
                if (User != null)
                {
                    if (!User._statusses.ContainsKey("flatctrl 3"))
                    {
                        User.SetStatus("flatctrl 3", "");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendPacket(new YouAreControllerComposer(3));
                    }
                }
            }

            Session.SendPacket(new GroupMemberUpdatedComposer(GroupId, Habbo, 1));
        }
示例#2
0
        public static UserData GetUserData(int UserId)
        {
            DataRow row;
            DataRow row2;
            int     userID;

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.SetQuery("SELECT * FROM users WHERE id = @id LIMIT 1");
                queryreactor.AddParameter("id", UserId);
                row = queryreactor.GetRow();
                if (row == null)
                {
                    return((UserData)null);
                }

                userID = Convert.ToInt32(row["id"]);
                if (ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(userID) != null)
                {
                    return((UserData)null);
                }

                queryreactor.SetQuery("SELECT * FROM user_stats WHERE id = @id");
                queryreactor.AddParameter("id", UserId);
                row2 = queryreactor.GetRow();

                if (row2 == null)
                {
                    queryreactor.RunQuery("INSERT INTO user_stats (id) VALUES ('" + UserId + "')");
                    queryreactor.SetQuery("SELECT * FROM user_stats WHERE id = " + UserId);
                    row2 = queryreactor.GetRow();
                }
            }
            Dictionary <string, UserAchievement> achievements = new Dictionary <string, UserAchievement>();
            List <int>   favouritedRooms = new List <int>();
            List <int>   RoomRight       = new List <int>();
            List <Badge> badges          = new List <Badge>();
            Dictionary <int, MessengerBuddy>   friends   = new Dictionary <int, MessengerBuddy>();
            Dictionary <int, MessengerRequest> requests  = new Dictionary <int, MessengerRequest>();
            Dictionary <int, int>          quests        = new Dictionary <int, int>();
            Dictionary <int, Relationship> Relationships = new Dictionary <int, Relationship>();
            List <int> MyGroups = new List <int>();

            Habbo user = GenerateHabbo(row, row2, false);

            return(new UserData(userID, achievements, favouritedRooms, badges, friends, requests, quests, MyGroups, user, Relationships, RoomRight));
        }
示例#3
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (Session.GetHabbo() == null)
            {
                return;
            }

            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room == null || !room.CheckRights(Session, true))
            {
                return;
            }

            if (room.UsersWithRights.Count == 0)
            {
                return;
            }

            foreach (int num in room.UsersWithRights)
            {
                RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(num);
                if (roomUserByHabbo != null)
                {
                    if (!roomUserByHabbo.IsBot)
                    {
                        roomUserByHabbo.GetClient().SendPacket(new YouAreControllerComposer(0));

                        roomUserByHabbo.UpdateNeeded = true;
                    }
                }
                ServerPacket Response3 = new ServerPacket(ServerPacketHeader.FlatControllerRemovedMessageComposer);
                Response3.WriteInteger(room.Id);
                Response3.WriteInteger(num);
                Session.SendPacket(Response3);
            }
            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                queryreactor.RunQuery("DELETE FROM room_rights WHERE room_id = " + room.Id);

            room.UsersWithRights.Clear();

            ServerPacket Response2 = new ServerPacket(ServerPacketHeader.RoomRightsListMessageComposer);

            Response2.WriteInteger(room.RoomData.Id);
            Response2.WriteInteger(0);
            Session.SendPacket(Response2);
        }
示例#4
0
        public void PlaySong()
        {
            if (mSongQueuePosition >= mPlaylist.Count)
            {
                mSongQueuePosition = 0;
            }

            if (mPlaylist.Count == 0)
            {
                Stop();
                return;
            }

            mSong = mPlaylist[mSongQueuePosition];
            mStartedPlayingTimestamp = ButterflyEnvironment.GetUnixTimestamp();
            mBroadcastNeeded         = true;
        }
示例#5
0
        public RolePlayer(int pRpId, int pId, int pHealth, int pMoney, int pMunition, int pExp, int pEnergy, int pWeaponGun, int pWeaponCac)
        {
            this._rpId     = pRpId;
            this._id       = pId;
            this.Health    = pHealth;
            this.Energy    = pEnergy;
            this.Money     = pMoney;
            this.Munition  = pMunition;
            this.Exp       = pExp;
            this.PvpEnable = true;
            this.WeaponCac = ButterflyEnvironment.GetGame().GetRoleplayManager().GetWeaponManager().GetWeaponCac(pWeaponCac);
            this.WeaponGun = ButterflyEnvironment.GetGame().GetRoleplayManager().GetWeaponManager().GetWeaponGun(pWeaponGun);

            this.GunLoad      = 6;
            this.GunLoadTimer = 0;

            int Level = 1;

            for (int i = 1; i < 100; i++)
            {
                int expmax = (i * 50) + (i * 10) * i;

                if (Exp >= expmax && i < 99)
                {
                    continue;
                }

                Level = i;
                break;
            }
            this.Level     = Level;
            this.HealthMax = 90 + (this.Level * 10);

            this.SendPrison  = false;
            this.PrisonTimer = 0;
            this.Dead        = false;
            this.DeadTimer   = 0;

            this.AggroTimer = 0;
            this.SlowTimer  = 0;

            this._inventory = new ConcurrentDictionary <int, RolePlayInventoryItem>();
            //this.LoadInventory();

            this.TradeId = 0;
        }
示例#6
0
        public void BanUser(GameClient Client, string Moderator, double LengthSeconds, string Reason, bool IpBan, bool MachineBan)
        {
            if (string.IsNullOrEmpty(Reason))
            {
                Reason = "Ne respect pas les régles";
            }

            string Variable = Client.GetHabbo().Username.ToLower();
            string str      = "user";
            double Expire   = (double)ButterflyEnvironment.GetUnixTimestamp() + LengthSeconds;

            if (IpBan)
            {
                //Variable = Client.GetConnection().getIp();
                Variable = Client.GetHabbo().IP;
                str      = "ip";
            }

            if (MachineBan)
            {
                Variable = Client.MachineId;
                str      = "machine";
            }

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.SetQuery("INSERT INTO bans (bantype,value,reason,expire,added_by,added_date) VALUES (@rawvar, @var, @reason, '" + Expire + "', @mod, UNIX_TIMESTAMP())");
                queryreactor.AddParameter("rawvar", str);
                queryreactor.AddParameter("var", Variable);
                queryreactor.AddParameter("reason", Reason);
                queryreactor.AddParameter("mod", Moderator);
                queryreactor.RunQuery();
            }
            if (MachineBan)
            {
                this.BanUser(Client, Moderator, LengthSeconds, Reason, true, false);
            }
            else if (IpBan)
            {
                this.BanUser(Client, Moderator, LengthSeconds, Reason, false, false);
            }
            else
            {
                Client.Disconnect();
            }
        }
示例#7
0
 private int NameAvailable(string username)
 {
     username = username.ToLower();
     if (username.Length > 15)
     {
         return(-2);
     }
     if (username.Length < 3)
     {
         return(-2);
     }
     if (!ButterflyEnvironment.IsValidAlphaNumeric(username))
     {
         return(-1);
     }
     return(ButterflyEnvironment.usernameExists(username) ? 0 : 1);
 }
示例#8
0
        public void UpdateUser()
        {
            GameClient client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId);

            if (client != null && client.GetHabbo() != null && client.GetHabbo().GetMessenger() != null && !client.GetHabbo().GetMessenger().AppearOffline)
            {
                mIsOnline   = true;
                mLook       = client.GetHabbo().Look;
                mHideInroom = client.GetHabbo().HideInRoom;
            }
            else
            {
                mIsOnline   = false;
                mLook       = "";
                mHideInroom = true;
            }
        }
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().HasFuse("fuse_mod"))
            {
                return;
            }
            int num = Packet.PopInt();

            if (ButterflyEnvironment.GetGame().GetClientManager().GetNameById(num) != "")
            {
                Session.SendPacket(ModerationManager.SerializeUserInfo(num));
            }
            else
            {
                Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("user.loadusererror", Session.Langue));
            }
        }
示例#10
0
 public SupportTicket(int Id, int Score, int Type, int SenderId, int ReportedId, string Message, int RoomId, string RoomName, double Timestamp)
 {
     this.Id           = Id;
     this.Score        = Score;
     this.Type         = Type;
     this.Status       = TicketStatus.OPEN;
     this.SenderId     = SenderId;
     this.ReportedId   = ReportedId;
     this.ModeratorId  = 0;
     this.Message      = Message;
     this.RoomId       = RoomId;
     this.RoomName     = RoomName;
     this.Timestamp    = Timestamp;
     this.SenderName   = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(SenderId);
     this.ReportedName = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(ReportedId);
     this.ModName      = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(this.ModeratorId);
 }
示例#11
0
        internal void SendInstantMessenger()
        {
            if (ButterflyEnvironment.SystemMute)
            {
                return;
            }
            //if the user we are sending an IM to is on IRC, get the IRC client / connection and send the data there instead of here. Then gtfo.
            uint   userId  = Request.PopWiredUInt();
            string message = ButterflyEnvironment.FilterInjectionChars(Request.PopFixedString());

            if (Session.GetHabbo().GetMessenger() == null)
            {
                return;
            }

            Session.GetHabbo().GetMessenger().SendInstantMessage(userId, message);
        }
示例#12
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room == null)
            {
                return;
            }
            Trade userTrade = room.GetUserTrade(Session.GetHabbo().Id);
            Item  userItem  = Session.GetHabbo().GetInventoryComponent().GetItem(Packet.PopInt());

            if (userTrade == null || userItem == null)
            {
                return;
            }
            userTrade.OfferItem(Session.GetHabbo().Id, userItem);
        }
示例#13
0
        internal RoomAdvertisement GetRandomRoomAdvertisement()
        {
            if (RoomAdvertisements.Count <= 0)
            {
                return(null);
            }

            while (true)
            {
                int RndId = ButterflyEnvironment.GetRandomNumber(0, (RoomAdvertisements.Count - 1));

                if (RoomAdvertisements[RndId] != null && !RoomAdvertisements[RndId].ExceededLimit)
                {
                    return(RoomAdvertisements[RndId]);
                }
            }
        }
示例#14
0
        internal void OpenFlat()
        {
            uint   Id       = Request.PopWiredUInt();
            string Password = Request.PopFixedString();
            int    Junk     = Request.PopWiredInt32();

            Logging.WriteLine("Loading room [" + Id + "]");

            RoomData Data = ButterflyEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id);

            if (Data == null || Data.Type != "private")
            {
                return;
            }

            PrepareRoomForUser(Id, Password);
        }
示例#15
0
        internal static void SellItem(GameClient Session, uint ItemId, int SellingPrice)
        {
            UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId);

            if (Item == null || SellingPrice > 10000 || !CanSellItem(Item))
            {
                Session.GetMessageHandler().GetResponse().Init(610);
                Session.GetMessageHandler().GetResponse().AppendBoolean(false);
                Session.GetMessageHandler().GetResponse();
                Session.GetMessageHandler().SendResponse();
                return;
            }



            int Comission  = CalculateComissionPrice(SellingPrice);
            int TotalPrice = SellingPrice + Comission;
            int ItemType   = 1;

            if (Item.GetBaseItem().Type == 'i')
            {
                ItemType++;
            }

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == DatabaseType.MSSQL)
                {
                    dbClient.setQuery("INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data,state) VALUES (" + Item.BaseItem + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + TotalPrice + ",@public_name," + Item.GetBaseItem().SpriteId + "," + ItemType + "," + ButterflyEnvironment.GetUnixTimestamp() + ",@extra_data, '1')");
                }
                else
                {
                    dbClient.setQuery("INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data) VALUES (" + Item.BaseItem + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + TotalPrice + ",@public_name," + Item.GetBaseItem().SpriteId + "," + ItemType + "," + ButterflyEnvironment.GetUnixTimestamp() + ",@extra_data)");
                }
                dbClient.addParameter("public_name", Item.GetBaseItem().PublicName);
                dbClient.addParameter("extra_data", Item.ExtraData);
                dbClient.runQuery();
            }

            Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, false);
            Session.GetHabbo().GetInventoryComponent().RunDBUpdate();

            Session.GetMessageHandler().GetResponse().Init(610);
            Session.GetMessageHandler().GetResponse().AppendBoolean(true);
            Session.GetMessageHandler().SendResponse();
        }
示例#16
0
 public void GiveBadge(string Badge, int Slot, bool InDatabase)
 {
     if (this.HasBadge(Badge))
     {
         return;
     }
     if (InDatabase)
     {
         using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
         {
             queryreactor.SetQuery("INSERT INTO user_badges (user_id,badge_id,badge_slot) VALUES (" + this.UserId + ",@badge," + Slot + ")");
             queryreactor.AddParameter("badge", Badge);
             queryreactor.RunQuery();
         }
     }
     this.Badges.Add(Badge, new Badge(Badge, Slot));
 }
示例#17
0
        internal void CancelQuest(GameClient Session, ClientMessage Message)
        {
            Quest Quest = GetQuest(Session.GetHabbo().CurrentQuestId);

            if (Quest == null)
            {
                return;
            }

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("DELETE FROM user_quests WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + Quest.Id);
            }

            Session.SendMessage(QuestAbortedComposer.Compose());
            GetList(Session, null);
        }
示例#18
0
        public RoleBot(RPEnemy EnemyConfig)
        {
            this.SetConfig(EnemyConfig);

            this.Dead            = false;
            this.AggroVirtuelId  = 0;
            this.AggroTimer      = 0;
            this.ResetBot        = false;
            this.ResetBotTimer   = 0;
            this.HitCount        = 0;
            this.Dodge           = false;
            this.DodgeTimer      = 0;
            this.GunCharger      = 6;
            this.GunLoadTimer    = 0;
            this.DodgeStartCount = ButterflyEnvironment.GetRandomNumber(2, 4);
            this.ActionTimer     = ButterflyEnvironment.GetRandomNumber(10, 30);
        }
示例#19
0
        private string GetSringChoix(JankenEnum Choix, Language langue)
        {
            switch (Choix)
            {
            case JankenEnum.Ciseaux:
                return(ButterflyEnvironment.GetLanguageManager().TryGetValue("janken.ciseaux", langue));

            case JankenEnum.Feuille:
                return(ButterflyEnvironment.GetLanguageManager().TryGetValue("janken.feuille", langue));

            case JankenEnum.Pierre:
                return(ButterflyEnvironment.GetLanguageManager().TryGetValue("janken.pierre", langue));

            default:
                return("");
            }
        }
示例#20
0
        public LoadInventoryRpComposer(ConcurrentDictionary <int, RolePlayInventoryItem> Items)
            : base(9)
        {
            WriteInteger(Items.Count);

            foreach (RolePlayInventoryItem Item in Items.Values)
            {
                RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(Item.ItemId);

                WriteInteger(Item.ItemId);
                WriteString(RpItem.Name);
                WriteString(RpItem.Desc);
                WriteInteger(Item.Count);
                WriteInteger((int)RpItem.Category);
                WriteInteger(RpItem.UseType);
            }
        }
示例#21
0
文件: Habbo.cs 项目: nightwolf93/Bfly
        internal bool HasFuse(string Fuse)
        {
            if (ButterflyEnvironment.GetGame().GetRoleManager().RankHasRight(Rank, Fuse))
            {
                return(true);
            }

            foreach (string SubscriptionId in GetSubscriptionManager().SubList)
            {
                if (ButterflyEnvironment.GetGame().GetRoleManager().SubHasRight(SubscriptionId, Fuse))
                {
                    return(true);
                }
            }

            return(false);
        }
示例#22
0
        internal void GetRecyclerRewards()
        {
            // GzQAQAXtGIsZJKPAPrIsXLKKPJKsY}JsXBKsX~JJPASCsX|JiXBPsZAKs[|JiYBPsZ}JsXAKsYAKsX}JsY|JsY~Js[{JiZAPs[JsZBKIIRAsX@KsYBKsZJs[@Ks[~JsZ|J

            GetResponse().Init(506);
            GetResponse().AppendInt32(5);

            for (uint i = 5; i >= 1; i--)
            {
                GetResponse().AppendUInt(i);

                if (i <= 1)
                {
                    GetResponse().AppendInt32(0);
                }
                else if (i == 2)
                {
                    GetResponse().AppendInt32(4);
                }
                else if (i == 3)
                {
                    GetResponse().AppendInt32(40);
                }
                else if (i == 4)
                {
                    GetResponse().AppendInt32(200);
                }
                else if (i >= 5)
                {
                    GetResponse().AppendInt32(2000);
                }

                List <EcotronReward> Rewards = ButterflyEnvironment.GetGame().GetCatalog().GetEcotronRewardsForLevel(i);

                GetResponse().AppendInt32(Rewards.Count);

                foreach (EcotronReward Reward in Rewards)
                {
                    GetResponse().AppendStringWithBreak(Reward.GetBaseItem().Type.ToString().ToLower());
                    GetResponse().AppendUInt(Reward.DisplayId);
                }
            }

            SendResponse();
        }
示例#23
0
        public Room(RoomData Data)
        {
            RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(Data.OwnerId);

            if (RPManager != null)
            {
                this.RpRoom            = true;
                this.Pvp               = true;
                this.RpCycleHourEffect = true;
                this.RpTimeSpeed       = false;
                this.RpHour            = -1;
            }

            this.SaveTimer          = 0;
            this.Disposed           = false;
            this.Bans               = new Dictionary <int, double>();
            this.Mutes              = new Dictionary <int, double>();
            this.ActiveTrades       = new List <Trade>();
            this.mCycleEnded        = false;
            this.HeightMapLoaded    = false;
            this.RoomData           = Data;
            this.EveryoneGotRights  = Data.AllowRightsOverride;
            this.IdleTime           = 0;
            this.RoomMuted          = false;
            this.PushPullAllowed    = true;
            this.RoomIngameChat     = false;
            this.gamemap            = new Gamemap(this);
            this.roomItemHandling   = new RoomItemHandling(this);
            this.roomUserManager    = new RoomUserManager(this);
            this.wiredHandler       = new WiredHandler(this);
            this.projecctileManager = new ProjectileManager(this);
            this.chatMessageManager = new ChatMessageManager();
            this.chatMessageManager.LoadRoomChatlogs(this.Id);
            this.LoadRights();
            this.GetRoomItemHandler().LoadFurniture();
            if (this.RoomData.OwnerName == "WibboGame")
            {
                this.GetRoomItemHandler().LoadFurniture(5400713);
            }

            this.GetGameMap().GenerateMaps();
            this.LoadBots();
            this.InitPets();
            this.lastTimerReset = DateTime.Now;
        }
示例#24
0
        public bool TryExecute(string[] parameters)
        {
            if (parameters.Length != 3)
            {
                return(false);
            }
            int Userid = 0;

            if (!int.TryParse(parameters[1], out Userid))
            {
                return(false);
            }
            if (Userid == 0)
            {
                return(false);
            }

            GameClient Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(Userid);

            if (Client == null || Client.GetHabbo() == null)
            {
                return(false);
            }

            int RoomId = 0;

            if (!int.TryParse(parameters[2], out RoomId))
            {
                return(false);
            }
            if (RoomId == 0)
            {
                return(false);
            }

            Room room = ButterflyEnvironment.GetGame().GetRoomManager().LoadRoom(RoomId);

            if (room == null)
            {
                return(false);
            }

            Client.SendPacket(new GetGuestRoomResultComposer(Client, room.RoomData, false, true));
            return(true);
        }
示例#25
0
        public static ServerPacket SerializeRoomTool(RoomData Data)
        {
            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Data.Id);
            int  i    = 0;

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                try
                {
                    queryreactor.SetQuery("SELECT id FROM users WHERE username = @owner");
                    queryreactor.AddParameter("owner", Data.OwnerName);
                    i = Convert.ToInt32(queryreactor.GetRow()[0]);
                }
                catch (Exception ex)
                {
                    Logging.HandleException(ex, "ModerationTool.SerializeRoomTool");
                }
            }
            ServerPacket serverMessage = new ServerPacket(ServerPacketHeader.ModeratorRoomInfoMessageComposer);

            serverMessage.WriteInteger(Data.Id);
            serverMessage.WriteInteger(Data.UsersNow);
            if (room != null)
            {
                serverMessage.WriteBoolean(room.GetRoomUserManager().GetRoomUserByHabbo(Data.OwnerName) != null);
            }
            else
            {
                serverMessage.WriteBoolean(false);
            }
            serverMessage.WriteInteger(i);
            serverMessage.WriteString(Data.OwnerName);
            serverMessage.WriteBoolean(room != null);
            if (room != null)
            {
                serverMessage.WriteString(Data.Name);
                serverMessage.WriteString(Data.Description);
                serverMessage.WriteInteger(Data.TagCount);
                foreach (string s in Data.Tags)
                {
                    serverMessage.WriteString(s);
                }
            }
            return(serverMessage);
        }
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int NumEnable = Packet.PopInt();

            if (NumEnable < 0)
            {
                return;
            }

            if (!ButterflyEnvironment.GetGame().GetEffectsInventoryManager().EffectExist(NumEnable, Session.GetHabbo().HasFuse("fuse_mod")))
            {
                return;
            }

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            int CurrentEnable = User.CurrentEffect;

            if (CurrentEnable == 28 || CurrentEnable == 29 || CurrentEnable == 30 || CurrentEnable == 37 || CurrentEnable == 184 || CurrentEnable == 77 || CurrentEnable == 103 ||
                CurrentEnable == 40 || CurrentEnable == 41 || CurrentEnable == 42 || CurrentEnable == 43 ||
                CurrentEnable == 49 || CurrentEnable == 50 || CurrentEnable == 51 || CurrentEnable == 52 ||
                CurrentEnable == 33 || CurrentEnable == 34 || CurrentEnable == 35 || CurrentEnable == 36)
            {
                return;
            }

            if (User.team != Team.none || User.InGame)
            {
                return;
            }

            User.ApplyEffect(NumEnable);
        }
示例#27
0
        public void TryAuthenticate(string AuthTicket)
        {
            if (string.IsNullOrEmpty(AuthTicket))
            {
                return;
            }

            string ip = this.GetConnection().getIp();

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.SetQuery("SELECT id FROM bans WHERE expire > @nowtime AND (bantype = 'ip' AND value = @IP1) LIMIT 1");
                queryreactor.AddParameter("nowtime", ButterflyEnvironment.GetUnixTimestamp());
                queryreactor.AddParameter("IP1", ip);

                DataRow IsBanned = queryreactor.GetRow();
                if (IsBanned != null)
                {
                    return;
                }

                queryreactor.SetQuery("SELECT user_id, is_staff, langue FROM user_websocket WHERE auth_ticket = @sso");
                queryreactor.AddParameter("sso", AuthTicket);

                DataRow dUserInfo = queryreactor.GetRow();
                if (dUserInfo == null)
                {
                    return;
                }

                this.UserId   = Convert.ToInt32(dUserInfo["user_id"]);
                this._isStaff = ButterflyEnvironment.EnumToBool((string)dUserInfo["is_staff"]);
                this.Langue   = LanguageManager.ParseLanguage(Convert.ToString(dUserInfo["langue"]));
                queryreactor.RunQuery("UPDATE user_websocket SET auth_ticket = '' WHERE user_id = '" + UserId + "'");

                this._sendSettingSound(queryreactor);
            }

            ButterflyEnvironment.GetGame().GetClientWebManager().LogClonesOut(UserId);
            ButterflyEnvironment.GetGame().GetClientWebManager().RegisterClient(this, UserId);

            this.SendPacket(new AuthOkComposer());
            this.SendPacket(new UserIsStaffComposer(this._isStaff));
            //this.SendPacket(new NotifTopInitComposer(ButterflyEnvironment.GetGame().GetNotifTopManager().GetAllMessages()));
        }
示例#28
0
        public static void InvokeCommand(string inputData)
        {
            if (string.IsNullOrEmpty(inputData))
            {
                return;
            }

            try
            {
                #region Command parsing
                string[] parameters = inputData.Split(' ');

                switch (parameters[0].ToLower())
                {
                    #region stop
                case "stop":
                case "shutdown":
                    Logging.LogMessage("Server exiting at " + DateTime.Now);
                    Logging.DisablePrimaryWriting(true);
                    Console.WriteLine("The server is saving users furniture, rooms, etc. WAIT FOR THE SERVER TO CLOSE, DO NOT EXIT THE PROCESS IN TASK MANAGER!!");
                    ButterflyEnvironment.PreformShutDown(true);
                    break;

                case "forceshutdown":
                    ButterflyEnvironment.GetGame().gameLoopEnded = true;
                    break;

                    #endregion
                case "clear":
                    Console.Clear();
                    break;

                default:
                {
                    Logging.LogMessage(parameters[0].ToLower() + " is an unknown or unsupported command. Type help for more information");
                    break;
                }
                }
                #endregion
            }
            catch (Exception e)
            {
                Logging.LogMessage("Error in command [" + inputData + "]: " + e);
            }
        }
示例#29
0
        public void TakeAdmin(int UserId)
        {
            if (!this._administrators.Contains(UserId))
            {
                return;
            }

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE group_memberships SET `rank` = '0' WHERE user_id = @uid AND group_id = @gid");
                dbClient.AddParameter("gid", this.Id);
                dbClient.AddParameter("uid", UserId);
                dbClient.RunQuery();
            }

            this._administrators.Remove(UserId);
            this._members.Add(UserId);
        }
示例#30
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();

            Group Group = null;

            if (!ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Group.CreatorId != Session.GetHabbo().Id&& !Session.GetHabbo().HasFuse("group_management_override"))
            {
                return;
            }

            Session.SendPacket(new ManageGroupComposer(Group, Group.Badge.Replace("b", "").Split('s')));
        }