Skip to content
Intline9 edited this page Jul 19, 2012 · 3 revisions

Game Announcements

At the beginning of a new match there is a voice that gives you some standard announcements e.g. “Welcome to summoner’s rift”.

Example:

S -> C, Length: 18, Description: Channel: 3, Flag: 1)

4C 00 00 00 00 5A 00 00 00 00 00 00 00 00 01 00 00 00

Type Offset Name Description
PacketHeader 0 Header Header
uint8 5 AnnouncementId There are different annoucements look at the table below
uint64 6 Zero Zero byte padding
uint32 14 MapId Looks like an identifier for the map
MapId Time AnnouncementId Announcement
01 00:30 59 Welcome to Summoner’s Rift!
01 01:00 5A Thirty seconds until minions spawn!
04 00:30 59 Welcome to The Twisted Treeline!
04 01:00 5A Thirty seconds until minions spawn!
03 00:30 59 Thirty seconds until minions spawn!
08 00:30 5B Welcome to The Crystal Scar!
08 00:50 59 Battle in 30 seconds!

Parsing function

The function that gets the msg number from the byte is this function. I think that all those static sizes are sizeof(class). Its for client version 0.0.0.142 and will probably change for every version.

__int32 __usercall parseMsgNo<eax>(int msgNo<eax>, unknown *a2<esi>)
{
  __int32 result; // eax@1
  ldiv_t div; // qax@1

  div = ldiv(*(_DWORD *)msgNo ^ 0xDEADBEEFu, 0x1F31Du);
  result = (0x41A7 * div.rem - 0xB14 * div.quot + ((char)-(0x41A7 * div.rem - 0xB14 * div.quot < 0) & 0x7FFFFFFF)) & a2->dword20;
  if ( a2->dword24 <= (unsigned int)result )
    result += -1 - (a2->dword20 >> 1);
  return result;
}
Clone this wiki locally