Как хукнуть LogMessage?

Тема в разделе "Программирование / Скриптинг", создана пользователем Danyas, 31 дек 2015.

  1. Danyas

    Danyas Модератор

    Сообщения:
    1.969
    Симпатии:
    775
    Что только не делал - не могу словить.
    Помогите пожалуйста, исходника к плагину нету
    PHP:
    public Action:GameLogHook(const String:message[])
    {
        
    PrintToServer("HOOKED: %s"message);
        return 
    Plugin_Continue;
    }

    public 
    Action:OnLogAction(Handle:source,    Identity:identclienttarget, const String:message[])
    {
        
    PrintToServer("HOOKEDx: %s"message);
        return 
    Plugin_Continue;
    }

    public 
    OnPluginStart()
    {
     
    AddGameLogHook(hoook);
    }

    public 
    Action:hoook(const String:message[]) 
    {
     
    PrintToServer("HOOKEDe: %s"message);
     return 
    Plugin_Continue;
    }
     
  2. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.893
    Симпатии:
    1.353
  3. Danyas

    Danyas Модератор

    Сообщения:
    1.969
    Симпатии:
    775
    Не ловит.
    PHP:
    public Action:func_15(idargs)
    {
        new 
    var1;
        if (
    args || !GetConVarInt(hw07) || __@183[id])
        {
            return 
    Action:0;
        }
        if (
    __@180[id])
        {
            return 
    Action:0;
        }
        
    decl String:lb1[32];
        
    GetCmdArg(1lb132);
        if (
    strlen(lb1) != 8)
        {
            if (!(
    GetConVarInt(hw50)))
            {
                
    func_16(id);
            }
            
    __@308[id] = 1;
            return 
    Action:0;
        }
        if (
    __@181[id])
        {
            
    decl String:lb4[36];
            
    decl String:lb5[36];
            
    decl String:lb6[8];
            
    Format(lb434"%s%s"__@184[id], __@14);
            
    lb4[4] = MissingTAG:0;
            
    md5(lb4lb534);
            
    lb5[2] = MissingTAG:0;
            if (
    StrEqual(lb5lb1false))
            {
                
    GetCmdArg(2__@244[id], 5);
                if (
    strlen(__@244[id]) == 4)
                {
                    
    __@181[id] = 0;
                    
    __@265[id] = GetRandomInt(100000999999999);
                    
    ClientCommand(id"ucp_%s 2%d"__@184[id], __@265[id]);
                }
                else
                {
                    
    strcopy(__@244[id], 5"xxxx");
                }
            }
            else
            {
                
    strcopy(__@244[id], 5"xxxx");
            }
            
    GetCmdArg(3__@279[id], 16);
            
    GetCmdArg(4lb68);
            if (
    GetConVarInt(hw49) == 1)
            {
                if (!
    StrEqual(lb6"8.4"true))
                {
                    
    KickClient(id"%t""UCP_UPDATEMSG");
                }
            }
            
    GetClientName(idlb434);
            
    GetClientIP(idlb534true);
            
    GetClientAuthString(idlb132);
            if (
    GetConVarInt(hw21))
            {
                
    LogMessage("Login: %s | %s | %s-%s | %s | %s | %s | %s"lb4lb5__@185[id][2], __@184[id], lb1__@244[id], lb6__@279[id]);
            }
            if (
    GetConVarInt(hw48) == 1)
            {
                if (
    func_36(__@184[id], id) == -1)
                {
                    
    KickClient(id"%t""UCP_IDMSG");
                }
            }
            return 
    Action:0;
        }
        if (
    StrEqual(lb1__@184[id], true))
        {
            
    decl String:lb2[32];
            
    GetCmdArg(2lb232);
            new 
    lb3 StringToInt(lb210);
            if (
    __@265[id] / 20 __@265[id] % 1613 == lb3)
            {
                
    __@182[id] = 0;
            }
        }
        return 
    Action:0;
    }
    Интересует только одна строчка:
    PHP:
        LogMessage("Login: %s | %s | %s-%s | %s | %s | %s | %s"lb4lb5__@185[id][2], __@184[id], lb1__@244[id], lb6__@279[id]); 
          
     
  4. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.893
    Симпатии:
    1.353
    Danyas, думаю и не будет ловить. Был бы через это LogAction, тогда бы поймал.
    Не легче в самом этом плагине сделать логи какие тебе нужны?
     
  5. Саша Шеин

    Саша Шеин Кому костылей?

    Сообщения:
    1.372
    Симпатии:
    272
    Оффтоп
    Какого эффекта хочешь достичь?)
     
  6. Tolyan

    Tolyan

    Сообщения:
    116
    Симпатии:
    1
    У вас что-то получилось?
     
  7. Kr1kuzya

    Kr1kuzya https://t.me/kruzya Супермодератор

    Сообщения:
    3.647
    Симпатии:
    3.070
    @Tolyan, через детоуры делается, экстеншн писать надо.

    P.S.: Не надо трупы пинать...
     
  8. Tolyan

    Tolyan

    Сообщения:
    116
    Симпатии:
    1
    сори.. просто искал сам решение чтоб народ не напрягать))
     
  9. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.235
    Симпатии:
    436
    Попробуй
    PHP:
    HookEvent("server_message", ...);
    Так как вроде данное событие что-то ловит из консоли
     
    Последнее редактирование: 23 янв 2018
  10. Kr1kuzya

    Kr1kuzya https://t.me/kruzya Супермодератор

    Сообщения:
    3.647
    Симпатии:
    3.070
    @Vit_ amin, конкретно логи самого SM оно не хукает, т.к. SM этот эвент не вызывает.
     
  11. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.235
    Симпатии:
    436
    @Kr1kuzya, Так я имел ввиду хук для функции UTIL_LogPrintf
     
  12. Tolyan

    Tolyan

    Сообщения:
    116
    Симпатии:
    1
    дайте готовый пример, я так делал но ниче не получилось.. моежет я что-то не так сделал..( Благодарю
     
  13. Samoletik1337

    Samoletik1337 Where I am ?

    Сообщения:
    367
    Симпатии:
    288
    Покажи что именно у тебя не получилось ?
     
  14. Tolyan

    Tolyan

    Сообщения:
    116
    Симпатии:
    1
    #include <sourcemod>
    #include <sdktools>

    PHP:
    public OnPluginStart()
    {
        
    HookEvent("server_message"Event_server_message);
    }

    public 
    Action:Event_server_message(Handle:event, const String:name[], bool:dontBroadcast
    {

        new 
    String:msg[256];

        
    GetEventString(event"text"msg256);
        
    PrintToChatAll("HOOKEDe: %s"msg);
        return 
    Plugin_Continue;
    }
    0 результата вообще ниче не спамит
    --- Добавлено позже ---
    выше)