Fixed PrivateAreas not working due to a bad actor id colliding with players.

This commit is contained in:
Filip Maj 2022-02-05 12:15:22 -05:00
parent 3ad30460d8
commit 56ba641e2a
5 changed files with 12 additions and 12 deletions

View File

@ -59,8 +59,8 @@ namespace Meteor.Map.Actors
LuaScript areaScript; LuaScript areaScript;
public Area(uint id, string zoneName, ushort regionId, string classPath, ushort bgmDay, ushort bgmNight, ushort bgmBattle, bool isIsolated, bool isInn, bool canRideChocobo, bool canStealth, bool isInstanceRaid) public Area(uint zoneId, string zoneName, ushort regionId, string classPath, ushort bgmDay, ushort bgmNight, ushort bgmBattle, bool isIsolated, bool isInn, bool canRideChocobo, bool canStealth, bool isInstanceRaid)
: base(id) : base((4 << 28 | zoneId << 19 | ((uint)1)))
{ {
this.zoneName = zoneName; this.zoneName = zoneName;
@ -77,10 +77,11 @@ namespace Meteor.Map.Actors
this.displayNameId = 0; this.displayNameId = 0;
this.customDisplayName = "_areaMaster"; this.customDisplayName = "_areaMaster";
this.actorName = String.Format("_areaMaster@{0:X5}", id << 8); this.actorName = String.Format("_areaMaster@{0:X5}", zoneId << 8);
this.classPath = classPath; this.classPath = classPath;
this.className = classPath.Substring(classPath.LastIndexOf("/") + 1); this.className = classPath.Substring(classPath.LastIndexOf("/") + 1);
this.zoneId = zoneId;
numXBlocks = (maxX - minX) / boundingGridSize; numXBlocks = (maxX - minX) / boundingGridSize;
numYBlocks = (maxY - minY) / boundingGridSize; numYBlocks = (maxY - minY) / boundingGridSize;

View File

@ -32,10 +32,10 @@ namespace Meteor.Map.actors.area
{ {
private Zone parentZone; private Zone parentZone;
private string privateAreaName; private string privateAreaName;
private uint privateAreaType; private new uint privateAreaType;
public PrivateArea(Zone parent, uint id, string classPath, string privateAreaName, uint privateAreaType, ushort bgmDay, ushort bgmNight, ushort bgmBattle) public PrivateArea(Zone parent, string classPath, string privateAreaName, uint privateAreaType, ushort bgmDay, ushort bgmNight, ushort bgmBattle)
: base(id, parent.zoneName, parent.regionId, classPath, bgmDay, bgmNight, bgmBattle, parent.isIsolated, parent.isInn, parent.canRideChocobo, parent.canStealth, true) : base(parent.zoneId, parent.zoneName, parent.regionId, classPath, bgmDay, bgmNight, bgmBattle, parent.isIsolated, parent.isInn, parent.canRideChocobo, parent.canStealth, true)
{ {
this.parentZone = parent; this.parentZone = parent;
this.zoneName = parent.zoneName; this.zoneName = parent.zoneName;

View File

@ -38,7 +38,7 @@ namespace Meteor.Map.actors.area
} }
public PrivateAreaContent(Zone parent, string classPath, string privateAreaName, uint privateAreaType, Director director, Player contentStarter) //TODO: Make it a list public PrivateAreaContent(Zone parent, string classPath, string privateAreaName, uint privateAreaType, Director director, Player contentStarter) //TODO: Make it a list
: base(parent, parent.actorId, classPath, privateAreaName, privateAreaType, 0, 0, 0) : base(parent, classPath, privateAreaName, privateAreaType, 0, 0, 0)
{ {
currentDirector = director; currentDirector = director;
LuaEngine.GetInstance().CallLuaFunction(contentStarter, this, "onCreate", false, currentDirector); LuaEngine.GetInstance().CallLuaFunction(contentStarter, this, "onCreate", false, currentDirector);

View File

@ -58,7 +58,7 @@ namespace Meteor.Map.Actors
public NpcSpawnType npcSpawnType; public NpcSpawnType npcSpawnType;
public Npc(int actorNumber, ActorClass actorClass, string uniqueId, Area spawnedArea, float posX, float posY, float posZ, float rot, ushort actorState, uint animationId, string customDisplayName) public Npc(int actorNumber, ActorClass actorClass, string uniqueId, Area spawnedArea, float posX, float posY, float posZ, float rot, ushort actorState, uint animationId, string customDisplayName)
: base((4 << 28 | spawnedArea.actorId << 19 | (uint)actorNumber)) : base((4 << 28 | spawnedArea.actorId << 19 | ((uint)actorNumber + 5)))
{ {
this.positionX = posX; this.positionX = posX;
this.positionY = posY; this.positionY = posY;

View File

@ -119,7 +119,7 @@ namespace Meteor.Map
{ {
Zone zone = new Zone(reader.GetUInt32(0), reader.GetString(1), reader.GetUInt16(2), reader.GetString(3), reader.GetUInt16(4), reader.GetUInt16(5), Zone zone = new Zone(reader.GetUInt32(0), reader.GetString(1), reader.GetUInt16(2), reader.GetString(3), reader.GetUInt16(4), reader.GetUInt16(5),
reader.GetUInt16(6), reader.GetBoolean(7), reader.GetBoolean(8), reader.GetBoolean(9), reader.GetBoolean(10), reader.GetBoolean(11), reader.GetBoolean(12)); reader.GetUInt16(6), reader.GetBoolean(7), reader.GetBoolean(8), reader.GetBoolean(9), reader.GetBoolean(10), reader.GetBoolean(11), reader.GetBoolean(12));
zoneList[zone.actorId] = zone; zoneList[zone.zoneId] = zone;
count1++; count1++;
} }
} }
@ -140,7 +140,6 @@ namespace Meteor.Map
string query = @" string query = @"
SELECT SELECT
id,
parentZoneId, parentZoneId,
privateAreaName, privateAreaName,
privateAreaType, privateAreaType,
@ -162,7 +161,7 @@ namespace Meteor.Map
if (zoneList.ContainsKey(parentZoneId)) if (zoneList.ContainsKey(parentZoneId))
{ {
Zone parent = zoneList[parentZoneId]; Zone parent = zoneList[parentZoneId];
PrivateArea privArea = new PrivateArea(parent, reader.GetUInt32("id"), reader.GetString("className"), reader.GetString("privateAreaName"), reader.GetUInt32("privateAreaType"), reader.GetUInt16("dayMusic"), reader.GetUInt16("nightMusic"), reader.GetUInt16("battleMusic")); PrivateArea privArea = new PrivateArea(parent, reader.GetString("className"), reader.GetString("privateAreaName"), reader.GetUInt32("privateAreaType"), reader.GetUInt16("dayMusic"), reader.GetUInt16("nightMusic"), reader.GetUInt16("battleMusic"));
parent.AddPrivateArea(privArea); parent.AddPrivateArea(privArea);
} }
else else