1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-24 13:47:46 +00:00

Streamline ActorControlTypes, refactor ActionHandler/ClientTrigger to ClientActorControl

This commit is contained in:
goaaats 2018-06-23 21:38:04 +02:00
parent a042599a64
commit f2c2087d7b
22 changed files with 360 additions and 309 deletions

View file

@ -406,208 +406,6 @@ namespace Common {
Completed = 8, Completed = 8,
}; };
enum ActorControlType : uint16_t
{
ToggleWeapon = 0x01,
SetStatus = 0x02,
CastStart = 0x03,
ToggleAggro = 0x04,
ClassJobChange = 0x05,
DefeatMsg = 0x06,
GainExpMsg = 0x07,
LevelUpEffect = 0x0A,
ExpChainMsg = 0x0C,
HpSetStat = 0x0D,
DeathAnimation = 0x0E,
CastInterrupt = 0x0F,
ActionStart = 0x11,
StatusEffectGain = 0x14,
StatusEffectLose = 0x15,
HPFloatingText = 0x17,
UpdateRestedExp = 0x018,
Unk2 = 0x19,
Flee = 0x1B,
Unk3 = 0x20, // Animation related?
CombatIndicationShow = 0x22,
SpawnEffect = 0x25,
ToggleInvisible = 0x26,
ToggleActionUnlock = 0x29,
UpdateUiExp = 0x2B,
DmgTakenMsg = 0x2D,
SetTarget = 0x32,
ToggleNameHidden = 0x36,
LimitbreakStart = 0x47,
LimitbreakPartyStart = 0x48,
BubbleText = 0x49,
DamageEffect = 0x50,
RaiseAnimation = 0x51,
TreasureScreenMsg = 0x57,
SetOwnerId = 0x59,
ItemRepairMsg = 0x5C,
DirectorInit = 0x64,
DirectorClear = 0x65,
LeveStartAnim = 0x66,
LeveStartError = 0x67,
DirectorEObjMod = 0x6A,
DirectorUpdate = 0x6D,
ItemObtainMsg = 0x75,
DutyQuestScreenMsg = 0x7B,
ItemObtainIcon = 0x84,
FateItemFailMsg = 0x85,
ItemFailMsg = 0x86,
ActionLearnMsg1 = 0x87,
FreeEventPos = 0x8A,
SetBGM = 0xA1,
UnlockAetherCurrentMsg = 0xA4,
RemoveName = 0xA8,
ScreenFadeOut = 0xAA,
ZoneIn = 0xC8,
ZoneInDefaultPos = 0xC9,
TeleportStart = 0xCB,
TeleportDone = 0xCD,
TeleportDoneFadeOut = 0xCE,
DespawnZoneScreenMsg = 0xCF,
InstanceSelectDlg = 0xD2,
ActorDespawnEffect = 0xD4,
CompanionUnlock = 0xFD,
ObtainBarding = 0xFE,
EquipBarding = 0xFF,
CompanionMsg1 = 0x102,
CompanionMsg2 = 0x103,
ShowPetHotbar = 0x104,
ActionLearnMsg = 0x109,
ActorFadeOut = 0x10A,
ActorFadeIn = 0x10B,
WithdrawMsg = 0x10C,
OrderMinion = 0x10D,
ToggleMinion = 0x10E,
LearnMinion = 0x10F,
ActorFateOut1 = 0x110,
Emote = 0x122,
SetPose = 0x127,
CraftingUnk = 0x12C,
GatheringSenseMsg = 0x130,
PartyMsg = 0x131,
GatheringSenseMsg1 = 0x132,
GatheringSenseMsg2 = 0x138,
FishingMsg = 0x140,
FishingBaitMsg = 0x145,
FishingReachMsg = 0x147,
FishingFailMsg = 0x148,
MateriaConvertMsg = 0x15E,
MeldSuccessMsg = 0x15F,
MeldFailMsg = 0x160,
MeldModeToggle = 0x161,
AetherRestoreMsg = 0x163,
DyeMsg = 0x168,
ToggleCrestMsg = 0x16A,
ToggleBulkCrestMsg = 0x16B,
MateriaRemoveMsg = 0x16C,
GlamourCastMsg = 0x16D,
GlamourRemoveMsg = 0x16E,
RelicInfuseMsg = 0x179,
AetherReductionDlg = 0x17D,
Unk6 = 0x19C,
EObjAnimation = 0x19D,
SetTitle = 0x1F4,
SetStatusIcon = 0x1F8,
LimitBreakGauge = 0x1F9, // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb)
SetHomepoint = 0x1FB,
SetFavorite = 0x1FC,
LearnTeleport = 0x1FD,
OpenRecommendationGuide = 0x200,
ArmoryErrorMsg = 0x201,
AchievementPopup = 0x203,
Unk7 = 0x205, // LogMessage?
AchievementMsg = 0x206,
SetItemLevel = 0x209,
ChallengeEntryCompleteMsg = 0x20B,
ChallengeEntryUnlockMsg = 0x20C,
GilTrailMsg = 0x211,
SetMaxGearSets = 0x230,
SetCharaGearParamUI = 0x260,
GearSetEquipMsg = 0x321,
SetFestival = 0x386, // param1: festival.exd index
ToggleOrchestrionUnlock = 0x396,
Dismount = 0x3A0,
// Duty Recorder
BeginReplayAck = 0x3A1,
EndReplayAck = 0x3A2,
// PvP Duel
SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client)
EndDuelSession = 0x5E1, // because someone went oob?
StartDuelCountdown = 0x5E2, // begins a countdown; also does some duel bgm thing.
StartDuel = 0x5E3, // actually all it does is set the challenger actor id;
DuelResultScreen = 0x5E4, // win/lose thing, also reset a target id just like what EndDuelSession does.
// Duty Action
SetDutyActionId = 0x5E8, // ContentExAction
SetDutyActionHud = 0x5E9, // disable/enable
SetDutyActionActive = 0x5EA,
SetDutyActionRemaining = 0x5EB,
};
enum struct ChatType : uint16_t enum struct ChatType : uint16_t
{ {
LogKindError, LogKindError,

View file

@ -0,0 +1,291 @@
#ifndef _COMMONACTORCONTROL_H
#define _COMMONACTORCONTROL_H
#include <cstdint>
#include <vector>
#include <boost/make_shared.hpp>
#include "CommonGen.h"
// +---------------------------------------------------------------------------
// The following enumerations are structures to require their type be included.
// They are also defined within the Core::Common namespace to avoid collisions.
// +---------------------------------------------------------------------------
namespace Core {
namespace Network {
namespace ActorControl {
enum ActorControlType : uint16_t
{
ToggleWeapon = 0x01,
SetStatus = 0x02,
CastStart = 0x03,
ToggleAggro = 0x04,
ClassJobChange = 0x05,
DefeatMsg = 0x06,
GainExpMsg = 0x07,
LevelUpEffect = 0x0A,
ExpChainMsg = 0x0C,
HpSetStat = 0x0D,
DeathAnimation = 0x0E,
CastInterrupt = 0x0F,
ActionStart = 0x11,
StatusEffectGain = 0x14,
StatusEffectLose = 0x15,
HPFloatingText = 0x17,
UpdateRestedExp = 0x018,
Unk2 = 0x19,
Flee = 0x1B,
Unk3 = 0x20, // Animation related?
CombatIndicationShow = 0x22,
SpawnEffect = 0x25,
ToggleInvisible = 0x26,
ToggleActionUnlock = 0x29,
UpdateUiExp = 0x2B,
DmgTakenMsg = 0x2D,
SetTarget = 0x32,
ToggleNameHidden = 0x36,
LimitbreakStart = 0x47,
LimitbreakPartyStart = 0x48,
BubbleText = 0x49,
DamageEffect = 0x50,
RaiseAnimation = 0x51,
TreasureScreenMsg = 0x57,
SetOwnerId = 0x59,
ItemRepairMsg = 0x5C,
DirectorInit = 0x64,
DirectorClear = 0x65,
LeveStartAnim = 0x66,
LeveStartError = 0x67,
DirectorEObjMod = 0x6A,
DirectorUpdate = 0x6D,
ItemObtainMsg = 0x75,
DutyQuestScreenMsg = 0x7B,
ItemObtainIcon = 0x84,
FateItemFailMsg = 0x85,
ItemFailMsg = 0x86,
ActionLearnMsg1 = 0x87,
FreeEventPos = 0x8A,
SetBGM = 0xA1,
UnlockAetherCurrentMsg = 0xA4,
RemoveName = 0xA8,
ScreenFadeOut = 0xAA,
ZoneIn = 0xC8,
ZoneInDefaultPos = 0xC9,
TeleportStart = 0xCB,
TeleportDone = 0xCD,
TeleportDoneFadeOut = 0xCE,
DespawnZoneScreenMsg = 0xCF,
InstanceSelectDlg = 0xD2,
ActorDespawnEffect = 0xD4,
CompanionUnlock = 0xFD,
ObtainBarding = 0xFE,
EquipBarding = 0xFF,
CompanionMsg1 = 0x102,
CompanionMsg2 = 0x103,
ShowPetHotbar = 0x104,
ActionLearnMsg = 0x109,
ActorFadeOut = 0x10A,
ActorFadeIn = 0x10B,
WithdrawMsg = 0x10C,
OrderMinion = 0x10D,
ToggleMinion = 0x10E,
LearnMinion = 0x10F,
ActorFateOut1 = 0x110,
Emote = 0x122,
SetPose = 0x127,
CraftingUnk = 0x12C,
GatheringSenseMsg = 0x130,
PartyMsg = 0x131,
GatheringSenseMsg1 = 0x132,
GatheringSenseMsg2 = 0x138,
FishingMsg = 0x140,
FishingBaitMsg = 0x145,
FishingReachMsg = 0x147,
FishingFailMsg = 0x148,
MateriaConvertMsg = 0x15E,
MeldSuccessMsg = 0x15F,
MeldFailMsg = 0x160,
MeldModeToggle = 0x161,
AetherRestoreMsg = 0x163,
DyeMsg = 0x168,
ToggleCrestMsg = 0x16A,
ToggleBulkCrestMsg = 0x16B,
MateriaRemoveMsg = 0x16C,
GlamourCastMsg = 0x16D,
GlamourRemoveMsg = 0x16E,
RelicInfuseMsg = 0x179,
AetherReductionDlg = 0x17D,
Unk6 = 0x19C,
EObjAnimation = 0x19D,
SetTitle = 0x1F4,
SetStatusIcon = 0x1F8,
LimitBreakGauge = 0x1F9, // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb)
SetHomepoint = 0x1FB,
SetFavorite = 0x1FC,
LearnTeleport = 0x1FD,
OpenRecommendationGuide = 0x200,
ArmoryErrorMsg = 0x201,
AchievementPopup = 0x203,
Unk7 = 0x205, // LogMessage?
AchievementMsg = 0x206,
SetItemLevel = 0x209,
ChallengeEntryCompleteMsg = 0x20B,
ChallengeEntryUnlockMsg = 0x20C,
GilTrailMsg = 0x211,
SetMaxGearSets = 0x230,
SetCharaGearParamUI = 0x260,
GearSetEquipMsg = 0x321,
SetFestival = 0x386, // param1: festival.exd index
ToggleOrchestrionUnlock = 0x396,
Dismount = 0x3A0,
// Duty Recorder
BeginReplayAck = 0x3A1,
EndReplayAck = 0x3A2,
// PvP Duel
SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client)
EndDuelSession = 0x5E1, // because someone went oob?
StartDuelCountdown = 0x5E2, // begins a countdown; also does some duel bgm thing.
StartDuel = 0x5E3, // actually all it does is set the challenger actor id;
DuelResultScreen = 0x5E4, // win/lose thing, also reset a target id just like what EndDuelSession does.
// Duty Action
SetDutyActionId = 0x5E8, // ContentExAction
SetDutyActionHud = 0x5E9, // disable/enable
SetDutyActionActive = 0x5EA,
SetDutyActionRemaining = 0x5EB,
};
enum ClientActorControlType
{
ToggleSeathe = 0x01,
ToggleAutoAttack = 0x02,
ChangeTarget = 0x03,
DismountReq = 0x65,
RemoveStatusEffect = 0x68,
CastCancel = 0x69,
Return = 0xC8, // return dead / accept raise
FinishZoning = 0xC9,
Teleport = 0xCA,
MarkPlayer = 0x12D, // Mark player, visible to party only
SetTitleReq = 0x12E,
TitleList = 0x12F,
UpdatedSeenHowTos = 0x133,
AllotAttribute = 0x135,
ClearWaymarks = 0x13A,
HuntingLogDetails = 0x194,
Timers = 0x1AB,
DyeItem = 0x1B5,
RequestChocoboInventory = 0x1C4,
EmoteReq = 0x1F4,
PersistantEmoteCancel = 0x1F7,
PoseChange = 0x1F9,
PoseReapply = 0x1FA,
PoseCancel = 0x1FB,
AchievementCrit = 0x202,
AchievementComp = 0x203,
AchievementCatChat = 0x206,
DirectorInitFinish = 0x321,
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
EnterTerritoryEventFinished = 0x330,
RequestInstanceLeave = 0x333, // df menu button
AchievementCritReq = 0x3E8,
AchievementList = 0x3E9,
CompanionAction = 0x6A4,
CompanionSetBarding = 0x6A5,
CompanionActionUnlock = 0x6A6,
OpenPerformInstrumentUI = 0x71C,
StartReplay = 0x7BC,
EndReplay = 0x7BD, // request for restoring the original player state (actor, buff, gauge, etc..)
OpenDuelUI = 0x898, // Open a duel ui
DuelRequestResult = 0x899, // either accept/reject
};
} /* ActorControl */
} /* Common */
} /* Core */
#endif

View file

@ -227,7 +227,7 @@ namespace Packets {
ReqCountdownCancel = 0x012D, // updated 4.2 ReqCountdownCancel = 0x012D, // updated 4.2
ZoneLineHandler = 0x013C, // updated 4.3 ZoneLineHandler = 0x013C, // updated 4.3
ActionHandler = 0x013D, // updated 4.3 ClientActorControl = 0x013D, // updated 4.3
DiscoveryHandler = 0x013E, // updated 4.3 DiscoveryHandler = 0x013E, // updated 4.3
SkillHandler = 0x0140, // updated 4.3 SkillHandler = 0x0140, // updated 4.3

View file

@ -3,6 +3,7 @@
#include <Util/UtilMath.h> #include <Util/UtilMath.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/CommonActorControl.h>
#include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
@ -19,6 +20,7 @@ using namespace Core::Common;
using namespace Core::Network; using namespace Core::Network;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
extern Core::Framework g_fw; extern Core::Framework g_fw;

View file

@ -2,6 +2,7 @@
#include <Util/Util.h> #include <Util/Util.h>
#include <Util/UtilMath.h> #include <Util/UtilMath.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Network/CommonActorControl.h>
#include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
@ -17,6 +18,7 @@ using namespace Core::Common;
using namespace Core::Network; using namespace Core::Network;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
extern Core::Framework g_framework; extern Core::Framework g_framework;

View file

@ -1,6 +1,7 @@
#include <Util/Util.h> #include <Util/Util.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Network/CommonActorControl.h>
#include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
@ -14,6 +15,7 @@ using namespace Core::Common;
using namespace Core::Network; using namespace Core::Network;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
extern Core::Framework g_fw; extern Core::Framework g_fw;

View file

@ -1,6 +1,7 @@
#include <Util/Util.h> #include <Util/Util.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/CommonActorControl.h>
#include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
@ -16,6 +17,7 @@ using namespace Core::Common;
using namespace Core::Network; using namespace Core::Network;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::Action::EventAction::EventAction() Core::Action::EventAction::EventAction()
{ {
@ -50,7 +52,7 @@ void Core::Action::EventAction::onStart()
m_startTime = Util::getTimeMs(); m_startTime = Util::getTimeMs();
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastStart,
1, m_id, 0x4000004E ); 1, m_id, 0x4000004E );
if( m_pSource->isPlayer() ) if( m_pSource->isPlayer() )
@ -77,7 +79,7 @@ void Core::Action::EventAction::onFinish()
if( m_onActionFinishClb ) if( m_onActionFinishClb )
m_onActionFinishClb( *m_pSource->getAsPlayer(), m_eventId, m_additional ); m_onActionFinishClb( *m_pSource->getAsPlayer(), m_eventId, m_additional );
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, 0, m_id ); auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastStart, 0, m_id );
if( !pEvent->hasPlayedScene() ) if( !pEvent->hasPlayedScene() )
m_pSource->getAsPlayer()->eventFinish( m_eventId, 1 ); m_pSource->getAsPlayer()->eventFinish( m_eventId, 1 );

View file

@ -3,6 +3,7 @@
#include <Util/Util.h> #include <Util/Util.h>
#include <Util/UtilMath.h> #include <Util/UtilMath.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Network/CommonActorControl.h>
#include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
@ -18,6 +19,7 @@ using namespace Core::Common;
using namespace Core::Network; using namespace Core::Network;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::Action::EventItemAction::EventItemAction() Core::Action::EventItemAction::EventItemAction()
{ {

View file

@ -2,6 +2,7 @@
#include <Util/UtilMath.h> #include <Util/UtilMath.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/CommonActorControl.h>
#include "Forwards.h" #include "Forwards.h"
#include "Action/Action.h" #include "Action/Action.h"
@ -29,6 +30,7 @@ extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::Entity::Chara::Chara( ObjKind type ) : Core::Entity::Chara::Chara( ObjKind type ) :
Actor( type ) Actor( type )

View file

@ -7,11 +7,13 @@
#include <Network/GamePacket.h> #include <Network/GamePacket.h>
#include <Network/GamePacketNew.h> #include <Network/GamePacketNew.h>
#include <Network/PacketDef/Zone/ServerZoneDef.h> #include <Network/PacketDef/Zone/ServerZoneDef.h>
#include <Network/CommonActorControl.h>
#include <Util/UtilMath.h> #include <Util/UtilMath.h>
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
#include "Framework.h" #include "Framework.h"
extern Core::Framework g_fw; extern Core::Framework g_fw;
@ -79,7 +81,7 @@ void Core::Entity::EventObject::setState( uint8_t state )
for( const auto& player : m_inRangePlayers ) for( const auto& player : m_inRangePlayers )
{ {
ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() ); ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() );
eobjUpdatePacket.data().category = Common::ActorControlType::DirectorEObjMod; eobjUpdatePacket.data().category = ActorControlType::DirectorEObjMod;
eobjUpdatePacket.data().param1 = state; eobjUpdatePacket.data().param1 = state;
player->queuePacket( eobjUpdatePacket ); player->queuePacket( eobjUpdatePacket );
@ -90,7 +92,7 @@ void Core::Entity::EventObject::setAnimationFlag( uint32_t flag, uint32_t animat
for( const auto& player : m_inRangePlayers ) for( const auto& player : m_inRangePlayers )
{ {
ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() ); ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() );
eobjUpdatePacket.data().category = Common::ActorControlType::EObjAnimation; eobjUpdatePacket.data().category = ActorControlType::EObjAnimation;
eobjUpdatePacket.data().param1 = flag; eobjUpdatePacket.data().param1 = flag;
eobjUpdatePacket.data().param2 = animationFlag; eobjUpdatePacket.data().param2 = animationFlag;

View file

@ -7,6 +7,7 @@
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Network/CommonActorControl.h>
#include "Session.h" #include "Session.h"
#include "Player.h" #include "Player.h"
@ -45,6 +46,7 @@ extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
// player constructor // player constructor
Core::Entity::Player::Player() : Core::Entity::Player::Player() :
@ -1336,7 +1338,7 @@ void Core::Entity::Player::setTitle( uint16_t titleId )
m_activeTitle = titleId; m_activeTitle = titleId;
sendToInRangeSet( ActorControlPacket142( getId(), SetTitle, titleId ), true ); sendToInRangeSet( ActorControlPacket142( getId(), ActorControlType::SetTitle, titleId ), true );
} }
void Core::Entity::Player::setEquipDisplayFlags( uint8_t state ) void Core::Entity::Player::setEquipDisplayFlags( uint8_t state )

View file

@ -1,6 +1,7 @@
#include <Common.h> #include <Common.h>
#include <Network/GamePacket.h> #include <Network/GamePacket.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Network/CommonActorControl.h>
#include "Zone/Zone.h" #include "Zone/Zone.h"
@ -18,6 +19,7 @@ extern Core::Framework g_framework;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::InventoryPtr Core::Entity::Player::getInventory() const Core::InventoryPtr Core::Entity::Player::getInventory() const
{ {
@ -26,7 +28,7 @@ Core::InventoryPtr Core::Entity::Player::getInventory() const
void Core::Entity::Player::sendItemLevel() void Core::Entity::Player::sendItemLevel()
{ {
queuePacket( ActorControlPacket142( getId(), SetItemLevel, getItemLevel(), 0 ) ); queuePacket( ActorControlPacket142( getId(), ActorControlType::SetItemLevel, getItemLevel(), 0 ) );
} }
// TODO: This has to be redone and simplified // TODO: This has to be redone and simplified

View file

@ -2,6 +2,7 @@
#include <Network/PacketDef/Ipcs.h> #include <Network/PacketDef/Ipcs.h>
#include <Network/PacketDef/Zone/ServerZoneDef.h> #include <Network/PacketDef/Zone/ServerZoneDef.h>
#include <Network/CommonActorControl.h>
#include "Actor/Player.h" #include "Actor/Player.h"
@ -12,6 +13,7 @@
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::Event::Director::Director( Core::Event::Director::DirectorType type, uint16_t contentId ) : Core::Event::Director::Director( Core::Event::Director::DirectorType type, uint16_t contentId ) :
m_contentId( contentId ), m_contentId( contentId ),

View file

@ -15,6 +15,7 @@
#include "ItemContainer.h" #include "ItemContainer.h"
#include "Item.h" #include "Item.h"
#include "Framework.h" #include "Framework.h"
#include <Network/CommonActorControl.h>
extern Core::Framework g_fw; extern Core::Framework g_fw;
@ -22,6 +23,7 @@ using namespace Core::Common;
using namespace Core::Network; using namespace Core::Network;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::Inventory::Inventory( Core::Entity::Player* pOwner ) Core::Inventory::Inventory( Core::Entity::Player* pOwner )
{ {

View file

@ -66,7 +66,7 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive,
setZoneHandler( ClientZoneIpcType::FcInfoReqHandler, "FcInfoReqHandler", &GameConnection::fcInfoReqHandler ); setZoneHandler( ClientZoneIpcType::FcInfoReqHandler, "FcInfoReqHandler", &GameConnection::fcInfoReqHandler );
setZoneHandler( ClientZoneIpcType::ZoneLineHandler, "ZoneLineHandler", &GameConnection::zoneLineHandler ); setZoneHandler( ClientZoneIpcType::ZoneLineHandler, "ZoneLineHandler", &GameConnection::zoneLineHandler );
setZoneHandler( ClientZoneIpcType::ActionHandler, "ActionHandler", &GameConnection::actionHandler ); setZoneHandler( ClientZoneIpcType::ClientActorControl, "ClientActorControl", &GameConnection::clientActorControlHandler );
setZoneHandler( ClientZoneIpcType::DiscoveryHandler, "DiscoveryHandler", &GameConnection::discoveryHandler ); setZoneHandler( ClientZoneIpcType::DiscoveryHandler, "DiscoveryHandler", &GameConnection::discoveryHandler );

View file

@ -98,7 +98,7 @@ public:
DECLARE_HANDLER( updatePositionHandler ); DECLARE_HANDLER( updatePositionHandler );
DECLARE_HANDLER( chatHandler ); DECLARE_HANDLER( chatHandler );
DECLARE_HANDLER( zoneLineHandler ); DECLARE_HANDLER( zoneLineHandler );
DECLARE_HANDLER( actionHandler ); DECLARE_HANDLER( clientActorControlHandler );
DECLARE_HANDLER( inventoryModifyHandler ); DECLARE_HANDLER( inventoryModifyHandler );
DECLARE_HANDLER( discoveryHandler ); DECLARE_HANDLER( discoveryHandler );
DECLARE_HANDLER( eventHandlerTalk ); DECLARE_HANDLER( eventHandlerTalk );

View file

@ -6,6 +6,7 @@
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Network/CommonActorControl.h>
#include "Zone/Zone.h" #include "Zone/Zone.h"
#include "Zone/ZonePosition.h" #include "Zone/ZonePosition.h"
@ -17,11 +18,6 @@
#include "Network/PacketWrappers/ChatPacket.h" #include "Network/PacketWrappers/ChatPacket.h"
#include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/ServerNoticePacket.h"
#include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket142.h"
#include "Network/PacketWrappers/ActorControlPacket143.h"
#include "Network/PacketWrappers/ActorControlPacket144.h"
#include "Network/PacketWrappers/EventStartPacket.h"
#include "Network/PacketWrappers/EventFinishPacket.h"
#include "Network/PacketWrappers/PlayerStateFlagsPacket.h"
#include "DebugCommand/DebugCommandHandler.h" #include "DebugCommand/DebugCommandHandler.h"
@ -34,81 +30,16 @@
#include "ServerZone.h" #include "ServerZone.h"
#include "Forwards.h" #include "Forwards.h"
#include "Framework.h" #include "Framework.h"
#include <Network/PacketDef/Lobby/ServerLobbyDef.h>
extern Core::Framework g_fw; extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
enum ClientTrigger void Core::Network::GameConnection::clientActorControlHandler( const Packets::GamePacket& inPacket,
{
ToggleSeathe = 0x01,
ToggleAutoAttack = 0x02,
ChangeTarget = 0x03,
Dismount = 0x65,
RemoveStatusEffect = 0x68,
CastCancel = 0x69,
Return = 0xC8, // return dead / accept raise
FinishZoning = 0xC9,
Teleport = 0xCA,
MarkPlayer = 0x12D, // Mark player, visible to party only
SetTitle = 0x12E,
TitleList = 0x12F,
UpdatedSeenHowTos = 0x133,
AllotAttribute = 0x135,
ClearWaymarks = 0x13A,
HuntingLogDetails = 0x194,
Timers = 0x1AB,
DyeItem = 0x1B5,
RequestChocoboInventory = 0x1C4,
Emote = 0x1F4,
PersistantEmoteCancel = 0x1F7,
PoseChange = 0x1F9,
PoseReapply = 0x1FA,
PoseCancel = 0x1FB,
AchievementCrit = 0x202,
AchievementComp = 0x203,
AchievementCatChat = 0x206,
DirectorInitFinish = 0x321,
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
EnterTerritoryEventFinished = 0x330,
RequestInstanceLeave = 0x333, // df menu button
AchievementCritReq = 0x3E8,
AchievementList = 0x3E9,
CompanionAction = 0x6A4,
CompanionSetBarding = 0x6A5,
CompanionActionUnlock = 0x6A6,
OpenPerformInstrumentUI = 0x71C,
StartReplay = 0x7BC,
EndReplay = 0x7BD, // request for restoring the original player state (actor, buff, gauge, etc..)
OpenDuelUI = 0x898, // Open a duel ui
DuelRequestResult = 0x899, // either accept/reject
};
void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket,
Entity::Player& player ) Entity::Player& player )
{ {
auto pLog = g_fw.get< Logger >(); auto pLog = g_fw.get< Logger >();
@ -131,7 +62,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
switch( commandId ) switch( commandId )
{ {
case ClientTrigger::ToggleSeathe: // Toggle sheathe case ClientActorControlType::ToggleSeathe: // Toggle sheathe
{ {
if ( param11 == 1 ) if ( param11 == 1 )
player.setStance( Entity::Chara::Stance::Active ); player.setStance( Entity::Chara::Stance::Active );
@ -145,7 +76,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
break; break;
} }
case ClientTrigger::ToggleAutoAttack: // Toggle auto-attack case ClientActorControlType::ToggleAutoAttack: // Toggle auto-attack
{ {
if ( param11 == 1 ) if ( param11 == 1 )
{ {
@ -159,51 +90,51 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
break; break;
} }
case ClientTrigger::ChangeTarget: // Change target case ClientActorControlType::ChangeTarget: // Change target
{ {
uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 ); uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 );
player.changeTarget( targetId ); player.changeTarget( targetId );
break; break;
} }
case ClientTrigger::Dismount: case ClientActorControlType::DismountReq:
{ {
player.dismount(); player.dismount();
break; break;
} }
case ClientTrigger::RemoveStatusEffect: // Remove status (clicking it off) case ClientActorControlType::RemoveStatusEffect: // Remove status (clicking it off)
{ {
// todo: check if status can be removed by client from exd // todo: check if status can be removed by client from exd
player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) ); player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) );
break; break;
} }
case ClientTrigger::CastCancel: // Cancel cast case ClientActorControlType::CastCancel: // Cancel cast
{ {
if( player.getCurrentAction() ) if( player.getCurrentAction() )
player.getCurrentAction()->setInterrupted(); player.getCurrentAction()->setInterrupted();
break; break;
} }
case ClientTrigger::MarkPlayer: // Mark player case ClientActorControlType::MarkPlayer: // Mark player
{ {
break; break;
} }
case ClientTrigger::SetTitle: // Set player title case ClientActorControlType::SetTitleReq: // Set player title
{ {
player.setTitle( static_cast< uint16_t >( param1 ) ); player.setTitle( static_cast< uint16_t >( param1 ) );
break; break;
} }
case ClientTrigger::TitleList: // Get title list case ClientActorControlType::TitleList: // Get title list
{ {
player.sendTitleList(); player.sendTitleList();
break; break;
} }
case ClientTrigger::UpdatedSeenHowTos: // Update howtos seen case ClientActorControlType::UpdatedSeenHowTos: // Update howtos seen
{ {
uint32_t howToId = param11; uint32_t howToId = param11;
player.updateHowtosSeen( howToId ); player.updateHowtosSeen( howToId );
break; break;
} }
case ClientTrigger::Emote: // emote case ClientActorControlType::EmoteReq: // emote
{ {
uint64_t targetId = player.getTargetId(); uint64_t targetId = player.getTargetId();
uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 ); uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 );
@ -211,23 +142,23 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
player.emote( emoteId, targetId ); player.emote( emoteId, targetId );
break; break;
} }
case ClientTrigger::PersistantEmoteCancel: // cancel persistant emote case ClientActorControlType::PersistantEmoteCancel: // cancel persistant emote
{ {
break; break;
} }
case ClientTrigger::PoseChange: // change pose case ClientActorControlType::PoseChange: // change pose
{ {
break; break;
} }
case ClientTrigger::PoseReapply: // reapply pose case ClientActorControlType::PoseReapply: // reapply pose
{ {
break; break;
} }
case ClientTrigger::PoseCancel: // cancel pose case ClientActorControlType::PoseCancel: // cancel pose
{ {
break; break;
} }
case ClientTrigger::Return: // return dead / accept raise case ClientActorControlType::Return: // return dead / accept raise
{ {
switch ( static_cast < ResurrectType >( param1 ) ) switch ( static_cast < ResurrectType >( param1 ) )
{ {
@ -243,38 +174,38 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
} }
} }
case ClientTrigger::FinishZoning: // Finish zoning case ClientActorControlType::FinishZoning: // Finish zoning
{ {
player.finishZoning(); player.finishZoning();
break; break;
} }
case ClientTrigger::Teleport: // Teleport case ClientActorControlType::Teleport: // Teleport
{ {
player.teleportQuery( param11 ); player.teleportQuery( param11 );
break; break;
} }
case ClientTrigger::DyeItem: // Dye item case ClientActorControlType::DyeItem: // Dye item
{ {
break; break;
} }
case ClientTrigger::DirectorInitFinish: // Director init finish case ClientActorControlType::DirectorInitFinish: // Director init finish
{ {
player.getCurrentZone()->onInitDirector( player ); player.getCurrentZone()->onInitDirector( player );
break; break;
} }
case ClientTrigger::SomeDirectorEvent: // Director init finish case ClientActorControlType::SomeDirectorEvent: // Director init finish
{ {
player.getCurrentZone()->onSomeDirectorEvent( player ); player.getCurrentZone()->onSomeDirectorEvent( player );
break; break;
} }
case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere case ClientActorControlType::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere
{ {
player.setOnEnterEventDone( true ); player.setOnEnterEventDone( true );
break; break;
} }
case ClientTrigger::RequestInstanceLeave: case ClientActorControlType::RequestInstanceLeave:
{ {
// todo: apply cf penalty if applicable, make sure player isnt in combat // todo: apply cf penalty if applicable, make sure player isnt in combat
player.exitInstance(); player.exitInstance();

View file

@ -5,6 +5,7 @@
#include <Network/GamePacketNew.h> #include <Network/GamePacketNew.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Network/CommonActorControl.h>
#include <unordered_map> #include <unordered_map>
@ -36,6 +37,7 @@ extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
enum GmCommand enum GmCommand
{ {

View file

@ -3,6 +3,7 @@
#include <Common.h> #include <Common.h>
#include <Network/CommonNetwork.h> #include <Network/CommonNetwork.h>
#include <Network/GamePacketNew.h> #include <Network/GamePacketNew.h>
#include <Network/CommonActorControl.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Network/PacketDef/Chat/ServerChatDef.h> #include <Network/PacketDef/Chat/ServerChatDef.h>
@ -44,6 +45,7 @@ extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
void Core::Network::GameConnection::fcInfoReqHandler( const Packets::GamePacket& inPacket, void Core::Network::GameConnection::fcInfoReqHandler( const Packets::GamePacket& inPacket,
Entity::Player& player ) Entity::Player& player )

View file

@ -5,6 +5,7 @@
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/GamePacketNew.h> #include <Network/GamePacketNew.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Network/CommonActorControl.h>
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include "Network/GameConnection.h" #include "Network/GameConnection.h"
@ -32,6 +33,7 @@ extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inPacket, void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inPacket,
Entity::Player& player ) Entity::Player& player )

View file

@ -4,6 +4,7 @@
#include <Util/Util.h> #include <Util/Util.h>
#include <Util/UtilMath.h> #include <Util/UtilMath.h>
#include <Exd/ExdDataGenerated.h> #include <Exd/ExdDataGenerated.h>
#include <Network/CommonActorControl.h>
#include "Event/Director.h" #include "Event/Director.h"
#include "Event/EventDefs.h" #include "Event/EventDefs.h"
@ -26,6 +27,7 @@ extern Core::Framework g_fw;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration, Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration,
uint32_t guId, uint32_t guId,

View file

@ -11,6 +11,7 @@
#include <Network/CommonNetwork.h> #include <Network/CommonNetwork.h>
#include <Network/PacketDef/Zone/ServerZoneDef.h> #include <Network/PacketDef/Zone/ServerZoneDef.h>
#include <Network/PacketContainer.h> #include <Network/PacketContainer.h>
#include <Network/CommonActorControl.h>
#include <Database/DatabaseDef.h> #include <Database/DatabaseDef.h>
#include <Network/PacketWrappers/ActorControlPacket143.h> #include <Network/PacketWrappers/ActorControlPacket143.h>
@ -39,10 +40,10 @@
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
using namespace Core::Network::Packets::Server; using namespace Core::Network::Packets::Server;
using namespace Core::Network::ActorControl;
extern Core::Framework g_fw; extern Core::Framework g_fw;
/** /**
* \brief * \brief
*/ */
@ -142,7 +143,7 @@ void Core::Zone::setCurrentFestival( uint16_t festivalId )
{ {
auto player = playerEntry.second; auto player = playerEntry.second;
ActorControlPacket143 enableFestival( player->getId(), SetFestival, m_currentFestivalId ); ActorControlPacket143 enableFestival( player->getId(), ActorControlType::SetFestival, m_currentFestivalId );
playerEntry.second->queuePacket( enableFestival ); playerEntry.second->queuePacket( enableFestival );
} }
} }