Настройка achievement сервера.

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем pihmih, 25 окт 2013.

  1. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Здравствуйте. Как настроить сервер achievement? Какой режим сервера нужен?
     
  2. Sam_Fisher

    Sam_Fisher

    Сообщения:
    703
    Симпатии:
    202
    Качаешь нужную карту и все. Никакие режимы прописывать не надо. Удаляешь не нужные конфиги и маплисты и радуешься)

    Вот так у меня выглядит server.cfg
    Код:
    //*************************************************************************\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*               SRCDS Team Fortress 2 SERVER CONFIGURATION              *\\
    //*                              VERSION 1.0.0                            *\\
    //*                          by cyber-hunters.ru                          *\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*************************************************************************\\
    
    say "Loading |Cyber-Hunters.ru| TF2 Achievement Idle SERVER CONFIGURATION"
    
    // Разное
    
    // Определите название вашего сервера, это название будет отображаться во вкладке Интернет в игре.
    // По умолчанию: Team Fortress 2 Server
    hostname "|Cyber-Hunters.Ru| TF2 Achievement Idle"
    
    // Теги
    sv_tags "fastrespawn,moscow,cyber-hunters.ru,SourceBans,HLstats"
    
    // Определите ваш RCon(Remote Console) пароль, часто эта настройка используется для ClanWar серверов.
    // Мы рекомендуем не устанавливать здесь ничего, если вы не будете в дальнейшем использовать RCON пароль.
    // Не ставьте здесь простые пароли! Используйте большие и малые буквы с цифрами!
    // По умолчанию: Нет.
    rcon_password ""
    
    // Определите пароль для подключения к вашему серверу, только игроки знающие пароль смогут присоединиться к игре.
    // По умолчанию: Нет.
    sv_password ""
    
    // Определите максимальный размер для скачиваемой карты (сюда включены звуки, материалы и модели) в мегабайтах.
    // если ваша карта превышает предел этой настройки, то она НЕ будет загружаться с вашего сервера.
    // Число определяяет максимальный размер файла в MB который сможет скачать клиент.
    // По умолчанию: 16
    net_maxfilesize "250"
    
    // Определите адрес вашего веб-сайта для использования быстрой загрузки с сервера.
    // По умолчанию: Нет.
    sv_downloadurl ""
    
    
    //*************************************************************************\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*                       ВЫПОЛНЕНИЕ КОНФИГОВ                             *\\
    //*                        ЗАГРУЗКА СКРИПТОВ                              *\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*************************************************************************\\
    
    // Выполнение и запись файлов содержащих баны.
    // Закомментируйте если используете SourceBans.
    //exec banned_user.cfg
    //exec banned_ip.cfg
    //writeid
    //writeip
    
    //*************************************************************************\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*                              Настройка                                *\\
    //*                        дополнительных модулей                         *\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*************************************************************************\\
    
    sm_fastrespawn_enabled 1
    sm_fastrespawn_blu 1
    sm_fastrespawn_red 1
    
    sv_contact "cyber-hunters.ru"
    
    sv_lan 0
    sv_region -1
    
    //*************************************************************************\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*                              Настройка                                *\\
    //*                             HlstatsX:CE                               *\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*************************************************************************\\
    
    //Hlstatsx:CE
    log on
    logaddress_add IP:PORT
    
    //Hlstatsx:CE Superlogs
    log on 
    sv_logbans 1
    sv_logfile 1
    sv_logecho 1 
    sv_log_onefile 0
    mp_logdetail 3
    
    
    mapcyclefile "mapcycle.txt"
    
    
    //*************************************************************************\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*                     Расширенные настройки RCON                        *\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*************************************************************************\\
    
    sv_rcon_banpenalty "0"
    sv_rcon_log "1"
    sv_rcon_maxfailures "5"
    sv_rcon_minfailures "2"
    sv_rcon_minfailuretime "30"
    
    
    tf_flag_caps_per_round "0"
    tf_playergib "1"
    tf_stats_track "1"
    tf_stats_verbose "0"
    tf_gamemode_arena "0"
    tf_gamemode_payload "0"
    tf_weapon_criticals "1"
    //
    mp_allowNPCs "1"
    mp_allowspectators "1"
    mp_team_unbalance_limit 0
    mp_autocrosshair "1"
    mp_autoteambalance "1"
    mp_bonusroundtime "15"
    mp_chattime "5"
    mp_clan_ready_signal "0"
    mp_clan_readyrestart "0"
    mp_decals "200"
    mp_defaultteam "0"
    mp_enableroundwaittime "1"
    mp_fadetoblack "0"
    mp_falldamage "0"
    mp_flashlight "0"
    mp_footsteps "1"
    mp_forcecamera "1"
    mp_forcerespawn "1"
    mp_fraglimit "0"
    mp_friendlyfire 0
    mp_idledealmethod "1"
    mp_idlemaxtime "3"
    mp_maxrounds "1000"
    mp_restartgame "0"
    mp_restartround "1"
    mp_showrespawntimes "1"
    mp_stalemate_timelimit "240"
    mp_teamlist "0"
    mp_teamoverride "1"
    mp_teams_unbalance_limit "1"
    mp_time_between_capscoring "30"
    mp_timelimit 0
    mp_tournament 0
    mp_waitingforplayers_cancel "0"
    mp_waitingforplayers_restart "0"
    mp_weaponstay "0"
    mp_winlimit "0"
    phys_pushscale 15
    //
    sv_alltalk "1"
    sv_pausable "0"
    sv_cheats "0"
    sv_consistency "1"
    sv_allowupload "1"
    sv_allowdownload "1"
    sv_enableoldqueries "1"
    sv_pure "2"
    sv_pure_kick_clients "1"
    sv_allow_color_correction "1"
    sv_allow_wait_command "1"
    sv_alternateticks "0"
    sv_bonus_challenge "0"
    sv_cacheencodedents "1"
    sv_clearhinthistory "cmd"
    sv_filterban "1"
    sv_forcepreload "0"
    sv_logbans "1"
    sv_logblocks "0"
    sv_logdownloadlist "1"
    sv_logflush "0"
    sv_massreport "0"
    sv_master_legacy_mode "1"
    sv_master_share_game_socket "1"
    sv_noclipaccelerate "5"
    //sv_noclipduringpause "0"
    sv_noclipspeed "5"
    sv_npc_talker_maxdist "1024"
    sv_parallel_packentities "1"
    sv_parallel_sendsnapshot "1"
    sv_specaccelerate "5"
    sv_specnoclip "1"
    sv_specspeed "3"
    sv_stats "1"
    sv_maxplayers "20"
    sv_visiblemaxplayers "20"
    
    //*************************************************************************\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*                    Пропускная способность канала                      *\\
    //*                                                                       *\\
    //*                                                                       *\\
    //*************************************************************************\\
    
    sv_minrate "13000"
    sv_maxrate "30000"
    sv_minupdaterate "30"
    sv_maxupdaterate "67"
    sv_mincmdrate "30"
    sv_maxcmdrate "67"
    sv_client_cmdrate_difference "30"
    sv_client_interpolate "1"
    sv_client_max_interp_ratio "1"
    sv_client_min_interp_ratio "1"
    sv_client_predict "1"
     
  3. ☆★☆БАТЯ☆★☆™

    ☆★☆БАТЯ☆★☆™

    Сообщения:
    2.585
    Симпатии:
    1.341
    Sam_Fisher, Сервер так то для CS GO...
     
  4. Sam_Fisher

    Sam_Fisher

    Сообщения:
    703
    Симпатии:
    202
    Ой:blush2: Тогда причем тут вообще achievement? Может я чего и не знаю, но такая фишка у TF2 серверов, ну и у TF Classic, возможно
     
  5. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.221
    Симпатии:
    913
    Sam_Fisher, ачивки есть на почти всех играх в стиме. Тут вопрос смысла, скорее.
     
  6. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Там же щас шмот падает. Вот и делают идл и ачивмент серверы.
     
  7. golova209

    golova209 Думать – самая трудная работа

    Сообщения:
    264
    Симпатии:
    75
    В кс го?О_о
     
  8. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.221
    Симпатии:
    913
    golova209, да. Ящички с пушками, ещё что-то, если не ошибаюсь.
     
  9. Konstantin

    Konstantin

    Сообщения:
    1.789
    Симпатии:
    767
    Ящики с пушками и сами пушки, как правило хреновые, типа дробовиков.
     
  10. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    А все таки, как его сделать? Вот к примеру 62.141.42.39:29005
     
  11. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Зайди к ним на серв, слей карту. Сделай, чтобы карта менялась раз в 600 мин, чтобы застоя не было. Никаких афк и прочих кикеров. Даже можно стандартные СМовские поубирать. Как вариант еще зайдя на тот серв пописать в консоли: sm plugins 11;sm plugins 22;sm plugins 33;sm plugins 44;sm plugins 55;

    Добавлено через 1 минуту
    Да да, там щас как в тф. Магазин сделали, ящики падают, модельки оружек и прочее.
     
    Последнее редактирование: 26 окт 2013
  12. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    ] sm plugins 11
    "SMAC Command Monitor" (0.8.4.0) by SMAC Development Team
    "Basic Ban Commands" (1.5.0-dev+3877) by AlliedModders LLC
    "Anti-Flood" (1.5.0-dev+3877) by AlliedModders LLC
    "[CSGO] Team Limit Bypass" (1.1) by Zephyrus
    "Bom Chicka Wah Wah" (1.2) by Zephyrus
    "Sound Commands" (1.5.0-dev+3877) by AlliedModders LLC
    "Admin Menu" (1.5.0-dev+3877) by AlliedModders LLC
    "hideplayers.smx" hideplayers.smx
    "quick_adverts.smx" quick_adverts.smx
    "MOTDgd Adverts" (2.0.2) by Zephyrus (Modified by Ixel)
    "infinite_buytime.smx" infinite_buytime.smx
    To see more, type "sm plugins 22"
    ] sm plugins 22
    "instant_respawn.smx" instant_respawn.smx
    Таких плагинов нигде нет:
    "instant_respawn.smx"
    "hideplayers.smx"
    "Bom Chicka Wah Wah"
     
  13. deac

    deac

    Сообщения:
    2
    Симпатии:
    4
    Если не ошибаюсь, должен быть скрипт что типа этого:

     
  14. Александр Маслов

    Александр Маслов

    Сообщения:
    9
    Симпатии:
    0
    Всем привет, кто знает команду или плагин для мгновенно респа на одном месте mp_respawn_on_death_t 1
    mp_respawn_on_death_ct 1

    С этими командами просто игроки респяца на респе, а нужно чтоб каждый игрок на одной точке респился.
     
  15. TagerW

    TagerW

    Сообщения:
    2
    Симпатии:
    0
    Это откуда такой список
     
  16. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Возможно кому понадобиться.
    Нашел один из плагинов
    PHP:
    #pragma semicolon 1
     
    //////////////////////////////
    //              DEFINITIONS                     //
    //////////////////////////////
     
    #define PLUGIN_NAME "Bom Chicka Wah Wah"
    #define PLUGIN_AUTHOR "Zephyrus"
    #define PLUGIN_DESCRIPTION ""
    #define PLUGIN_VERSION "1.2"
    #define PLUGIN_URL ""
     
    #define MAX_AD_NETWORKS 64
     
    #define SHOW_PANEL false
    #define SPEC 1
    #define RED     2
    #define BLU     3
     
    //////////////////////////////
    //                      INCLUDES                //
    //////////////////////////////
     
    #include <sourcemod>
    #include <sdktools>
    #include <clientprefs>
     
    #include <zephstocks>
     
    //////////////////////////////
    //                      ENUMS                   //
    //////////////////////////////
     
    enum AdNetwork
    {
            
    String:szIdentifier[64],
            
    String:szURL[256],
            
    iDuration,
            
    iInterval,
            
    iOrder,
            
    iMax,
            
    bool:bHidden,
            
    Handle:hCookie,
    }
     
    //////////////////////////////////
    //              GLOBAL VARIABLES                //
    //////////////////////////////////
     
    new String:g_szServerIP[32];
    new 
    String:g_szServerPort[8];
     
    new 
    g_cvarImmunityFlag = -1;
    new 
    g_cvarDeadOnly = -1;
     
    new 
    g_eNetworks[MAX_AD_NETWORKS][AdNetwork];
     
    new 
    g_iNetworks 0;
    new 
    g_iNextAd[MAXPLAYERS+1][MAX_AD_NETWORKS];
    new 
    g_iAdNum[MAXPLAYERS+1][MAX_AD_NETWORKS];
    new 
    g_iSorted[MAX_AD_NETWORKS];
    new 
    g_iDelay[MAXPLAYERS+1];
     
    new 
    g_bInitialized[MAXPLAYERS+1]={0,...};
     
    //////////////////////////////////
    //              PLUGIN DEFINITION               //
    //////////////////////////////////
     
    public Plugin:myinfo =
    {
            
    name PLUGIN_NAME,
            
    author PLUGIN_AUTHOR,
            
    description PLUGIN_DESCRIPTION,
            
    version PLUGIN_VERSION,
            
    url PLUGIN_URL
    };
     
    //////////////////////////////
    //              PLUGIN FORWARDS         //
    //////////////////////////////
     
    public OnPluginStart()
    {
            
    // Supress warnings about unused variables.....
            
    if(g_bL4D || g_bL4D2 || g_bND) {}
     
            
    // Initialize our ConVars
            
    g_cvarDeadOnly RegisterConVar("sm_adplugin_dead_only""0""Set this to 0 to show ads to alive players too"TYPE_INT);
            
    g_cvarImmunityFlag RegisterConVar("sm_adplugin_immunity_flag""p""Players with this SourceMod flag set will be given ad viewing immunity."TYPE_FLAG);
     
            
    AutoExecConfig();
     
            
    // Initialize our global variables
            
    new Handle:m_hHostIP FindConVar("hostip");
            new 
    Handle:m_hHostPort FindConVar("hostport");
            if(
    m_hHostIP == INVALID_HANDLE || m_hHostPort == INVALID_HANDLE)
                    
    SetFailState("Failed to determine server ip and port.");
     
            
    GetConVarString(m_hHostPortSTRING(g_szServerPort));
     
            new 
    m_iServerIP GetConVarInt(m_hHostIP);
            
    Format(STRING(g_szServerIP), "%d.%d.%d.%d"m_iServerIP >>> 24 255m_iServerIP >>> 16 255m_iServerIP >>> 255m_iServerIP 255);
     
            
    // Hook the events we may need
            
    HookEvent("player_spawn"Event_PlayerSpawn);
            
    HookEvent("player_team"Event_PlayerTeam);
     
            
    // Register our commnads
            
    RegServerCmd("sm_adplugin_add"Command_Add);
    }
     
    public 
    APLRes:AskPluginLoad2(Handle:myselfbool:lateString:error[], err_max)
    {
            
    // Mark GetUserMessageType as an optional native
            
    MarkNativeAsOptional("GetUserMessageType");
     
            
    // Add compatibility with Friagram's stuff
            
    CreateNative("TrafficCash_DelayAd"Native_TrafficCash_DelayAd);
            
    RegPluginLibrary("trafficcashredux");
     
            return 
    APLRes_Success;
    }
     
    public 
    OnMapStart()
    {
            
    // Reset networks (they reload on all map starts)
            
    g_iNetworks=0;
     
            
    // Start our timer to show ads
            
    CreateTimer(1.0Timer_ShowAds_TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);
    }
     
    public 
    OnAutoConfigsBuffered()
    {
            
    // Make it work on reload
            
    LoopIngamePlayers(client)
            {
                    
    OnClientConnected(client);
                    if(
    AreClientCookiesCached(client))
                            
    OnClientCookiesCached(client);
                    if(
    IsClientAuthorized(client))
                            
    OnClientPostAdminCheck(client);
            }
    }
     
    //////////////////////////////
    //                      NATIVES                 //
    //////////////////////////////
     
    public Native_TrafficCash_DelayAd(Handle:plugin,numParams)
    {
            
    g_iDelay[GetNativeCell(1)] = GetTime() + RoundFloat(Float:GetNativeCell(2));
    }
     
    //////////////////////////////
    //              CLIENT FORWARDS         //
    //////////////////////////////
     
    public OnClientConnected(client)
    {
            
    // Reset player ad times
            
    g_bInitialized[client]=0;
            if(!
    IsFakeClient(client))
                    for(new 
    i=0;i<MAX_AD_NETWORKS;++i)
                    {
                            
    g_iNextAd[client][i]=-1;
                            
    g_iAdNum[client][i]=0;
                    }
    }
     
    public 
    OnClientCookiesCached(client)
    {
            
    // Get the last ad times
            
    new String:m_szCookie[64];
            for(new 
    i=0;i<g_iNetworks;++i)
            {
                    
    GetClientCookie(clientg_eNetworks[i][hCookie], STRING(m_szCookie));
                    
    g_iNextAd[client][i]=StringToInt(m_szCookie);
                    
    m_szCookie[0]=0;
            }
     
            ++
    g_bInitialized[client];
    }
     
    public 
    OnClientPostAdminCheck(client)
    {
            if(
    g_eCvars[g_cvarImmunityFlag][aCache] != && GetUserFlagBits(client) & g_eCvars[g_cvarImmunityFlag][aCache])
            {
                    for(new 
    i=0;i<MAX_AD_NETWORKS;++i)
                            
    g_iNextAd[client][i] =  2147483647;
            }
    }
     
    //////////////////////////////
    //                      COMMANDS                //
    //////////////////////////////
     
    public Action:Command_Add(args)
    {
            
    // Bail out if the parameter count doesn't match
            
    if(args != 6)
            {
                    
    PrintToServer("Usage: sm_adplugin_add <identifier> <url> <interval> <duration> <max per session> <hidden>");
                    return 
    Plugin_Handled;
            }
     
            
    // Initialize variables
            
    new String:m_szIdentifier[64];
            new 
    String:m_szURL[256];
            new 
    String:m_szInterval[32];
            new 
    String:m_szDuration[32];
            new 
    String:m_szMax[32];
            new 
    String:m_szHidden[8];
     
            
    // Get all parameters
            
    GetCmdArg(1STRING(m_szIdentifier));
            
    GetCmdArg(2STRING(m_szURL));
            
    GetCmdArg(3STRING(m_szInterval));
            
    GetCmdArg(4STRING(m_szDuration));
            
    GetCmdArg(5STRING(m_szMax));
            
    GetCmdArg(6STRING(m_szHidden));
     
            
    // Process the URL
            
    ReplaceString(STRING(m_szURL), "{serverip}"g_szServerIPfalse);
            
    ReplaceString(STRING(m_szURL), "{port}"g_szServerPortfalse);
     
            
    // Save the ad network to our internal cache
            
    new m_iInterval StringToInt(m_szInterval);
            new 
    m_iDuration StringToInt(m_szDuration);
            new 
    m_iMax StringToInt(m_szMax);
            new 
    m_iHidden StringToInt(m_szHidden);
     
            
    g_eNetworks[g_iNetworks][hCookie] = RegClientCookie(m_szIdentifierm_szIdentifierCookieAccess_Private);
            
    strcopy(g_eNetworks[g_iNetworks][szIdentifier], sizeof(m_szIdentifier), m_szIdentifier);
            
    strcopy(g_eNetworks[g_iNetworks][szURL], sizeof(m_szURL), m_szURL);
            
    g_eNetworks[g_iNetworks][iInterval] = m_iInterval;
            
    g_eNetworks[g_iNetworks][iDuration] = m_iDuration;
            
    g_eNetworks[g_iNetworks][iOrder] = g_iNetworks;
            
    g_eNetworks[g_iNetworks][iMax] = m_iMax;
            
    g_eNetworks[g_iNetworks][bHidden] = (m_iHidden?true:false);
     
     
            ++
    g_iNetworks;
     
            
    // Sort the networks by interval
            
    for(new a=0;a<g_iNetworks;++a)
                    for(new 
    b=0;b<g_iNetworks;++b)
                            if(
    g_eNetworks[a][iInterval]>g_eNetworks[b][iInterval] && g_eNetworks[a][iOrder]>g_eNetworks[b][iOrder])
                            {
                                    
    g_eNetworks[a][iOrder]+=g_eNetworks[b][iOrder];
                                    
    g_eNetworks[b][iOrder]=g_eNetworks[a][iOrder]-g_eNetworks[b][iOrder];
                                    
    g_eNetworks[b][iOrder]-=g_eNetworks[b][iOrder];
                            }
     
            for(new 
    i=0;i<g_iNetworks;++i)
                    
    g_iSorted[g_eNetworks[i][iOrder]]=i;
     
            return 
    Plugin_Handled;
    }
     
    //////////////////////////////
    //                      EVENTS                  //
    //////////////////////////////
     
    public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
            
    // Skip this if we want to show ads to alive players too
            
    if(!g_eCvars[g_cvarDeadOnly][aCache])
                    return 
    Plugin_Continue;
     
            
    // Get the client and make sure it's ingame and not a fake
            
    new client GetClientOfUserId(GetEventInt(event"userid"));
            if(!
    client || !IsClientInGame(client) || !IsPlayerAlive(client) || IsFakeClient(client))
                    return 
    Plugin_Continue;
     
     
            
    // Skip this if player is not yet initialized
            
    if(g_bInitialized[client]==2)
                    return 
    Plugin_Continue;
     
            
    // Reset the MOTD to stop all running ads
            
    new Handle:m_hKV CreateKeyValues("data");
            
    KvSetString(m_hKV"title""blank");
            
    KvSetNum(m_hKV"type"MOTDPANEL_TYPE_URL);
            
    KvSetString(m_hKV"msg""about:blank");
            
    ShowVGUIPanel(client"info"m_hKVfalse);
            
    CloseHandle(m_hKV);
     
            return 
    Plugin_Continue;
    }
     
    public 
    Action:Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
    {
            
    // Get the client and make sure it's ingame and not a fake
            
    new client GetClientOfUserId(GetEventInt(event"userid"));
            if(!
    client || !IsClientInGame(client) || IsFakeClient(client) || g_bInitialized[client]==2)
                    return 
    Plugin_Continue;
     
            new 
    team GetEventInt(event"team");
            if(
    team>0)
                    ++
    g_bInitialized[client];
     
            return 
    Plugin_Continue;
    }
     
     
    //////////////////////////////
    //                      HOOKS                   //
    //////////////////////////////
     
    //////////////////////////////
    //                      TIMERS                  //
    //////////////////////////////
     
    public Action:Timer_ShowAds(Handle:timer)
    {
            new 
    m_iTime GetTime();
            new 
    m_iTeam;
            new 
    bool:m_bDisplay;
            new 
    String:m_szCookie[64];
            new 
    String:m_szURL[256];
            new 
    String:m_szSteamID[64];
           
            
    LoopIngamePlayers(client)
            {
                    if(
    g_bInitialized[client]!=2)
                            continue;
     
                    
    // Check if the player should see an ad at all
                    
    m_bDisplay=false;
                    
    m_iTeam GetClientTeam(client);
                    if(
    m_iTeam != SPEC && m_iTeam != RED && m_iTeam != BLU)
                            continue;
                    if(
    g_iDelay[client]<m_iTime && (m_iTeam == SPEC || !g_eCvars[g_cvarDeadOnly][aCache] || (g_eCvars[g_cvarDeadOnly][aCache] && !IsPlayerAlive(client))))
                            
    m_bDisplay=true;
                    if(!
    m_bDisplay)
                            continue;
     
                    
    // Get client SteamID
                    
    GetClientAuthString(clientSTRING(m_szSteamID));
                   
                    for(new 
    i=0;i<g_iNetworks;++i)
                    {
                            if(
    g_iNextAd[client][i] < m_iTime && (g_iAdNum[client][i] < g_eNetworks[i][iMax] || g_eNetworks[i][iMax] == 0))
                            {
                                    if(
    m_iTeam != BLU && !g_eNetworks[i][bHidden])
                                            continue;
     
                                    
    // Process URL
                                    
    strcopy(STRING(m_szURL), g_eNetworks[i][szURL]);
                                    
    ReplaceString(STRING(m_szURL), "{steamid}"m_szSteamIDfalse);
     
                                    
    // Show that ad
                                    
    new Handle:m_hKV CreateKeyValues("data");
                                    
    KvSetString(m_hKV"title""blank");
                                    
    KvSetNum(m_hKV"type"MOTDPANEL_TYPE_URL);
                                    
    KvSetString(m_hKV"msg"g_eNetworks[i][szURL]);
                                    
    ShowVGUIPanel(client"info"m_hKV, !g_eNetworks[i][bHidden]);
                                    
    CloseHandle(m_hKV);
     
                                    
    // Mute if it's pinion...
                                    /*if(strcmp(g_eNetworks[i][szIdentifier], "pinion")==0)
                                    {
                                            m_hKV = CreateKeyValues("data");
                                            KvSetString(m_hKV, "title", "blank");
                                            KvSetNum(m_hKV, "type", MOTDPANEL_TYPE_URL);
                                            KvSetString(m_hKV, "msg", "javascript:document.getElementById(\"videoElement\").volume=0.0");
                                            ShowVGUIPanel(client, "info", m_hKV, false);
                                            CloseHandle(m_hKV);
                                    }*/
                                   
                                    // Make sure the ad won't be seen before it should be seen again
                                    
    g_iDelay[client] = m_iTime g_eNetworks[i][iDuration]+1;
                                    
    g_iNextAd[client][i] = m_iTime g_eNetworks[i][iInterval];
                                    ++
    g_iAdNum[client][i];
     
                                    
    // Save the last time to a cookie if it deserves to be saved at all (if timeout is higher than 5 mins)
                                    
    if(g_eNetworks[i][iInterval] > 300)
                                    {
                                            
    IntToString(g_iNextAd[client][i], STRING(m_szCookie));
                                            
    SetClientCookie(clientg_eNetworks[i][hCookie], m_szCookie);
                                    }
     
                                    
    CreateTimer(float(g_eNetworks[i][iDuration]), Timer_ResetPlayerGetClientUserId(client));
     
                                    
    // We have an ad to show already, skip the rest of the loop
                                    
    break;
                            }
                    }
            }
            return 
    Plugin_Continue;
    }
     
    public 
    Action:Timer_ResetPlayer(Handle:timerany:userid)
    {
            new 
    client GetClientOfUserId(userid);
            if(!
    client || !IsClientInGame(client))
                    return 
    Plugin_Stop;
            
    // Reset the MOTD to stop all running ads
            
    new Handle:m_hKV CreateKeyValues("data");
            
    KvSetString(m_hKV"title""blank");
            
    KvSetNum(m_hKV"type"MOTDPANEL_TYPE_URL);
            
    KvSetString(m_hKV"msg""about:blank");
            
    ShowVGUIPanel(client"info"m_hKVfalse);
            
    CloseHandle(m_hKV);
           
            return 
    Plugin_Stop;
    }
     
    TagerW нравится это.