• 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!
  • If you're using Gesior 2012 or MyAAC, please review this thread for information about a serious security vulnerability and a fix.

AAC [MyAAC]"Who is Online?"It is not showing players online.

nuzzy

New Member
Joined
Nov 3, 2009
Messages
5
Reaction score
0
The Who is Online page is not listing players currently online on the server. Previously it was working correctly, I believe the problem started to occur after I added the MyAAC gesiorshop plugin(not sure), but still using a backup(website) without the plugin the problem still occurred.

The problem is the same of this topic
Who is online List Not working Gesior (https://otland.net/threads/who-is-online-list-not-working-gesior.250012/)
but in my case is with MyAAC

In database table player_online there's no registry even me are online with character(no adm) online in server.

I tried to do a old backup of var\www\html\system\pages\online.php but the problem still persist.
PHP:
<?php
/**
 * Online
 *
 * @package   MyAAC
 * @author    Gesior <[email protected]>
 * @author    Slawkens <[email protected]>
 * @copyright 2019 MyAAC
 * @link     https://my-aac.org
 */
defined('MYAAC') or die('Direct access not allowed!');
$title = 'Who is online?';

if($config['account_country'])
    require SYSTEM . 'countries.conf.php';

$promotion = '';
if($db->hasColumn('players', 'promotion'))
    $promotion = '`promotion`,';
$order = isset($_GET['order']) ? $_GET['order'] : 'name';
if(!in_array($order, array('country', 'name', 'level', 'vocation')))
    $order = $db->fieldName('name');
else if($order == 'country')
    $order = $db->tableName('accounts') . '.' . $db->fieldName('country');
else if($order == 'vocation')
    $order = $promotion . 'vocation ASC';

$skull_type = 'skull';
if($db->hasColumn('players', 'skull_type')) {
    $skull_type = 'skull_type';
}

$skull_time = 'skulltime';
if($db->hasColumn('players', 'skull_time')) {
    $skull_time = 'skull_time';
}

$outfit_addons = false;
$outfit = '';
if($config['online_outfit']) {
    $outfit = ', lookbody, lookfeet, lookhead, looklegs, looktype';
    if($db->hasColumn('players', 'lookaddons')) {
        $outfit .= ', lookaddons';
        $outfit_addons = true;
    }
}

if($config['online_vocations']) {
    $vocs = array();
    foreach($config['vocations'] as $id => $name)
        $vocs[$id] = 0;
}

if($db->hasTable('players_online')) // tfs 1.0
    $playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `level`, `vocation`' . $outfit . ', `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players`, `players_online` WHERE `players`.`id` = `players_online`.`player_id` AND `accounts`.`id` = `players`.`account_id`  ORDER BY ' . $order);
else
    $playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `level`, `vocation`' . $outfit . ', ' . $promotion . ' `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players` WHERE `players`.`online` > 0 AND `accounts`.`id` = `players`.`account_id`  ORDER BY ' . $order);

$players_data = array();
$players = 0;
$data = '';
foreach($playersOnline as $player)
{
    $skull = '';
    if($config['online_skulls'])
    {
        if($player['skulltime'] > 0)
        {
            if($player['skull'] == 3)
                $skull = ' <img style="border: 0;" src="images/white_skull.gif"/>';
            elseif($player['skull'] == 4)
                $skull = ' <img style="border: 0;" src="images/red_skull.gif"/>';
            elseif($player['skull'] == 5)
                $skull = ' <img style="border: 0;" src="images/black_skull.gif"/>';
        }
    }

    if(isset($player['promotion'])) {
        if((int)$player['promotion'] > 0)
            $player['vocation'] += ($player['promotion'] * $config['vocations_amount']);
    }

    $players_data[] = array(
        'name' => getPlayerLink($player['name']),
        'player' => $player,
        'level' => $player['level'],
        'vocation' => $config['vocations'][$player['vocation']],
        'country_image' => $config['account_country'] ? getFlagImage($player['country']) : null,
        'outfit' => $config['online_outfit'] ? $config['outfit_images_url'] . '?id=' . $player['looktype'] . ($outfit_addons ? '&addons=' . $player['lookaddons'] : '') . '&head=' . $player['lookhead'] . '&body=' . $player['lookbody'] . '&legs=' . $player['looklegs'] . '&feet=' . $player['lookfeet'] : null
    );

    if($config['online_vocations'])
        $vocs[($player['vocation'] > $config['vocations_amount'] ? $player['vocation'] - $config['vocations_amount'] : $player['vocation'])]++;
}

$record = '';
if($players > 0)
{
    if($config['online_record'])
    {
        $timestamp = false;
        if($db->hasTable('server_record')) {
            $query =
                $db->query(
                    'SELECT `record`, `timestamp` FROM `server_record` WHERE `world_id` = ' . (int)$config['lua']['worldId'] .
                    ' ORDER BY `record` DESC LIMIT 1');
            $timestamp = true;
        }
        else if($db->hasTable('server_config')) { // tfs 1.0
            $query = $db->query('SELECT `value` as `record` FROM `server_config` WHERE `config` = ' . $db->quote('players_record'));
        }
        else
            $query = NULL;

        if(isset($query) && $query->rowCount() > 0)
        {
            $result = $query->fetch();
            $record = 'The maximum on this game world was ' . $result['record'] . ' players' . ($timestamp ? ' on ' . date("M d Y, H:i:s", $result['timestamp']) . '.' : '.');
        }
    }
}

$twig->display('online.html.twig', array(
    'players' => $players_data,
    'record' => $record
));

//search bar
$twig->display('online.form.html.twig');
?>

P.S: the problem is only is who is online and in the Highscores show online players with color red(under the Players online). The Players Online workly perfectly.

1580081460569.png

How can I search for a solution?

Thanks!
 

Attachments

Znote

<?php echo $title; ?>
Staff member
Global Moderator
Premium User
Joined
Feb 14, 2008
Messages
7,031
Solutions
257
Reaction score
2,085
Location
Norway
GitHub
Znote
Its probably an issue with creaturescripts, that stops the players_online table from being populated when a player logs in. The website read the table after online players, if the table is empty then there is nothing to show.

For some reason IOLoginData::updateOnlineStatus at iologindata.cpp doesn't seem to get triggered.

Or could it be your web configuration isn't connected to the same database as your distro?
 
Last edited:

chucky91

Well-Known Member
Joined
Apr 8, 2010
Messages
154
Solutions
8
Reaction score
75
The problem i have is that the system is not counting the players in the mobile client.
The top right corner of the site doesn't even count the exact value of online players, but when you click on who is online it shows all the online players and the exact value!
 
Top