Как заблочить, меню закупки, и/или мессагу в CS:GO

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

  1. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Собственно не выходит заблокировать меню закупки:
    PHP:
    public OnPluginStart() AddCommandListener(BuyCommand"buymenu");

    public 
    Action:BuyCommand(iClient, const String:command[], args)

     if(
    iClient && IsClientInGame(iClient)) 
    {
    /* Код */
    }
     return 
    Plugin_Handled;
    }
    Тоже не пашет:
    PHP:
    public OnPluginStart() 

     
    HookUserMessage(GetUserMessageId("VGUIMenu"), OnMsgVGUIMenutrue); 


    public 
    Action:OnMsgVGUIMenu(UserMsg:msg_idHandle:bf, const players[], playersNumbool:reliablebool:init

     
    decl String:buffer1[64]; 
     
    BfReadString(bfbuffer1sizeof(buffer1)); 
     
    LogMessage(buffer1);
     return 
    Plugin_Continue
    }
    PHP:
    L 08/19/2014 18:07:17: [SMPlugin encountered error 21Native is not bound
    L 08
    /19/2014 18:07:17: [SMNative "BfReadString" reported
    L 08/19/2014 18:07:17: [SMDisplaying call stack trace for plugin "test.smx":
    L 08/19/2014 18:07:17: [SM]   [0]  Line 9D:\cs_go\csgo\addons\sourcemod\scripting\test.sp::OnMsgVGUIMenu()
    Ещё не получается отловить MSG, "Время закупки вышло", и "Вы покинули зону закупки".
    Как быть не знаю.
     
  2. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Ну что за люди то?! В го BF НЕ ИСПОЛЬЗУЕТСЯ!!! только protobuf
     
    AMD и R1KO нравится это.
  3. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Всё ровно не выходит(((

    PHP:
    #include <sourcemod>
    #pragma semicolon 1

    public OnPluginStart() 

        
    //HookUserMessage(GetUserMessageId("VGUIMenu"), OnMsgVGUIMenu, true);
        
    HookUserMessage(GetUserMessageId("HudMsg"), OnHudMsgtrue); 
        
    HookUserMessage(GetUserMessageId("TextMsg"), OnTextMsgtrue); 
        
    HookUserMessage(GetUserMessageId("HudText"), OnHudTexttrue); 


    /*public Action:OnMsgVGUIMenu(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init) 

        decl String:buffer[10];
        PbReadString(pb, "name", buffer, sizeof(buffer));
        if (!strcmp(buffer, "specgui", false))
        {
            LogAction("упс");
            return Plugin_Handled;
        }
        return Plugin_Continue; 
    }*/

    public Action:OnHudMsg(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init

        
    decl String:buffer[32];
        
    PbReadString(pb"text"buffersizeof(buffer));
        
    LogMessage("OnHudMsg: %s"buffer);
        return 
    Plugin_Continue
    }

    public 
    Action:OnTextMsg(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init

        
    decl String:buffer[32];
        
    PbReadInt(pb"msg_dst");
        
    PbReadString(pb"params"buffersizeof(buffer));
        
    LogMessage("OnTextMsg: %s"buffer);
        return 
    Plugin_Continue
    }

    public 
    Action:OnHudText(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init

        
    decl String:buffer[32];
        
    PbReadString(pb"text"buffersizeof(buffer));
        
    LogMessage("OnHudText: %s"buffer);
        return 
    Plugin_Continue
    }
    PHP:
    L 08/21/2014 02:16:54: [SMNative "PbReadString" reportedInvalid field "params" for message "CCSUsrMsg_TextMsg"
    L 08/21/2014 02:16:54: [SMDisplaying call stack trace for plugin "12222.smx":
    L 08/21/2014 02:16:54: [SM]   [0]  Line 36D:\cs_go\csgo\addons\sourcemod\scripting\12222.sp::OnTextMsg()
     
  4. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    PHP:
        decl String:text[64];
        
    PbReadString(pb"params"textsizeof(text), 0);
        if (
    strcmp(text"#SFUI_Notice_Killed_Teammate") == 0)
            return 
    Plugin_Handled;
        return 
    Plugin_Continue;
     
    AMD и R1KO нравится это.
  5. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    PHP:
    #include <sourcemod>
    #pragma semicolon 1

    public OnPluginStart() 

     
    HookUserMessage(GetUserMessageId("HudMsg"), OnHudMsgtrue); 
     
    HookUserMessage(GetUserMessageId("TextMsg"), OnTextMsgtrue); 
     
    HookUserMessage(GetUserMessageId("HudText"), OnHudTexttrue); 



    public 
    Action:OnHudMsg(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init

     
    decl String:text[64];
     
    PbReadString(pb"params"textsizeof(text), 0);
     
    LogMessage("OnHudMsg: %s"text);
     return 
    Plugin_Continue
    }

    public 
    Action:OnTextMsg(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init

     
    decl String:text[64];
     
    PbReadString(pb"params"textsizeof(text), 0);
     
    LogMessage("OnTextMsg: %s"text);
     return 
    Plugin_Continue
    }

    public 
    Action:OnHudText(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init

     
    decl String:text[64];
     
    PbReadString(pb"params"textsizeof(text), 0);
     
    LogMessage("OnHudText: %s"text);
     return 
    Plugin_Continue
    }
    в логах есть только TextMsg, и нужного сообщения нет
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.961
    Тогда удалить зоны закупки. Меню вообще никак не будет отображено, лишь сообщения при нажатии "Покупка" о том, что "Вы не находитесь в зоне покупок".
     
  7. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    всё верно так и сделано, но очень хочется избавится от этого сообщения, а отловить не получается.
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.971
    Симпатии:
    2.977
    AlmazON, и его опять же надо как-то заблочить.
     
  9. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.961
    Посмотри исходники всех DM и GG - там же избавились, насколько я помню. Или элементарно замени это сообщение на своё, например, "Все покупки запрещены!". Я так по Hint'у сделал, где писалось о том, что можно закупиться, когда на спавне.
     
  10. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    но чтобы заменить, его нужно отловить верно?
    p.s сори что сливаюсь, но мне завтра рано вставать, на практику, спокойной ночи.
     
  11. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.961
    Только само действие, а не сообщение. Сообщение останется (как и меню, раз это клиентский уровень, как говорили).
     
  12. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Вызов меню покупки - это же команда. А не проще отловить вызов этой команды и дальше уже закрывать меню?
     
  13. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.505
    Симпатии:
    1.961
    Если это клиентский уровень, то нет. Клиент определяет, есть ли на карте зоны закупки и, если их нет - просто не открывает меню. А посылает клиент серверу лишь команды самих покупок, т.е., например "give weapon_deagle". Поскольку самой покупки нет, то и команды серверу тоже.