Спросили меня не так давно - есть ли возможность поднять свой Battle.net на FreeBSD, а если есть, то помочь настроить. Игры, для которых возникла необходимость в собственном сервере, это Starcraft и Warcraft 3. После недолгих поисков было найдено решение в виде PvPGN. PvPGN (Player versus Player Gaming Network), который является модификацией сервера bnetd, эмулирует работу сервера Blizzard Battle.net (TM). Далее я расскажу о том, как его установить и настроить, а так же с какими проблемами я столкнулся в процессе работы с ним. Все действия будут происходить на ОС FreeBSD версии 8.3.
Идем в порты и устанавливаем PvPGN. На момент написания статьи в портах доступна версия 1.8.5.
При сборке порта доступны следующие параметры:
После настройки помещаем демон bnetd в автозагрузку и запускаем его:
Проверяем - запустился ли сервис:
На данном этапе настройка сервера PvPGN завершена. Осталось на стороне клиентов прописать адрес данного Battle.net сервера. Для этого есть специальные программы, которые облегчают данный процесс. Парочку таких я прикрипил к статье. Теперь о проблемах, которые возникли в процессе эксплуатации данного сервера. Starcraft подключается к серверу без каких-либо дополнительных приложений, но возникает проблема, когда игроки WAN и LAN пытаются играть вместе. Starcraft жутко начинает лагать. Описание и решение данной проблемы можно найти по ссылке, которую я указал в полезных ссылках. С Warcraft 3 немного веселее - для того, чтобы он работал с данным сервером необходим загрузчик, который я так же прикрепил к статье. Он подходит для версий игры 1.22 и выше, я проверял его на версии 1.26.
Пару слов про создание первого администратора в PvPGN: после создания учетной записи на сервере, нужно подключиться к базе данных и в таблице pvpgn_bnet у нужного пользователя в колонке auth_admin установить значение в true.
- # cd /usr/ports/games/pvpgn
- # make install clean
- MYSQL - поддержка хранения данных о пользователях в MySQL.
- PGSQL - поддержка хранения данных о пользователях в PostgreSQL.
- SQLITE3 - поддержка хранения данных о пользователях в SQLite3.
- D2 - собрать сервер для Diablo 2.
- ##############################################################################
- # bnetd.conf - главный конфигурационный файл #
- #----------------------------------------------------------------------------#
- # #
- # ####################### Обязательно прочтите это ######################### #
- # Данный файл содержит стандартную конфигурацию сервера, которая может #
- # использоваться без модификаций для большинства PvPGN установок, но #
- # возможно вам потребуется сделать некоторые изменения согласно вашим #
- # потребностям. Пустые строки и все, что начинается с символа "#" #
- # игнорируется. Заключайте значения для параметров в кавычки, если они #
- # содержат пробелы. #
- # #
- ##############################################################################
- ##############################################################################
- # Пользователь и группа, под которыми будет работать сервер. #
- # Можно использовать имена или числовые идентификаторы (начинающиеся с '#'). #
- # Если ничего не указано, то сервер работает от пользователя, который его #
- # запустил. #
- #----------------------------------------------------------------------------#
- # Примечание. Пользователь и группа bnetd создается при установке порта.
- effective_user = bnetd
- effective_group = bnetd
- # effective_user = #12
- # effective_group = #20
- # #
- ##############################################################################
- ##############################################################################
- # Настройки хранилища #
- # storage_path говорит pvpgn как и откуда/куда читать/писать информацию о #
- # пользователях. Доступна 2 драйвера: file и sql #
- # #
- # Формат: #
- # * Для простого (plain) драйвера file: #
- # storage_path = file:mode=plain;dir=<path_to_user_files>;clan=<path_to_clan_files>;default=/path/to/default/account #
- # * Для cdb драйвера file: #
- # storage_path = file:mode=cdb;dir=<path_to_cdb_files>;clan=<path_to_clan_files>;default=/path/to/default/account #
- # * Для драйвера sql/sql2: #
- # storage_path = sql:variable=value;...;default=0 (0 is the default uid) #
- # or storage_path = sql2:variable=value;...;default=0 (0 is the default uid) #
- # #
- # Доступные параметры для sql/sql2: #
- # - "mode" : какая БД будет использоваться (mysql/pgsql/etc..) #
- # - "host" : хост, на котором работает БД #
- # - "port" : порт #
- # - "socket" : путь до UNIX сокета #
- # - "name" : имя базы данных #
- # - "user" : пользователь #
- # - "pass" : пароль #
- # - "default" : UID используемый по умолчанию #
- # - "prefix" : префикс для имен таблиц (по умолчанию "") #
- # #
- # Примеры: #
- # storage_path = file:mode=plain;dir=/usr/local/share/pvpgn/users;clan=/usr/local/share/pvpgn/clans;team=/usr/local/share/pvpgn/teams;default=/usr/local/etc/pvpgn/bnetd_default_user.plain
- # storage_path = file:mode=cdb;dir=/usr/local/share/pvpgn/userscdb;clan=/usr/local/share/pvpgn/clans;team=/usr/local/share/pvpgn/teams;default=/usr/local/etc/pvpgn/bnetd_default_user.cdb
- # storage_path = sql:mode=mysql;host=127.0.0.1;name=PVPGN;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn_
- # storage_path = sql:mode=pgsql;host=127.0.0.1;name=pvpgn;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn_
- # storage_path = sql:mode=sqlite3;name=/usr/local/share/pvpgn/users.db;default=0;prefix=pvpgn_
- # storage_path = sql:mode=odbc;name=PVPGN;prefix=pvpgn_
- # #
- # Внимание!! вы должны изменить ниже параметр "DBlayoutfile" на #
- # sql_DB_layout2.conf, если используете драйвер "sql2" !!! #
- # storage_path = sql2:mode=mysql;host=127.0.0.1;name=PVPGN;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn2_
- # storage_path = sql2:mode=pgsql;host=127.0.0.1;name=pvpgn;user=pvpgn;pass=pvpgnrocks;default=0;prefix=pvpgn2_
- # storage_path = sql2:mode=sqlite3;name=/usr/local/share/pvpgn/users.db;default=0;prefix=pvpgn2_
- # storage_path = sql2:mode=odbc;name=PVPGN;prefix=pvpgn2_
- #----------------------------------------------------------------------------#
- storage_path = sql:mode=pgsql;host=192.168.7.253;name=dbname;user=user;pass=pass;default=0;prefix=pvpgn_
- # #
- ##############################################################################
- ##############################################################################
- # Секция, описывающее расположение служебных файлов #
- # Параметр pidfile может быть установлен в "". #
- # Используйте полные пути, чтобы избежать проблем! #
- #----------------------------------------------------------------------------#
- filedir = /usr/local/share/pvpgn/files
- reportdir = /usr/local/share/pvpgn/reports
- chanlogdir = /usr/local/share/pvpgn/chanlogs
- motdfile = /usr/local/etc/pvpgn/bnmotd.txt
- issuefile = /usr/local/etc/pvpgn/bnissue.txt
- channelfile = /usr/local/etc/pvpgn/channel.conf
- newsfile = /usr/local/etc/pvpgn/news.txt
- adfile = /usr/local/etc/pvpgn/ad.conf
- topicfile = /usr/local/etc/pvpgn/topics.conf
- ipbanfile = /usr/local/etc/pvpgn/bnban.conf
- helpfile = /usr/local/etc/pvpgn/bnhelp.conf
- mpqfile = /usr/local/etc/pvpgn/autoupdate.conf
- logfile = /var/log/pvpgn/bnetd.log
- realmfile = /usr/local/etc/pvpgn/realm.conf
- maildir = /usr/local/share/pvpgn/bnmail
- versioncheck_file = /usr/local/etc/pvpgn/versioncheck.conf
- mapsfile = /usr/local/etc/pvpgn/bnmaps.conf
- xplevelfile = /usr/local/etc/pvpgn/bnxplevel.conf
- xpcalcfile = /usr/local/etc/pvpgn/bnxpcalc.conf
- pidfile = /var/run/pvpgn/bnetd.pid
- ladderdir = /usr/local/share/pvpgn/ladders
- command_groups_file = /usr/local/etc/pvpgn/command_groups.conf
- tournament_file = /usr/local/etc/pvpgn/tournament.conf
- statusdir = /usr/local/share/pvpgn/status
- aliasfile = /usr/local/etc/pvpgn/bnalias.conf
- anongame_infos_file = /usr/local/etc/pvpgn/anongame_infos.conf
- DBlayoutfile = /usr/local/etc/pvpgn/sql_DB_layout.conf
- supportfile = /usr/local/etc/pvpgn/supportfile.conf
- transfile = /usr/local/etc/pvpgn/address_translation.conf
- fortunecmd = /usr/games/fortune
- # #
- ##############################################################################
- ##############################################################################
- # Логи #
- #----------------------------------------------------------------------------#
- # Может быть определено несколько уровней логирования. Каждый уровень
- # отделяется запятой. Доступные уровни логирования:
- # none
- # trace
- # debug
- # info
- # warn
- # error
- # fatal
- loglevels = fatal,error,warn
- #loglevels = fatal,error,warn,info
- # #
- ##############################################################################
- ##############################################################################
- # Параметры сервера D2CS #
- #----------------------------------------------------------------------------#
- # Версия этого сервера D2CS (установите в 0, чтобы отключить проверку версий)
- d2cs_version = 0
- # Разрешить серверу D2CS зменять имена realm?
- allow_d2cs_setname = true
- # #
- ##############################################################################
- ##############################################################################
- # Загружаемые файлы #
- #----------------------------------------------------------------------------#
- # Об этих именах файлов сообщается непосредственно клиенту и они должны быть
- # указаны относительно директории "filedir".
- iconfile = "icons.bni"
- war3_iconfile = "icons-WAR3.bni"
- star_iconfile = "icons_STAR.bni"
- tosfile = "tos.txt"
- # #
- ##############################################################################
- ##############################################################################
- # Проверка клиента и обновлений #
- #----------------------------------------------------------------------------#
- # Это список типов клиентов, которым разрешено подключаться к серверу.
- # Список должен быть разделен запятой.
- # all : all client types allowed (default)
- # chat : client type "CHAT" allowed (used by some bot software)
- # dshr : client type Diablo 1 Shareware
- # drtl : client type Diablo 1 (Retail)
- # sshr : client type Starcraft Shareware
- # star : client type Starcraft
- # sexp : client type Starcraft Broodwar
- # w2bn : client type Warcraft II Battle.Net Edition
- # d2dv : client type Diablo 2
- # d2xp : client type Diablo 2 LOD
- # war3 : client type Warcraft III (Reign Of Chaos)
- # w3xp : client type Warcraft III Frozen Throne
- #
- # Пример: allowed_clients = war3,w3xp
- allowed_clients = all
- # Если эта опция включена, то этап проверки версии клиента будет пропущен.
- # Работает только с клиентами < 109. Это может оказаться полезным, потому что
- # в этом случае вам больше не понадобятся файлы IX86AUTH?.MPQ и PMACAUTH?.MPQ.
- # Учтите, что отключение данной функции повлечет за собой отключение
- # функции автоматического обновления.
- #
- # Если вы выключите данный параметр, то вы должны иметь один или несколько
- # MPQ файлов. Иначе клиенты будут зависать при первом подключении, потому что
- # будут пытаться загрузить эти файлы. Проверка версий может быть отключена
- # только для клиентов с версией ниже 109. Начиная с версии 109 клиенты всегда
- # делают проверку версий, так как они не функционируют должным образом, если
- # сервер не запрашивает ее.
- skip_versioncheck = false
- # Если вы включили проверку версий, но хотите чтобы клиенты не прошедшие ее
- # могли подключиться, то включите данный параметр.
- allow_bad_version = false
- # Если вы включили проверку версий, но хотите позволить клиентам
- # не присутствующим в параметре versioncheck подключаться к серверу,
- # то включите этот параметр. Если вы не имеете полного файла (прим. о каком
- # идет речь не понятно) или вас не беспокоят читеры, то это хорошая идея
- # (включить параметр).
- allow_unknown_version = true
- # Здесь определяется как проверять поле exeinfo в файле versioncheck.
- # Вы можете выбрать между: no match at all [none] (default),
- # exact match [exact], exact case-sensitive match [exactcase], dumb wildcard
- # match [wildcard], and parsed value comparison [parse].
- # Учтите: [parse] требует функцию mktime(), которая может быть не в каждой
- # системе.
- version_exeinfo_match = none
- # Если выше вы выбрали [parse], то это допуск, на который время может различаться.
- # Время указывается в секундах. Если 0, то данная функция выключена.
- version_exeinfo_maxdiff = 0
- # #
- ##############################################################################
- ##############################################################################
- # Временные параметры #
- #----------------------------------------------------------------------------#
- # Время в секундах между синхронизациями с БД учеток пользователей, 0 - ждать вечно.
- usersync = 300
- # Number of seconds of inactivity before file is unloaded from memory.
- # (only checked during account file updates)
- userflush = 1200
- # Number of users checked for updates at once. Higher values make sense if you
- # either have very fast hardware or you don't have many number of accounts.
- # Lower values make sense if you have very high CPU usage on the system you run
- # the server (dont make it too low or your system will save accounts continously).
- # Modify this value ONLY if you know what you are doing!!
- userstep = 100
- # Как часто проверять задержки канала до клиента (секунды).
- latency = 600
- # Как часто проверять жив ли клиент (секунды).
- nullmsg = 120
- # Amount of time to delay shutting down server in seconds.
- shutdown_delay = 300
- # Amount of time delay period is decremented by either a SIGTERM or SIGINT
- # (control-c) signal in seconds.
- shutdown_decr = 60
- # Как часто проверять забаненых пользователей на предмет окончания этого самого бана (секунды).
- #ipban_check_int = 30
- # #
- ##############################################################################
- ##############################################################################
- # Настройки политик #
- #----------------------------------------------------------------------------#
- # Если вы не хотите разрешать людям создавать учетки на вашем сервере, то
- # установите этот параметр в false.
- new_accounts = true
- # Максимальное количество учеток, которое возможно создать на этом сервере.
- # По умолчанию 0, что значит - без ограничений.
- max_accounts = 0
- # Запретит вход на сервер под одной учеткой несколько раз одновременно.
- kick_old_login = true
- #kick_old_login = false
- # With no passwords, this is bad to have enabled --NonReal
- # Параметр load_new_account упразднен, его функционал всегда включен в PvPGN
- # Если пользователь создает новый канал, то добавлять его автоматом или спросить
- # их начала (кого их, х/з).
- ask_new_channel = true
- # Should a game report be written for every game played or just ladder
- # games?
- #report_all_games = false
- report_all_games = true
- # Should Diablo I/II reports be written? There are no winners/losers.
- report_diablo_games = false
- # Скрывать ли запароленные игры в списке игр?
- hide_pass_games = true
- # Скрывать ли уже запущенные игры в списке игр? (полезно для очень загруженных серверов)
- hide_started_games = true
- # Скрывать ли не основные каналы в списке каналов?
- hide_temp_channels = true
- # Разрешить расширенные команды /-commands? (of course!)
- extra_commands = true
- # Считать отключение от игры за поражение?
- # (Turning this on will override the user's choice in ladder games!)
- disc_is_loss = false
- # List additional game types to be counted as ladder games
- # Curently allowed types: topvbot, melee, ffa, oneonone
- # Example: ladder_games = "topvbot,oneonone"
- ladder_games = "topvbot,melee,ffa,oneonone"
- # If additional game types are configured (see above) to be counted as ladder
- # games then this setting configures a game name prefix to make only games
- # which match this game name prefix be counted as ladder. This allows to
- # still have normal games of the game types configured with "ladder_games"
- # directive. However if this setting is commented or "" then ALL games
- # which match the game types configured with "ladder_games" are to be
- # considered as ladder games. The prefix checking is CASE SENSITIVE!
- # Example: ladder_prefix = "ldr_"
- ladder_prefix = ""
- # Разрешить всем пользователям использовать команды /con и /connections?
- enable_conn_all = true
- # Скрыть IP адрес от обычных пользователей (from /con, /games, /gameinfo, /netinfo)
- hide_addr = false
- # Писать в файлы в chanlogdir сообщения в закрытых каналах.
- # (see channels.list for public channels)
- chanlog = false
- # Использовать квоту для каналов?
- quota = yes
- # Следующие параметры предназначены для ограничения посылаемых сообщений.
- #
- # Как много строк принимать за время quota_time (секунды)?
- # (The default should allow 5 lines in 5 seconds,
- # longer time periods allow "bursts" of traffic before the quota is full.)
- quota_lines = 5 # must be between 1 and 100 lines
- quota_time = 5 # must be between 1 and 60 seconds
- # "virtual wrapping", so long lines count as multiple lines
- quota_wrapline = 40 # must be between 1 to 256 chars
- # absolute maximum characters allowed in a line
- quota_maxline = 200 # must be between 1 to 256 chars
- #
- # How many lines do you accept in quota_time seconds before user is
- # disconnected?
- # (According to Jung-woo, Dobae is a Korean term for flooding the game server...
- # it originally meant "to paint the wallpaper on a new or refurbished house").
- # If it less than or equal to quota_lines, there is no warning before
- # disconnection so don't set this too low.
- quota_dobae = 10 # must be between 1 and 100 lines
- # Mail support
- mail_support = true
- mail_quota = 5
- # Channel logging message
- log_notice = "*** Please note this channel is logged! ***"
- # Банить за превышение количества неудачных попыток входа.
- # Fails required to get ip banned (0 - выключить данную возможность)
- passfail_count = 5
- # Время бана в секундах
- passfail_bantime = 300
- # Максимальное количество пользователей в закрытом канале (0 - без ограничений)
- maxusers_per_channel = 0
- # #
- ##############################################################################
- ##############################################################################
- # Параметры учетных записей #
- #----------------------------------------------------------------------------#
- # Давать имена файлам (которые хранят данные о пользователе) в виде идентификатора или имени игрока?
- savebyname = true
- # Сохранять данные учетки при отключении
- sync_on_logoff = true
- # How man rows should the account lookup hash table have? Servers with
- # more accounts should use a larger table for better performance.
- hashtable_size = 61
- # Per default, only alphanumerical symbols are allowed in account names
- # with this variable you can add some extra symbols to be allowed
- # but be warned - that some of them might cause trouble - at least with
- # savebyname=true (some symbols are forbidden in filenames or might cause
- # you real trouble - plz neither allow wildcard symbols like '*' or '?'.
- # Path delimiters like '/' or '\' are hardcoded filtered and can't be allowed.
- # Also note that allowing the '.' might cause u some headache on win32 systems.
- # You have been warned - the rest is up to you.
- # default setting is "-_[]" as it was previous versions
- account_allowed_symbols = "-_[]"
- # This setting affects users that login with their uid rather than their
- # username. If set to true their displayed username will be forcefully
- # converted to their registered account name.
- account_force_username = false
- # Максимальное количество пльзователей в списке друзей.
- # default setting is 20
- max_friends = 20
- # #
- ##############################################################################
- ##############################################################################
- # Tracking server info #
- #----------------------------------------------------------------------------#
- # Set track=0 to disable tracking. Any other number will set number
- # of seconds between sending tracking packets. This is OFF by default.
- #track = 0
- track = 60
- # 10 minutes
- # Tracking server(s)
- # Use a comma delimited list of hostnames with optional UDP port numbers
- # after colons. (port 6114 is the default for the newer tracking protocol)
- #trackaddrs = "track.bnetd.org,localhost:9999"
- #trackaddrs = "track.pvpgn.org"
- # Change these to match your system, for example:
- location = "Russia"
- description = "Rock"
- url = "http://www.info-x.org"
- contact_name = "Nekit"
- contact_email = "admin@info-x.org"
- # #
- ##############################################################################
- ##############################################################################
- # Server network info #
- #----------------------------------------------------------------------------#
- # Имя сервера (По умолчанию: "PvPGN Realm")
- #servername = "PvPGN Realm"
- # Максимальное количество подключений к серверу (минимум 32).
- max_connections = 100
- # Максимальное количество одновременных попыток войти на сервер (0 - без ограничений).
- max_concurrent_logins = 0
- # Разрешить TCP посылать keepalive.
- use_keepalive = true
- # Максимальное количество подключений с одного IP (0 - без ограничений)
- max_conns_per_IP = 0
- # This is a comma delimited list of hostnames that the server should
- # listen on. It might be useful to make an internal-only server on a
- # gateway machine for example. If the list is not set or if it has a
- # entry with no host component, the server will bind to that port on all
- # interfaces.
- #servaddrs = ":9999"
- #servaddrs = "myinternalname.some.com,localhost"
- servaddrs = ":" # default interface (all) and default port (6112)
- # Don't change these unless you really need to! You will need to run a proxy
- # or modify the clients. Also note that these will not change when simply
- # sending a HUP signal to the server; they are only read on startup.
- # This is the port the server send the UDP test packets to by default.
- # Setting it to zero makes the server use the same port as the TCP connection
- # comes from. Newer clients can override this setting on a per connection
- # basis.
- #udptest_port = 6112
- # W3 Play Game router address. Just put your server address in here
- # or use 0.0.0.0:6200 for server to bind to all interfaces,
- # but make sure you set up w3trans if you do.
- w3routeaddr = "0.0.0.0:6200"
- # w3routeshow has been removed.
- # see the address_translation.conf for translating the w3route ip for local networks
- # initkill_timer sets up a periodic timer on init/defer class connections
- # this should detect and clean up stale connections to your server
- initkill_timer = 120
- # #
- ##############################################################################
- ##############################################################################
- # Westwood Online (WOL) configuration #
- #----------------------------------------------------------------------------#
- # NOTE: WOL support is still experimental!
- # This specifies the addresses where IRC connections should be accepted. See
- # the description of servaddrs for formatting information. Leave this field
- # blank if you do not want to accept IRC connections. If the port is not
- # specifed then 4005 will be used. Note: DO NOT SET THE PORT TO ANYTHING OTHER
- # THEN 4005, WOL WILL FAIL IF YOU DO!
- #woladdrs = ":4005"
- # Just leave these as default (unless you know the timezone, longitiude and latitude
- # of your server
- woltimezone = "-8"
- wollongitude = "36.1083"
- wollatitude = "-115.0582"
- # #
- ##############################################################################
- ##############################################################################
- # Настройки IRC #
- #----------------------------------------------------------------------------#
- # Учтите: поддержка IRC находится на стадии тестирования!
- # This specifies the addresses where IRC connections should be accepted. See
- # the description of servaddrs for formatting information. Leave this field
- # blank if you do not want to accept IRC connections. If the port is not
- # specified then 6667 will be used.
- #ircaddrs = ":6667"
- # This is the IRC network name. If this is not specified then the default of
- # "PvPGN" will be used.
- #irc_network_name = "PvPGN"
- # This is the hostname used for IRC connections. Set this to your
- # hostname, if the automatic detection doesn't correctly.
- #hostname = "none"
- # Set this to the desired IRC connection timeout in seconds.
- #irc_latency = 180
- # #
- ##############################################################################
- ##############################################################################
- # Настройки Telnet #
- #----------------------------------------------------------------------------#
- # This specifies the addresses where telnet connections should be accepted.
- # See the description of servaddrs for formatting information. Leave this
- # field # blank if you do not want to accept telnet connections. If the port
- # is not specifed then 23 will be used.
- #telnetaddrs = ":23"
- telnetaddrs = ""
- ###############################################################################
- # war3 ladder textual output #
- #-----------------------------------------------------------------------------#
- # this is for all the guys, that want Warcraft 3 ladder, but don't want their
- # server to run with MySQL support.
- # For each ladder (solo, team, ffa, at) a corresponing file is created,
- # so it's easy to build your ladder pages with them
- # the following value determines, at which rate, these files are created
- # set to 0 if you don't want or need these files
- war3_ladder_update_secs = 300
- # jfro's latest ladder is based on XML... so we can switch to XML output of ladder
- # on demand
- XML_output_ladder = false
- ###############################################################################
- # server status textual output #
- #-----------------------------------------------------------------------------#
- # This is for writing status of the server in an attempt to see number of user
- # on line actually, and games/chans.
- # This is store in file var\status\warcraft3.dat as a *.ini format.
- # Shouldn't be so hard in php to create dynamic website using this content.
- # the following value determines, at which rate, these files are created
- # set to 0 if you don't want or need these files
- output_update_secs = 60
- # jfro's latest ladder is based on XML... so we can switch to XML output of ladder
- # on demand. Maybe we should set update interval bigger cause XML output version
- # is much more verbose than the standard output
- XML_status_output = false
- ###############################################################################
- # Параметры кланов #
- #-----------------------------------------------------------------------------#
- # Time in hours for a new member of clan to be a newer(Peon icon, cannot promote to Grunt)
- # default value 168(7 days). If set to 0, all new members could be promote in no time
- clan_newer_time = 0
- # max members count allowed in a clan, set between 10 and 100, default 50.
- clan_max_members = 50
- # Default clan channel status when create a clan, 1 for private, 0 for public
- clan_channel_default_private = 0
- # echo 'bnetd_enable="YES" >> /etc/rc.conf'
- # service bnetd start
- # sockstat -4 -l | grep bnet
- bnetd bnetd 15105 4 tcp4 *:6112 *:*
- bnetd bnetd 15105 5 udp4 *:6112 *:*
- bnetd bnetd 15105 6 tcp4 *:6200 *:*
Прикрепленные файлы
Редактор Battle.net серверов814.63 КБ
Загрузчик для Warcraft 347.09 КБ
Полезные ссылки
Обсуждение статьи
вс, 21/07/2013 - 14:47
вс, 21/07/2013 - 11:06
а почему когда пытаюсь создать клан он выдаёт кучу вариантов мнесто /clan create название клана сокарщённое название