fix more possible crashes

This commit is contained in:
Bluzume 2021-11-03 23:27:20 -04:00
parent 6cec9249ab
commit e7b24c709f

View file

@ -899,6 +899,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("VET-")) if (tile.Code.StartsWith("VET-"))
{ {
string[] vetInfo = tile.Code.Split('-'); string[] vetInfo = tile.Code.Split('-');
@ -908,7 +910,7 @@ namespace HISP.Server
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList) foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
price += vet.CalculatePrice(horse.BasicStats.Health); price += vet.CalculatePrice(horse.BasicStats.Health);
if(price == 0) if (price == 0)
{ {
byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.VetServicesNotNeededAll, PacketBuilder.CHAT_BOTTOM_RIGHT); byte[] notNeededMessagePacket = PacketBuilder.CreateChat(Messages.VetServicesNotNeededAll, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(notNeededMessagePacket); sender.SendPacket(notNeededMessagePacket);
@ -933,6 +935,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
case PacketBuilder.HORSE_VET_SERVICE: case PacketBuilder.HORSE_VET_SERVICE:
@ -960,14 +964,16 @@ namespace HISP.Server
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code.StartsWith("VET-")) if(tile.Code != null)
{
if (tile.Code.StartsWith("VET-"))
{ {
string[] vetInfo = tile.Code.Split('-'); string[] vetInfo = tile.Code.Split('-');
int vetId = int.Parse(vetInfo[1]); int vetId = int.Parse(vetInfo[1]);
Vet vet = Vet.GetVetById(vetId); Vet vet = Vet.GetVetById(vetId);
int price = vet.CalculatePrice(horseVetServiceInst.BasicStats.Health); int price = vet.CalculatePrice(horseVetServiceInst.BasicStats.Health);
if(sender.LoggedinUser.Money >= price) if (sender.LoggedinUser.Money >= price)
{ {
horseVetServiceInst.BasicStats.Health = 1000; horseVetServiceInst.BasicStats.Health = 1000;
sender.LoggedinUser.TakeMoney(price); sender.LoggedinUser.TakeMoney(price);
@ -983,6 +989,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
} }
@ -1017,6 +1025,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("FARRIER-")) if (tile.Code.StartsWith("FARRIER-"))
{ {
string[] farrierInfo = tile.Code.Split('-'); string[] farrierInfo = tile.Code.Split('-');
@ -1027,7 +1037,7 @@ namespace HISP.Server
int incAmount = 0; int incAmount = 0;
string msg = ""; string msg = "";
if(method == PacketBuilder.HORSE_SHOE_STEEL) if (method == PacketBuilder.HORSE_SHOE_STEEL)
{ {
price = farrier.SteelCost; price = farrier.SteelCost;
incAmount = farrier.SteelShoesAmount; incAmount = farrier.SteelShoesAmount;
@ -1056,6 +1066,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
} }
@ -1068,6 +1080,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("FARRIER-")) if (tile.Code.StartsWith("FARRIER-"))
{ {
string[] farrierInfo = tile.Code.Split('-'); string[] farrierInfo = tile.Code.Split('-');
@ -1107,6 +1121,8 @@ namespace HISP.Server
UpdateArea(sender); UpdateArea(sender);
} }
} }
}
break; break;
case PacketBuilder.HORSE_GROOM_SERVICE: case PacketBuilder.HORSE_GROOM_SERVICE:
randomId = 0; randomId = 0;
@ -1133,6 +1149,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("GROOMER-")) if (tile.Code.StartsWith("GROOMER-"))
{ {
string[] groomerInfo = tile.Code.Split('-'); string[] groomerInfo = tile.Code.Split('-');
@ -1158,6 +1176,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
} }
@ -1170,6 +1190,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("GROOMER-")) if (tile.Code.StartsWith("GROOMER-"))
{ {
string[] groomerInfo = tile.Code.Split('-'); string[] groomerInfo = tile.Code.Split('-');
@ -1180,7 +1202,7 @@ namespace HISP.Server
foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList) foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
{ {
if(horse.BasicStats.Groom < groomer.Max) if (horse.BasicStats.Groom < groomer.Max)
{ {
price += groomer.CalculatePrice(horse.BasicStats.Groom); price += groomer.CalculatePrice(horse.BasicStats.Groom);
count++; count++;
@ -1212,6 +1234,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
case PacketBuilder.HORSE_BARN_SERVICE: case PacketBuilder.HORSE_BARN_SERVICE:
@ -1239,6 +1263,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if (tile.Code != null)
{
if (tile.Code.StartsWith("BARN-")) if (tile.Code.StartsWith("BARN-"))
{ {
string[] barnInfo = tile.Code.Split('-'); string[] barnInfo = tile.Code.Split('-');
@ -1266,6 +1292,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
} }
@ -1278,6 +1306,8 @@ namespace HISP.Server
if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("BARN-")) if (tile.Code.StartsWith("BARN-"))
{ {
string[] barnInfo = tile.Code.Split('-'); string[] barnInfo = tile.Code.Split('-');
@ -1320,6 +1350,8 @@ namespace HISP.Server
} }
UpdateArea(sender); UpdateArea(sender);
} }
}
} }
break; break;
case PacketBuilder.HORSE_TRAIN: case PacketBuilder.HORSE_TRAIN:
@ -1587,6 +1619,8 @@ namespace HISP.Server
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("ARENA-")) if (tile.Code.StartsWith("ARENA-"))
{ {
string[] arenaInfo = tile.Code.Split('-'); string[] arenaInfo = tile.Code.Split('-');
@ -1650,6 +1684,8 @@ namespace HISP.Server
sender.SendPacket(allreadyEntered); sender.SendPacket(allreadyEntered);
} }
} }
}
} }
} }
else else
@ -2656,14 +2692,16 @@ namespace HISP.Server
if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y)) if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{ {
World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y); World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code.StartsWith("PASSWORD-")) if(tile.Code != null)
{ {
string[] args = tile.Code.Replace("!","-").Split('-'); if (tile.Code.StartsWith("PASSWORD-"))
if(args.Length >= 3) {
string[] args = tile.Code.Replace("!", "-").Split('-');
if (args.Length >= 3)
{ {
string expectedPassword = args[1]; string expectedPassword = args[1];
int questId = int.Parse(args[2]); int questId = int.Parse(args[2]);
if(password.ToLower() == expectedPassword.ToLower()) if (password.ToLower() == expectedPassword.ToLower())
{ {
Quest.CompleteQuest(sender.LoggedinUser, Quest.GetQuestById(questId), false); Quest.CompleteQuest(sender.LoggedinUser, Quest.GetQuestById(questId), false);
} }
@ -2688,6 +2726,7 @@ namespace HISP.Server
break; break;
} }
} }
}
else else
{ {
Logger.HackerPrint(sender.LoggedinUser.Username + " Sent a password while not in a special tile."); Logger.HackerPrint(sender.LoggedinUser.Username + " Sent a password while not in a special tile.");
@ -7992,6 +8031,8 @@ namespace HISP.Server
public static bool ProcessMapCodeWithArg(GameClient forClient, World.SpecialTile tile) public static bool ProcessMapCodeWithArg(GameClient forClient, World.SpecialTile tile)
{ {
string mapCode = tile.Code; string mapCode = tile.Code;
if (mapCode == null)
return false;
if(mapCode.Contains('-')) if(mapCode.Contains('-'))
{ {
string[] codeInfo = mapCode.Split('-'); string[] codeInfo = mapCode.Split('-');