Help csbans1.3 не отображается сервер

Mmonster

Пользователь
Регистрация
9 Июн 2017
Сообщения
599
Симпатии
291
Предупреждения
15
Пол
Мужской
Reebok,
в папке protected/models поменяйте файл Serverinfo.php
Код:
<?php
/**
 * @author Craft-Soft Team
 * @package CS:Bans
 * @version 1.0 beta
 * @copyright (C)2013 Craft-Soft.ru.  Все права защищены.
 * @link http://craft-soft.ru/
 * @license http://creativecommons.org/licenses/by-nc-sa/4.0/deed.ru  «Attribution-NonCommercial-ShareAlike»
 */

/**
 * Модель для таблицы "{{serverinfo}}".
 *
 * Доступные поля таблицы '{{serverinfo}}':
 * @property integer $id ID сервера
 * @property integer $timestamp Дата
 * @property string $hostname Название сервера
 * @property string $address Адрес
 * @property string $gametype Тип игры
 * @property string $rcon RCON пароль
 * @property string $amxban_version Версия плагина
 * @property string $amxban_motd Ссылка на MOTD
 * @property integer $motd_delay Время показа MOTD
 * @property integer $amxban_menu Меню (?)
 * @property integer $reasons Причины
 * @property integer $timezone_fixx Разница во времени
 */
class Serverinfo extends CActiveRecord
{
    private $connect;
    public $players = null;
    public $playersmax = null;
    public $name = null;
    public $map = null;
    public $game = null;
    public $os = null;
    public $osimg = null;
    public $secure = null;
    public $playersinfo = array();
    public $online = null;
    public $modimg = null;
    public $vacimg = null;
    public $contact = null;
    public $nextmap = null;
    public $timeleft = null;
    public $mapimg = null;

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return '{{serverinfo}}';
    }

    public function scopes()
    {
        return array(
            'sort'=>array(
                'order'=>'`hostname` ASC'
            ),
        );
    }

    public function rules()
    {
        return array(
            array('motd_delay, amxban_menu, reasons, timezone_fixx', 'numerical', 'integerOnly'=>true),
            array('rcon', 'length', 'max'=>32),
            array('amxban_motd', 'length', 'max'=>250),
            array('id, timestamp, hostname, address, gametype, rcon, amxban_version, amxban_motd, motd_delay, amxban_menu, reasons, timezone_fixx', 'safe', 'on'=>'search'),
        );
    }

    public function relations()
    {
        return array();
    }

    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'timestamp' => 'Дата',
            'hostname' => 'Имя сервера',
            'address' => 'Адрес',
            'gametype' => 'Мод',
            'rcon' => 'Rcon',
            'amxban_version' => 'Версия',
            'amxban_motd' => 'MOTD',
            'motd_delay' => 'Задержка перед MOTD',
            'amxban_menu' => 'Меню Amxban',
            'reasons' => 'Группы причин банов',
            'timezone_fixx' => 'Разница во времени',
            'map' => 'Карта'
        );
    }

    public function search()
    {
        $criteria=new CDbCriteria;

        $criteria->compare('id',$this->id);
        $criteria->compare('timestamp',$this->timestamp);
        $criteria->compare('hostname',$this->hostname,true);
        $criteria->compare('address',$this->address,true);
        $criteria->compare('gametype',$this->gametype,true);
        $criteria->compare('rcon',$this->rcon,true);
        $criteria->compare('amxban_version',$this->amxban_version,true);
        $criteria->compare('amxban_motd',$this->amxban_motd,true);
        $criteria->compare('motd_delay',$this->motd_delay);
        $criteria->compare('amxban_menu',$this->amxban_menu);
        $criteria->compare('reasons',$this->reasons);
        $criteria->compare('timezone_fixx',$this->timezone_fixx);
        $criteria->order = '`hostname` ASC';
        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }


    public function getInfo() {
        $sip = explode(':',  $this->address);
        include_once ROOTPATH . '/include/lgsl_query.php';
        $server = query_live('halflife', $sip[0], $sip[1], $sip[1], '0', 'spet');

        $fields_show  = array("name", "score", "time");
        $fields_hide  = array("teamindex", "pid", "pbguid");
        $fields = lgsl_sort_fields($server, $fields_show, $fields_hide, FALSE);
        $server = lgsl_sort_players($server);
        $rules = array();
        $info['online'] = $server['b']['status'];

        if($info['online'])
        {
            $info['players'] = $server['s']['players'];
            $info['playersmax'] = $server['s']['playersmax'];
            $info['name'] = $server['s']['name'];
            $info['map'] = $server['s']['map'];
            $info['game'] = $server['s']['game'];
            $info['os'] = $server['e']['os'] == 'l' ? 'Linux' : 'Windows';
            $info['secure'] = $server['e']['anticheat'] == 0 ? FALSE : TRUE;
            $info['playersinfo'] = is_array($server['p']) ? $server['p'] : array();
            $info['timeleft'] = isset($server['e']['amx_timeleft'])?$server['e']['amx_timeleft']:false;
            $info['nextmap'] = isset($server['e']['amx_nextmap'])?$server['e']['amx_nextmap']:FALSE;
            $info['contact'] = isset($server['e']['sv_contact'])?$server['e']['sv_contact']:FALSE;
            $game = $this->gametype ? $this->gametype : $info['game'];
            $info['modimg'] = Yii::app()->urlManager->baseUrl .
                    DIRECTORY_SEPARATOR .
                    "images".
                    DIRECTORY_SEPARATOR .
                    "games" .
                    DIRECTORY_SEPARATOR .
                    $game .
                    ".gif";
            $info['vacimg'] = Yii::app()->urlManager->baseUrl .
                    DIRECTORY_SEPARATOR .
                    "images".
                    DIRECTORY_SEPARATOR .
                    ($info['secure'] ? "vac.png" : "no_vac.png");
            $info['osimg'] = Yii::app()->urlManager->baseUrl .
                    DIRECTORY_SEPARATOR .
                    "images".
                    DIRECTORY_SEPARATOR .
                    "os" .
                    DIRECTORY_SEPARATOR .
                    $info['os'].
                    ".png";

            if(!$info['online'])
            {
                $mapimage = Yii::app()->urlManager->baseUrl ."/images/maps/noresponse.jpg";
            }
            elseif(is_file(ROOTPATH ."/images/maps/" . $game . '/' . $info['map'] . ".jpg"))
            {
                $mapimage = Yii::app()->urlManager->baseUrl . "/images/maps/" . $game . '/' . $info['map'] . ".jpg";
            }
            else
            {
                $mapimage = Yii::app()->urlManager->baseUrl . "/images/maps/" . $game . "/noimage.jpg";
            }

            $info['mapimg'] = CHtml::image($mapimage, $info['map'], array('title' => $info['map'], 'class' => 'img-polaroid'));
            return $info;
        }
        return FALSE;
    }

    public function rconCommand($command)
    {
        $addr = explode(':', $this->address);

        $rcon = new Rcon;
        $rcon->Connect($addr[0], $addr[1], $this->rcon);

        $test = $rcon->RconCommand('echo Hi');

        if($test == 'Bad rcon_password.' || $test == 'No password set for this server.' || $test != 'Hi')
            return FALSE;

        return $rcon->RconCommand(CHtml::encode ($command));
    }

    public function getPlayersInfo()
    {
        if(!$this->rcon)
            return FALSE;

        $q = $this->rconCommand('amx_list');

        if(!$q)
            return FALSE;

        $players = array();
        foreach(explode("\x0A", $q) as $p)
        {
            $i = explode("\xFC", $p);

            switch($i[4])
            {
                case 0:
                    $type = 'Игрок';
                    break;
                case 1:
                    $type = 'Бот';
                    break;
                case 2:
                    $type = 'HLTV';
                    break;
                default :
                    $type = 'Неизвестен';
            }

            $players[] = array(
                'nick' => $i[0],
                'userid' => $i[1],
                'steamid' => $i[2],
                'ip' => $i[3],
                'playertype' => $type,
                'immunity' => $i[5]
            );
        }
        return $players;
    }

    public static function getCommands()
    {
        return array(
            '' => 'Выберите команду',
            'amx_reloadadmins' => 'Перезагрузить список админов',
            'restart' => 'Перезапустить карту/плагины',
            'stats' => 'Команда stats',
            'status' => 'Команда status',
            'amx_plugins' => 'Список AMX плагинов',
            'amx_modules' => 'Список AMX модулей',
            'meta list' => 'Список модулей MetaMod'
        );
    }

    public static function getAllServers($all = TRUE, $id = false)
    {
        $model = Serverinfo::model()->findAll(array('order' => 'hostname ASC'));

        $return = array();

        if($all)
            $return['0'] = 'Выберите сервер';

        foreach($model as $server)
        {
            $return[$id ? $server->id : $server->address] = $server->hostname;
        }

        if($all)
            $return['unknown'] = 'Любой сервер';

        return $return;
    }

    public function afterFind() {
        if(!$this->amxban_motd)
            $this->amxban_motd = "http://{$_SERVER['HTTP_HOST']}/motd.php?sid=%s&adm=%d&lang=%s";
        return parent::afterFind();
    }

    public function afterSave() {
        if($this->isNewRecord)
            Syslog::add(Logs::LOG_ADDED, 'Добавлен новый сервер <strong>' . $this->address . '</strong>');
        else
            Syslog::add(Logs::LOG_EDITED, 'Изменены детали сервера <strong>' . $this->hostname . '</strong>');
        return parent::afterSave();
    }

    public function afterDelete() {
        Yii::app()->cache->flush();
        Syslog::add(Logs::LOG_DELETED, 'Удален сервер <strong>' . $this->address . '</strong>');
        return parent::afterDelete();
    }

}
 

Reebok

Пользователь
Регистрация
9 Июн 2017
Сообщения
82
Симпатии
4
Пол
Мужской
ВКонтакте
serega_deev
Reebok,
в папке protected/models поменяйте файл Serverinfo.php
Код:
<?php
/**
* @author Craft-Soft Team
* @package CS:Bans
* @version 1.0 beta
* @copyright (C)2013 Craft-Soft.ru.  Все права защищены.
* @link http://craft-soft.ru/
* @license http://creativecommons.org/licenses/by-nc-sa/4.0/deed.ru  «Attribution-NonCommercial-ShareAlike»
*/

/**
* Модель для таблицы "{{serverinfo}}".
*
* Доступные поля таблицы '{{serverinfo}}':
* @property integer $id ID сервера
* @property integer $timestamp Дата
* @property string $hostname Название сервера
* @property string $address Адрес
* @property string $gametype Тип игры
* @property string $rcon RCON пароль
* @property string $amxban_version Версия плагина
* @property string $amxban_motd Ссылка на MOTD
* @property integer $motd_delay Время показа MOTD
* @property integer $amxban_menu Меню (?)
* @property integer $reasons Причины
* @property integer $timezone_fixx Разница во времени
*/
class Serverinfo extends CActiveRecord
{
    private $connect;
    public $players = null;
    public $playersmax = null;
    public $name = null;
    public $map = null;
    public $game = null;
    public $os = null;
    public $osimg = null;
    public $secure = null;
    public $playersinfo = array();
    public $online = null;
    public $modimg = null;
    public $vacimg = null;
    public $contact = null;
    public $nextmap = null;
    public $timeleft = null;
    public $mapimg = null;

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return '{{serverinfo}}';
    }

    public function scopes()
    {
        return array(
            'sort'=>array(
                'order'=>'`hostname` ASC'
            ),
        );
    }

    public function rules()
    {
        return array(
            array('motd_delay, amxban_menu, reasons, timezone_fixx', 'numerical', 'integerOnly'=>true),
            array('rcon', 'length', 'max'=>32),
            array('amxban_motd', 'length', 'max'=>250),
            array('id, timestamp, hostname, address, gametype, rcon, amxban_version, amxban_motd, motd_delay, amxban_menu, reasons, timezone_fixx', 'safe', 'on'=>'search'),
        );
    }

    public function relations()
    {
        return array();
    }

    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'timestamp' => 'Дата',
            'hostname' => 'Имя сервера',
            'address' => 'Адрес',
            'gametype' => 'Мод',
            'rcon' => 'Rcon',
            'amxban_version' => 'Версия',
            'amxban_motd' => 'MOTD',
            'motd_delay' => 'Задержка перед MOTD',
            'amxban_menu' => 'Меню Amxban',
            'reasons' => 'Группы причин банов',
            'timezone_fixx' => 'Разница во времени',
            'map' => 'Карта'
        );
    }

    public function search()
    {
        $criteria=new CDbCriteria;

        $criteria->compare('id',$this->id);
        $criteria->compare('timestamp',$this->timestamp);
        $criteria->compare('hostname',$this->hostname,true);
        $criteria->compare('address',$this->address,true);
        $criteria->compare('gametype',$this->gametype,true);
        $criteria->compare('rcon',$this->rcon,true);
        $criteria->compare('amxban_version',$this->amxban_version,true);
        $criteria->compare('amxban_motd',$this->amxban_motd,true);
        $criteria->compare('motd_delay',$this->motd_delay);
        $criteria->compare('amxban_menu',$this->amxban_menu);
        $criteria->compare('reasons',$this->reasons);
        $criteria->compare('timezone_fixx',$this->timezone_fixx);
        $criteria->order = '`hostname` ASC';
        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }


    public function getInfo() {
        $sip = explode(':',  $this->address);
        include_once ROOTPATH . '/include/lgsl_query.php';
        $server = query_live('halflife', $sip[0], $sip[1], $sip[1], '0', 'spet');

        $fields_show  = array("name", "score", "time");
        $fields_hide  = array("teamindex", "pid", "pbguid");
        $fields = lgsl_sort_fields($server, $fields_show, $fields_hide, FALSE);
        $server = lgsl_sort_players($server);
        $rules = array();
        $info['online'] = $server['b']['status'];

        if($info['online'])
        {
            $info['players'] = $server['s']['players'];
            $info['playersmax'] = $server['s']['playersmax'];
            $info['name'] = $server['s']['name'];
            $info['map'] = $server['s']['map'];
            $info['game'] = $server['s']['game'];
            $info['os'] = $server['e']['os'] == 'l' ? 'Linux' : 'Windows';
            $info['secure'] = $server['e']['anticheat'] == 0 ? FALSE : TRUE;
            $info['playersinfo'] = is_array($server['p']) ? $server['p'] : array();
            $info['timeleft'] = isset($server['e']['amx_timeleft'])?$server['e']['amx_timeleft']:false;
            $info['nextmap'] = isset($server['e']['amx_nextmap'])?$server['e']['amx_nextmap']:FALSE;
            $info['contact'] = isset($server['e']['sv_contact'])?$server['e']['sv_contact']:FALSE;
            $game = $this->gametype ? $this->gametype : $info['game'];
            $info['modimg'] = Yii::app()->urlManager->baseUrl .
                    DIRECTORY_SEPARATOR .
                    "images".
                    DIRECTORY_SEPARATOR .
                    "games" .
                    DIRECTORY_SEPARATOR .
                    $game .
                    ".gif";
            $info['vacimg'] = Yii::app()->urlManager->baseUrl .
                    DIRECTORY_SEPARATOR .
                    "images".
                    DIRECTORY_SEPARATOR .
                    ($info['secure'] ? "vac.png" : "no_vac.png");
            $info['osimg'] = Yii::app()->urlManager->baseUrl .
                    DIRECTORY_SEPARATOR .
                    "images".
                    DIRECTORY_SEPARATOR .
                    "os" .
                    DIRECTORY_SEPARATOR .
                    $info['os'].
                    ".png";

            if(!$info['online'])
            {
                $mapimage = Yii::app()->urlManager->baseUrl ."/images/maps/noresponse.jpg";
            }
            elseif(is_file(ROOTPATH ."/images/maps/" . $game . '/' . $info['map'] . ".jpg"))
            {
                $mapimage = Yii::app()->urlManager->baseUrl . "/images/maps/" . $game . '/' . $info['map'] . ".jpg";
            }
            else
            {
                $mapimage = Yii::app()->urlManager->baseUrl . "/images/maps/" . $game . "/noimage.jpg";
            }

            $info['mapimg'] = CHtml::image($mapimage, $info['map'], array('title' => $info['map'], 'class' => 'img-polaroid'));
            return $info;
        }
        return FALSE;
    }

    public function rconCommand($command)
    {
        $addr = explode(':', $this->address);

        $rcon = new Rcon;
        $rcon->Connect($addr[0], $addr[1], $this->rcon);

        $test = $rcon->RconCommand('echo Hi');

        if($test == 'Bad rcon_password.' || $test == 'No password set for this server.' || $test != 'Hi')
            return FALSE;

        return $rcon->RconCommand(CHtml::encode ($command));
    }

    public function getPlayersInfo()
    {
        if(!$this->rcon)
            return FALSE;

        $q = $this->rconCommand('amx_list');

        if(!$q)
            return FALSE;

        $players = array();
        foreach(explode("\x0A", $q) as $p)
        {
            $i = explode("\xFC", $p);

            switch($i[4])
            {
                case 0:
                    $type = 'Игрок';
                    break;
                case 1:
                    $type = 'Бот';
                    break;
                case 2:
                    $type = 'HLTV';
                    break;
                default :
                    $type = 'Неизвестен';
            }

            $players[] = array(
                'nick' => $i[0],
                'userid' => $i[1],
                'steamid' => $i[2],
                'ip' => $i[3],
                'playertype' => $type,
                'immunity' => $i[5]
            );
        }
        return $players;
    }

    public static function getCommands()
    {
        return array(
            '' => 'Выберите команду',
            'amx_reloadadmins' => 'Перезагрузить список админов',
            'restart' => 'Перезапустить карту/плагины',
            'stats' => 'Команда stats',
            'status' => 'Команда status',
            'amx_plugins' => 'Список AMX плагинов',
            'amx_modules' => 'Список AMX модулей',
            'meta list' => 'Список модулей MetaMod'
        );
    }

    public static function getAllServers($all = TRUE, $id = false)
    {
        $model = Serverinfo::model()->findAll(array('order' => 'hostname ASC'));

        $return = array();

        if($all)
            $return['0'] = 'Выберите сервер';

        foreach($model as $server)
        {
            $return[$id ? $server->id : $server->address] = $server->hostname;
        }

        if($all)
            $return['unknown'] = 'Любой сервер';

        return $return;
    }

    public function afterFind() {
        if(!$this->amxban_motd)
            $this->amxban_motd = "http://{$_SERVER['HTTP_HOST']}/motd.php?sid=%s&adm=%d&lang=%s";
        return parent::afterFind();
    }

    public function afterSave() {
        if($this->isNewRecord)
            Syslog::add(Logs::LOG_ADDED, 'Добавлен новый сервер <strong>' . $this->address . '</strong>');
        else
            Syslog::add(Logs::LOG_EDITED, 'Изменены детали сервера <strong>' . $this->hostname . '</strong>');
        return parent::afterSave();
    }

    public function afterDelete() {
        Yii::app()->cache->flush();
        Syslog::add(Logs::LOG_DELETED, 'Удален сервер <strong>' . $this->address . '</strong>');
        return parent::afterDelete();
    }

}
Скриншот 2017-12-30 19_13_16.pngзаходишь в сервер и все норм показывает! а отображаеться название сервера при бане
 
Сверху Снизу