Показать сообщение отдельно

  #7  
Старый 16.04.2015, 14:13
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Вызывать функцию samp. Но для этого тебе нужно будет инжект сделать. ИМХО.

Код отправки взял с соба

Код:





Код:
void say ( char *text, ... )
{
    if ( g_SAMP == NULL )
        return;

    if ( text == NULL )
        return;
    if ( isBadPtr_readAny(text, 128) )
        return;
    traceLastFunc( "say()" );

    va_list ap;
    char    tmp[128];
    memset( tmp, 0, 128 );

    va_start( ap, text );
    vsprintf( tmp, text, ap );
    va_end( ap );

    addSayToChatWindow( tmp );
}

#define FUNC_SAY        0x4CA0
#define FUNC_SENDCMD    0x7BDD0
void addSayToChatWindow ( char *msg )
{
    if ( g_SAMP == NULL )
        return;

    if ( msg == NULL )
        return;
    if ( isBadPtr_readAny(msg, 128) )
        return;
    traceLastFunc( "addSayToChatWindow()" );

    if ( msg[0] == '/' )
    {
        uint32_t    func = g_dwSAMP_Addr + FUNC_SENDCMD;
        __asm push msg
        __asm call func
    }
    else
    {
        uint32_t    func = g_dwSAMP_Addr + FUNC_SAY;
        void        *lpPtr = g_Players->pLocalPlayer;
        __asm mov ebx, dword ptr[lpPtr]
        __asm push msg
        __asm call func
        __asm pop ebx
    }
}
 
Ответить с цитированием