public static int GetTeleRoomId(int TeleId, Room pRoom) { if (pRoom.GetRoomItemHandler().GetItem(TeleId) != null) return pRoom.RoomId; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `room_id` FROM `items` WHERE `id` = " + TeleId + " LIMIT 1"); DataRow Row = dbClient.getRow(); if (Row == null) { return 0; } return Convert.ToInt32(Row[0]); } }
public static bool IsTeleLinked(int TeleId, Room pRoom) { int LinkId = GetLinkedTele(TeleId, pRoom); if (LinkId == 0) { return false; } Item item = pRoom.GetRoomItemHandler().GetItem(LinkId); if (item != null && item.GetBaseItem().InteractionType == InteractionType.TELEPORT) return true; int RoomId = GetTeleRoomId(LinkId, pRoom); if (RoomId == 0) { return false; } return true; }
private void FinishOpenGift(GameClient Session, ItemData BaseItem, Item Present, Room Room, DataRow Row) { try { if (BaseItem == null || Present == null || Room == null || Row == null) return; Thread.Sleep(1500); bool ItemIsInRoom = true; Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `items` SET `base_item` = @BaseItem, `extra_data` = @edata WHERE `id` = " + Present.Id + " LIMIT 1"); dbClient.AddParameter("BaseItem", Row["base_id"]); dbClient.AddParameter("edata", Row["extra_data"]); dbClient.RunQuery(); dbClient.RunQuery("DELETE FROM `user_presents` WHERE `item_id` = " + Present.Id + " LIMIT 1"); } Present.BaseItem = Convert.ToInt32(Row["base_id"]); Present.ResetBaseItem(); Present.ExtraData = (!string.IsNullOrEmpty(Convert.ToString(Row["extra_data"])) ? Convert.ToString(Row["extra_data"]) : ""); if (Present.Data.Type == 's') { if (!Room.GetRoomItemHandler().SetFloorItem(Session, Present, Present.GetX, Present.GetY, Present.Rotation, true, false, true)) { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = " + Present.Id + " LIMIT 1"); } ItemIsInRoom = false; } } else { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = " + Present.Id + " LIMIT 1"); } ItemIsInRoom = false; } Session.SendMessage(new OpenGiftComposer(Present.Data, Present.ExtraData, Present, ItemIsInRoom)); Session.GetHabbo().GetInventoryComponent().UpdateItems(true); } catch { } }
public void GenerateMaps(bool checkLines = true) { int MaxX = 0; int MaxY = 0; _coordinatedItems = new ConcurrentDictionary <Point, List <int> >(); if (checkLines) { Item[] items = _room.GetRoomItemHandler().GetFloor.ToArray(); foreach (Item item in items.ToList()) { if (item == null) { continue; } if (item.GetX > Model.MapSizeX && item.GetX > MaxX) { MaxX = item.GetX; } if (item.GetY > Model.MapSizeY && item.GetY > MaxY) { MaxY = item.GetY; } } Array.Clear(items, 0, items.Length); items = null; } if (MaxY > (Model.MapSizeY - 1) || MaxX > (Model.MapSizeX - 1)) { if (MaxX < Model.MapSizeX) { MaxX = Model.MapSizeX; } if (MaxY < Model.MapSizeY) { MaxY = Model.MapSizeY; } Model.SetMapsize(MaxX + 7, MaxY + 7); GenerateMaps(false); return; } if (MaxX != StaticModel.MapSizeX || MaxY != StaticModel.MapSizeY) { _userItemEffect = new byte[Model.MapSizeX, Model.MapSizeY]; _gameMap = new byte[Model.MapSizeX, Model.MapSizeY]; _itemHeightMap = new double[Model.MapSizeX, Model.MapSizeY]; //if (modelRemap) // Model.Generate(); //Clears model for (int line = 0; line < Model.MapSizeY; line++) { for (int chr = 0; chr < Model.MapSizeX; chr++) { _gameMap[chr, line] = 0; _userItemEffect[chr, line] = 0; if (chr == Model.DoorX && line == Model.DoorY) { _gameMap[chr, line] = 3; } else if (Model.SqState[chr, line] == SquareState.Open) { _gameMap[chr, line] = 1; } else if (Model.SqState[chr, line] == SquareState.Seat) { _gameMap[chr, line] = 2; } else if (Model.SqState[chr, line] == SquareState.Pool) { _userItemEffect[chr, line] = 6; } } } } else { _userItemEffect = new byte[Model.MapSizeX, Model.MapSizeY]; _gameMap = new byte[Model.MapSizeX, Model.MapSizeY]; _itemHeightMap = new double[Model.MapSizeX, Model.MapSizeY]; for (int line = 0; line < Model.MapSizeY; line++) { for (int chr = 0; chr < Model.MapSizeX; chr++) { _gameMap[chr, line] = 0; _userItemEffect[chr, line] = 0; if (chr == Model.DoorX && line == Model.DoorY) { _gameMap[chr, line] = 3; } else if (Model.SqState[chr, line] == SquareState.Open) { _gameMap[chr, line] = 1; } else if (Model.SqState[chr, line] == SquareState.Seat) { _gameMap[chr, line] = 2; } else if (Model.SqState[chr, line] == SquareState.Pool) { _userItemEffect[chr, line] = 6; } } } } Item[] tmpItems = _room.GetRoomItemHandler().GetFloor.ToArray(); foreach (Item Item in tmpItems.ToList()) { if (Item == null) { continue; } if (!AddItemToMap(Item)) { continue; } } Array.Clear(tmpItems, 0, tmpItems.Length); tmpItems = null; if (_room.RoomBlockingEnabled == 0) { foreach (RoomUser user in _room.GetRoomUserManager().GetUserList().ToList()) { if (user == null) { continue; } user.SqState = _gameMap[user.X, user.Y]; _gameMap[user.X, user.Y] = 0; } } try { _gameMap[Model.DoorX, Model.DoorY] = 3; } catch { } }