public RoomData(DataRow dataRow) { if (dataRow != null) { this.ID = (uint)dataRow["id"]; this.Name = (string)dataRow["name"]; this.Description = (string)dataRow["description"]; this.OwnerID = (uint)dataRow["ownerid"]; this.Type = (string)dataRow["type"]; this.Model = (string)dataRow["model"]; this.State = (string)dataRow["state"] == "password" ? RoomStateType.PASSWORD : (string)dataRow["state"] == "locked" ? RoomStateType.LOCKED : RoomStateType.OPEN; this.Category = (int)dataRow["category"]; this.UsersNow = (int)dataRow["users_now"]; //maybe we need this sometimes :3 this.UsersMax = (int)dataRow["users_max"]; this.PublicCCTs = (string)dataRow["public_ccts"]; this.Score = (int)dataRow["score"]; string tags = (string)dataRow["tags"]; if (!string.IsNullOrEmpty(tags)) { this.Tags = tags.Split(',').ToList(); } else { this.Tags = new List <string>(); } this.RoomIcon = new RoomIcon((int)dataRow["icon_bg"], (int)dataRow["icon_fg"], (string)dataRow["icon_items"]); this.Password = (string)dataRow["password"]; this.Wallpaper = (string)dataRow["wallpaper"]; this.Floor = (string)dataRow["floor"]; this.Landscape = (string)dataRow["landscape"]; this.AllowPets = TextUtilies.StringToBool((string)dataRow["allow_pets"]); this.AllowPetsEat = TextUtilies.StringToBool((string)dataRow["allow_pets_eat"]); this.AllowWalkthrough = TextUtilies.StringToBool((string)dataRow["allow_walkthrough"]); this.Hidewalls = TextUtilies.StringToBool((string)dataRow["hidewalls"]); this.Wallthick = (int)dataRow["wallthick"]; this.Floorthick = (int)dataRow["floorthick"]; this.AllowTrade = (RoomAllowTradeType)int.Parse((string)dataRow["trade"]); this.MuteOption = (RoomWhoCanType)int.Parse((string)dataRow["mute_option"]); this.KickOption = (RoomWhoCanType)int.Parse((string)dataRow["kick_option"]); this.BanOption = (RoomWhoCanType)int.Parse((string)dataRow["ban_option"]); this.ChatMode = (RoomChatModeType)int.Parse((string)dataRow["chat_mode"]); this.ChatWeight = (RoomChatWeightType)int.Parse((string)dataRow["chat_weight"]); this.ChatSpeed = (RoomChatSpeedType)int.Parse((string)dataRow["chat_speed"]); this.ChatProtection = (RoomChatProtectionType)int.Parse((string)dataRow["chat_protection"]); string data = (string)dataRow["data"]; if (!string.IsNullOrEmpty(data)) { this.ExtraData = JsonConvert.DeserializeObject <RoomExtraData>(data); } else { this.ExtraData = new RoomExtraData(); } } else { this.NullValues(); } }
public virtual void Handle(GameClient session, ClientMessage message) { Room room; if ((room = session?.GetHabbo()?.GetRoomSession()?.GetRoom()) != null) { RoomUnitUser user = room.RoomUserManager.GetUserByVirtualID(this.VirtualID); if (user != null) { RoomAllowTradeType tradeSettings = room.RoomData.AllowTrade; if (tradeSettings == RoomAllowTradeType.ALLOWED || (tradeSettings == RoomAllowTradeType.OWNER_ONLY && room.HaveOwnerRights(session)) || (tradeSettings == RoomAllowTradeType.CATEGORY && (Skylight.GetGame().GetNavigatorManager().GetFlatCat(session.GetHabbo().GetRoomSession().GetRoom().RoomData.Category)?.CanTrade ?? false))) { if (session.GetHabbo().GetUserSettings().AcceptTrading) { if (!session.GetHabbo().GetRoomSession().GetRoomUser().HasStatus("trd")) { if (!user.HasStatus("trd")) { if (user.Session.GetHabbo().GetUserSettings().AcceptTrading) { room.StartTrade(session.GetHabbo().GetRoomSession().GetRoomUser(), user); } else { session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TargetCannotTrade)); } } else { session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TargetTrading)); } } else { session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TradeOpen)); } } else { session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.YourTradingDisabled)); } } else { session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TradingNotAllowInRoom)); } } } }