rendered paste body switch ( _pBufferHeader )
{
//BypassToServer
case 0x21:
{
pBuffer = GetAddress(pBuffer,33);
TempDword = (DWORD) *pBuffer;
// BypassToServer:menu_select?ask=-130&reply=1
// ask=-130 -> teleport to olympiad stadion reply=X - where x is number of stadion
if(TempDword = 0x0031002D)
{
pBuffer = GetAddress(pBuffer, 4);
if(TempDword = 0x00300033) // -130 = 2D 00 31 00 33 00 30 00
{
TeleportStatus[*pUserSocket]=1; //Set TeleportStatus to 1 - Request watching olympiad
}
}
break;
}
//Appearing - send after teleport when player is spawning
case 0x30:
{
TeleportStatus[*pUserSocket]=2; // if player is spawned somewhere ex. in olympiad stadion set TeleportStatus = 2
break;
}
//ExOlympiadObserveEnd - Request return from olympiad stadion
case 0xD0:
{
TempDword = (DWORD) pBuffer; //jump header to ExPacket
TempDword++;
pBuffer = (DWORD *) TempDword;
TempWord = (WORD) *pBuffer;
if(TempWord == 0x0012) //Player pressed Return Button
{
if(TeleportStatus[*pUserSocket] != 2) //If player wasn't spawned in olympiad stadion and pressed Return button
{
CSocket::Send(pSocket, FormatLogoutOk, 0x7E); //it will instantly close cheater's client
AddAnsi(logclass, l2_log_red, (char *)L" Illegal Action Detected (OlympiadTeleportCheat) Socket: %d Account: %s", *pUserSocket, pAccountName );
file << "Player with account["<< pAccountName << "] - illegal action- OlympiadTeleportCheat. \n";
file.flush();
};
}
break;
}
}