예제 #1
0
파일: Room.cs 프로젝트: BjkGkh/Custom-R2
        private void Initialize(UInt32 Id, string Name, string Description, string Type, string Owner, int OwnerId, int Category,
            int State, int UsersMax, string ModelName, int Score, List<string> pTags, int AllowPets,
            int AllowPetsEating, int AllowWalkthrough, int Hidewall, string Password, string Wallpaper, string Floor,
            string Landscape, RoomData RoomData, bool RightOverride, int walltickness, int floorthickness, Group group, int GameId, int chattype,
            int chatballoon, int chatspeed, int chatmaxdis, int chatprotection, int whomute, int whokick, int whoban, uint groupid, List<Chatlog> Chat)
        {
            this.mDisposed = false;
            this.Id = Id;
            this.Name = Name;
            this.Description = Description;
            this.Owner = Owner;
            this.OwnerId = OwnerId;
            this.Category = Category;
            this.Type = Type;
            this.State = State;
            this.UsersNow = 0;
            this.UsersMax = UsersMax;
            this.ModelName = ModelName;
            this.Score = Score;
            tagCount = 0;
            this.Tags = new ArrayList();
            foreach (string tag in pTags)
            {
                tagCount++;
                Tags.Add(tag);
            }

            this.ChatType = chattype;
            this.ChatBalloon = chatballoon;
            this.ChatSpeed = chatspeed;
            this.ChatMaxDistance = chatmaxdis;
            this.ChatFloodProtection = chatprotection;

            this.AllowPets = AllowPets;
            this.AllowPetsEating = AllowPetsEating;
            this.AllowWalkthrough = AllowWalkthrough;
            this.Hidewall = Hidewall;
            this.Group = group;

            this.Password = Password;
            this.Bans = new Dictionary<Int64, double>();
            this.MutedUsers = new Dictionary<uint, uint>();
            this.Wallpaper = Wallpaper;
            this.Floor = Floor;
            this.Landscape = Landscape;
            this.ActiveTrades = new ArrayList();

            this.MutedPets = false;
            this.MutedBots = false;
            this.mCycleEnded = false;

            this.mRoomData = RoomData;
            this.EveryoneGotRights = RightOverride;

            this.roomMessages = new Queue();
            this.chatMessageQueue = new Queue();
            this.LoadedGroups = new Dictionary<uint, String>();

            this.roomMessages = new Queue();
            this.roomAlerts = new Queue();
            this.roomBadge = new Queue();
            this.roomKick = new Queue();
            this.roomServerMessages = new Queue();
            //this.DiceQueue = new Queue();
            this.IdleTime = 0;
            this.RoomMuted = false;
            this.WallThickness = walltickness;
            this.FloorThickness = floorthickness;

            this.gamemap = new Gamemap(this);
            if (roomItemHandling == null)
                this.roomItemHandling = new RoomItemHandling(this);
            this.roomUserManager = new RoomUserManager(this);
            this.RoomChat = Chat;
            this.ForSale = false;
            this.SalePrice = 0;
            this.Event = SilverwaveEnvironment.GetGame().GetRoomEvents().GetEvent(Id);
            this.GameId = GameId;
            this.WhoCanBan = whoban;
            this.WhoCanKick = whokick;
            this.WhoCanBan = whoban;
            this.GroupId = groupid;

            LoadRights();
            GetRoomItemHandler().LoadFurniture();
            GetGameMap().GenerateMaps();
            LoadMusic();
            LoadBans();
            InitUserBots();
            this.Added = new List<Chatlog>();
            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("UPDATE rooms SET users_now=1 WHERE id=" + Id + " LIMIT 1");
            }
            SilverwaveEnvironment.GetGame().GetRoomManager().QueueActiveRoomAdd(mRoomData);
        }
예제 #2
0
파일: RoomData.cs 프로젝트: BjkGkh/07052014
 internal void FillNull(UInt32 pId)
 {
     this.Id = pId;
     this.Name = "Unknown Room";
     this.Description = "-";
     this.Type = "private";
     this.Owner = "-";
     this.Category = 0;
     this.UsersNow = 0;
     this.UsersMax = 0;
     this.ModelName = "NO_MODEL";
     this.CCTs = "";
     this.Score = 0;
     this.Tags = new List<string>();
     this.AllowPets = 1;
     this.AllowPetsEating = 0;
     this.AllowWalkthrough = 1;
     this.Hidewall = 0;
     this.Password = "";
     this.Wallpaper = "0.0";
     this.Floor = "0.0";
     this.Landscape = "0.0";
     this.WallThickness = 0;
     this.FloorThickness = 0;
     this.Group = null;
     this.AllowRightsOverride = false;
     this.Event = null;
     this.GameId = 0;
     this.WhoCanBan = 0;
     this.WhoCanKick = 0;
     this.WhoCanMute = 0;
     this.RoomChat = new List<Chatlog>();
     mModel = SilverwaveEnvironment.GetGame().GetRoomManager().GetModel(ModelName);
 }
예제 #3
0
파일: RoomData.cs 프로젝트: BjkGkh/07052014
        internal void Fill(DataRow Row)
        {
            this.Id = Convert.ToUInt32(Row["id"]);
            this.Name = (string)Row["caption"];
            this.Description = (string)Row["description"];
            this.Type = (string)Row["roomtype"];
            this.Owner = (string)Row["owner"];
            this.OwnerId = 0;
            this.RoomChat = new List<Chatlog>();
            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("SELECT id FROM users WHERE username = @owner");
                dbClient.addParameter("owner", this.Owner);
                int result = dbClient.getInteger();
                if(result > 0)
                    this.OwnerId = result;

                dbClient.setQuery("SELECT user_id, message, timestamp FROM chatlogs WHERE room_id=@id ORDER BY timestamp DESC LIMIT 150");
                dbClient.addParameter("id", this.Id);
                DataTable Table = dbClient.getTable();

                foreach (DataRow mRow in Table.Rows)
                {
                    RoomChat.Add(new Chatlog((uint)mRow[0], (string)mRow[1], Convert.ToDouble(mRow[2])));

                }

            }

            switch (Row["state"].ToString().ToLower())
            {
                case "open":

                    this.State = 0;
                    break;

                case "password":

                    this.State = 2;
                    break;

                case "locked":
                default:

                    this.State = 1;
                    break;
            }

            this.Category = (int)Row["category"];
            if (!string.IsNullOrEmpty(Row["users_now"].ToString()))
                this.UsersNow = (int)Row["users_now"];
            else
                this.UsersNow = 0;
            this.UsersMax = (int)Row["users_max"];
            this.ModelName = (string)Row["model_name"];
            this.CCTs = (string)Row["public_ccts"];
            this.Score = (int)Row["score"];
            this.Tags = new List<string>();
            this.AllowPets = Convert.ToInt32(Row["allow_pets"].ToString());
            this.AllowPetsEating = Convert.ToInt32(Row["allow_pets_eat"].ToString());
            this.AllowWalkthrough = Convert.ToInt32(Row["allow_walkthrough"].ToString());
            this.AllowRightsOverride = false;
            this.Hidewall = Convert.ToInt32(Row["allow_hidewall"].ToString());
            this.Password = (string)Row["password"];
            this.Wallpaper = (string)Row["wallpaper"];
            this.Floor = (string)Row["floor"];
            this.Landscape = (string)Row["landscape"];
            this.FloorThickness = (int)Row["floorthick"];
            this.WallThickness = (int)Row["wallthick"];
            this.ChatType = (int)Row["chat_type"];
            this.ChatBalloon = (int)Row["chat_balloon"];
            this.ChatSpeed =(int)Row["chat_speed"];
            this.ChatMaxDistance = (int)Row["chat_max_distance"];
            this.ChatFloodProtection = (int)Row["chat_flood_protection"];
            this.GameId = (int)Row["game_id"];
            this.WhoCanMute = Convert.ToInt32(Row["mute_settings"]);
            this.WhoCanKick = Convert.ToInt32(Row["kick_settings"]);
            this.WhoCanBan = Convert.ToInt32(Row["ban_settings"]);
            this.GroupId = (uint)Row["group_id"];
            this.Group = SilverwaveEnvironment.GetGame().GetGroupManager().GetGroup(this.GroupId);
            this.Event = SilverwaveEnvironment.GetGame().GetRoomEvents().GetEvent(Id);

            Dictionary<int, int> IconItems = new Dictionary<int,int>();

            if (!string.IsNullOrEmpty(Row["icon_items"].ToString()))
            {
                foreach (string Bit in Row["icon_items"].ToString().Split('|'))
                {
                    if (string.IsNullOrEmpty(Bit))
                        continue;

                    string[] tBit = Bit.Replace('.', ',').Split(',');

                    int a = 0;
                    int b = 0;

                    int.TryParse(tBit[0], out a);
                    if (tBit.Length > 1)
                        int.TryParse(tBit[1], out b);

                    try
                    {
                        if (!IconItems.ContainsKey(a))
                            IconItems.Add(a, b);
                    }
                    catch (Exception e)
                    {
                        Logging.LogException("Exception: " + e.ToString() + "[" + Bit + "]");
                    }
                }
            }

            foreach (string Tag in Row["tags"].ToString().Split(','))
            {
                this.Tags.Add(Tag);
            }

            mModel = SilverwaveEnvironment.GetGame().GetRoomManager().GetModel(ModelName);
        }
예제 #4
0
파일: RoomData.cs 프로젝트: BjkGkh/07052014
        internal void Fill(Room Room)
        {
            this.Id = Room.RoomId;
            this.Name = Room.Name;
            this.Description = Room.Description;
            this.Type = Room.Type;
            this.Owner = Room.Owner;
            this.Category = Room.Category;
            this.State = Room.State;
            this.UsersNow = Room.UsersNow;
            this.UsersMax = Room.UsersMax;
            this.ModelName = Room.ModelName;
            this.Score = Room.Score;

            this.Tags = new List<string>();
            foreach (string tag in Room.Tags.ToArray())
                this.Tags.Add(tag);
            this.AllowPets = Room.AllowPets;
            this.AllowPetsEating = Room.AllowPetsEating;
            this.AllowWalkthrough = Room.AllowWalkthrough;
            this.Hidewall = Room.Hidewall;
            this.Password = Room.Password;
            this.Wallpaper = Room.Wallpaper;
            this.Floor = Room.Floor;
            this.Landscape = Room.Landscape;
            this.FloorThickness = Room.FloorThickness;
            this.WallThickness = Room.WallThickness;
            this.Group = Room.Group;
            this.Event = Room.Event;
            this.GameId = Room.GameId;
            this.ChatType = Room.ChatType;
            this.ChatBalloon = Room.ChatBalloon;
            this.ChatSpeed = Room.ChatSpeed;
            this.ChatMaxDistance = Room.ChatMaxDistance;
            this.ChatFloodProtection = Room.ChatFloodProtection;
            this.WhoCanMute = Room.WhoCanMute;
            this.WhoCanKick = Room.WhoCanKick;
            this.WhoCanBan = Room.WhoCanBan;
            this.RoomChat = Room.RoomChat;
            mModel = SilverwaveEnvironment.GetGame().GetRoomManager().GetModel(ModelName);
        }
예제 #5
0
 internal void UpdateEvent(RoomEvent Event)
 {
     using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
     {
         dbClient.setQuery("REPLACE INTO room_events VALUES (" + Event.RoomId + ", @name, @desc, " + Event.Time + ")");
         dbClient.addParameter("name", Event.Name);
         dbClient.addParameter("desc", Event.Description);
         dbClient.runQuery();
     }
     SerializeEventInfo(Event.RoomId);
 }