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; } }