mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-12 16:09:48 +12:00
fix more possible crashes
This commit is contained in:
parent
6cec9249ab
commit
e7b24c709f
1 changed files with 320 additions and 279 deletions
|
@ -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('-');
|
||||||
|
|
Loading…
Add table
Reference in a new issue