Решил запостить чтобы не потерялось
Commentator mode allows you: detach camera from player, disable camera collision, change camera speed, yaw, pitch, fov, position
Код:
lua CommentatorSetMode(number)
lua CommentatorToggleMode()
CMSG_COMMENTATOR_ENABLE
uint32 enable; // 0-disable/1-enable/2-toggle
server should set/remove PLAYER_FLAGS: PLAYER_FLAGS_COMMENTATOR and PLAYER_FLAGS_COMMENTATOR_UBER
lua CommentatorGetMode()
returns 0 (no flags), 1 (PLAYER_FLAGS_COMMENTATOR), 2 (PLAYER_FLAGS_COMMENTATOR_UBER)
lua CommentatorExitInstance()
CMSG_COMMENTATOR_EXIT_INSTANCE (empty)
SMSG_COMMENTATOR_STATE_CHANGED
uint64 guid;
uint8 state; // 0 or 1
CMSG_COMMENTATOR_INSTANCE_COMMAND
uint64 guid1; // source (commentator?)
uint64 guid2; // target (player?)
uint64 battleMasterGuid;
uint32 command; // 0-start instance, 1-add player, 2-remove player
uint32 mapId;
uint32 teamSize; // 2, 3, 5
uint32 minLevel;
uint32 maxLevel;
uint32 teamNumber; // factionIndex (meaning depends on command?)
lua CommentatorUpdateMapInfo(mapName)
CMSG_COMMENTATOR_GET_MAP_INFO
string map;
SMSG_COMMENTATOR_MAP_INFO (fires COMMENTATOR_MAP_UPDATE event)
uint32 count;
uint64 guid;
for(count)
{
uint32 teamSize;
uint32 minLevel;
uint32 maxLevel;
uint32 instanceCount;
for(instanceCount)
{
uint32 mapId;
uint32 unk1;
uint16 unk2;
uint8 unk3; // may be index
uint64 guid;
uint32 unk4;
}
}
lua CommentatorUpdatePlayerInfo()
CMSG_COMMENTATOR_GET_PLAYER_INFO
uint32 mapid;
uint32 unk1;
uint16 unk2;
uint8 unk3;
SMSG_COMMENTATOR_GET_PLAYER_INFO
not implemented in retail client...
SMSG_COMMENTATOR_PLAYER_INFO (fires event COMMENTATOR_PLAYER_UPDATE)
uint32 mapId;
uint64 guid;
uint32 count;
for(count)
{
uint64 guid;
string name; // used, max 0x30
uint8 unk1;
uint8 unk2;
uint8 unk3;
uint32 unk4; // used
uint32 unk5;
uint32 unk6;
uint32 unk7;
uint32 factionIndex; // used
uint32 unk9;
uint16 unk10;
uint8 unk11;
uint32 unk12;
uint32 unk13; // used
uint32 unk14; // used
uint32 unk15; // used
uint32 unk16; // used
uint8 unk17;
}
lua CommentatorEnterInstance()
CMSG_COMMENTATOR_ENTER_INSTANCE
uint32 mapid;
uint32 unk1;
uint16 unk2;
uint8 unk3;
uint64 guid;
lua CommentatorGetNumPlayers(factionIndex)
returns numPlayers
lua CommentatorSetCamera(xPos,yPos,zPos,yaw,pitch,fov)
lua CommentatorGetCamera()
returns x, y, z, yaw, pitch, zoom(fov?)
lua CommentatorGetCurrentMapID()
returns mapId
lua CommentatorStartInstance(mapID,teamSize,minLevel,maxLevel)
lua CommentatorSetMoveSpeed(speed)
lua CommentatorSetCameraCollision(enable)
lua CommentatorSetTargetHeightOffset(offset)
lua CommentatorSetSkirmishMatchmakingMode(mode)
CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND
uint32 command; // 0 - Set Matchmaking Mode
uint32 mode; // mode
uint64 guid1; // 0
uint64 guid2; // 0
uint32 unk2; // 0
lua CommentatorRequestSkirmishQueueData()
CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND
uint32 command; // 1 - Request Skirmish Queue Data
uint32 mode; // 1
uint64 guid1; // 0
uint64 guid2; // 0
uint32 unk2; // 0
lua CommentatorGetSkirmishQueuePlayerInfo(index)
returns string guid1, string guid2, bool unk
lua CommentatorGetSkirmishQueueCount()
returns queueCount
lua CommentatorStartSkirmishMatch(guid1, guid2, unk1)
CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND
uint32 command; // 2 - Start Skirmish Match
uint32 mode; // 1
uint64 guid1;
uint64 guid2;
uint32 unk1;
lua CommentatorRequestSkirmishMode()
CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND
uint32 command; // 3 - Request Skirmish Mode
uint32 mode; // 1
uint64 guid1; // 0
uint64 guid2; // 0
uint32 unk2; // 0
SMSG_COMMENTATOR_SKIRMISH_QUEUE_DATA (fires event COMMENTATOR_SKIRMISH_QUEUE_REQUEST)
uint32 mode;
uint32 count;
for(count)
{
uint64 guid1;
uint64 guid2;
uint8 unk1;
}
SMSG_COMMENTATOR_SKIRMISH_QUEUE_MODE (fires event COMMENTATOR_SKIRMISH_QUEUE_REQUEST)
uint32 mode;
lua CommentatorGetPlayerInfo(factionIndex,playerIndex)
returns name, factionIndex, unk1, unk2, unk3, unk4, unk5
lua CommentatorSetMapAndInstanceIndex(mapIndex,instanceIndex)
lua CommentatorSetPlayerIndex(factionIndex,playerIndex)
lua CommentatorGetNumMaps()
returns numMaps
lua CommentatorGetMapInfo(mapIndex)
returns teamSize, minLevel, maxLevel, instanceIndex
lua CommentatorGetInstanceInfo(mapIndex,instanceIndex)
returns mapId, unk, guid_low, guid_high
lua CommentatorFollowPlayer(factionIndex,playerIndex)
lua CommentatorLookatPlayer(factionIndex,playerIndex)
lua CommentatorZoomIn()
lua CommentatorZoomOut()
lua CommentatorAddPlayer(teamNumber)
lua CommentatorRemovePlayer()
lua CommentatorSetBattlemaster()
sets battlemaster guid for later use
lua CommentatorGetSkirmishMode()
returns SkirmishMode
related lua events:
EVENT_COMMENTATOR_MAP_UPDATE (by SMSG_COMMENTATOR_MAP_INFO)
EVENT_COMMENTATOR_ENTER_WORLD (fires after loading?)
EVENT_COMMENTATOR_PLAYER_UPDATE (by SMSG_COMMENTATOR_PLAYER_INFO)
EVENT_COMMENTATOR_SKIRMISH_QUEUE_REQUEST (by SMSG_COMMENTATOR_SKIRMISH_QUEUE_DATA, SMSG_COMMENTATOR_SKIRMISH_QUEUE_MODE)
EVENT_COMMENTATOR_SKIRMISH_MODE_REQUEST (not implemented in retail client?)