[CSGO] Показ следующей карты в меню "TAB" (только перед сменой карты)

Тема в разделе "Запросы", создана пользователем Yura7181, 11 авг 2016.

  1. Yura7181

    Yura7181

    Сообщения:
    369
    Симпатии:
    295
    Всем привет.

    На одном сервере я видел очень удобную возможность показать игрокам какая карта будет следущей (перед сменой карты) я бы хотел узнать как это сделать. Может быть без плагина это возможно (как в казуальном лобби). В таблице счёта сверху (Смена на ......).

    Отвечает за это команда nextlevel если я не ошибаюсь.

    Скриншот:

    [​IMG]

    Альтернативный скрин:
    Dropbox - 20160809212556_122.jpg


    Так же у меня есть плагин выводящий только в чат какая карта будет следующей после завершения последнего раунда когда выводится табличка очков.

    Плагин:
    PHP:

    /**
    * ==========================================================================
    * SourceMod Show The Right Next Map for CS:GO
    *
    * by PharaohsPaw
    *
    * SourceMod Forums Plugin Thread URL:
    * http://forums.alliedmods.net/showthread.php?t=195384
    *
    * A relatively simple plugin which intercepts and blocks CS:GO's own
    * "Next Map: <blah>" message it always shows at map end, and prints a
    * message that shows what *SOURCEMOD* thinks the next map is going to be
    * instead (since Sourcemod is right).
    *
    * Especially useful when a server is using SourceMod-based map voting and
    * "valve" map voting has been disabled, and possibly other situations.
    *
    * Without this plugin, CS:GO's own Next Map: message at map end will show
    * whatever map is listed next in the configured mapcyclefile -- yes, that's
    * right -- the configured mapcyclefile, not the next map in the mapgroup the
    * server is currently running.  So if a different map was voted in by a
    * Sourcemod voting plugin, or otherwise changed by Sourcemod, the Next Map:
    * message at the end of the map will show the wrong map name.  Even though
    * the server WILL correctly change the map to the one that got voted in.
    *
    * Hopefully this plugin will not even be necessary for long, but until this
    * is no longer a problem, here's a solution.
    *
    * CREDITS
    * Thanks to Psychonic for providing the event to hook and data to search for
    * to make this possible.
    *
    */

    #pragma semicolon 1
    #include <sourcemod>
    #include <csgo_colors>

    #define PLUGIN_VERSION "1.0.3"

    new UserMsg:g_TextMsg;
    new 
    String:SMNextMap[64];

    public 
    Plugin:myinfo =
    {
        
    name "CS:GO - Show The Right Next Map (STRNM)",
        
    author "PharaohsPaw",
        
    description "Replace CS:GO's end of map chat msg with what SM says the next map will be",
        
    version PLUGIN_VERSION,
        
    url "http://forums.alliedmods.net/showthread.php?t=195384"
    }


    public 
    OnPluginStart()
    {
        
    g_TextMsg GetUserMessageId("TextMsg");
        
    HookUserMessage(g_TextMsgpReplaceNextMapMsgtrue);
        
    // public CVAR so we can tell how many servers are using this plugin and what version
        
    CreateConVar("csgo_strnm_version"PLUGIN_VERSION"CSGO STRNM Plugin Version"FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_SPONLY);
    }

    public 
    Action:pReplaceNextMapMsg(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init)
    {
        
    // message original?
        
    if (!reliable)
            return 
    Plugin_Continue;
        
    decl String:message[256];
        
    PbReadString(pb"params"messagesizeof(message), 0);
        if (
    StrContains(message"#game_nextmap") != -1)
        {
            
    // Get SM's Next Map
            
    if ( GetNextMap(SMNextMapsizeof(SMNextMap)) )
            {
                
    // Iterate through players, send real players a correct next map message
                
    for ( new 0playersNumi++ )
                {
                    if ( !
    IsClientInGame(players[i]) || IsFakeClient(players[i]) )
                        continue;
                    
    // we can't PrintToChat() from a usermsg hook, it would create
                    // an endless loop if it allowed it, so create a timer instead
                    
    else
                        
    CreateTimer(0.1pPrintNextMapplayers[i]);
                }
            }
            else    
    // GetNextMap call failed
                
    PrintToServer("[csgo_strnm] GetNextMap() call failed :(");
            return 
    Plugin_Handled;
        }
        else
            return 
    Plugin_Continue;
    }

    public 
    Action:pPrintNextMap(Handle:timerany:client)
    {
        if(
    IsClientInGame(client))
            
    CGOPrintToChat(client"\x02[SM] \x01СЛЕДУЮЩАЯ КАРТА: \x04%s"SMNextMap);
    }


    Интересно:
    Ещё я заметил если напишу в консоль sm_cvar nextlevel PRIVET_HLMOD.RU
    Фраза так и будет в конце карты игрокам выводится:

    [​IMG]

    Альтернативный скрин:

    Dropbox - 20160811104422_1.jpg

    На скриншоте выше в чате вы можете видеть как плагин уже стоящий на сервере показывает в чате какая сл. карта будет (но в чате бывает много сообщений и игроки не всегда успевают посмотреть какая карта будет следующей).

    Заранее спасибо.
     
    Последнее редактирование: 11 авг 2016
    Святослав124 нравится это.
  2. Yura7181

    Yura7181

    Сообщения:
    369
    Симпатии:
    295
    Исправил.
     
    Святослав124 нравится это.
  3. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    421
    PHP:
    ConVar nextlevel;

    public 
    void OnPluginStart()
    {
        
    nextlevel FindConVar("nextlevel");
        
    HookConVarChange(FindConVar("sm_nextmap"), ConVarChanged);
    }

    public 
    void ConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue)
    {
        
    nextlevel.SetString(newValue_false);
    }
     
    Meowmurmur, Святослав124, teran и ещё 1-му нравится это.
  4. Yura7181

    Yura7181

    Сообщения:
    369
    Симпатии:
    295
    Спасибо, плагин работает.

    Скрин:

    Dropbox - 20160811174442_1.jpg
     
    Святослав124 нравится это.
  5. Иванчо Бальбовски

    Иванчо Бальбовски Интернет в Норильск...Ну пожалуйста...

    Сообщения:
    488
    Симпатии:
    80
    У меня почему-то не компилится, ни на сайте соурсмода, ни на см 1.8 :(
    Лог онлайн-компила:
    SourcePawn Compiler 1.7.1
    Copyright (c) 1997-2006 ITB CompuPhase
    Copyright (c) 2004-2014 AlliedModders LLC

    /groups/sourcemod/upload_tmp/text7pxUVz.sp(1) : error 021: symbol already defined: "ConVar"
    /groups/sourcemod/upload_tmp/text7pxUVz.sp(3) : error 122: expected type expression
    /groups/sourcemod/upload_tmp/text7pxUVz.sp(9) : error 122: expected type expression

    3 Errors.

    Можете готовый плагин скинуть?:)
     
  6. Altaj

    Altaj

    Сообщения:
    103
    Симпатии:
    5

    Вложения:

    • nextlevel.smx
      Размер файла:
      3,5 КБ
      Просмотров:
      4