Core/Packets: Implemented SMSG_GAME_OBJECT_UI_ACTION (#20919)

This commit is contained in:
DoctorKraft
2018-01-04 01:15:33 +01:00
committed by joschiwald
parent 50af6fd0f8
commit 2ee6ce6849
4 changed files with 32 additions and 1 deletions

View File

@@ -1905,6 +1905,18 @@ void GameObject::Use(Unit* user)
player->SendDirectMessage(artifactForgeOpened.Write());
return;
}
case GAMEOBJECT_TYPE_UI_LINK:
{
Player* player = user->ToPlayer();
if (!player)
return;
WorldPackets::GameObject::GameObjectUIAction gameObjectUIAction;
gameObjectUIAction.ObjectGUID = GetGUID();
gameObjectUIAction.UILink = GetGOInfo()->UILink.UILinkType;
player->SendDirectMessage(gameObjectUIAction.Write());
return;
}
default:
if (GetGoType() >= MAX_GAMEOBJECT_TYPE)
TC_LOG_ERROR("misc", "GameObject::Use(): unit (type: %u, %s, name: %s) tries to use object (%s, name: %s) of unknown type (%u)",

View File

@@ -69,3 +69,11 @@ WorldPacket const* WorldPackets::GameObject::GameObjectCustomAnim::Write()
return &_worldPacket;
}
WorldPacket const* WorldPackets::GameObject::GameObjectUIAction::Write()
{
_worldPacket << ObjectGUID;
_worldPacket << int32(UILink);
return &_worldPacket;
}

View File

@@ -120,6 +120,17 @@ namespace WorldPackets
uint32 CustomAnim = 0;
bool PlayAsDespawn = false;
};
class GameObjectUIAction final : public ServerPacket
{
public:
GameObjectUIAction() : ServerPacket(SMSG_GAME_OBJECT_UI_ACTION, 16 + 4) { }
WorldPacket const* Write() override;
ObjectGuid ObjectGUID;
int32 UILink = 0;
};
}
}
#endif // GOPackets_h__

View File

@@ -1151,7 +1151,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_RESET_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_SET_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_UI_ACTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_UI_ACTION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_SPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);