• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

[SQL] How can I hide players with 8 level from Highoscres?

okurde

New Member
Joined
Jan 28, 2009
Messages
134
Reaction score
1
Hello, is it possible to hide players with 8 level from Highoscres?
I am asking because there are weird SQL queries...

classes/highoscres.php
Code:
    public function loadSkill()
    {
        $this->setClass('Highscore');
        $this->addOrder(new SQL_Order(new SQL_Field('value', 'player_skills'), SQL_Order::DESC));
        $this->addOrder(new SQL_Order(new SQL_Field('count', 'player_skills'), SQL_Order::DESC));
        $this->addExtraField(new SQL_Field('count', 'player_skills'));
        $this->addExtraField(new SQL_Field('value', 'player_skills'));
        $this->addExtraField(new SQL_Field('flag', 'accounts'));
        $filterWorld = new SQL_Filter(new SQL_Field('world_id', 'players'), SQL_Filter::EQUAL, $this->worldId);
        $filterPlayer = new SQL_Filter(new SQL_Field('id', 'players'), SQL_Filter::EQUAL, new SQL_Field('player_id', 'player_skills'));
        $filterSkill = new SQL_Filter(new SQL_Field('skillid', 'player_skills'), SQL_Filter::EQUAL, $this->skillType);
        $filter = new SQL_Filter($filterPlayer, SQL_Filter::CRITERIUM_AND, $filterSkill);

        if($this->highscoreConfig->isSetKey('groups_hidden'))
            foreach($this->highscoreConfig->getValue('groups_hidden') as $_group_filter)
                $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('group_id', 'players'), SQL_Filter::NOT_EQUAL, $_group_filter), SQL_Filter::CRITERIUM_AND, $filter);

        if($this->highscoreConfig->isSetKey('accounts_hidden'))
            foreach($this->highscoreConfig->getValue('accounts_hidden') as $_account_filter)
                $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::NOT_EQUAL, $_account_filter), SQL_Filter::CRITERIUM_AND, $filter);

        if($this->vocation != '')
            $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('vocation', 'players'), SQL_Filter::EQUAL, $this->vocation), SQL_Filter::CRITERIUM_AND, $filter);

        $filter = new SQL_Filter($filterWorld, SQL_Filter::CRITERIUM_AND, $filter);
        $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::EQUAL, new SQL_Field('id', 'accounts')), SQL_Filter::CRITERIUM_AND, $filter);
        $this->setFilter($filter);
    }

Does anyone hane any idea how it can be hidden?
 
You could try something like
PHP:
    public function loadSkill()
    {
        $this->setClass('Highscore');
        $this->addOrder(new SQL_Order(new SQL_Field('value', 'player_skills'), SQL_Order::DESC));
        $this->addOrder(new SQL_Order(new SQL_Field('count', 'player_skills'), SQL_Order::DESC));
        $this->addExtraField(new SQL_Field('count', 'player_skills'));
        $this->addExtraField(new SQL_Field('value', 'player_skills'));
        $this->addExtraField(new SQL_Field('flag', 'accounts'));
        $filterWorld = new SQL_Filter(new SQL_Field('world_id', 'players'), SQL_Filter::EQUAL, $this->worldId);
        $filterPlayer = new SQL_Filter(new SQL_Field('id', 'players'), SQL_Filter::EQUAL, new SQL_Field('player_id', 'player_skills'));
        $filterSkill = new SQL_Filter(new SQL_Field('skillid', 'player_skills'), SQL_Filter::EQUAL, $this->skillType);
        $filter = new SQL_Filter($filterPlayer, SQL_Filter::CRITERIUM_AND, $filterSkill);

        if($this->highscoreConfig->isSetKey('groups_hidden'))
            foreach($this->highscoreConfig->getValue('groups_hidden') as $_group_filter)
                $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('group_id', 'players'), SQL_Filter::NOT_EQUAL, $_group_filter), SQL_Filter::CRITERIUM_AND, $filter);

        if($this->highscoreConfig->isSetKey('accounts_hidden'))
            foreach($this->highscoreConfig->getValue('accounts_hidden') as $_account_filter)
                $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::NOT_EQUAL, $_account_filter), SQL_Filter::CRITERIUM_AND, $filter);

        if($this->vocation != '')
            $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('vocation', 'players'), SQL_Filter::EQUAL, $this->vocation), SQL_Filter::CRITERIUM_AND, $filter);

        if(true) { // change to false to disable checking for anyone level 8 or greater
            $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('level', 'players'), SQL_Filter::NOT_LOWER, 8), SQL_Filter::CRITERIUM_AND, $filter);
        }

        $filter = new SQL_Filter($filterWorld, SQL_Filter::CRITERIUM_AND, $filter);
        $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::EQUAL, new SQL_Field('id', 'accounts')), SQL_Filter::CRITERIUM_AND, $filter);
        $this->setFilter($filter);
    }
 
Back
Top