All pastes #730183 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-10-08 23:47 UTC
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;
		}
	}