Kruzya
Участник
- Сообщения
- 12,970
- Реакции
- 10,914
- Команда форума
- Автор ресурса
- #681
По просьбе двух товарищей, пишу этот пост.
Многие, наверное, видели эту темку: Общий онлайн в SourceBans
И моё решение из неё, тоже.
В моём посте из темы говорится, что он подходит к любому СБ. Так и было. До версии 1.1.5.
Начиная с 1.1.5, в SourceBans отсутствует класс CServerInfo, через который получается информация о сервере, а код добавления XAJAX функций был переработан, из-за чего первой же строки из первого пункта нет. В этом посте я решил переписать инструкцию под версии рефорка 1.1.5 и старше.
Ну что ж, поехали.
1. Открываем файл includes/sb-callback.php и находим строчку:
Заменяем на:
2. Ищем строку в этом же файле:
Перед ней добавляем:
Все остальные шаги, начиная с третьего, полностью идентичны из оригинального сообщения.
Многие, наверное, видели эту темку: Общий онлайн в SourceBans
И моё решение из неё, тоже.
В моём посте из темы говорится, что он подходит к любому СБ. Так и было. До версии 1.1.5.
Начиная с 1.1.5, в SourceBans отсутствует класс CServerInfo, через который получается информация о сервере, а код добавления XAJAX функций был переработан, из-за чего первой же строки из первого пункта нет. В этом посте я решил переписать инструкцию под версии рефорка 1.1.5 и старше.
Ну что ж, поехали.
1. Открываем файл includes/sb-callback.php и находим строчку:
PHP:
$methods = array('admin' => array('AddMod', 'RemoveMod', 'AddGroup', 'RemoveGroup', 'RemoveAdmin', 'RemoveSubmission', 'RemoveServer', 'UpdageGroupPermissions', 'UpdateAdminPermissions', 'AddAdmin', 'SetupEditServer', 'AddServerGroupName', 'AddServer', 'AddBan', 'RehashAdmins', 'EditGroup', 'RemoveProtest', 'SendRcon', 'EditAdminPerms', 'AddComment', 'EditComment', 'RemoveComment', 'PrepareReban', 'Maintenance', 'KickPlayer', 'GroupBan', 'BanMemberOfGroup', 'GetGroups', 'BanFriends', 'SendMessage', 'ViewCommunityProfile', 'SetupBan', 'CheckPassword', 'ChangePassword', 'CheckSrvPassword', 'ChangeSrvPassword', 'ChangeEmail', 'CheckVersion', 'SendMail', 'AddBlock', 'PrepareReblock', 'PrepareBlockFromBan', 'removeExpiredAdmins', 'AddSupport', 'ChangeAdminsInfos', 'InstallMOD', 'UpdateGroupPermissions', 'PastePlayerData', 'AddWarning', 'RemoveWarning'), 'default' => array('Plogin', 'ServerHostPlayers', 'ServerHostProperty', 'ServerHostPlayers_list', 'ServerPlayers', 'LostPassword', 'RefreshServer', 'AddAdmin_pay', 'RehashAdmins_pay'));
Заменяем на:
PHP:
$methods = array('admin' => array('AddMod', 'RemoveMod', 'AddGroup', 'RemoveGroup', 'RemoveAdmin', 'RemoveSubmission', 'RemoveServer', 'UpdageGroupPermissions', 'UpdateAdminPermissions', 'AddAdmin', 'SetupEditServer', 'AddServerGroupName', 'AddServer', 'AddBan', 'RehashAdmins', 'EditGroup', 'RemoveProtest', 'SendRcon', 'EditAdminPerms', 'AddComment', 'EditComment', 'RemoveComment', 'PrepareReban', 'Maintenance', 'KickPlayer', 'GroupBan', 'BanMemberOfGroup', 'GetGroups', 'BanFriends', 'SendMessage', 'ViewCommunityProfile', 'SetupBan', 'CheckPassword', 'ChangePassword', 'CheckSrvPassword', 'ChangeSrvPassword', 'ChangeEmail', 'CheckVersion', 'SendMail', 'AddBlock', 'PrepareReblock', 'PrepareBlockFromBan', 'removeExpiredAdmins', 'AddSupport', 'ChangeAdminsInfos', 'InstallMOD', 'UpdateGroupPermissions', 'PastePlayerData', 'AddWarning', 'RemoveWarning'), 'default' => array('Plogin', 'ServerHostPlayers', 'ServerHostProperty', 'ServerHostPlayers_list', 'ServerPlayers', 'LostPassword', 'RefreshServer', 'AddAdmin_pay', 'RehashAdmins_pay', 'SumOnline'));
2. Ищем строку в этом же файле:
PHP:
function RehashAdmins_pay($server, $do=0, $card)
Перед ней добавляем:
PHP:
function SumOnline($obIdCurrPlayers, $obIdMaxPlayers, $obPropCurrPlayers, $obPropMaxPlayers) {
require INCLUDES_PATH.'/CServerControl.php';
$objResponse = new xajaxResponse();
$playersMax = 0;
$playersOnline = 0;
$srvSock = new CServerControl();
$servers = $GLOBALS['db']->GetAll(sprintf("SELECT ip, port FROM %s_servers", DB_PREFIX));
foreach ($servers as $server) {
if (!$srvSock->Connect($server["ip"], $server["port"]))
continue;
$srvInfo = $srvSock->GetInfo();
if (!$srvInfo)
continue;
$playersMax += $srvInfo['MaxPlayers'];
$playersOnline += $srvInfo['Players'];
}
$objResponse->addAssign($obIdCurrPlayers, $obPropCurrPlayers, $playersOnline);
$objResponse->addAssign($obIdMaxPlayers, $obPropMaxPlayers, $playersMax);
return $objResponse;
}
Оффтоп
Начиная с версии 1.1.6, будет так же изменён фреймворк для работы с БД. ADOdb, который сейчас используется, будет полностью вырезан, и вместо него будет использоваться PDO. Из-за чего надо будет изменить одну строку.
Заменить на это:
Заметка на будущее, да.
Начиная с версии 1.1.6, будет так же изменён фреймворк для работы с БД. ADOdb, который сейчас используется, будет полностью вырезан, и вместо него будет использоваться PDO. Из-за чего надо будет изменить одну строку.
PHP:
$servers = $GLOBALS['db']->GetAll(sprintf("SELECT ip, port FROM %s_servers", DB_PREFIX));
PHP:
$servers_q = $GLOBALS['db']->query(sprintf("SELECT ip, port FROM %s_servers", DB_PREFIX));
$servers = array();
while ($row = $servers_q->fetch(PDO::FETCH_LAZY)) {
$servers[] = $row;
}
Последнее редактирование: