#W# Added House limit to Settings.cs. Statichouses can now be odd shapes the statichouse.cfg can take more that 1 set of xy coords.

This commit is contained in:
WarrentyExpired 2026-08-24 20:09:57 -04:00
parent dc5e0577fd
commit eea0f9defb
8 changed files with 246 additions and 80 deletions

View file

@ -49,42 +49,45 @@ namespace Server.Scripts.Custom
string[] split = line.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
if (split.Length >= 13)
// Requires 14 parameters (10 base + 4 area variables)
if (split.Length >= 14)
{
try
{
Map map = Map.Parse(split[0]);
Point3D signLoc = new Point3D(int.Parse(split[1]), int.Parse(split[2]), int.Parse(split[3]));
Point2D start = new Point2D(int.Parse(split[4]), int.Parse(split[5]));
Point2D end = new Point2D(start.X + int.Parse(split[6]), start.Y + int.Parse(split[7]));
Rectangle2D area = new Rectangle2D(start, end);
int minZ = int.Parse(split[8]);
int maxZ = int.Parse(split[9]);
int price = int.Parse(split[10]);
int locks = int.Parse(split[11]);
int secures = int.Parse(split[12]);
int minZ = int.Parse(split[4]);
int maxZ = int.Parse(split[5]);
int price = int.Parse(split[6]);
int locks = int.Parse(split[7]);
int secures = int.Parse(split[8]);
int itemID = 0xC0B;
if (split.Length >= 14)
int itemID = split[9].StartsWith("0x", StringComparison.OrdinalIgnoreCase)
? Convert.ToInt32(split[9], 16)
: int.Parse(split[9]);
List<Rectangle2D> areas = new List<Rectangle2D>();
for (int i = 10; i < split.Length; i += 4)
{
if (split[13].StartsWith("0x", StringComparison.OrdinalIgnoreCase))
itemID = Convert.ToInt32(split[13], 16);
else
itemID = int.Parse(split[13]);
if (i + 3 < split.Length)
{
Point2D start = new Point2D(int.Parse(split[i]), int.Parse(split[i + 1]));
Point2D end = new Point2D(start.X + int.Parse(split[i + 2]), start.Y + int.Parse(split[i + 3]));
areas.Add(new Rectangle2D(start, end));
}
}
if (map != null && !CheckForExistingHouse(map, signLoc))
if (map != null && !CheckForExistingHouse(map, signLoc) && areas.Count > 0)
{
StaticHouseSign sign = new StaticHouseSign(itemID, area, minZ, maxZ, price, locks, secures);
StaticHouseSign sign = new StaticHouseSign(itemID, areas.ToArray(), minZ, maxZ, price, locks, secures);
sign.MoveToWorld(signLoc, map);
count++;
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing statichouses.cfg line: {line}\n{ex.Message}");
Console.WriteLine($"TasksManager: Error parsing statichouses.cfg line: {line}\n{ex.Message}");
}
}
}