mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-07-24 03:20:30 +02:00
More cleanup (moved groups to WorldMaster class) and fixed the project file.
This commit is contained in:
parent
2cc63960a7
commit
31446f37fa
10 changed files with 227 additions and 127 deletions
|
@ -80,6 +80,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
return AddActorPacket.BuildPacket(actorId, playerActorId, 8);
|
||||
}
|
||||
|
||||
int val = 0x0b00;
|
||||
// actorClassId, [], [], numBattleCommon, [battleCommon], numEventCommon, [eventCommon], args for either initForBattle/initForEvent
|
||||
public override SubPacket CreateScriptBindPacket(uint playerActorId)
|
||||
{
|
||||
|
@ -88,6 +89,13 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
Player player = Server.GetWorldManager().GetPCInWorld(playerActorId);
|
||||
lParams = DoActorInit(player);
|
||||
|
||||
if (uniqueIdentifier.Equals("1"))
|
||||
{
|
||||
lParams[5].value = val;
|
||||
val++;
|
||||
player.SendMessage(0x20, "", String.Format("ID is now: 0x{0:X}", val));
|
||||
}
|
||||
|
||||
if (lParams != null && lParams.Count >= 3 && lParams[2].typeID == 0 && (int)lParams[2].value == 0)
|
||||
isStatic = true;
|
||||
|
||||
|
@ -114,15 +122,66 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
//ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams).DebugPrintSubPacket();
|
||||
return ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams);
|
||||
}
|
||||
|
||||
|
||||
public override BasePacket GetSpawnPackets(uint playerActorId, ushort spawnType)
|
||||
{
|
||||
List<SubPacket> subpackets = new List<SubPacket>();
|
||||
subpackets.Add(CreateAddActorPacket(playerActorId));
|
||||
subpackets.AddRange(GetEventConditionPackets(playerActorId));
|
||||
subpackets.Add(CreateSpeedPacket(playerActorId));
|
||||
subpackets.Add(CreateSpawnPositonPacket(playerActorId, 0x0));
|
||||
subpackets.Add(CreateAppearancePacket(playerActorId));
|
||||
subpackets.Add(CreateSpawnPositonPacket(playerActorId, 0x0));
|
||||
|
||||
if (uniqueIdentifier.Equals("door2"))
|
||||
{
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0xB09, 0x1af));
|
||||
}
|
||||
else if (uniqueIdentifier.Equals("uldah_mapshipport_1"))
|
||||
{
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0xdc5, 0x1af));
|
||||
subpackets[subpackets.Count - 1].DebugPrintSubPacket();
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId, playerActorId, "end0"));
|
||||
subpackets[subpackets.Count - 1].DebugPrintSubPacket();
|
||||
}
|
||||
else if (uniqueIdentifier.Equals("uldah_mapshipport_2"))
|
||||
{
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0x2, 0x1eb));
|
||||
subpackets[subpackets.Count - 1].DebugPrintSubPacket();
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId, playerActorId, "end0"));
|
||||
subpackets[subpackets.Count - 1].DebugPrintSubPacket();
|
||||
}
|
||||
else if (uniqueIdentifier.Equals("gridania_shipport"))
|
||||
{
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId,playerActorId, 0xcde, 0x141));
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId,playerActorId, "end0"));
|
||||
}
|
||||
else if (uniqueIdentifier.Equals("gridania_shipport2"))
|
||||
{
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0x02, 0x187));
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId, playerActorId, "end0"));
|
||||
}
|
||||
else if (uniqueIdentifier.Equals("limsa_shipport"))
|
||||
{
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, 0x1c8, 0xc4));
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId, playerActorId, "spin"));
|
||||
}
|
||||
else if (actorClassId == 5900013)
|
||||
{
|
||||
uint id = 2;
|
||||
uint id2 = 5144;
|
||||
string val = "fdot";
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, id, id2));
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId, playerActorId, val));
|
||||
}
|
||||
else if (actorClassId == 5900014)
|
||||
{
|
||||
uint id = 2;
|
||||
uint id2 = 5145;
|
||||
string val = "fdot";
|
||||
subpackets.Add(_0xD8Packet.BuildPacket(actorId, playerActorId, id, id2));
|
||||
subpackets.Add(_0xD9Packet.BuildPacket(actorId, playerActorId, val));
|
||||
}
|
||||
else
|
||||
subpackets.Add(CreateAppearancePacket(playerActorId));
|
||||
subpackets.Add(CreateNamePacket(playerActorId));
|
||||
subpackets.Add(CreateStatePacket(playerActorId));
|
||||
subpackets.Add(CreateIdleAnimationPacket(playerActorId));
|
||||
|
|
|
@ -82,7 +82,7 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
|||
GetActor().zone.UpdateActorPosition(GetActor());
|
||||
|
||||
}
|
||||
|
||||
long lastMilis = 0;
|
||||
public void UpdateInstance(List<Actor> list)
|
||||
{
|
||||
if (isUpdatesLocked)
|
||||
|
@ -95,11 +95,29 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
|||
//Remove missing actors
|
||||
for (int i = 0; i < actorInstanceList.Count; i++)
|
||||
{
|
||||
if (list.Contains(actorInstanceList[i]) && actorInstanceList[i] is Npc)
|
||||
{
|
||||
Npc npc = (Npc)actorInstanceList[i];
|
||||
|
||||
|
||||
long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
|
||||
|
||||
|
||||
if (npc.GetUniqueId().Equals("1") && milliseconds - lastMilis > 1000)
|
||||
{
|
||||
lastMilis = milliseconds;
|
||||
GetActor().QueuePacket(RemoveActorPacket.BuildPacket(playerActor.actorId, actorInstanceList[i].actorId));
|
||||
actorInstanceList.RemoveAt(i);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!list.Contains(actorInstanceList[i]))
|
||||
{
|
||||
GetActor().QueuePacket(RemoveActorPacket.BuildPacket(playerActor.actorId, actorInstanceList[i].actorId));
|
||||
actorInstanceList.RemoveAt(i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Add new actors or move
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue