mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-21 20:25:51 +12:00
Add presents and fix bugs
This commit is contained in:
parent
d9cdd05acb
commit
0cf1665a11
12 changed files with 273 additions and 123 deletions
|
@ -25,9 +25,9 @@ namespace HISP.Server
|
|||
string BuddyTable = "CREATE TABLE BuddyList(Id INT, IdFriend INT, Pending BOOL)";
|
||||
string WorldTable = "CREATE TABLE World(Time INT, Day INT, Year INT)";
|
||||
string WeatherTable = "CREATE TABLE Weather(Area TEXT(1028), Weather TEXT(64))";
|
||||
string InventoryTable = "CREATE TABLE Inventory(PlayerID INT, RandomID INT, ItemID INT)";
|
||||
string InventoryTable = "CREATE TABLE Inventory(PlayerID INT, RandomID INT, ItemID INT, Data INT)";
|
||||
string ShopInventory = "CREATE TABLE ShopInventory(ShopID INT, RandomID INT, ItemID INT)";
|
||||
string DroppedItems = "CREATE TABLE DroppedItems(X INT, Y INT, RandomID INT, ItemID INT, DespawnTimer INT)";
|
||||
string DroppedItems = "CREATE TABLE DroppedItems(X INT, Y INT, RandomID INT, ItemID INT, DespawnTimer INT, Data INT)";
|
||||
string TrackedQuest = "CREATE TABLE TrackedQuest(playerId INT, questId INT, timesCompleted INT)";
|
||||
string OnlineUsers = "CREATE TABLE OnlineUsers(playerId INT, Admin TEXT(3), Moderator TEXT(3), Subscribed TEXT(3))";
|
||||
string CompetitionGear = "CREATE TABLE CompetitionGear(playerId INT, headItem INT, bodyItem INT, legItem INT, feetItem INT)";
|
||||
|
@ -3455,7 +3455,7 @@ namespace HISP.Server
|
|||
db.Open();
|
||||
MySqlCommand sqlCommand = db.CreateCommand();
|
||||
|
||||
sqlCommand.CommandText = "SELECT ItemId,RandomId FROM Inventory WHERE PlayerId=@playerId";
|
||||
sqlCommand.CommandText = "SELECT ItemId,RandomId,Data FROM Inventory WHERE PlayerId=@playerId";
|
||||
sqlCommand.Parameters.AddWithValue("@playerId", playerId);
|
||||
sqlCommand.Prepare();
|
||||
MySqlDataReader reader = sqlCommand.ExecuteReader();
|
||||
|
@ -3463,7 +3463,7 @@ namespace HISP.Server
|
|||
|
||||
while (reader.Read())
|
||||
{
|
||||
instances.Add(new ItemInstance(reader.GetInt32(0), reader.GetInt32(1)));
|
||||
instances.Add(new ItemInstance(reader.GetInt32(0), reader.GetInt32(1), reader.GetInt32(2)));
|
||||
}
|
||||
sqlCommand.Dispose();
|
||||
return instances;
|
||||
|
@ -3477,10 +3477,11 @@ namespace HISP.Server
|
|||
db.Open();
|
||||
MySqlCommand sqlCommand = db.CreateCommand();
|
||||
|
||||
sqlCommand.CommandText = "INSERT INTO Inventory VALUES(@playerId,@randomId,@itemId)";
|
||||
sqlCommand.CommandText = "INSERT INTO Inventory VALUES(@playerId,@randomId,@itemId, @data)";
|
||||
sqlCommand.Parameters.AddWithValue("@playerId", playerId);
|
||||
sqlCommand.Parameters.AddWithValue("@randomId", instance.RandomId);
|
||||
sqlCommand.Parameters.AddWithValue("@itemId", instance.ItemId);
|
||||
sqlCommand.Parameters.AddWithValue("@data", instance.Data);
|
||||
sqlCommand.Prepare();
|
||||
sqlCommand.ExecuteNonQuery();
|
||||
sqlCommand.Dispose();
|
||||
|
@ -3738,6 +3739,7 @@ namespace HISP.Server
|
|||
droppedItem.X = reader.GetInt32(0);
|
||||
droppedItem.Y = reader.GetInt32(1);
|
||||
droppedItem.DespawnTimer = reader.GetInt32(4);
|
||||
droppedItem.Data = reader.GetInt32(5);
|
||||
itemList.Add(droppedItem);
|
||||
}
|
||||
sqlCommand.Dispose();
|
||||
|
@ -3768,12 +3770,13 @@ namespace HISP.Server
|
|||
|
||||
|
||||
MySqlCommand sqlCommand = db.CreateCommand();
|
||||
sqlCommand.CommandText = "INSERT INTO DroppedItems VALUES(@x, @y, @randomId, @itemId, @despawnTimer)";
|
||||
sqlCommand.CommandText = "INSERT INTO DroppedItems VALUES(@x, @y, @randomId, @itemId, @despawnTimer, @data)";
|
||||
sqlCommand.Parameters.AddWithValue("@x", item.X);
|
||||
sqlCommand.Parameters.AddWithValue("@y", item.Y);
|
||||
sqlCommand.Parameters.AddWithValue("@randomId", item.Instance.RandomId);
|
||||
sqlCommand.Parameters.AddWithValue("@itemId", item.Instance.ItemId);
|
||||
sqlCommand.Parameters.AddWithValue("@despawnTimer", item.DespawnTimer);
|
||||
sqlCommand.Parameters.AddWithValue("@data", item.Data);
|
||||
sqlCommand.Prepare();
|
||||
sqlCommand.ExecuteNonQuery();
|
||||
sqlCommand.Dispose();
|
||||
|
|
|
@ -519,7 +519,7 @@ namespace HISP.Server
|
|||
int price = gameData.horses.pawneer_base_price[i].price;
|
||||
Pawneer pawneerPricing = new Pawneer(id, price);
|
||||
Pawneer.PawneerPriceModels.Add(pawneerPricing);
|
||||
Logger.DebugPrint("Registered Pawneer Base Price " + pawneerPricing.BreedId + " for $" + pawneerPricing.BasePrice.ToString("N0"));
|
||||
Logger.DebugPrint("Registered Pawneer Base Price " + pawneerPricing.BreedId + " for $" + pawneerPricing.BasePrice.ToString("N0", CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
int totalCategories = gameData.horses.categorys.Count;
|
||||
|
@ -924,6 +924,15 @@ namespace HISP.Server
|
|||
Messages.FarrierPutOnSteelShoesAllMesssageFormat = gameData.messages.meta.farrier.put_on_steel_all;
|
||||
Messages.FarrierShoesCantAffordMessage = gameData.messages.meta.farrier.cant_afford_farrier;
|
||||
|
||||
// Santa
|
||||
Messages.SantaHiddenText = gameData.messages.meta.santa.hidden_text;
|
||||
Messages.SantaWrapItemFormat = gameData.messages.meta.santa.wrap_format;
|
||||
Messages.SantaWrappedObjectMessage = gameData.messages.meta.santa.wrapped_object;
|
||||
Messages.SantaCantWrapInvFull = gameData.messages.meta.santa.wrap_fail_inv_full;
|
||||
|
||||
Messages.SantaItemOpenedFormat = gameData.messages.meta.santa.open_format;
|
||||
Messages.SantaItemCantOpenInvFull = gameData.messages.meta.santa.open_format;
|
||||
|
||||
// Pawneer
|
||||
Messages.PawneerUntackedHorsesICanBuy = gameData.messages.meta.pawneer.untacked_i_can_buy;
|
||||
Messages.PawneerHorseFormat = gameData.messages.meta.pawneer.pawn_horse;
|
||||
|
@ -1402,6 +1411,7 @@ namespace HISP.Server
|
|||
Messages.ItemThrowButton = gameData.messages.meta.inventory.item_throw_button;
|
||||
Messages.ItemConsumeButton = gameData.messages.meta.inventory.item_consume_button;
|
||||
Messages.ItemUseButton = gameData.messages.meta.inventory.item_use_button;
|
||||
Messages.ItemOpenButton = gameData.messages.meta.inventory.item_open_button;
|
||||
Messages.ItemWearButton = gameData.messages.meta.inventory.item_wear_button;
|
||||
Messages.ItemReadButton = gameData.messages.meta.inventory.item_read_button;
|
||||
|
||||
|
|
|
@ -87,14 +87,14 @@ namespace HISP.Server
|
|||
if (!client.LoggedinUser.MetaPriority)
|
||||
UpdateArea(client);
|
||||
|
||||
Treasure.AddValue();
|
||||
Database.IncPlayerTirednessForOfflineUsers();
|
||||
|
||||
|
||||
if (totalMinutesElapsed % 5 == 0)
|
||||
{
|
||||
Treasure.AddValue();
|
||||
DroppedItems.DespawnItems();
|
||||
DroppedItems.GenerateItems(false);
|
||||
DroppedItems.GenerateItems();
|
||||
}
|
||||
|
||||
WildHorse.Update();
|
||||
|
@ -2344,6 +2344,7 @@ namespace HISP.Server
|
|||
{
|
||||
room.Drawing += drawingToAdd;
|
||||
Database.SetLastPlayer("D" + room.Id.ToString(), sender.LoggedinUser.Id);
|
||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2399,6 +2400,7 @@ namespace HISP.Server
|
|||
{
|
||||
room.Drawing += drawing;
|
||||
Database.SetLastPlayer("D" + room.Id.ToString(), sender.LoggedinUser.Id);
|
||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2501,7 +2503,7 @@ namespace HISP.Server
|
|||
if (Database.GetLastPlayer("P" + roomId) != sender.LoggedinUser.Id)
|
||||
{
|
||||
Database.SetLastPlayer("P" + roomId, sender.LoggedinUser.Id);
|
||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y);
|
||||
UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -3226,10 +3228,9 @@ namespace HISP.Server
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
loggedInUser.Facing = direction + (onHorse * 5);
|
||||
if (loggedInUser.Y != newY || loggedInUser.X != newX)
|
||||
{
|
||||
loggedInUser.Facing = direction + (onHorse * 5);
|
||||
if (moveTwo)
|
||||
direction += 20;
|
||||
loggedInUser.Y = newY;
|
||||
|
@ -4145,6 +4146,76 @@ namespace HISP.Server
|
|||
sender.SendPacket(itemRemovedMessage);
|
||||
}
|
||||
|
||||
break;
|
||||
case PacketBuilder.ITEM_WRAP:
|
||||
packetStr = Encoding.UTF8.GetString(packet);
|
||||
randomIdStr = packetStr.Substring(2, packet.Length - 2);
|
||||
randomId = 0;
|
||||
|
||||
try
|
||||
{
|
||||
randomId = Int32.Parse(randomIdStr);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet.");
|
||||
return;
|
||||
}
|
||||
if (sender.LoggedinUser.Inventory.HasItem(randomId))
|
||||
{
|
||||
ItemInstance curItem = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId).ItemInstances[0];
|
||||
ItemInstance wrappedItem = new ItemInstance(Item.Present, -1, curItem.ItemId);
|
||||
|
||||
try
|
||||
{
|
||||
sender.LoggedinUser.Inventory.Add(wrappedItem);
|
||||
sender.LoggedinUser.Inventory.Remove(curItem);
|
||||
}
|
||||
catch(InventoryException)
|
||||
{
|
||||
byte[] cantWrapPresent = PacketBuilder.CreateChat(Messages.SantaCantWrapInvFull, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantWrapPresent);
|
||||
UpdateArea(sender);
|
||||
break;
|
||||
}
|
||||
}
|
||||
byte[] wrappedObjectMessage = PacketBuilder.CreateChat(Messages.SantaWrappedObjectMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(wrappedObjectMessage);
|
||||
UpdateArea(sender);
|
||||
break;
|
||||
case PacketBuilder.ITEM_OPEN:
|
||||
packetStr = Encoding.UTF8.GetString(packet);
|
||||
randomIdStr = packetStr.Substring(2, packet.Length - 2);
|
||||
randomId = 0;
|
||||
|
||||
try
|
||||
{
|
||||
randomId = Int32.Parse(randomIdStr);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet.");
|
||||
return;
|
||||
}
|
||||
if (sender.LoggedinUser.Inventory.HasItem(randomId))
|
||||
{
|
||||
InventoryItem item = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
|
||||
int newItem = item.ItemInstances[0].Data;
|
||||
try
|
||||
{
|
||||
sender.LoggedinUser.Inventory.Add(new ItemInstance(newItem));
|
||||
sender.LoggedinUser.Inventory.Remove(item.ItemInstances[0]);
|
||||
}
|
||||
catch(InventoryException)
|
||||
{
|
||||
byte[] cantOpenInvFull = PacketBuilder.CreateChat(Messages.SantaItemCantOpenInvFull, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantOpenInvFull);
|
||||
break;
|
||||
}
|
||||
byte[] itemOpened = PacketBuilder.CreateChat(Messages.FormatSantaOpenPresent(Item.GetItemById(newItem).Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(itemOpened);
|
||||
UpdateInventory(sender);
|
||||
}
|
||||
break;
|
||||
case PacketBuilder.ITEM_USE:
|
||||
packetStr = Encoding.UTF8.GetString(packet);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using HISP.Game;
|
||||
|
@ -149,7 +150,9 @@ namespace HISP.Server
|
|||
public const byte ITEM_BUY_5 = 0x35;
|
||||
public const byte ITEM_BUY_25 = 0x37;
|
||||
public const byte ITEM_SELL = 0x3C;
|
||||
public const byte ITEM_WRAP = 0x17;
|
||||
public const byte ITEM_SELL_ALL = 0x3D;
|
||||
public const byte ITEM_OPEN = 0x16;
|
||||
public const byte ITEM_WEAR = 0x46;
|
||||
public const byte ITEM_REMOVE = 0x47;
|
||||
public const byte ITEM_CONSUME = 0x51;
|
||||
|
@ -813,9 +816,9 @@ namespace HISP.Server
|
|||
|
||||
public static byte[] CreatePlayerData(int money, int playerCount, int mail)
|
||||
{
|
||||
byte[] moneyStrBytes = Encoding.UTF8.GetBytes(money.ToString("N0"));
|
||||
byte[] playerStrBytes = Encoding.UTF8.GetBytes(playerCount.ToString("N0"));
|
||||
byte[] mailStrBytes = Encoding.UTF8.GetBytes(mail.ToString("N0"));
|
||||
byte[] moneyStrBytes = Encoding.UTF8.GetBytes(money.ToString("N0", CultureInfo.InvariantCulture));
|
||||
byte[] playerStrBytes = Encoding.UTF8.GetBytes(playerCount.ToString("N0", CultureInfo.InvariantCulture));
|
||||
byte[] mailStrBytes = Encoding.UTF8.GetBytes(mail.ToString("N0", CultureInfo.InvariantCulture));
|
||||
|
||||
MemoryStream ms = new MemoryStream();
|
||||
ms.WriteByte(PACKET_BASE_STATS);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue