Патч сервера, 47 и 48 протокол одновременно

Тема в разделе "Статьи и мануалы", создана пользователем Andrey, 21 янв 2009.

Статус темы:
Закрыта.
  1. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Патч сервера, 47 и 48 протокол одновременно

    24 ноября 2008 года компания valve сменила версию протокола steam для движка hl1, с 47 на 48. В результате чего сервера на 47 протоколе перестали приниматься и публиковаться в списках поиска на мастер сервере... а стим клиенты, которые обновились автоматически, перестали иметь возможность заходить на non steam сервера.

    Для Linux:
    Патч состоит из двух «инструментов»: библиотеки от сервера 47 протокола (или пропатченные библиотеки) + плагин metamod`a, который выполняет публикацию на master сервере компании valve, что бы ваши сервера было видно в поиске + добавляет возможность заходить на сервер как steam клиентам на 48 протокле, так и non steam клиентам, как на 47. так и на 48 протоколе, в том числе и steam.

    Особенности патча:
    1) Ставить надо на чистый дистрибутив сервера, скачанный с официального сервера valve, через hlupdatetool.
    2) после распаковки патча в корень сервера, в папке cstrike/addons появится папка cbooster, в которой лежит библиотека плагина. Её нужно подключить, добавив в plugins.ini metamod`a следующую строчку:
    Код:
    linux           addons/cbooster/cbooster_master_i386.so
    3) сервер надо запускать с параметром -nomaster, так как библиотека cbooster используется именно под этот параметр. А так же sv_lan 0 либо не указывать данный параметр.
    4) Админка работает по ip и nickname, по Steam ID не работает - Steam ID у всех steam_666:88:666.
    5) авторизация администраторов в amxx проходит обычным путём, без использования дополнительных плагинов.
    6) правильная работа amx_banmenu достигнута переписыванием плагина plmenu.amxx. поставляется в патче + исходник. Банит по ip адресу.

    Внимание! После наложения патча не забывайте назначить права на запуск новым скриптам.
    а именно:
    Код:
    chmod +x hlds_*
    Скачать

    Для Windows:

    Особенности патча:
    1) Работает на 47 и 48 протоколе + steam
    2) Сервер видно в Internet поиске
    3) Работает админка, статистика и прочие вещи по ip
    4) Правильно работает amxbanmenu

    Нужно найти файл steam.inf в папке cstrike вашего сервера и заменить PatchVersion=1.1.2.6 на строку:
    Код:
    PatchVersion=1.6.3.7
    Настройки запуска: -game cstrike -console -sv_lan 0 -noipx +map de_dust2 +maxplayers 16 +exec server.cfg

    Скачать

    Примечание:
    Чтобы пользователи Steam могли добавлять сервер в избранное и чтобы ваш сервер отображался в мониторинге игры надо добавить следующие строки в файл server.cfg
    Код:
    setmaster add 69.28.151.162 
    setmaster add 72.165.61.189 
    setmaster add 207.173.177.11
    setmaster add 68.142.72.250
    setmaster add hlmaster.jolt.co.uk
    setmaster add 65.73.232.251
    setmaster add 65.73.232.253
    setmaster add 207.173.177.12
    setmaster add 207.173.177.11
     
    3 пользователям это понравилось.
  2. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Для Windows:
    чтоб работали админки по нику и по ip нужно добавить плагин admin-restore.amxx
    проверено рабочий
    http://narod.ru/disk/5640840000/Admin_restorev10.zip.html

    Плагин запускает команду amx_reloadadmins при соединении игрока с сервером

    Исходник:
    Код:
    #include <amxmodx>
    #include <amxmisc>
    
    #define PLUGIN "ADmins-Restore"
    #define VERSION "1.0"
    #define AUTHOR "Fedcomp"
    #define GORELOAD "amx_reloadadmins"
    
    
    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
    }
    
    public client_putinserver() 
    {
        server_cmd(GORELOAD)    
    }
     

    Вложения:

  3. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Если у вас возникли проблемы с AMXBANS, а именно банит всех по STEAM_ID нужно выполнить следующее действие

    В плагине plmenu.amxx секцию actionBanMenu нужно заменить следующим кодом:

    Код:
    public actionBanMenu(id, key)
    {
        switch (key)
        {
            case 7:
            {
                // BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS
                
                ++g_menuOption[id]
                g_menuOption[id] %= ArraySize(g_bantimes);
    
                g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
    
                displayBanMenu(id, g_menuPosition[id])
            }
            case 8: displayBanMenu(id, ++g_menuPosition[id])
            case 9: displayBanMenu(id, --g_menuPosition[id])
            default:
            {
                new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
                new name[32], name2[32], ip[32], ip2[32]
            
                get_user_name(player, name2, 31)
                get_user_ip(id, ip, 31, 1)
                get_user_ip(player, ip2, 31, 1)
                get_user_name(id, name, 31)
                
                new userid2 = get_user_userid(player)
    
                log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), ip, name2, userid2, ip2, g_menuSettings[id])
    
                if (g_menuSettings[id]==0) // permanent
                {
                    new maxpl = get_maxplayers();
                    for (new i = 1; i <= maxpl; i++)
                    {
                        show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");
                    }
                }
                else
                {
                    new tempTime[32];
                    formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
                    new maxpl = get_maxplayers();
                    for (new i = 1; i <= maxpl; i++)
                    {
                        show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);
                    }
                }
                
                server_cmd("addip %d %s;writeip", g_menuSettings[id], ip2)
    
                server_exec()
    
                displayBanMenu(id, g_menuPosition[id])
            }
        }
        
        return PLUGIN_HANDLED
    }
    Бан теперь будет выдаваться по IP адресу.
    Вложением прикреплен скомпилированный плагин для AMX Mod X версии 1.8.1
     

    Вложения:

    • plmenu.zip
      Размер файла:
      27,2 КБ
      Просмотров:
      96
  4. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Andrey, можно или сделать plmenu чтоб у админов не горела красная звездочка(чтоб админа нельзя было забанить с amxmodmenu)?
     
  5. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Красная звёздочка говорит о наличии у игрока флага администратора, чтобы его нельзя было забанить попробуй использовать флаг иммунитета "a" для админа в файле addons/amxmodx/configs/users.ini .
     
  6. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    это понятно "a" и так стоит .до этого была проблема с AMXBANS а с иммунитетом было все ок.решил заменить plmenu на тот что сверху Бан заработал но появилась звездочка даже если стоит "a" можно ли в plmenu исправить чтоб и бан работал и иммунитет действовал ?
     
  7. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    А ты уверен что эта проблема появилась после установки plmenu который выше? Со стандартным плагином plmenu пробовал? Если да, то напиши сюда исходный код плагина plmenu с которым не было этой проблемы.
     
  8. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    да.со стандартным иммунитет "a" работает только не банит )))не знаю чем открывают плагены чтоб выложить код (не умею) так что выкладываю сам плаген plmenu (copy 3).rar
     
  9. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Посмотрел исходник плагина (это файл с расширением sma), надо переписывать plmenu, наш plmenu который банит по IP не осуществляет проверку authid

    Исходная секция actionBanMenu оригинального плагина:
    PHP:
    public actionBanMenu(idkey)
    {
        switch (
    key)
        {
            case 
    7:
            {
                
    /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */
                
                
    ++g_menuOption[id]
                
    g_menuOption[id] %= ArraySize(g_bantimes);

                
    g_menuSettings[id] = ArrayGetCell(g_bantimesg_menuOption[id]);

                
    displayBanMenu(idg_menuPosition[id])
            }
            case 
    8displayBanMenu(id, ++g_menuPosition[id])
            case 
    9displayBanMenu(id, --g_menuPosition[id])
            default:
            {
                new 
    player g_menuPlayers[id][g_menuPosition[id] * key]
                new 
    name[32], name2[32], authid[32], authid2[32]
            
                
    get_user_name(playername231)
                
    get_user_authid(idauthid31)
                
    get_user_authid(playerauthid231)
                
    get_user_name(idname31)
                
                new 
    userid2 get_user_userid(player)

                
    log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")"nameget_user_userid(id), authidname2userid2authid2g_menuSettings[id])

                if (
    g_menuSettings[id]==0// permanent
                
    {
                    new 
    maxpl get_maxplayers();
                    for (new 
    1<= maxpli++)
                    {
                        
    show_activity_id(iidname"%L %s %L"i"BAN"name2i"PERM");
                    }
                }
                else
                {
                    new 
    tempTime[32];
                    
    formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
                    new 
    maxpl get_maxplayers();
                    for (new 
    1<= maxpli++)
                    {
                        
    show_activity_id(iidname"%L %s %L"i"BAN"name2i"FOR_MIN"tempTime);
                    }
                }
                
    /* ---------- check for Steam ID added by MistaGee -------------------- 
                IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */
                
                
    if (equal("4294967295"authid2)
                    || 
    equal("HLTV"authid2)
                    || 
    equal("STEAM_ID_LAN"authid2)
                    || 
    equali("VALVE_ID_LAN"authid2))
                {
                    
    /* END OF MODIFICATIONS BY MISTAGEE */
                    
    new ipa[32]
                    
    get_user_ip(playeripa311)
                    
                    
    server_cmd("addip %d %s;writeip"g_menuSettings[id], ipa)
                }
                else
                {
                    
    server_cmd("banid %d #%d kick;writeid"g_menuSettings[id], userid2)
                }

                
    server_exec()

                
    displayBanMenu(idg_menuPosition[id])
            }
        }
        
        return 
    PLUGIN_HANDLED

     
  10. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Andrey, спс тогда .не подскажешь почему тогда может "a" Иммунитет не работать ?
     
  11. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Andrey, и не как нельзя сделать ?
     
  12. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Andrey, все спасибо.Все работает.просто если я залезаю в меню бана то на мне звезда .если другой админ залезает в меню бана на мне нет звезды а на нем есть .тобесть все Нормально .СПАСИБО ТЕБЕ за плагин ))))
     
  13. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    То есть до этого ты банил сам себя ?! :)
     
  14. Nevidimka

    Nevidimka

    Сообщения:
    8
    Симпатии:
    0
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Andrey, да нет .просто когда любой админ заходит в бан меню то у него звездочка а у других нет то есть сам себя может банить через бан меню а другие тебя не могут (пример ты админ и я админ ты заходишь в бан меню и видишь на своем нике звездочка стоит на моем нет ее "иммунитет"а когда я захожу в бан меню то на мне звездочка на тебе нет "Иммунитет") итог плагин нормальный просто 3 суток не спал проспался и врубился !)))твой плагин под AMX Mod X версии 1.8.1 работает отлично.
    сПс
     
  15. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: Патч сервера, 47 и 48 протокол одновременно

    Для работы сервера на двух протоколах используйте Dproto.
    Тема закрыта.
     
Статус темы:
Закрыта.