Спросили меня не так давно - есть ли возможность поднять свой 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.
cd /usr/ports/games/pvpgn
make install clean
При сборке порта доступны следующие параметры:
- MYSQL - поддержка хранения данных о пользователях в MySQL.
- PGSQL - поддержка хранения данных о пользователях в PostgreSQL.
- SQLITE3 - поддержка хранения данных о пользователях в SQLite3.
- D2 - собрать сервер для Diablo 2.
Хранить все в базе данных гораздо удобнее, чем хранить все в фалах. На сервере уже стоит СУБД PostgreSQL, поэтому я поставил галочку напротив опции - PGSQL. Остальные опции убрал.
После установки в директории /usr/local/etc появится директория pvpgn. В ней будут находиться стандартные конфигурационные файлы с именами вида *-sample. Все эти файлы необходимо переименовать (или скопировать) к виду без -sample. Уже сейчас можно запускать сервер и пробовать подключаться к нему, но есть опции, которые полезно будет посмотреть и возможно изменить. Да и к тому же надо настроить работу с PostgreSQL, ибо в стандартной конфигурации сервер все хранит в файлах. Так же не забываем создать базу данных и пользователя для PvPGN, если вы используете СУБД. Вот так выглядит главный конфигурационный файл /usr/local/etc/pvpgn/bnetd.conf у меня:
##############################################################################
# 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
После настройки помещаем демон bnetd в автозагрузку и запускаем его:
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 *:*
На данном этапе настройка сервера PvPGN завершена. Осталось на стороне клиентов прописать адрес данного Battle.net сервера. Для этого есть специальные программы, которые облегчают данный процесс. Парочку таких я прикрипил к статье. Теперь о проблемах, которые возникли в процессе эксплуатации данного сервера. Starcraft подключается к серверу без каких-либо дополнительных приложений, но возникает проблема, когда игроки WAN и LAN пытаются играть вместе. Starcraft жутко начинает лагать. Описание и решение данной проблемы можно найти по ссылке, которую я указал в полезных ссылках. С Warcraft 3 немного веселее - для того, чтобы он работал с данным сервером необходим загрузчик, который я так же прикрепил к статье. Он подходит для версий игры 1.22 и выше, я проверял его на версии 1.26.
Пару слов про создание первого администратора в PvPGN: после создания учетной записи на сервере, нужно подключиться к базе данных и в таблице pvpgn_bnet у нужного пользователя в колонке auth_admin установить значение в true.
вс, 21/07/2013 - 11:06
а почему когда пытаюсь создать клан он выдаёт кучу вариантов мнесто /clan create название клана сокарщённое название
вс, 21/07/2013 - 14:47
Это у разработчиков нужно узнавать.
Добавить комментарий