コード例 #1
0
ファイル: GameSocket.cpp プロジェクト: CarlosX/DarkEmu
void GameSocket::ProcessData(unsigned char* data, int size)
{
    Reader.SetBuffer(data);

    int offset = 0;
    while(offset < size)
    {
        unsigned short psize  = Reader.ReadWord() + 6;
        unsigned short opcode = Reader.ReadWord();
        Reader.Skip(2);

        switch(opcode) {

        case GAME_CLIENT_KEEP_ALIVE:
        case GAME_CLIENT_ACCEPT_HANDSHAKE:
            break;

        case GAME_CLIENT_INFO:
            SendServerInfo();
            break;

        case GAME_CLIENT_PATCH_REQUEST:
            SendPatchInfo();
            break;

        case GAME_CLIENT_AUTH:
            OnAuth();
            break;

        case GAME_CLIENT_CHARACTER:
            OnCharacter();
            break;

        case GAME_CLIENT_INGAME_REQUEST:
            OnIngameRequest();
            break;

        case GAME_CLIENT_MOVEMENT:
            OnMovement();
            break;

        case GAME_CLIENT_CLOSE:
            OnGameQuit();
            break;

        case GAME_CLIENT_CHAT:
            OnChat();
            break;

        case GAME_CLIENT_ITEM_MOVE:
            OnItem();
            break;

        case GAME_CLIENT_TARGET:
            OnTarget();
            break;

        case GAME_CLIENT_INGAME_NOTIFY:
            OnIngameNotify();
            break;

        case GAME_CLIENT_EMOTION://update carlosx
            OnEmotion();
            break;

        case GAME_CLIENT_SIT: //update carlosx
            OnSit();
            break;

        case GAME_CLIENT_ESTRELLA: //update carlosx
            OnEstrella();
            break;

        case GAME_CLIENT_ADDSKILL: //update carlosx
            OnUpdateSkill();
            break;

        case GAME_CLIENT_MASTERY: //update carlosx
            OnMastertSkill();
            break;

        case GAME_CLIENT_ATSKILL: //update carlosx
            OnATSkill();
            break;

        case GAME_CLIENT_ADDSTR:  //update carlosx
            OnADDStr();
            break;

        case GAME_CLIENT_ADDINT:  //update carlosx
            OnADDInt();
            break;

        case GAME_CLIENT_GM:
            OnGM();
            break;

        default:
            printf("Unknown opcode: %.4x\n", opcode);
        }
        Reader.Reset();
        Reader.Skip(psize);
        offset += psize;
    }
    Reader.Reset();
}
コード例 #2
0
ファイル: DCNeighbour.cpp プロジェクト: ivan386/Shareaza
BOOL CDCNeighbour::OnPacket(CDCPacket* pPacket)
{
	pPacket->SmartDump( &m_pHost, FALSE, FALSE, (DWORD_PTR)this );

	m_nInputCount++;
	m_tLastPacket = GetTickCount();

	if ( pPacket->m_nLength < 2  )
	{
		return OnPing();
	}
	else if ( *pPacket->m_pBuffer == '<' )
	{
		return OnChat( pPacket );
	}
	else if ( *pPacket->m_pBuffer != '$' )
	{
		return OnUnknown( pPacket );
	}

	if ( pPacket->Compare( _P("$Search ") ) )
	{
		return OnQuery( pPacket );
	}
	else if ( pPacket->Compare( _P("$To: ") ) )
	{
		return OnChatPrivate( pPacket );
	}
	else if ( pPacket->Compare( _P("$HubTopic ") ) )
	{
		return OnHubTopic( pPacket );
	}
	else if ( pPacket->Compare( _P("$HubName" ) ) )
	{
		return OnHubName( pPacket );
	}

	// Convert '|' to '\0' (make ASCIIZ)
	pPacket->m_pBuffer[ pPacket->m_nLength - 1 ] = 0;
	LPCSTR szCommand = (LPCSTR)pPacket->m_pBuffer;

	// Split off parameters
	LPSTR szParams = strchr( (LPSTR)pPacket->m_pBuffer, ' ' );
	if ( szParams )
	{
		*szParams++ = 0;
	}

	if ( strcmp( szCommand, "$MyINFO" ) == 0 )
	{
		return OnUserInfo( szParams );
	}
	else if ( strcmp( szCommand, "$Quit" ) == 0 )
	{
		return OnQuit( szParams );
	}
	else if ( strcmp( szCommand, "$Lock" ) == 0 )
	{
		return OnLock( szParams );
	}
	else if ( strcmp( szCommand, "$Supports" ) == 0 )
	{
		return OnSupports( szParams );
	}
	else if ( strcmp( szCommand, "$Hello" ) == 0 )
	{
		return OnHello( szParams );
	}
	else if ( strcmp( szCommand, "$OpList" ) == 0 )
	{
		return OnOpList( szParams );
	}
	else if ( strcmp( szCommand, "$ConnectToMe" ) == 0 )
	{
		return OnConnectToMe( szParams );
	}
	else if ( strcmp( szCommand, "$ForceMove " ) == 0 )
	{
		return OnForceMove( szParams );
	}
	else if ( strcmp( szCommand, "$ValidateDenide" ) == 0 )
	{
		return OnValidateDenide();
	}
	else if ( strcmp( szCommand, "$GetPass" ) == 0 )
	{
		return OnGetPass();
	}
	else if ( strcmp( szCommand, "$UserIP" ) == 0 )
	{
		return OnUserIP( szParams );
	}
	else if ( strcmp( szCommand, "$ZOn" ) == 0 )
	{
		return OnZOn();
	}
	else if ( strcmp( szCommand, "$RevConnectToMe" ) == 0 )
	{
		return OnRevConnectToMe( szParams );
	}

	return OnUnknown( pPacket );
}