Ir para conteúdo
  • 0
scren

Website [MyAAC]"Who is online?" Não está exibindo os players onlines.

Pergunta

scren    0
scren

Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo:

https://forums.otserv.com.br/index.php?/forums/topic/168583-regras-da-seção/

https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/

Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.).

OTServBR - Global Based on TFS 1.3, Versão: 12.1, Website: 35.198.12.205.

Base:

Qual é a sua pergunta?

A página Who is online? não está listando os players atualmente online no servidor. Anteriormente estava funcionando corretamente, acredito que o problema começou a ocorrer depois que adicionei o plugin gesiorshop no MyAAC, porém mesmo utilizando um backup sem o plugin o problema ainda ocorreu.

O que eu já tentei fazer para correção do problema porém sem sucesso:

- Compilar as sources e gerando um novo tfs(Estou no ambiente Ubuntu 16.04 LTS).

Devido a resposta deste tópico :

Spoiler

https://otland.net/threads/who-is-online-list-not-working-gesior.250012/ (O problema é exatamente o mesmo porém estou utilizando MyAAC).

 

- Alterar o arquivo /var/www/html/system/pages/online.php por um backup anterior que estava funcionando.

- Realizei o backup do banco de dados por um anterior que estava funcionando anteriormente.

- No banco de dados(otservbrglobal) na tabela players_online,  não exibe nenhum registro mesmo estando com player online no servidor.

Spoiler

image.thumb.png.7b7dae4f526be5d1cebcb002678d494c.png

 

Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:

online.php

Spoiler

<?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');
?>
 

Na imagem do problema, exibe em baixo do monster o número correto de players online, porém em Highscores o nome permanece em vermelho(offline), e não é listado o player em "Who is Online?"(No momento da foto estava com o character "Scren" logado no servidor).

Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:

Spoiler

image.thumb.png.e87e7c7123aa1dbb16a1bfa4c6a7dff0.png

O que está faltando no meu exemplo?

Como posso procurar uma solução?

Desde já agradeço o tempo dos senhores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostass a esta questão

Recommended Posts

  • 0
MiguelZito    0
MiguelZito

Ta ai amigo... segui o scripter php

 

 

whoisonline.php

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×