30.10.2010

Переводим сервер на мультипротокол 47/48 (2 варианта)

Решение пробемы совместимости протоколов 47 и 48 для nonsteam серверов тут
Мульти Протокол - это когда игроки могут заходить на сервер как с 47 протокола так и с 48 , так же как и со Steam и NonSteam

Вариант 1 (Древний)

Примечание: то обычный перепрошитый swds.dll. На никсах он был при помощи cbooster'a. Но он не корректен, более уязвим и был создан как временный эксперементальный вариант.

качаем патчик [1.8 mb]

Установка:
1)Содержимое в архиве кинуть в папку с сервером

Вариант 2 (Современный)

КАЧАЕМ DPROTO_0.4.8p (stable; защищает от эксплойтов hlds_vcrash, hlds_fuck, necro hack infection)]

КАЧАЕМ DPROTO_0.8.61 (stable; защищает от эксплойтов hlds_vcrash, hlds_fuck, necro hack infection)

Описание:
Dproto это плагин для MetaMod позволяющий пользователям заходить на сервер как с NoSteam (47-48 протоколы), так и со Steam (48 протокол). Отметим что Dproto это не Steam эмулятор, и если вы хотите поддержку генерации уникальных SteamID на вашем сервере используйте специальные эмуляторы (например revEmu).
Разработчик Crock

Основные возможности:
- Сервер позволяет заходить со всех известных версий клиентов, базирующихся на 47 и 48 протоколах;
- Настраиваемые SteamID для клиентов;
- Работает с последней версией hlds;

Поддерживаются операционные системы: Win и *NIX
Поддерживающиеся билды серверов в версии 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) и новее
Для работы Dproto нужны 
- чистые или пропатченные с помощью VUP библиотеки engine_.
- metamod 1.19 или 1.19p32.

Инструкция по установке:
1. Перейдите к директории /addons/ и создайте новую папку с именем dproto
- это директория игры; cstrike для Counter-Strike, valve для Half-Life, и т.д.
2. Скопируйте dproto.dll или dproto_i386.so to в папку /addons/dproto/ (в зависимости от вашей ОС, для Win dll, для LINUX so)
3. Перейдите к директории установленного metamod'a (это путь /addons/metamod/) и отредактируйте файл plugins.ini:
добавьте следующую строку в начало файла

для windows:
win32 addons\dproto\dproto.dll

для linux:
linux addons\dproto\dproto_i386.so

4. Скопируйте файл dproto.cfg в корневую папку директории игры (где hlds.exe).
5. Папку src закиньте в папку cstrike
6. Запустите сервер. Используйте следующую команду для linux систем: 
./hlds_run -binary ./hlds_i686

когда сервер загружен, напишите "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 running

Или по логингу в консоле сервера увидите следующее:


Если у вас возникли проблемы с админкой по нику:
На вашем сервере изменено значение "amx_password_field" на другое (по умолчанию - "_pw"). Эта проблема решается очень просто:
1) можно просто изменить значение параметра "UserinfoVerification" на "0"
2) изменить значение "amx_password_field" на стандартное, то есть "_pw"
3) самый лучший вариант: добавить к значениям "ValidInfoFields_Engine" своё значение "amx_password_field"

Допустим в amxx.cfg: amx_password_field "mejor"

dproto.cfg (оригинал):

ValidInfoFields_Engine = \name\bottomcolor\topcolor\model\cl_lc\cl_lw\cl_updaterate\cl_dlmax\rate\_pw\*hltv\password


dproto.cfg (изменённый, чтоб работало):

ValidInfoFields_Engine = \name\bottomcolor\topcolor\model\cl_lc\cl_lw\cl_updaterate\cl_dlmax\rate\_pw\*hltv\password\mejor


Переведенный на РУССКИЙ для удобства файл dproto.cfg:

# ========================================================
# Настройки DPROTO
# ========================================================

#Способ ведения логов:
# 1 = Консоль
# 2 = Лог файлы
# 3 = Оба метода
LoggingMode = 2

# UserinfoVerification - режим проверки информации пользователя
# 1 = Проверяется на максимальный размер при подключении игрока (С этим значением используется MaxUserInfoSize)
# 2 = Удаляет ненужные поля в информации (С этим значением используется ValidInfoFields)
# 3 = Оба режима
# Проверки необходимы чтобы избежать переполнения информации пользователя, что может привести к появлению svc_bad сообщений у игроков
UserinfoVerification = 3
MaxUserInfoSize = 230
ValidInfoFields_Engine = namebottomcolortopcolormodelcl_lccl_lwcl_updateratecl_dlmaxrate_pw*hltvpassword
ValidInfoFields_cstrike = _vgui_menus_cl_autowepswitch
ValidInfoFields_ag = cl_autowepswitch


# ========================================================
# Управление AUTHID
# ========================================================

# Список возможных ID клиентов (для cid_* настройки)
# 1: Real steam (STEAM_xx:xx:xx)
# 2: Real valve (VALVE_xx:xx:xx)
# 3: STEAM_ by IP
# 4: VALVE_ by IP
# 5: Deprecated - client will be rejected
# 6: reserved for future use
# 7: HLTV
# 8: STEAM_ID_LAN
# 9: STEAM_ID_PENDING
# 10: VALVE_ID_LAN
# 11: VALVE_ID_PENDING
# 12: STEAM_666:88:666

# Используйте следующие опции чтобы задать нужные ID из списка выше
cid_HLTV = 7
cid_NoSteam47 = 8
cid_NoSteam48 = 10

# Для игроков через легальный Steam
cid_Steam = 1

# Здесь задается ID для клиентов, которые вроде бы как авторизовались, но не получили Steam ID
# Примечание: На самом дел он получит Steam ID, но выглядить он будет примерно так STEAM_0:0:0
cid_SteamPending = 9

# Для игроков имеющих revEmu ( >= 9.74) на клиентской стороне:
cid_RevEmu = 1

# Для игроков имеющих старый revEmu на клиентской стороне:
cid_OldRevEmu = 1

# Для игроков имеющих hCupa's SteamEmu на клиентской стороне:
cid_SteamEmu = 1

# SteamEmuCompatMode (0 / 1)
# Аналог опции в eSTEAMATiON - EnforceSteamEmuCompatIDMode
# Влияет только на старые RevEmu и SteamEmu эмуляторы.
SteamEmuCompatMode = 1

# OldEstCompatMode (0 / 1)
# Включает/выключает исправление steamid сделанных EST в версии dproto 0.3.1. 
# Установите 1, если вы хотите сделать steamids генерируемые EST, как в версии < 0.3.0
OldEstCompatMode = 0

# IPGen_Prefix1 (int)
# STEAM_a:b:c
# ^ - этот префикс для authid, сгенерированных по IP
IPGen_Prefix1 = 0

# IPGen_Prefix2 (int)
# STEAM_a:b:c
# ^ - этот префикс для authid, сгенерированных по IP
IPGen_Prefix2 = 4

# Обратите внимание, забаненные sieam id будут без префиксов

# ========================================================
# Другие настройки
# ========================================================

# DisableNativeAuth (0/1)
# Отключит систему авторизации valve/steam. 
# Для протокола 47: сервер не будет подключаться к серверам авторизации.
# Для всех: сервер не будет вызывать функции авторизации. 
# Это для исправления зависания при запуске старых, основанных на 47 протоколе, серверов.
DisableNativeAuth = 0

# ServerInfoAnswerType (0/1)
# Устанавливает тип ответов сервера на запросы
# 0 = Новый стиль (Source Engine)
# 1 = Старый стиль (Исправлен список избранное для п.47 клиентов)
# 2 = Смешанный режим - лучшее решение для того, чтобы сервер был виден везде
ServerInfoAnswerType = 2


# MasterClient (0/1)
# Включает эмуляцию мастер-клиент; это помогает зарегистрировать сервер в мастер-листе.
# если вы имеете "You server is old" ошибку.
# ИСПОЛЬЗОВАТЬ ТОЛЬКО С ПАРАМЕТРОМ ЗАПУСКА -nomaster !
# you can use Master_GameVersion to set version of game
MasterClient = 0

# Master_GameVersion (string)
# Устанавливает версию игры, которую мастер-клиент будет отправлять на мастер-сервер
Master_GameVersion = 1.1.2.6/Stdio

# SubServer_Enable (0/1)
# Включает вторичный мини-сервер, который переадресовывает клиентов на главный сервер.
# Используйте параметр SubServer_AnswerType , чтобы установить тип ответа на информационные запросы .
# Используйте параметр SubServer_Port , чтобы установить вторичный порт сервера.
# Используйте параметр SubServer_MasterClient , чтобы включить master-client для вторичного сервера.
# Это полезная функция, если вы хотите, чтобы все клиенты видели ваш сервер. 
# Это возможно, если вы установите различные типы ответов на главные и вторичные серверы.
# Клиенты которые не видят главный сервер будут видеть вторичный сервер.
SubServer_Enable = 0
SubServer_Port = 28015
SubServer_MasterClient = 0
SubServer_AnswerType = 0
SubServer_RedirectCommand = connect 169.254.141.3:27015
 

# Game_Name (string)
# Установите имя игры отображающееся у игроков
# Если отсавить пустым будет использоваться название игры по умолчанию.
Game_Name = 


# Исправляет отображение ID игрока в мониторинге HLStats
# Используйте только если у вас есть HLStats.
HLStatsPlayerIdFix = 0

# ExportVersion (0 / 1)
# Включение/Выключение экспорта версии dp_version
# 1 = dp_version настройка будет экспортирована в правила сервера. Это будет отображаться в мониториге сервера (например в HLSW)
# 0 = dp_version настройка не будет экспортирована в правила сервера. 
ExportVersion = 1  


Для Linux рекомендуется запускать сервер с параметром:

" ./hlds_run -binary ./hlds_i686"

Как узнать версию протокола клиента через AMXX:
Смотрите файл amxx/dp_test.sma. Это исходный код плагина, цель которого показывать номер протокола при подключении клиентов

ЧАВО (Вопрос-Ответ):
В: Я установил dproto, но он не работает. meta list пишет это:
Цитата
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] dproto fail load dproto_i386.so v0.3.7 ini Start Never

О: Запустите сервер с параметрами -console +log on +mp_logecho 1 и следите за консолью. Вы сможете найти причину там.

В: AmxModX админы не могут зайти, используя свой пароль.
О: Смените префикс _pw на свой в файле dproto.cfg:
ValidInfoFields_Engine = \name\bottomcolor\topcolor\model\cl_lc\cl_lw\cl_updaterate\cl_dlmax\rate\_pw\*hltv\password

В: Я не вижу свой сервер в списках серверов Steam!
О: Смените ServerInfoAnswerType на 0 или 2 в dproto.cfg

В: Мой сервер не виден в списках серверов через CS с ~24 патчем
О: Смените ServerInfoAnswerType на 1 или 2 в dproto.cfg

В: Как сделать, что бы сервер был виден и на старых патчах и в Steam?
О: Смените ServerInfoAnswerType на 2 в dproto.cfg

В: Бан настоящих SteamID не работает. Пользователи с забаненным ID могут играть на сервере.
О: Ваш сервер не подключен к серверам Steam или потерял соединение. Я не знаю универсального метода проверки соединения с Steam серверами. Если Ваш сервер защищен VAC'ом, используйте команду stat. Если пишет "insecure" или "insecure (secure mode enabled, disconnected from Steam3)", значит соединение со Steam потеряно. Эта проблема не связана с dproto, но я могу дать советы, что бы исправить данную проблему:
1. Проверьте, разрешены ли исходящие TCP соединения на порт 27030
2. Проверьте, допускаются ли исходящие UDP пакеты с локальных "2690x" портов
3. Если Вы используете linux, Вы должны добавить параметр +ip в строку запуска. Я, например, использую +ip 0.0.0.0 и это отлично помогает.

В: Мой сервер не отображается в мониторингах
О: Это из за ServerInfoAnswerType 2, некоторые скрипты мониторингов не работают с ним правильно. Есть 3 способа решения проблемы: Использовать ServerInfoAnswerType 1 или 0, либо попытаться исправить самому, либо написать разработчикам скрипта. Я не гарантирую правильную работу стороннего софта.

В: Я использую движок последней версии и мой сервер не виден в интернет поиске.
О: Задайте этот вопрос Valve...

В: Я использую движок последней версии и мой сервер не виден в сервер-листе 'Setti'
О: Здесь

В: У игроков на моем сервере одинаковые SteamID. Сервер их признает как SteamEmu (dp_SteamEmu)
О: SteamID может быть легко подделан в алгоритме авторизации SteamEmu. Запретите такие клиенты или выставьте им ID без цифр (STEAM_ID_LAN, к примеру)
Понравилось:
Категория: Counter-Strike Просмотров: 4482 Комментариев: 0
К публикации нет комментариев, но Вы можете стать первым, оставив свой комментарий!