mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
Deleted the list folder and anything in it. This was the old way before I realized how groups work.
This commit is contained in:
parent
0317bea83b
commit
f286922974
@ -213,13 +213,6 @@
|
|||||||
<Compile Include="packets\send\groups\GroupMembersX32Packet.cs" />
|
<Compile Include="packets\send\groups\GroupMembersX32Packet.cs" />
|
||||||
<Compile Include="packets\send\groups\GroupMembersX64Packet.cs" />
|
<Compile Include="packets\send\groups\GroupMembersX64Packet.cs" />
|
||||||
<Compile Include="packets\send\groups\SynchGroupWorkValuesPacket.cs" />
|
<Compile Include="packets\send\groups\SynchGroupWorkValuesPacket.cs" />
|
||||||
<Compile Include="packets\send\list\ListEntry.cs" />
|
|
||||||
<Compile Include="packets\send\list\ListUtils.cs" />
|
|
||||||
<Compile Include="packets\send\list\SetListPropertyPacket.cs" />
|
|
||||||
<Compile Include="packets\send\list\ListBeginPacket.cs" />
|
|
||||||
<Compile Include="packets\send\list\ListEndPacket.cs" />
|
|
||||||
<Compile Include="packets\send\list\ListEntriesEndPacket.cs" />
|
|
||||||
<Compile Include="packets\send\list\ListStartPacket.cs" />
|
|
||||||
<Compile Include="packets\send\player\InfoRequestResponsePacket.cs" />
|
<Compile Include="packets\send\player\InfoRequestResponsePacket.cs" />
|
||||||
<Compile Include="packets\send\player\SendAchievementRatePacket.cs" />
|
<Compile Include="packets\send\player\SendAchievementRatePacket.cs" />
|
||||||
<Compile Include="packets\send\player\SetCurrentJobPacket.cs" />
|
<Compile Include="packets\send\player\SetCurrentJobPacket.cs" />
|
||||||
|
@ -8,7 +8,6 @@ using FFXIVClassic_Map_Server.lua;
|
|||||||
using FFXIVClassic_Map_Server.packets.send;
|
using FFXIVClassic_Map_Server.packets.send;
|
||||||
using FFXIVClassic_Map_Server.packets.send.actor;
|
using FFXIVClassic_Map_Server.packets.send.actor;
|
||||||
using FFXIVClassic_Map_Server.packets.send.events;
|
using FFXIVClassic_Map_Server.packets.send.events;
|
||||||
using FFXIVClassic_Map_Server.packets.send.list;
|
|
||||||
using FFXIVClassic_Map_Server.packets.send.player;
|
using FFXIVClassic_Map_Server.packets.send.player;
|
||||||
using FFXIVClassic_Map_Server.utils;
|
using FFXIVClassic_Map_Server.utils;
|
||||||
using System;
|
using System;
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.list
|
|
||||||
{
|
|
||||||
class ListBeginPacket
|
|
||||||
{
|
|
||||||
public const ushort OPCODE = 0x017D;
|
|
||||||
public const uint PACKET_SIZE = 0x40;
|
|
||||||
|
|
||||||
public static SubPacket BuildPacket(uint playerActorID, uint locationCode, ulong sequenceId, ulong listId, int numEntries)
|
|
||||||
{
|
|
||||||
byte[] data = new byte[PACKET_SIZE - 0x20];
|
|
||||||
|
|
||||||
using (MemoryStream mem = new MemoryStream(data))
|
|
||||||
{
|
|
||||||
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
|
||||||
{
|
|
||||||
//Write List Header
|
|
||||||
binWriter.Write((UInt64)locationCode);
|
|
||||||
binWriter.Write((UInt64)sequenceId);
|
|
||||||
//Write List Info
|
|
||||||
binWriter.Write((UInt64)listId);
|
|
||||||
binWriter.Write((UInt32)numEntries);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SubPacket(OPCODE, playerActorID, playerActorID, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.list
|
|
||||||
{
|
|
||||||
class ListEndPacket
|
|
||||||
{
|
|
||||||
public const ushort OPCODE = 0x017E;
|
|
||||||
public const uint PACKET_SIZE = 0x38;
|
|
||||||
|
|
||||||
public static SubPacket BuildPacket(uint playerActorID, uint locationCode, ulong sequenceId, ulong listId)
|
|
||||||
{
|
|
||||||
byte[] data = new byte[PACKET_SIZE - 0x20];
|
|
||||||
|
|
||||||
using (MemoryStream mem = new MemoryStream(data))
|
|
||||||
{
|
|
||||||
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
|
||||||
{
|
|
||||||
//Write List Header
|
|
||||||
binWriter.Write((UInt64)locationCode);
|
|
||||||
binWriter.Write((UInt64)sequenceId);
|
|
||||||
//Write List Info
|
|
||||||
binWriter.Write((UInt64)listId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SubPacket(OPCODE, playerActorID, playerActorID, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,51 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.list
|
|
||||||
{
|
|
||||||
class ListEntriesEndPacket
|
|
||||||
{
|
|
||||||
public const ushort OPCODE = 0x017F;
|
|
||||||
public const uint PACKET_SIZE = 0x1B8;
|
|
||||||
|
|
||||||
public static SubPacket BuildPacket(uint playerActorID, uint locationCode, ulong sequenceId, List<ListEntry> entries, int offset)
|
|
||||||
{
|
|
||||||
byte[] data = new byte[PACKET_SIZE - 0x20];
|
|
||||||
|
|
||||||
using (MemoryStream mem = new MemoryStream(data))
|
|
||||||
{
|
|
||||||
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
|
||||||
{
|
|
||||||
//Write List Header
|
|
||||||
binWriter.Write((UInt64)locationCode);
|
|
||||||
binWriter.Write((UInt64)sequenceId);
|
|
||||||
//Write Entries
|
|
||||||
int max = 8;
|
|
||||||
if (entries.Count-offset < 8)
|
|
||||||
max = entries.Count - offset;
|
|
||||||
for (int i = 0; i < max; i++)
|
|
||||||
{
|
|
||||||
binWriter.Seek(0x10 + (0x30 * i), SeekOrigin.Begin);
|
|
||||||
|
|
||||||
ListEntry entry = entries[i];
|
|
||||||
binWriter.Write((UInt32)entry.actorId);
|
|
||||||
binWriter.Write((UInt32)entry.unknown1);
|
|
||||||
binWriter.Write((UInt32)entry.unknown2);
|
|
||||||
binWriter.Write((Byte)(entry.flag1? 1 : 0));
|
|
||||||
binWriter.Write((Byte)(entry.isOnline? 1 : 0));
|
|
||||||
binWriter.Write(Encoding.ASCII.GetBytes(entry.name), 0, Encoding.ASCII.GetByteCount(entry.name) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(entry.name));
|
|
||||||
}
|
|
||||||
//Write Count
|
|
||||||
binWriter.Seek(0x10 + (0x30 * 8), SeekOrigin.Begin);
|
|
||||||
binWriter.Write(max);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SubPacket(OPCODE, playerActorID, playerActorID, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.list
|
|
||||||
{
|
|
||||||
class ListEntry
|
|
||||||
{
|
|
||||||
public uint actorId;
|
|
||||||
public uint unknown1;
|
|
||||||
public uint unknown2;
|
|
||||||
public bool flag1;
|
|
||||||
public bool isOnline;
|
|
||||||
public string name;
|
|
||||||
|
|
||||||
public ListEntry(uint actorId, uint unknown1, uint unknown2, bool flag1, bool isOnline, string name)
|
|
||||||
{
|
|
||||||
this.actorId = actorId;
|
|
||||||
this.unknown1 = unknown1;
|
|
||||||
this.unknown2 = unknown2;
|
|
||||||
this.flag1 = flag1;
|
|
||||||
this.isOnline = isOnline;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.list
|
|
||||||
{
|
|
||||||
class ListStartPacket
|
|
||||||
{
|
|
||||||
public const uint TYPEID_RETAINER = 0x13881;
|
|
||||||
public const uint TYPEID_PARTY = 0x2711;
|
|
||||||
public const uint TYPEID_LINKSHELL = 0x4E22;
|
|
||||||
|
|
||||||
public const ushort OPCODE = 0x017C;
|
|
||||||
public const uint PACKET_SIZE = 0x98;
|
|
||||||
|
|
||||||
public static SubPacket BuildPacket(uint playerActorID, uint locationCode, ulong sequenceId, ulong listId, uint listTypeId, int numEntries)
|
|
||||||
{
|
|
||||||
byte[] data = new byte[PACKET_SIZE - 0x20];
|
|
||||||
|
|
||||||
using (MemoryStream mem = new MemoryStream(data))
|
|
||||||
{
|
|
||||||
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
|
||||||
{
|
|
||||||
//Temp stuff
|
|
||||||
string name = "";
|
|
||||||
|
|
||||||
//Write list header
|
|
||||||
binWriter.Write((UInt64)locationCode);
|
|
||||||
binWriter.Write((UInt64)sequenceId);
|
|
||||||
|
|
||||||
//Write list id
|
|
||||||
binWriter.Write((UInt64)3);
|
|
||||||
binWriter.Write((UInt64)listId);
|
|
||||||
binWriter.Write((UInt64)0);
|
|
||||||
binWriter.Write((UInt64)listId);
|
|
||||||
|
|
||||||
//This seems to Change depending on what the list is for
|
|
||||||
binWriter.Write((UInt32)listTypeId);
|
|
||||||
binWriter.Seek(0x40, SeekOrigin.Begin);
|
|
||||||
|
|
||||||
//This is for Linkshell
|
|
||||||
binWriter.Write((UInt32)0xFFFFFFFF);
|
|
||||||
binWriter.Write(Encoding.ASCII.GetBytes(name), 0, Encoding.ASCII.GetByteCount(name) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(name));
|
|
||||||
|
|
||||||
binWriter.Seek(0x64, SeekOrigin.Begin);
|
|
||||||
|
|
||||||
binWriter.Write((UInt32)0x6D);
|
|
||||||
binWriter.Write((UInt32)0x6D);
|
|
||||||
binWriter.Write((UInt32)0x6D);
|
|
||||||
binWriter.Write((UInt32)0x6D);
|
|
||||||
|
|
||||||
binWriter.Write((UInt32)numEntries);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SubPacket(OPCODE, playerActorID, playerActorID, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.list
|
|
||||||
{
|
|
||||||
class ListUtils
|
|
||||||
{
|
|
||||||
|
|
||||||
public static List<SubPacket> CreateList(uint actorId, uint locationCode, ulong sequenceId, ulong listId, uint listTypeId, List<ListEntry> listEntries)
|
|
||||||
{
|
|
||||||
List<SubPacket> subpacketList = new List<SubPacket>();
|
|
||||||
subpacketList.Add(ListStartPacket.BuildPacket(actorId, locationCode, sequenceId, listId, listTypeId, listEntries.Count));
|
|
||||||
subpacketList.Add(ListBeginPacket.BuildPacket(actorId, locationCode, sequenceId, listId, listEntries.Count));
|
|
||||||
subpacketList.Add(ListEntriesEndPacket.BuildPacket(actorId, locationCode, sequenceId, listEntries, 0));
|
|
||||||
subpacketList.Add(ListEndPacket.BuildPacket(actorId, locationCode, sequenceId, listId));
|
|
||||||
return subpacketList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<SubPacket> CreateRetainerList(uint actorId, uint locationCode, ulong sequenceId, ulong listId, List<ListEntry> listEntries)
|
|
||||||
{
|
|
||||||
List<SubPacket> subpacketList = new List<SubPacket>();
|
|
||||||
subpacketList.Add(ListStartPacket.BuildPacket(actorId, locationCode, sequenceId, listId, ListStartPacket.TYPEID_RETAINER, listEntries.Count));
|
|
||||||
subpacketList.Add(ListBeginPacket.BuildPacket(actorId, locationCode, sequenceId, listId, listEntries.Count));
|
|
||||||
subpacketList.Add(ListEntriesEndPacket.BuildPacket(actorId, locationCode, sequenceId, listEntries, 0));
|
|
||||||
subpacketList.Add(ListEndPacket.BuildPacket(actorId, locationCode, sequenceId, listId));
|
|
||||||
return subpacketList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<SubPacket> CreatePartyList(uint actorId, uint locationCode, ulong sequenceId, ulong listId, List<ListEntry> listEntries)
|
|
||||||
{
|
|
||||||
List<SubPacket> subpacketList = new List<SubPacket>();
|
|
||||||
subpacketList.Add(ListStartPacket.BuildPacket(actorId, locationCode, sequenceId, listId, ListStartPacket.TYPEID_PARTY, listEntries.Count));
|
|
||||||
subpacketList.Add(ListBeginPacket.BuildPacket(actorId, locationCode, sequenceId, listId, listEntries.Count));
|
|
||||||
subpacketList.Add(ListEntriesEndPacket.BuildPacket(actorId, locationCode, sequenceId, listEntries, 0));
|
|
||||||
subpacketList.Add(ListEndPacket.BuildPacket(actorId, locationCode, sequenceId, listId));
|
|
||||||
return subpacketList;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,183 +0,0 @@
|
|||||||
using FFXIVClassic.Common;
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
using FFXIVClassic.Common;
|
|
||||||
|
|
||||||
namespace FFXIVClassic_Map_Server.packets.send.actor
|
|
||||||
{
|
|
||||||
class SetListPropetyPacket
|
|
||||||
{
|
|
||||||
public const ushort OPCODE = 0x017A;
|
|
||||||
public const uint PACKET_SIZE = 0xB0;
|
|
||||||
|
|
||||||
private const ushort MAXBYTES = 0x98;
|
|
||||||
|
|
||||||
private ushort runningByteTotal = 0;
|
|
||||||
private byte[] data = new byte[PACKET_SIZE - 0x20];
|
|
||||||
private bool isMore = false;
|
|
||||||
|
|
||||||
private MemoryStream mem;
|
|
||||||
private BinaryWriter binWriter;
|
|
||||||
|
|
||||||
public SetListPropetyPacket(ulong listId)
|
|
||||||
{
|
|
||||||
mem = new MemoryStream(data);
|
|
||||||
binWriter = new BinaryWriter(mem);
|
|
||||||
binWriter.Write((UInt64)listId);
|
|
||||||
binWriter.Seek(1, SeekOrigin.Current);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CloseStreams()
|
|
||||||
{
|
|
||||||
binWriter.Dispose();
|
|
||||||
mem.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AcceptCallback(uint id, byte value)
|
|
||||||
{
|
|
||||||
if (runningByteTotal + 6 > MAXBYTES)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
binWriter.Write((byte)1);
|
|
||||||
binWriter.Write((UInt32)id);
|
|
||||||
binWriter.Write((byte)value);
|
|
||||||
runningByteTotal+=6;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AddShort(uint id, ushort value)
|
|
||||||
{
|
|
||||||
if (runningByteTotal + 7 > MAXBYTES)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
binWriter.Write((byte)2);
|
|
||||||
binWriter.Write((UInt32)id);
|
|
||||||
binWriter.Write((UInt16)value);
|
|
||||||
runningByteTotal+=7;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AddInt(uint id, uint value)
|
|
||||||
{
|
|
||||||
if (runningByteTotal + 9 > MAXBYTES)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
binWriter.Write((byte)4);
|
|
||||||
binWriter.Write((UInt32)id);
|
|
||||||
binWriter.Write((UInt32)value);
|
|
||||||
runningByteTotal+=9;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AddBuffer(uint id, byte[] buffer)
|
|
||||||
{
|
|
||||||
if (runningByteTotal + 5 + buffer.Length > MAXBYTES)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
binWriter.Write((byte)buffer.Length);
|
|
||||||
binWriter.Write((UInt32)id);
|
|
||||||
binWriter.Write(buffer);
|
|
||||||
runningByteTotal += (ushort)(5 + buffer.Length);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddProperty(FFXIVClassic_Map_Server.Actors.Actor actor, string name)
|
|
||||||
{
|
|
||||||
string[] split = name.Split('.');
|
|
||||||
int arrayIndex = 0;
|
|
||||||
|
|
||||||
if (!(split[0].Equals("work") || split[0].Equals("charaWork") || split[0].Equals("playerWork") || split[0].Equals("npcWork")))
|
|
||||||
return;
|
|
||||||
|
|
||||||
Object curObj = actor;
|
|
||||||
for (int i = 0; i < split.Length; i++)
|
|
||||||
{
|
|
||||||
//For arrays
|
|
||||||
if (split[i].Contains('['))
|
|
||||||
{
|
|
||||||
if (split[i].LastIndexOf(']') - split[i].IndexOf('[') <= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
arrayIndex = Convert.ToInt32(split[i].Substring(split[i].IndexOf('[') + 1, split[i].Length - split[i].LastIndexOf(']')));
|
|
||||||
split[i] = split[i].Substring(0, split[i].IndexOf('['));
|
|
||||||
}
|
|
||||||
|
|
||||||
FieldInfo field = curObj.GetType().GetField(split[i]);
|
|
||||||
if (field == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
curObj = field.GetValue(curObj);
|
|
||||||
if (curObj == null)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (curObj == null)
|
|
||||||
return;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Array, we actually care whats inside
|
|
||||||
if (curObj.GetType().IsArray)
|
|
||||||
{
|
|
||||||
if (((Array)curObj).Length <= arrayIndex)
|
|
||||||
return;
|
|
||||||
curObj = ((Array)curObj).GetValue(arrayIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (curObj == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//Cast to the proper object and Add to packet
|
|
||||||
uint id = Utils.MurmurHash2(name, 0);
|
|
||||||
if (curObj is bool)
|
|
||||||
AcceptCallback(id, (byte)(((bool)curObj) ? 1 : 0));
|
|
||||||
else if (curObj is byte)
|
|
||||||
AcceptCallback(id, (byte)curObj);
|
|
||||||
else if (curObj is ushort)
|
|
||||||
AddShort(id, (ushort)curObj);
|
|
||||||
else if (curObj is short)
|
|
||||||
AddShort(id, (ushort)(short)curObj);
|
|
||||||
else if (curObj is uint)
|
|
||||||
AddInt(id, (uint)curObj);
|
|
||||||
else if (curObj is int)
|
|
||||||
AddInt(id, (uint)(int)curObj);
|
|
||||||
else if (curObj is float)
|
|
||||||
AddBuffer(id, BitConverter.GetBytes((float)curObj));
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetIsMore(bool flag)
|
|
||||||
{
|
|
||||||
isMore = flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetTarget(string target)
|
|
||||||
{
|
|
||||||
binWriter.Write((byte)(isMore ? 0x62 + target.Length : 0x82 + target.Length));
|
|
||||||
binWriter.Write(Encoding.ASCII.GetBytes(target));
|
|
||||||
runningByteTotal += (ushort)(1 + Encoding.ASCII.GetByteCount(target));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubPacket BuildPacket(uint playerActorID, uint actorID)
|
|
||||||
{
|
|
||||||
binWriter.Seek(0x8, SeekOrigin.Begin);
|
|
||||||
binWriter.Write((byte)runningByteTotal);
|
|
||||||
|
|
||||||
CloseStreams();
|
|
||||||
|
|
||||||
SubPacket packet = new SubPacket(OPCODE, playerActorID, actorID, data);
|
|
||||||
return packet;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user