diff --git a/DataCollection/HI1.MAP b/DataCollection/HI1.MAP new file mode 100644 index 0000000..78b93b6 Binary files /dev/null and b/DataCollection/HI1.MAP differ diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index 72d72d4..12d0d75 100644 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -42,7 +42,7 @@ "end_of_meta":"^Z", "back_to_map":"^M", "long_full_line":"^L", - "inventory_format":"^ATYour Inventory^H<B>You are carrying the following %ITEMCOUNT% different items:</B> (%% max)", + "inventory_format":"^ATYour Inventory^H<B>You are carrying the following %ITEMCOUNT% different items:</B> (%MAX%)", "dropped_items":{ "nothing_message":"^LYou see nothing on the ground of interest.^R1", "items_message":"^LYou see the following on the ground:^R1", diff --git a/Horse Isle Server/Horse Isle Server/Database.cs b/Horse Isle Server/Horse Isle Server/Database.cs index 82a971d..9e9ce9f 100644 --- a/Horse Isle Server/Horse Isle Server/Database.cs +++ b/Horse Isle Server/Horse Isle Server/Database.cs @@ -305,7 +305,7 @@ namespace Horse_Isle_Server db.Open(); MySqlCommand sqlCommand = db.CreateCommand(); - sqlCommand.CommandText = "DELETE FROM Inventory WHERE (RandomId=@randomId)"; + sqlCommand.CommandText = "DELETE FROM DroppedItems WHERE (RandomId=@randomId)"; sqlCommand.Parameters.AddWithValue("@randomId", randomId); sqlCommand.Prepare(); sqlCommand.ExecuteNonQuery(); diff --git a/Horse Isle Server/Horse Isle Server/DroppedItems.cs b/Horse Isle Server/Horse Isle Server/DroppedItems.cs index 76423e9..1c1cd69 100644 --- a/Horse Isle Server/Horse Isle Server/DroppedItems.cs +++ b/Horse Isle Server/Horse Isle Server/DroppedItems.cs @@ -57,14 +57,22 @@ namespace Horse_Isle_Server int epoch_new = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; DespawnItems(epoch, epoch_new); - epoch = epoch_new; GenerateItems(); } public static void RemoveDroppedItem(DroppedItem item) { - Database.RemoveDroppedItem(item.instance.RandomID); - droppedItemsList.Remove(item); + int randomId = item.instance.RandomID; + Database.RemoveDroppedItem(randomId); + for (int i = 0; i < droppedItemsList.Count; i++) + { + if(droppedItemsList[i].instance.RandomID == randomId) + { + droppedItemsList.RemoveAt(i); + + } + } + } public static DroppedItem GetDroppedItemById(int randomId) { @@ -84,17 +92,21 @@ namespace Horse_Isle_Server } public static void DespawnItems(int old_epoch, int new_epoch) { + int removedCount = 0; DroppedItem[] items = droppedItemsList.ToArray(); foreach (DroppedItem item in items) { - if(old_epoch + item.DespawnTimer < new_epoch) + if(new_epoch + item.DespawnTimer < old_epoch) { if(Server.GetUsersAt(item.X, item.Y,true,true).Length == 0) { RemoveDroppedItem(item); + removedCount++; } } } + if(removedCount > 0) + epoch = new_epoch; } public static void GenerateItems() { @@ -176,7 +188,9 @@ namespace Horse_Isle_Server } if(newItems > 0) + { Database.AddDroppedItems(droppedItemsList.ToArray()); + } } public static void Init() diff --git a/Horse Isle Server/Horse Isle Server/Map.cs b/Horse Isle Server/Horse Isle Server/Map.cs index 5a2045a..a4eb3b0 100644 --- a/Horse Isle Server/Horse Isle Server/Map.cs +++ b/Horse Isle Server/Horse Isle Server/Map.cs @@ -18,23 +18,28 @@ namespace Horse_Isle_Server public static int[] OverlayTileDepth; - public static TerrainTile[] TerrainTiles; + public static int Width; + public static int Height; - public static Bitmap MapData; + public static byte[] MapData; + public static byte[] oMapData; + + public static TerrainTile[] TerrainTiles; public static int NewUserStartX; public static int NewUserStartY; public static int GetTileId(int x, int y, bool overlay) { - if ((x > MapData.Width || x < 0) || (y > MapData.Height || y < 0)) // Outside map? + if ((x > Width || x < 0) || (y > Height || y < 0)) // Outside map? return 0x1; - + + int pos = ((x * Height) + y); if (overlay) - return MapData.GetPixel(x, y).R; + return oMapData[pos]; else - return MapData.GetPixel(x, y).B; + return MapData[pos]; } public static bool CheckPassable(int x, int y) { @@ -83,7 +88,26 @@ namespace Horse_Isle_Server return; } - MapData = new Bitmap(ConfigReader.MapFile); + + byte[] worldMap = File.ReadAllBytes(ConfigReader.MapFile); + + Width = BitConverter.ToInt32(worldMap, 0); + Height = BitConverter.ToInt32(worldMap, 4); + + MapData = new byte[Width * Height]; + oMapData = new byte[Width * Height]; + int ii = 8; + + for (int i = 0; i < MapData.Length; i++) + { + + oMapData[i] = worldMap[ii]; + MapData[i] = worldMap[ii+ 1]; + ii += 2; + } + + worldMap = null; + } } } diff --git a/Horse Isle Server/Horse Isle Server/Resources/server.properties b/Horse Isle Server/Horse Isle Server/Resources/server.properties index c664a1a..58f2cda 100644 --- a/Horse Isle Server/Horse Isle Server/Resources/server.properties +++ b/Horse Isle Server/Horse Isle Server/Resources/server.properties @@ -13,7 +13,7 @@ db_password=test123 db_port=3306 # Map Data -map=MapDataCombined.bmp +map=HI1.MAP # JSON Format Data diff --git a/Horse Isle Server/Horse Isle Server/Server.cs b/Horse Isle Server/Horse Isle Server/Server.cs index 5003e54..8434e16 100644 --- a/Horse Isle Server/Horse Isle Server/Server.cs +++ b/Horse Isle Server/Horse Isle Server/Server.cs @@ -476,7 +476,7 @@ namespace Horse_Isle_Server sender.LoggedinUser.Inventory.Add(item.instance); DroppedItems.RemoveDroppedItem(item); - UpdateAreaForAll(item.X, item.Y); + UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y); byte[] chatMessage = PacketBuilder.CreateChat(Messages.GrabbedItemMessage, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(chatMessage);