Started implementing retainers. Added a instanced retainer spawn. Documented retainer scripts.

This commit is contained in:
Filip Maj 2017-09-05 12:37:23 -04:00
parent b5054debea
commit f437b36f5a
19 changed files with 313 additions and 34 deletions

View file

@ -12,6 +12,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
public const uint GroupInvitationRelationGroup = 50001;
public const uint TradeRelationGroup = 50002;
public const uint RetainerMeetingRelationGroup = 50003;
public const uint BazaarBuyItemRelationGroup = 50009;
public const uint RetainerGroup = 80001;

View file

@ -0,0 +1,36 @@
using FFXIVClassic.Common;
using FFXIVClassic_World_Server.Actor.Group.Work;
using FFXIVClassic_World_Server.Packets.Send.Subpackets.Groups;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_World_Server.DataObjects.Group
{
class RetainerMeetingRelationGroup : Relation
{
public RetainerMeetingRelationGroup(ulong groupIndex, uint host, uint other, uint command, ulong topicGroup)
: base(groupIndex, host, other, command, topicGroup)
{
}
public override uint GetTypeId()
{
return Group.RetainerMeetingRelationGroup;
}
public override void SendInitWorkValues(Session session)
{
SynchGroupWorkValuesPacket groupWork = new SynchGroupWorkValuesPacket(groupIndex);
groupWork.setTarget("/_init");
SubPacket test = groupWork.buildPacket(session.sessionId);
test.DebugPrintSubPacket();
session.clientConnection.QueuePacket(test);
}
}
}

View file

@ -165,7 +165,7 @@ namespace FFXIVClassic_World_Server
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand("SELECT id, name, classActorId, cdIDOffset, placeName, conditions, level FROM server_retainers INNER JOIN characters_retainers ON retainerId = server_retainers.id WHERE characterId = @charaId", conn);
MySqlCommand cmd = new MySqlCommand("SELECT id, name, actorClassId, cdIDOffset, placeName, conditions, level FROM server_retainers INNER JOIN characters_retainers ON retainerId = server_retainers.id WHERE characterId = @charaId", conn);
cmd.Parameters.AddWithValue("@charaId", charaId);
using (MySqlDataReader Reader = cmd.ExecuteReader())
{
@ -173,13 +173,13 @@ namespace FFXIVClassic_World_Server
{
uint id = Reader.GetUInt32("id") | 0xE0000000;
string name = Reader.GetString("name");
uint classActorId = Reader.GetUInt32("classActorId");
uint actorClassId = Reader.GetUInt32("actorClassId");
byte cdIDOffset = Reader.GetByte("cdIDOffset");
ushort placeName = Reader.GetUInt16("placeName");
byte conditions = Reader.GetByte("conditions");
byte level = Reader.GetByte("level");
members.Add(new RetainerGroupMember(id, name, classActorId, cdIDOffset, placeName, conditions, level));
members.Add(new RetainerGroupMember(id, name, actorClassId, cdIDOffset, placeName, conditions, level));
}
}
}

View file

@ -95,6 +95,7 @@
<Compile Include="DataObjects\Group\Linkshell.cs" />
<Compile Include="DataObjects\Group\LinkshellMember.cs" />
<Compile Include="DataObjects\Group\Party.cs" />
<Compile Include="DataObjects\Group\RetainerMeetingRelationGroup.cs" />
<Compile Include="DataObjects\Group\Relation.cs" />
<Compile Include="DataObjects\Group\RetainerGroup.cs" />
<Compile Include="DataObjects\Group\RetainerGroupMember.cs" />
@ -190,7 +191,8 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent></PostBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

View file

@ -217,6 +217,7 @@ namespace FFXIVClassic_World_Server
SendPartySync(pt);
mRetainerGroupManager.GetRetainerGroup(session.sessionId).SendGroupPackets(session);
List<Linkshell> linkshells = mLinkshellManager.GetPlayerLinkshellMembership(session.sessionId);
foreach (Linkshell ls in linkshells)
ls.SendGroupPackets(session);