Описание:
Как позволить играть на сервере клиентам нон-стим 47 - 48 протокол, а также STEAM
Dproto это плагин для MetaMod позволяющий пользователям заходить на сервер как с NoSteam (47-48 протоколы), так и со Steam (48 протокол). Отметим что Dproto это не Steam эмулятор, и если вы хотите поддержку генерации уникальных SteamID на вашем сервере используйте специальные эмуляторы (например RevEmu).
Разработчик Crock
Требования::
- Сервер принимает всех известных клиентов, основанных на 47 и 48 протоколе.
- Настраиваемые SteamID'ы для клиентов.
- Работает с последней версией HLDS.
- Встроенная поддержка эмуляции на стороне сервера.
Основные возможности:
- Чистые (не патченные) файлы движка (swds.dll для Windows; engine_i686.so для Linux).
- Metamod 1.19 или 1.19p32
- Любой билд сервера 48-го протокола.
Поддерживаются операционные системы: Win и *NIX
Поддерживающиеся билды серверов c версии 0.3.7:
- Linux: 2738, 4383 (24 Oct 2008), 4383 (Released at Apr 2009), 4383 (Released 19 May 2009), 4617 и новее
- Windows: 4382, 4554, 4554 (19 May 2009), 4554 (15 Jun 2009) и новее
Инструкция по установке:
- В папке addons создаем папку dproto и копируем в неё файл dproto.so или dproto.dll в зависимости от операционной системы, Linux или Windows соответственно.
- Открываем addons/metamod/plugins.ini (если такого файла нет, то создаем сами) и добавляем следующую строчку:
для windows
win32 addons\dproto\dproto.dll
для linux
linux addons/dproto/dproto_i386.so
- Файл dproto.cfg кидаем в корень сервера или в папку cstrike. Корректируем конфиг, устанавливая необходимые Вам параметры (настройки по умолчанию достаточны для работы модуля).
когда сервер загружен, напишите "meta list" в консоли. Если вы установили dproto правильно, то вы должны увидеть следующее:
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] dproto RUN - dproto_i386.so vX.X.X ini Start Never
[ 2] AMX Mod X RUN - amxmodx_mm_i386. v1.8.1.3 ini Start ANY
2 plugins, 2 running6. Всё готово
Переменные для вывода сообщения о несоответствии версии клиента:
Цитата
dp_rejmsg_steam
dp_rejmsg_nosteam47
dp_rejmsg_nosteam48
dp_rejmsg_hltv
dp_rejmsg_pending
dp_rejmsg_revemu
dp_rejmsg_steamemu
dp_rejmsg_oldrevemu
dp_rejmsg_avsmp
dp_rejmsg_revemu_sc2009
dp_rejmsg_nosteam47
dp_rejmsg_nosteam48
dp_rejmsg_hltv
dp_rejmsg_pending
dp_rejmsg_revemu
dp_rejmsg_steamemu
dp_rejmsg_oldrevemu
dp_rejmsg_avsmp
dp_rejmsg_revemu_sc2009
Полезные команды:
Цитата
dp_ipsessions - список активных сессий соединений и информация о них.
dp_secplrlist - список активных игроков, с некоторыми логическими параметры: U = используемый слот; A = активный клиент сети; P = прошел проверку на фейкового игрока;
dp_lastthreats - списки последних угроз.
dp_secplrlist - список активных игроков, с некоторыми логическими параметры: U = используемый слот; A = активный клиент сети; P = прошел проверку на фейкового игрока;
dp_lastthreats - списки последних угроз.
Переведенный файл dproto.cfg:
# # Общее правило для изменения этого файла: # НЕ ВНОСИТЕ КАКИЕ-ЛИБО ИЗМЕНЕНИЯ, ЕСЛИ ВЫ НЕ ЗНАЕТЕ, ЧТО ЭТО ЗНАЧИТ # # ======================================================== # Конфигурация Dproto # ======================================================== # LoggingMode - Режим ведения логов: # 1 = Console - Консольный # 2 = Log Files - Файловый # 3 = Both - Оба режима LoggingMode = 2 # ======================================================== # Управление AuthID'ами пользователей # ======================================================== # ClientIDs (для cid_* опций) # 1: Реальный (или сгенерированный HW) steam (STEAM_xx:xx:xx) # 2: Реальный (или сгенерированный HW) valve (VALVE_xx:xx:xx) # 3: STEAM_ сгенерированный по IP-адресу # 4: VALVE_ сгенерированный по IP-адресу # 5: Запрещен - клиент будет отключен # 6: Зарезервировано для будущего использования # 7: HLTV # 8: STEAM_ID_LAN # 9: STEAM_ID_PENDING # 10: VALVE_ID_LAN # 11: VALVE_ID_PENDING # 12: STEAM_666:88:666 # Установки AUthID для клиентов # Для HLTV cid_HLTV = 7 # Для клиентов, которые не поддерживают уникальные идентификаторы: cid_NoSteam47 = 8 cid_NoSteam48 = 10 # Для легальных Steam-игроков: cid_Steam = 1 # Клиент успешно авторизирован, но не получает SteamID: # Замечание: На самом деле, он получил SteamID, но это бесполезно (STEAM_0:0:0 например). cid_SteamPending = 9 # Для игроков имеющих эмулятор revEmu версии 9.74 или выше: cid_RevEmu = 1 # Для игроков имеющих эмулятор SteamClient 2009 или revEmu выше версии 9.82: # default is real STEAM_xx:xx:xx [1] cid_SC2009 = 1 # Для игроков имеющих старую версию эмулятора revEmu: cid_OldRevEmu = 1 # Для игроков имеющих эмулятор hCupa's SteamEmu: cid_SteamEmu = 1 # Для игроков имеющих AVSMP (Взломанный Steam) cid_AVSMP = 1 # Для сканера серверов SETTI: cid_Setti = 3 # SC2009_RevCompatMode (0 / 1) # Включить исправление SteamID'ов сгенерированных эмулятором Steamclient 2009 на совместимость с эмулятором revEmu. SC2009_RevCompatMode = 1 # SteamEmuCompatMode (0 / 1) # Аналог для параметра EnforceSteamEmuCompatIDMode в eSTEAMATiON. # Влияет только на старые RevEmu и SteamEmu эмуляторы. SteamEmuCompatMode = 1 # OldEstCompatMode (0 / 1) # Включает/Выключает исправление SteamID'ов сгенерированных eST в версии 0.3.1. # Установите 1, если Вы хотите сделать SteamID'ы сгенерированные eST как в версии ниже 0.3.0. OldEstCompatMode = 0 # IPGen_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, сгенерированных по IP-адресу. IPGen_Prefix1 = 0 # IPGen_Prefix2 (int) # STEAM_a:b:c # Второй префикс (B) для AuthID, сгенерированных по IP-адресу. IPGen_Prefix2 = 4 # Native_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, сгенерированных легальной системой авторизации (Steam) Native_Prefix1 = 0; # RevEmu_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, сгенерированных эмулятором Steamclient 2009 SC2009_Prefix1 = 0; # RevEmu_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, сгенерированных эмулятором RevEmu RevEmu_Prefix1 = 0; # OldRevEmu_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, сгенерированных старым эмулятором RevEmu OldRevEmu_Prefix1 = 0; # SteamEmu_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, сгенерированных эмулятором SteamEmu SteamEmu_Prefix1 = 0; # SteamEmu_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID, назначенного для клиентов AVSMP (Взломанный Steam) AVSMP_Prefix1 = 0; # Setti_Prefix1 (int) # STEAM_a:b:c # Первый префикс (a) для AuthID отображаемых в сканере серверов Setti Setti_Prefix1 = 0; # Стоит отметить, что banid будет использовать SteamID без каких-либо приставок! # ======================================================== # Другое # ======================================================== # DisableNativeAuth (0 / 1) # Отключение valve/steam системы авторизации. # Для серверов основанных на 47-ом протоколе: Сервер не будет соединяться с серверами авторизации. # Для всех: Сервер не сможет использовать функции авторизации. # Это исправление для запуска старых серверов, основанных на 47-ом протоколе. DisableNativeAuth = 0 # ServerInfoAnswerType (0 / 1 / 2) # Тип ответа сервера на запросы: # 0 = Новый способ (Движок Source) # 1 = Старый способ (Исправляет список избранного для клиентов 47-го протокола) # 2 = Гибридный режим - лучшее решение на данный момент, сервер видно везде. ServerInfoAnswerType = 2 # MasterClient (0 / 1) # Включает эмуляцию мастер-клиента; это помогает зарегистрировать сервер в мастер-листе. # Если у Вас ошибка "You server is out of date". # ИСПОЛЬЗУЙТЕ ЭТО ТОЛЬКО С ПАРАМЕТРОМ ЗАПУСКА -nomaster ! # Вы можете использовать параметр Master_GameVersion для установки версии игры. MasterClient = 0 # Master_GameVersion (строка) # Укажите версию игры, которую мастер-клиент будет отправлять на мастер-сервер. Master_GameVersion = 1.1.2.6/Stdio # SubServer_Enable (0 / 1) # Включает вторичный мини-сервер, который перенаправляет клиента на основной сервер. # Используйте параметр SubServer_AnswerType для установки типа ответа на запросы информации. # Используйте параметр SubServer_MasterClient для включения мастер-клиента на вторичном сервере. # Используйте параметр SubServer_IP для установки IP адреса вторичного сервера. # Используйте параметр SubServer_Port для установки порта вторичного сервера. # Это полезная функция, если Вы хотите, чтобы все клиенты видели Ваш сервер. # Это возможно, если Вы установите различные типы ответа на запросы информации на главном и вторичном серверах. # Клиенты которые не "видят" главный сервер, будут видеть вторичный. SubServer_Enable = 0 SubServer_AnswerType = 0 SubServer_MasterClient = 0 SubServer_IP = 0.0.0.0 SubServer_Port = 28015 SubServer_RedirectCommand = connect 169.254.141.3:27015 # Game_Name (строка) # Название отображаемое у клиентов. # Если переменная Game_Name пустая, то будет использоваться стандартное название игры. Game_Name = # HLStatsPlayerIdFix (0 / 1) # Включение/Выключение фикса отображения ID игрока в мониторинге HLStats. # Включайте это только если используете HLStats. HLStatsPlayerIdFix = 0 # ExportVersion (0 / 1) # Включение/Выключение экспортирования переменной dp_version. # 1 = Переменная dp_version будет экспортироваться в правила сервера. Это будет видно в средствах мониторинга (например в HLSW). # 0 = Переменная dp_version не будет экспортироваться в правила сервера. ExportVersion = 1 # HLTVExcept_IP (IP адрес) # HLTV с этого IP адреса сможет присоединиться к серверу, даже если значение cid_HLTV равно 5 (Запрещен) HLTVExcept_IP = 127.0.0.1 # FakePlayers_BanTime (минуты) # Dproto будет банить IP адрес, с которого подключаются фейковые игроки на время, указанное в этой переменной. # Используйте 0 для бана навсегда. # Используйте отрицательное значение для отключения бана (Фейковых игроков будет только кикать). FakePlayers_BanTime = 120
Для Linux рекомендуется запускать сервер с параметром:
" ./hlds_run -binary ./hlds_i686"
Как узнать версию протокола клиента через AMXX:
Смотрите файл amxx/dp_test.sma. Это исходный код плагина, цель которого показывать номер протокола при подключении клиентов
Мини FAQ:
Q: Мой сервер не отображатеся в избранном в Steam, что делать?
A: Установите Set ServerInfoAnswerType = 0 или 2 в файле dproto.cfg
Q: Мой сервер не отображатеся в избранном в клиенте cs v24, что делать?
A: Установите Set ServerInfoAnswerType = 1 или 2 в dproto.cfg
Q: Как сделать чтобы мой сервер был виден в избранном как в старых no-steam клиентах, так и в steam версии?
A: Установите значение переменной ServerInfoAnswerType 2, в файле dproto.cfg
Q: Админы не могут авторизоваться с помощью пароля, как решить эту проблему?
A: Просто замените _pw в dproto.cfg
ValidInfoFields_Engine = \name\bottomcolor\topcolor\model\cl_lc\cl_lw\cl_up daterate\cl_dlmax\rate\_pw\*hltv\password
и в местах которые вы используете для хранения админского пароля.
Q: Я получаю ошибку "Error verifying STEAM UserID Ticket(server was unable to contact the authentication server)" у игроков играющих с легального клиента, то есть через Steam.
Q: Баны для пользователей лицензионной игры по SteamID не работают. Пользователь с заблокированным ID имеет возможность играть на сервере.
A: Ваш сервер неможет соединиться или потерял соединение с серверами steam. Если вы имеете VAC secured (защищенный античитом VAC) сервер, используйте команду status. Если она показывает "insecure" или "insecure (secure mode enabled, disconnected from Steam3)" это означает, что соединение с серверами steam потеряно. Эта проблема не связана с dproto, но я могу дать некоторые советы, чтобы исправить это:
1. Проверьте разрешены ли исходящие соединения по протоколу TCP через порт 27030
2. Убедитесь в том что доступны исходящие соединения по протоколу UDP через локальные порты 2690x
3. Если вы используете linux, вы должны добавить к запуску параметр командной строки +ip . Я использую +ip 0.0.0.0 например, и это отлично работает.
Текущая версия: 0.8.65
Changelog:
- 0.8.68:
- Улучшения / исправления ошибок в fakeplayers / пакет наводнения код обнаружения
- AMXX API и плагины например обновлене
- Исправлена ошибка с cid_AVSMP, она всегда была 1
- Добавлена полезных команд для мониторинга угроз, проверьте Readme.txt
0.8.65:
- Данная версия содержит множество изменений.
- Добавлена поддержка для клиентов AVSMP
0.8.61:
- исправлен svc_bads при подключении
0.8.60:
- надлежащее обнаружение ботов метод fakeplayers детектора
0.8.59:
- Пофикшена проблема с анализом engine_amd.so
- Пофикшен гибридный тип ответа сервера.
- Боты больше не будут считаться фэйковыми игроками
0.8.58:
- Исправлен вылет при работе с bans DB (banid)
- Исправления в новый код авторизации revEmu
0.8.57:
- Переход на новую систему версий, формат такой: <Старший компонент>.<Младший компонент>.<Номер ревизии в репозиторие>
- Добавлена поддержка последнего движка под линукс (5006)
- Добавлена поддержка новых клиентов revEmu/SteamClient2009.
- Добавлена возможность выставлять первый префикс у SteamID для разных типов клиентов.
- Добавлена двухуровневая система защиты от фэйковых игроков
- Добавлена защита от флуда пакетами с запросами информации о серве (списка игроков, списка кваров)
- Добавлена опция (HLTVExcept_IP), в нее можно писать вписать адрес, с которого HLTV разрешено будет заходить на сервер, даже если HLTV запрещены (cid_HLTV=5)
- Исходный код больше выкладываться не будет, чтобы его фрагменты не использовались отдельными личностями в нехороших целях
- (не тестировалось) Проблема с VAC (когда забаненные им клиенты могли спокойно заходить на сервер) вроде бы решена.
0.4.8p:
- Пофикшена уязвимость в функции SV_ParseCvarValue2(), которую использовал эксплоит failds.
- Пофикшен баг, приводивший к краху сервера под линуксом, когда сервер запускался от юзера, не имевшего права писать в корневую директорию серва.
0.4.8:
- Пофикшен баг с выкидыванием клиентов с ошибкой "Unknown HLTV client type"
- Исправлен svc_bad fixer
0.4.7:
- Пофикшен баг из-за которого старые клиенты (патч 21 и ниже) не могли зайти на сервер.
0.4.6:
- Пофикшена ошибка "NET_SendPacket error: invalid address type" при попытке dproto кикнуть запрещенных клиентов.
0.4.5:
- Фикс svc_bad-ов типа "Server failed to transmit file AY&SY"
- Чистка ненужного кода. Под раздачу попали фильтровалка полей UserInfo (она являлась временным фиксом svc_bad-ов) и поддержка UTF8 в чате/никах.
- Плагины а-ля GameNameChanger должны работать нормально (была проблема в Windows версии)
- HLTV выделены в отдельный тип клиентов (см. amxx/dp_test.sma)
- Старые конфиги (dproto.cfg) не будут работать с новой версей dproto.
0.4.3:
- Переход на динамический метод поиска нужных адресов внутри движка
- Теперь поддерживаются все движки 48 протокола под Windows и Linux (в том числе и engine_amd.so/engine_i486.so)
- Добавлен фикс уязвимости в SV_ParseVoiceData(), используемой эксплоитом hlds_vcrash
Все вопросы, багрепорты, пожелания и предложения оставляем в этом топике.
dproto_0_8_68.rar (137.08К)
Количество загрузок:: 0
dproto_0_8_65.rar (128.43К)
Количество загрузок:: 1
dproto_0_8_61.rar (132.02К)
Количество загрузок:: 0
dproto_0_4_8.rar (130.09К)
Количество загрузок:: 8
dproto_0_4_8p.rar (132.46К)
Количество загрузок:: 12
©

Вход
Регистрация
Помощь


Цитата
