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

Статус
В этой теме нельзя размещать новые ответы.

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #1
Патч сервера, 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 следующую строчку:
C-подобный:
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 адресу.

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

Скачать

Для Windows:

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

Нужно найти файл steam.inf в папке cstrike вашего сервера и заменить PatchVersion=1.1.2.6 на строку:
C-подобный:
PatchVersion=1.6.3.7

Настройки запуска: -game cstrike -console -sv_lan 0 -noipx +map de_dust2 +maxplayers 16 +exec server.cfg

Скачать

Примечание:
Чтобы пользователи Steam могли добавлять сервер в избранное и чтобы ваш сервер отображался в мониторинге игры надо добавить следующие строки в файл server.cfg
C-подобный:
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
 

Nevidimka

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

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

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

Исходник:
C-подобный:
#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)    
}
 

Вложения

  • Admin_restorev10.zip
    1.1 КБ · Просмотры: 129

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #3
Ответ: Патч сервера, 47 и 48 протокол одновременно

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

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

C-подобный:
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 КБ · Просмотры: 98

Nevidimka

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

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

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #5
Ответ: Патч сервера, 47 и 48 протокол одновременно

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

Nevidimka

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

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

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #7
Ответ: Патч сервера, 47 и 48 протокол одновременно

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

Nevidimka

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

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

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #9
Ответ: Патч сервера, 47 и 48 протокол одновременно

да.со стандартным иммунитет "a" работает только не банит )))не знаю чем открывают плагены чтоб выложить код (не умею) так что выкладываю сам плаген plmenu (copy 3).rar
Посмотрел исходник плагина (это файл с расширением sma), надо переписывать plmenu, наш plmenu который банит по IP не осуществляет проверку authid

Исходная секция actionBanMenu оригинального плагина:
PHP:
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], authid[32], authid2[32]
        
            get_user_name(player, name2, 31)
            get_user_authid(id, authid, 31)
            get_user_authid(player, authid2, 31)
            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), authid, name2, userid2, authid2, 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);
                }
            }
            /* ---------- 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(player, ipa, 31, 1)
                
                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(id, g_menuPosition[id])
        }
    }
    
    return PLUGIN_HANDLED
 

Nevidimka

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

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

Nevidimka

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

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

Nevidimka

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

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

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #13
Ответ: Патч сервера, 47 и 48 протокол одновременно

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

Nevidimka

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

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

Andrey

пишу код за еду
Сообщения
3,386
Реакции
4,018
  • Команда форума
  • #15
Ответ: Патч сервера, 47 и 48 протокол одновременно

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