Недавно с друзьями вспомнили о такой замечательной игре как BF2 мод AIX2, решили побегать, вспомнить молодость. Но просто обычных сражений оказалось недостаточно, решили поднять статистику с рангами, анлоками и прочими фитчами, ну и тут как обычно не обошлось без подводных камней. Всего у меня имеется несколько проблем и просто вопросов, в которых очень надеюсь на вашу помощь.
И так, общая конфигурация сервера:
- DSL Роутер с статик ip + сеть в несколько компов (все необходимые порты для сервера bf2 проброшены)
- Заранее установленный и настроенный MySQL, Apache, PHP, Perl
- WEB-морда вытянутая из AIXовского BF2PCC установленная в localhost апача
- Папка python/bf2 также взята из AIXа
- Внутренности некоторых файлов:
Файл hosts.ics
127.0.0.1 BF2web.gamespy.com
Файл BF2StatisticsConfig.py
Код
# ------------------------------------------------------------------------------
# BF2Statistics 1.4 - Config File
# ------------------------------------------------------------------------------
# Conventions:
# 0 -> Disable
# 1 -> Enable
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Debug Logging
# ------------------------------------------------------------------------------
debug_enable = 0
debug_log_path = 'python/bf2/logs' # Relative from BF2 base folder
debug_fraglog_enable = 0 # Detailed 'Fragalyzer' Logs
# ------------------------------------------------------------------------------
# Backend Web Server
# ------------------------------------------------------------------------------
http_backend_addr = '127.0.0.1'
http_backend_port = 80
http_backend_asp = 'http://127.0.0.1/ASP/bf2statistics.php'
# ------------------------------------------------------------------------------
# Snapshot Manager
# ------------------------------------------------------------------------------
snapshot_prefix = 'mod:serverip:Servername' # Prefix Snapshots with this tag example 'AIX:207.52.255.35:Blackcats'
# ------------------------------------------------------------------------------
# Medals Processing
# ------------------------------------------------------------------------------
medals_custom_data = '' # Suffix for your custom medals file(s)
# ------------------------------------------------------------------------------
# Player Manager
# ------------------------------------------------------------------------------
pm_backend_pid_manager = 1
pm_local_pid_txt_file = 'python/bf2/pid.txt' # Relative from BF2 base folder
pm_ai_player_addr = '127.0.0.1' # Not recommended to change
# ------------------------------------------------------------------------------
# Clan Manager
# ------------------------------------------------------------------------------
enableClanManager = 0 # Use the Clan Manager to control Access to your server!
serverMode = 0
# Mode 1: Clan ONLY (Must be on Clan List to Join Server)
# Mode 2: Priority Proving Grounds (Clan Members AND those players that meet
# the minimum requirements.Clan Members get priority)
# Mode 3: Proving Grounds (Clan Members AND those players that meet the
# minimum requirements)
# Mode 4: Experts ONLY (Only players that meet the minimum requirements)
# Mode 0: Public (Free-for-All. No Restrictions!)
# Clan Manager Criteria
criteria_data = (
('clantag', ''), # Clan Tag (Matches First Part of Player Name, used for Whitelist)
('score', 0), # Minimum Global Score
('rank', 0), # Minimum Global Rank
('time', 0), # Minimum Global Time Played
('kdratio', 0), # Minimum Global Kill/Death Ratio
('country', ''), # Registered Country of Origin Code (Seperate multiple by comma ',')
('banned', 10), # Maximum banned count! PermBan is ALWAY BlackListed
)
# ------------------------------------------------------------------------------
# Backup Central Community Web Server (OPTIONAL)
# ------------------------------------------------------------------------------
http_central_enable = 0 # Use settings above (0, 1, 2)
http_central_addr = 'cbd.xxx.aaa' #Address Central STATS Server
http_central_port = 80
http_central_asp = 'http://127.0.0.1/ASP/bf2statistics.php'
# Note: this cabalility is for linking stats data to a centrally maintained STATS #
# server. This could be useful for those who are running a LAN or Tournament #
# (with local STATS), but wish to have this data credited to their normal STATS #
# DB. There are three (3) options for the central DB update: #
# 0: Disabled - 'nuff said! #
# 1: Sync - This simply copies the SNAPSHOT as-is to the central DB #
# 2: Minimal - Record everything, except Rank & Award data (typically use #
# for LANs or Tournaments where local db starts blank) #
# ------------------------------------------------------------------------------
# END CONFIGURATION
# ------------------------------------------------------------------------------
# BF2Statistics 1.4 - Config File
# ------------------------------------------------------------------------------
# Conventions:
# 0 -> Disable
# 1 -> Enable
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# Debug Logging
# ------------------------------------------------------------------------------
debug_enable = 0
debug_log_path = 'python/bf2/logs' # Relative from BF2 base folder
debug_fraglog_enable = 0 # Detailed 'Fragalyzer' Logs
# ------------------------------------------------------------------------------
# Backend Web Server
# ------------------------------------------------------------------------------
http_backend_addr = '127.0.0.1'
http_backend_port = 80
http_backend_asp = 'http://127.0.0.1/ASP/bf2statistics.php'
# ------------------------------------------------------------------------------
# Snapshot Manager
# ------------------------------------------------------------------------------
snapshot_prefix = 'mod:serverip:Servername' # Prefix Snapshots with this tag example 'AIX:207.52.255.35:Blackcats'
# ------------------------------------------------------------------------------
# Medals Processing
# ------------------------------------------------------------------------------
medals_custom_data = '' # Suffix for your custom medals file(s)
# ------------------------------------------------------------------------------
# Player Manager
# ------------------------------------------------------------------------------
pm_backend_pid_manager = 1
pm_local_pid_txt_file = 'python/bf2/pid.txt' # Relative from BF2 base folder
pm_ai_player_addr = '127.0.0.1' # Not recommended to change
# ------------------------------------------------------------------------------
# Clan Manager
# ------------------------------------------------------------------------------
enableClanManager = 0 # Use the Clan Manager to control Access to your server!
serverMode = 0
# Mode 1: Clan ONLY (Must be on Clan List to Join Server)
# Mode 2: Priority Proving Grounds (Clan Members AND those players that meet
# the minimum requirements.Clan Members get priority)
# Mode 3: Proving Grounds (Clan Members AND those players that meet the
# minimum requirements)
# Mode 4: Experts ONLY (Only players that meet the minimum requirements)
# Mode 0: Public (Free-for-All. No Restrictions!)
# Clan Manager Criteria
criteria_data = (
('clantag', ''), # Clan Tag (Matches First Part of Player Name, used for Whitelist)
('score', 0), # Minimum Global Score
('rank', 0), # Minimum Global Rank
('time', 0), # Minimum Global Time Played
('kdratio', 0), # Minimum Global Kill/Death Ratio
('country', ''), # Registered Country of Origin Code (Seperate multiple by comma ',')
('banned', 10), # Maximum banned count! PermBan is ALWAY BlackListed
)
# ------------------------------------------------------------------------------
# Backup Central Community Web Server (OPTIONAL)
# ------------------------------------------------------------------------------
http_central_enable = 0 # Use settings above (0, 1, 2)
http_central_addr = 'cbd.xxx.aaa' #Address Central STATS Server
http_central_port = 80
http_central_asp = 'http://127.0.0.1/ASP/bf2statistics.php'
# Note: this cabalility is for linking stats data to a centrally maintained STATS #
# server. This could be useful for those who are running a LAN or Tournament #
# (with local STATS), but wish to have this data credited to their normal STATS #
# DB. There are three (3) options for the central DB update: #
# 0: Disabled - 'nuff said! #
# 1: Sync - This simply copies the SNAPSHOT as-is to the central DB #
# 2: Minimal - Record everything, except Rank & Award data (typically use #
# for LANs or Tournaments where local db starts blank) #
# ------------------------------------------------------------------------------
# END CONFIGURATION
# ------------------------------------------------------------------------------
Файлы /ASP/_config.php и /stats/_config.php одинаковые
Код
<?php
$db_expected_ver = '1.4.2';
$db_host = 'localhost';
$db_name = '**********';
$db_user = '**********';
$db_pass = '**********';
$admin_user = '**********';
$admin_pass = **********;
$admin_hosts = array('127.0.0.1','127.0.0.1/24');
$admin_log = 'logs/_admin_event.log';
$admin_backup_path = 'E:/www/localhost/htdocs/ASP/_backups/';
$admin_backup_ext = '.bak';
$admin_page_size = 25;
$admin_ignore_ai = 0;
$stats_ext = '.txt';
$stats_logs = 'logs/';
$stats_logs_store = 'logs/_processed/';
$stats_move_logs = 1;
$stats_min_game_time = 0;
$stats_min_player_game_time = 0;
$stats_players_min = 1;
$stats_players_max = 256;
$stats_rank_check = 1;
$stats_rank_tenure = 7;
$stats_awds_complete = 1;
$stats_lan_override = '127.0.0.1';
$stats_local_pids = array('LocalPlayer01','127.0.0.1','LocalPlayer02','127.0.0.1');
$debug_lvl = 1;
$debug_log = 'logs/_stats_errors.log';
$game_hosts = array('127.0.0.1','127.0.0.1/24');
$game_custom_mapid = 700;
$game_unlocks = 0;
$game_unlocks_bonus = 0;
$game_unlocks_bonus_min = 0;
$game_awds_ignore_time = 0;
$game_default_pid = 29000000;
?>
$db_expected_ver = '1.4.2';
$db_host = 'localhost';
$db_name = '**********';
$db_user = '**********';
$db_pass = '**********';
$admin_user = '**********';
$admin_pass = **********;
$admin_hosts = array('127.0.0.1','127.0.0.1/24');
$admin_log = 'logs/_admin_event.log';
$admin_backup_path = 'E:/www/localhost/htdocs/ASP/_backups/';
$admin_backup_ext = '.bak';
$admin_page_size = 25;
$admin_ignore_ai = 0;
$stats_ext = '.txt';
$stats_logs = 'logs/';
$stats_logs_store = 'logs/_processed/';
$stats_move_logs = 1;
$stats_min_game_time = 0;
$stats_min_player_game_time = 0;
$stats_players_min = 1;
$stats_players_max = 256;
$stats_rank_check = 1;
$stats_rank_tenure = 7;
$stats_awds_complete = 1;
$stats_lan_override = '127.0.0.1';
$stats_local_pids = array('LocalPlayer01','127.0.0.1','LocalPlayer02','127.0.0.1');
$debug_lvl = 1;
$debug_log = 'logs/_stats_errors.log';
$game_hosts = array('127.0.0.1','127.0.0.1/24');
$game_custom_mapid = 700;
$game_unlocks = 0;
$game_unlocks_bonus = 0;
$game_unlocks_bonus_min = 0;
$game_awds_ignore_time = 0;
$game_default_pid = 29000000;
?>
Файл snapshot.py
Скачать файл snapshot.py (для размещения в посте очень большой)
Данных строк в файле нет, но через BF2PCC все работает нормально, предполагаю проблема не в этом
Код
#HOST = 'localhost'
#PORT = 80
#PATH = '/ASP/bf2statistics.php'
#PORT = 80
#PATH = '/ASP/bf2statistics.php'
Основные проблемы и вопросы:
* Сервер статистики запущенный через BF2PCC нормально функционирует, ведется учет статистики, но саму статистику в BFHQ могу просматривать только я, остальные (прописывая в хосте редирект) видят пустую таблицу.
Диалог выбора анлока в игре появляются пустым окном без возможности выбора. При добавлении анлока вручную (используя Navicat) в игре он не появляется.
Также BF2PCC запускает отдельно свой MySQl и Apache, что не есть гуд.
* Все данные из db и web перенесены в локальный софт, в веб-интерфейсе все отображается нормально, в клиенте BFHQ даже локально пуст, во время игры идет учет очков, выдаются звания, медали, но данные не сохраняются, и при каждом новом раунде все начисляется заново.
Пытаюсь настроить работу хотя-бы на 127.0.0.1, но в будущем хотелось бы настроить для LAN и WAN.
* Возможно у кого есть какие размышления по поводу фикса работы миномета на патче 1.50, не просто отключить его выбор, а полностью вернуть функционал к работе.
* Также хотелось узнать, реально ли реализовать coop мод с динамическим добавлением/удалением ботов во время игры в зависимости от текущего онлайна. Допустим, максимум игроков 12, играет живых людей 7, весь остальной промежуток занимают Ai, заходит еще один человек, один бот освобождает ему место, человек выходит, бот занимает его место. Подскажите реально ли это реализовать, если да то как, или возможно такое уже есть, то откройте мне глаза на это.
Краткий список всех траблов
- БФ не сохраняет данные о полученых очках и званиях в БД
- БФ не читает данные из БД
- Работая через BF2PCC не работает меню выбора анлоков
- Также через BF2PCC силой добавленные анлоки в БД, все равно не выбераются в игре
- BFHQ не отображается у остальных игроков
- Фикс миномета
- Coop режим с динамическим количеством ботов
з.ы Возможно это и не помеха, но все же в конфигах не могу указывать свой внешний IP так как роутер не поддерживат перенаправление из LAN в WAN на себя (при попытке зайти на свой внешний IP из сети под роутером, заходит на web-интерфейс роутера вместо проброса на машину с сервером)
з.з.ы. Первоначально устанавливал статистику методом тыка, потом по мануалу с забугорного сайта, потом по местному FAQ, все начисто удалял и устанавливал, ничего не помогло.
з.з.з.ы. Буду очень признателен в помощи, а то все друзья очень хотят видеть рабочую статистику с анлоками под AIX2.