Exemple #1
0
        public static void SaveWired(IWiredItem fItem)
        {
            if (fItem?.Item == null)
            {
                return;
            }

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                string text = string.Empty;

                int num = 0;

                if (fItem.Items != null)
                {
                    foreach (RoomItem current in fItem.Items)
                    {
                        if (current == null)
                        {
                            continue;
                        }

                        if (num != 0)
                        {
                            text += ";";
                        }

                        text += current.Id;

                        num++;
                    }
                }

                if (fItem.OtherString == null)
                {
                    fItem.OtherString = string.Empty;
                }

                if (fItem.OtherExtraString == null)
                {
                    fItem.OtherExtraString = string.Empty;
                }

                if (fItem.OtherExtraString2 == null)
                {
                    fItem.OtherExtraString2 = string.Empty;
                }

                queryReactor.SetQuery("REPLACE INTO items_wireds VALUES (@id, @items, @delay, @string, @bool, @extrastring, @extrastring2)");
                queryReactor.AddParameter("id", fItem.Item.Id);
                queryReactor.AddParameter("items", text);
                queryReactor.AddParameter("delay", fItem.Delay);
                queryReactor.AddParameter("string", fItem.OtherString);
                queryReactor.AddParameter("bool", Yupi.BoolToEnum(fItem.OtherBool));
                queryReactor.AddParameter("extrastring", fItem.OtherExtraString);
                queryReactor.AddParameter("extrastring2", fItem.OtherExtraString2);

                queryReactor.RunQuery();
            }
        }
Exemple #2
0
        /// <summary>
        ///     Updates the preset.
        /// </summary>
        /// <param name="preset">The preset.</param>
        /// <param name="color">The color.</param>
        /// <param name="intensity">The intensity.</param>
        /// <param name="bgOnly">if set to <c>true</c> [bg only].</param>
        /// <param name="hax">if set to <c>true</c> [hax].</param>
        internal void UpdatePreset(int preset, string color, int intensity, bool bgOnly, bool hax = false)
        {
            if (!IsValidColor(color) || (!IsValidIntensity(intensity) && !hax))
            {
                return;
            }

            string text = "one";

            switch (preset)
            {
            case 2:
                text = "two";
                break;

            case 3:
                text = "three";
                break;

            default:
                text = "one";
                break;
            }

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(
                    $"UPDATE items_moodlight SET preset_{text}='{color},{intensity},{Yupi.BoolToEnum(bgOnly)}' WHERE item_id='{ItemId}'");
                queryReactor.RunQuery();
            }

            GetPreset(preset).ColorCode      = color;
            GetPreset(preset).ColorIntensity = intensity;
            GetPreset(preset).BackgroundOnly = bgOnly;
        }
Exemple #3
0
 internal void Save()
 {
     using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
     {
         queryReactor.SetQuery(
             "UPDATE users_preferences SET volume = @volume, prefer_old_chat = @prefer_old_chat, ignore_room_invite = @ignore_room_invite, newnavi_x = @newnavi_x, newnavi_y = @newnavi_y, newnavi_width = @newnavi_width, newnavi_height = @newnavi_height, disable_camera_follow = @disable_camera_follow, chat_color = @chat_color WHERE userid = @userid");
         queryReactor.AddParameter("userid", _userId);
         queryReactor.AddParameter("prefer_old_chat", Yupi.BoolToEnum(PreferOldChat));
         queryReactor.AddParameter("ignore_room_invite", Yupi.BoolToEnum(IgnoreRoomInvite));
         queryReactor.AddParameter("volume", Volume);
         queryReactor.AddParameter("newnavi_x", NewnaviX);
         queryReactor.AddParameter("newnavi_y", NewnaviY);
         queryReactor.AddParameter("newnavi_width", NewnaviWidth);
         queryReactor.AddParameter("newnavi_height", NewnaviHeight);
         queryReactor.AddParameter("disable_camera_follow", Yupi.BoolToEnum(DisableCameraFollow));
         queryReactor.AddParameter("chat_color", ChatColor);
         queryReactor.RunQuery();
     }
 }
Exemple #4
0
        /// <summary>
        ///     Unloads the room.
        /// </summary>
        /// <param name="room">The room.</param>
        /// <param name="reason">The reason.</param>
        internal void UnloadRoom(Room room, string reason)
        {
            if (room?.RoomData == null || room.Disposed)
            {
                return;
            }

            room.Disposed = true;

            if (Yupi.GetGame().GetNavigator().PrivateCategories.Contains(room.RoomData.Category))
            {
                ((PublicCategory)Yupi.GetGame().GetNavigator().PrivateCategories[room.RoomData.Category]).UsersNow -=
                    room.UserCount;
            }

            room.RoomData.UsersNow = 0;

            string state = "open";

            if (room.RoomData.State == 1)
            {
                state = "locked";
            }
            else if (room.RoomData.State > 1)
            {
                state = "password";
            }

            uint roomId = room.RoomId;

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery("UPDATE rooms_data SET " +
                                      "caption = @roomcaption," +
                                      "description = @description," +
                                      "password = @password," +
                                      "category = @category," +
                                      "state = @state," +
                                      "tags = @tags," +
                                      "users_now = @usersnow," +
                                      "users_max = @usersmax," +
                                      "allow_pets = @allowpets," +
                                      "allow_pets_eat = @allowpetseat," +
                                      "allow_walkthrough = @allowwalk," +
                                      "hidewall = @hidewall," +
                                      "floorthick = @floorthick," +
                                      "wallthick = @wallthick," +
                                      "mute_settings = @whocanmute," +
                                      "kick_settings = @kicksettings," +
                                      "ban_settings = @bansettings," +
                                      "walls_height = @wallheight," +
                                      "chat_type = @chat_t," +
                                      "chat_balloon = @chat_b," +
                                      "chat_speed = @chat_s," +
                                      "chat_max_distance = @chat_m," +
                                      "chat_flood_protection = @chat_f," +
                                      "trade_state = @tradestate " +
                                      "WHERE id = " + roomId);

                queryReactor.AddParameter("usersnow", room.RoomData.UsersNow);
                queryReactor.AddParameter("roomcaption", room.RoomData.Name);
                queryReactor.AddParameter("usersmax", room.RoomData.UsersMax);
                queryReactor.AddParameter("allowpets", Yupi.BoolToEnum(room.RoomData.AllowPets));
                queryReactor.AddParameter("allowpetseat", Yupi.BoolToEnum(room.RoomData.AllowPetsEating));
                queryReactor.AddParameter("allowwalk", Yupi.BoolToEnum(room.RoomData.AllowWalkThrough));
                queryReactor.AddParameter("hidewall", Yupi.BoolToEnum(room.RoomData.HideWall));
                queryReactor.AddParameter("floorthick", room.RoomData.FloorThickness);
                queryReactor.AddParameter("wallthick", room.RoomData.WallThickness);
                queryReactor.AddParameter("whocanmute", room.RoomData.WhoCanMute);
                queryReactor.AddParameter("kicksettings", room.RoomData.WhoCanKick);
                queryReactor.AddParameter("bansettings", room.RoomData.WhoCanBan);
                queryReactor.AddParameter("wallheight", room.RoomData.WallHeight);
                queryReactor.AddParameter("tradestate", room.RoomData.TradeState);
                queryReactor.AddParameter("category", room.RoomData.Category);
                queryReactor.AddParameter("state", state);
                queryReactor.AddParameter("description", room.RoomData.Description);
                queryReactor.AddParameter("password", room.RoomData.PassWord);
                queryReactor.AddParameter("tags", string.Join(",", room.RoomData.Tags));
                queryReactor.AddParameter("chat_t", room.RoomData.ChatType);
                queryReactor.AddParameter("chat_b", room.RoomData.ChatBalloon);
                queryReactor.AddParameter("chat_s", room.RoomData.ChatSpeed);
                queryReactor.AddParameter("chat_m", room.RoomData.ChatMaxDistance);
                queryReactor.AddParameter("chat_f", room.RoomData.ChatFloodProtection);

                queryReactor.RunQuery();
            }

            if (room.GetRoomUserManager() != null && room.GetRoomUserManager().UserList != null)
            {
                foreach (RoomUser current in room.GetRoomUserManager().UserList.Values.Where(current => current != null))
                {
                    if (current.IsPet)
                    {
                        if (current.PetData == null)
                        {
                            continue;
                        }

                        using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                        {
                            queryReactor.SetQuery("UPDATE pets_data SET x=@x, y=@y, z=@z WHERE id=@id LIMIT 1");
                            queryReactor.AddParameter("x", current.X);
                            queryReactor.AddParameter("y", current.Y);
                            queryReactor.AddParameter("z", current.Z);
                            queryReactor.AddParameter("id", current.PetData.PetId);
                            queryReactor.RunQuery();
                        }

                        if (current.BotAi == null)
                        {
                            continue;
                        }

                        current.BotAi.Dispose();
                    }
                    else if (current.IsBot)
                    {
                        if (current.BotData == null)
                        {
                            continue;
                        }

                        using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                        {
                            queryReactor.SetQuery(
                                "UPDATE bots_data SET x=@x, y=@y, z=@z, name=@name, motto=@motto, look=@look, rotation=@rotation, dance=@dance WHERE id=@id LIMIT 1");
                            queryReactor.AddParameter("name", current.BotData.Name);
                            queryReactor.AddParameter("motto", current.BotData.Motto);
                            queryReactor.AddParameter("look", current.BotData.Look);
                            queryReactor.AddParameter("rotation", current.BotData.Rot);
                            queryReactor.AddParameter("dance", current.BotData.DanceId);
                            queryReactor.AddParameter("x", current.X);
                            queryReactor.AddParameter("y", current.Y);
                            queryReactor.AddParameter("z", current.Z);
                            queryReactor.AddParameter("id", current.BotData.BotId);
                            queryReactor.RunQuery();
                        }

                        current.BotAi?.Dispose();
                    }
                    else
                    {
                        if (current.GetClient() != null)
                        {
                            room.GetRoomUserManager().RemoveUserFromRoom(current.GetClient(), true, false);

                            current.GetClient().CurrentRoomUserId = -1;
                        }
                    }
                }
            }

            room.SaveRoomChatlog();

            Room junkRoom;

            LoadedRooms.TryRemove(room.RoomId, out junkRoom);

            YupiWriterManager.WriteLine(string.Format("Room #{0} was unloaded, reason: " + reason, room.RoomId),
                                        "Yupi.Rooms", ConsoleColor.DarkGray);

            room.Destroy();
        }
Exemple #5
0
        /// <summary>
        ///     Unloads the room.
        /// </summary>
        /// <param name="room">The room.</param>
        /// <param name="reason">The reason.</param>
        internal void UnloadRoom(Room room, string reason)
        {
            if (room == null || room.RoomData == null || room.Disposed)
            {
                return;
            }

            room.Disposed = true;

            if (Yupi.GetGame().GetNavigator().PrivateCategories.Contains(room.RoomData.Category))
            {
                ((PublicCategory)Yupi.GetGame().GetNavigator().PrivateCategories[room.RoomData.Category]).UsersNow -=
                    room.UserCount;
            }

            room.RoomData.UsersNow = 0;
            string state = "open";

            if (room.RoomData.State == 1)
            {
                state = "locked";
            }
            else if (room.RoomData.State > 1)
            {
                state = "password";
            }

            uint roomId = room.RoomId;

            try
            {
                using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.SetQuery(
                        "UPDATE rooms_data SET caption = @caption, description = @description, password = @password, category = " +
                        room.RoomData.Category + ", state = '" + state +
                        "', tags = @tags, users_now = '0', users_max = " +
                        room.RoomData.UsersMax + ", allow_pets = '" + Yupi.BoolToEnum(room.RoomData.AllowPets) +
                        "', allow_pets_eat = '" +
                        Yupi.BoolToEnum(room.RoomData.AllowPetsEating) + "', allow_walkthrough = '" +
                        Yupi.BoolToEnum(room.RoomData.AllowWalkThrough) +
                        "', hidewall = '" + Yupi.BoolToEnum(room.RoomData.HideWall) + "', floorthick = " +
                        room.RoomData.FloorThickness +
                        ", wallthick = " + room.RoomData.WallThickness + ", mute_settings='" + room.RoomData.WhoCanMute +
                        "', kick_settings='" + room.RoomData.WhoCanKick + "',ban_settings='" + room.RoomData.WhoCanBan +
                        "', walls_height = '" + room.RoomData.WallHeight +
                        "', chat_type = @chat_t,chat_balloon = @chat_b,chat_speed = @chat_s,chat_max_distance = @chat_m,chat_flood_protection = @chat_f, trade_state = '" +
                        room.RoomData.TradeState + "' WHERE id = " + roomId);
                    queryReactor.AddParameter("caption", room.RoomData.Name);
                    queryReactor.AddParameter("description", room.RoomData.Description);
                    queryReactor.AddParameter("password", room.RoomData.PassWord);
                    queryReactor.AddParameter("tags", string.Join(",", room.RoomData.Tags));
                    queryReactor.AddParameter("chat_t", room.RoomData.ChatType);
                    queryReactor.AddParameter("chat_b", room.RoomData.ChatBalloon);
                    queryReactor.AddParameter("chat_s", room.RoomData.ChatSpeed);
                    queryReactor.AddParameter("chat_m", room.RoomData.ChatMaxDistance);
                    queryReactor.AddParameter("chat_f", room.RoomData.ChatFloodProtection);
                    queryReactor.RunQuery();
                }
            }
            catch (Exception e)
            {
                Writer.LogException(e.ToString());
            }

            if (room.GetRoomUserManager() != null && room.GetRoomUserManager().UserList != null)
            {
                using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                {
                    foreach (RoomUser current in room.GetRoomUserManager().UserList.Values.Where(current => current != null))
                    {
                        if (current.IsPet)
                        {
                            if (current.PetData == null)
                            {
                                continue;
                            }
                            queryReactor.SetQuery("UPDATE bots_data SET x=@x, y=@y, z=@z WHERE id=@id LIMIT 1");
                            queryReactor.AddParameter("x", current.X);
                            queryReactor.AddParameter("y", current.Y);
                            queryReactor.AddParameter("z", current.Z);
                            queryReactor.AddParameter("id", current.PetData.PetId);
                            queryReactor.RunQuery();

                            if (current.BotAi == null)
                            {
                                continue;
                            }

                            current.BotAi.Dispose();
                        }
                        else if (current.IsBot)
                        {
                            if (current.BotData == null)
                            {
                                continue;
                            }
                            queryReactor.SetQuery(
                                "UPDATE bots_data SET x=@x, y=@y, z=@z, name=@name, motto=@motto, look=@look, rotation=@rotation, dance=@dance WHERE id=@id LIMIT 1");
                            queryReactor.AddParameter("name", current.BotData.Name);
                            queryReactor.AddParameter("motto", current.BotData.Motto);
                            queryReactor.AddParameter("look", current.BotData.Look);
                            queryReactor.AddParameter("rotation", current.BotData.Rot);
                            queryReactor.AddParameter("dance", current.BotData.DanceId);
                            queryReactor.AddParameter("x", current.X);
                            queryReactor.AddParameter("y", current.Y);
                            queryReactor.AddParameter("z", current.Z);
                            queryReactor.AddParameter("id", current.BotData.BotId);
                            queryReactor.RunQuery();

                            current.BotAi?.Dispose();
                        }
                        else
                        {
                            if (current.GetClient() != null)
                            {
                                room.GetRoomUserManager().RemoveUserFromRoom(current.GetClient(), true, false);
                                current.GetClient().CurrentRoomUserId = -1;
                            }
                        }
                    }
                }
            }

            Room junkRoom;

            LoadedRooms.TryRemove(room.RoomId, out junkRoom);
            junkRoom = null;

            Writer.WriteLine(string.Format("Room #{0} was unloaded, reason: " + reason, room.RoomId),
                             "Yupi.Rooms", ConsoleColor.DarkGray);

            room.Destroy();
            room = null;
        }