Ir para conteúdo
  • 0

Online-List Nicaw


Flahvia

Pergunta

Olá Pessoal,

Eu utilizo o site da Nicaw Acc para meu ot (7.72/Avesta) e estou com um problema no Players online (online-list.php). Ele não esta se atualizando e quando se atualiza, fica um 'lixo' com alguns players que não logam há dias. No status do site, por exemplo, está mostrando 30 players online e na página de players online mostra mais de 100 nomes :S

*Obs.: O status é fiel aos players online, sempre comparo com o GM (!online).

 

O Código do online.php é este:

 

<?php
/*
Copyright (C) 2007-2008  Nicaw
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
include ("include.inc.php");
$ptitle="Online Players - $cfg[server_name]";
include ("header.inc.php");
?>
<div id="content">
<div class="top">Online Players</div>
<div class="mid">
	<?php
	$SQL = AAC::$SQL;
	try {
		$SQL->myQuery('SELECT name, vocation, level FROM players WHERE status = 1 ORDER BY name ASC');
	} catch(DatabaseQueryException $e) {
		try {
			$SQL->myQuery('SELECT name, vocation, level FROM players WHERE lastlogin > lastlogout ORDER BY name ASC');
		} catch(DatabaseQueryException $e) {
			throw new DatabaseException('Your server does not store information on players online state.');
		}
	}
	if ($SQL->num_rows() == 0) {
		echo 'There is no players online on OldSchool Ots.';
	} else {
		$i = 0;
		echo '<table><tr class="color0"><td style="width:150px"><b>Name</b></td><td style="width:150px"><b>Vocation</b></td><td style="width:60px"><b>Level</b></td></tr>';
		while ($player = $SQL->fetch_array()) {
			$i++;
			echo '<tr '.getStyle($i).'><td><a href="characters.php?player_name='.urlencode($player['name']).'">'.htmlspecialchars($player['name']).'</a></td><td>'.htmlspecialchars($cfg['vocations'][$player['vocation']]['name']).'</td><td>'.$player['level'].'</td></tr>'."\n";
		}
	}
	?>
	</table>
</div>
<div class="bot"></div>
</div>
<?php include ("footer.inc.php");?>

 

 

 

 

Agora aqui vou por os códigos que atualizam os status também:

 

em playerdeath.lua

 

function onDie(cid, corpse)

--Online List (Website)
mysqlQuery("UPDATE `players` SET `status` = '0' WHERE `name` = \"" .. getPlayerName(cid) .. "\"", "SET")

--Bless System
if getPlayerStorageValue(cid, 30006) == 1 then
setPlayerStorageValue(cid, 30007,1)
end
end

 

 

 

em login.lua

 

function onLogin(cid)
--Online List (Website)
if isGameMaster(cid) == FALSE then
mysqlQuery("UPDATE `players` SET `status` = '1' WHERE `name` = \"" .. getPlayerName(cid) .. "\"", "SET")
end
  return TRUE
end

 

 

 

em logout.lua

 

function onLogout(cid)
-- Online List (Website)
mysqlQuery("UPDATE `players` SET `status` = '0' WHERE `name` = \"" .. getPlayerName(cid) .. "\"", "SET")
return TRUE
end

 

 

Eu ainda estou trabalhando em cima disso para tentar resolver, fazendo testes e tentando alterar algumas coisas para ver se dá certo. E também estou googlando por ai, mas até agora não achei nada que resovlesse meu caso.

 

Se alguém tiver uma idéia do que pode estar errado eu agradeço ;)

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Verifique se a tabela players possui a coluna status ou é online.

Coloque este script, veja se funciona.

 

<?php
/*
    Copyright (C) 2007-2008  Nicaw
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
include ("include.inc.php");
$ptitle="Online Players - $cfg[server_name]";
include ("header.inc.php");
?>
<div id="content">
    <div class="top">Online Players</div>
    <div class="mid">
		    <?php
		    $SQL = AAC::$SQL;
		    try {
				    $SQL->myQuery('SELECT * FROM players WHERE online = 1 ORDER BY name ASC');
		    } catch(DatabaseQueryException $e) {
				    try {
						    $SQL->myQuery('SELECT * FROM players WHERE lastlogin > lastlogout ORDER BY name ASC');
				    } catch(DatabaseQueryException $e) {
						    throw new DatabaseException('Your server does not store information on players online state.');
				    }
		    }
		    if ($SQL->num_rows() == 0) {
				    echo 'There is no players online on OldSchool Ots.';
		    } else {
				    $i = 0;
				    echo '<table><tr class="color0"><td style="width:150px"><b>Name</b></td><td style="width:150px"><b>Vocation</b></td><td style="width:60px"><b>Level</b></td></tr>';
				    while ($player = $SQL->fetch_array()) {
						    $i++;
						    echo '<tr '.getStyle($i).'><td><a href="characters.php?player_name='.urlencode($player['name']).'">'.htmlspecialchars($player['name']).'</a></td><td>'.htmlspecialchars($cfg['vocations'][$player['vocation']]['name']).'</td><td>'.$player['level'].'</td></tr>'."\n";
				    }
		    }
		    ?>
		    </table>
    </div>
    <div class="bot"></div>
</div>
<?php include ("footer.inc.php");?>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá

 

Verifiquei a tabela players e a coluna que ela possui é status mesmo.

Testei o código, não deu erro mas também não resolveu o problema :S

Deu uma pequena atualizada nos players, mas mesmo assim continuou aparecendo mais players do que estão online e desta vez ainda apareceu os GMs.

 

Obrigada mesmo assim :)

Link para o comentário
Compartilhar em outros sites

  • 0

Revisei o script, veja agora..

<?php
/*
	    Copyright (C) 2007-2008  Nicaw
	    This program is free software; you can redistribute it and/or modify
	    it under the terms of the GNU General Public License as published by
	    the Free Software Foundation; either version 2 of the License, or
	    (at your option) any later version.
	    This program is distributed in the hope that it will be useful,
	    but WITHOUT ANY WARRANTY; without even the implied warranty of
	    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	    GNU General Public License for more details.
	    You should have received a copy of the GNU General Public License along
	    with this program; if not, write to the Free Software Foundation, Inc.,
	    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
include ("include.inc.php");
$ptitle="Online Players - $cfg[server_name]";
include ("header.inc.php");
?>
<div id="content">
	    <div class="top">Online Players</div>
	    <div class="mid">
					    <?php
					    $SQL = AAC::$SQL;
					    try {
									    $SQL->myQuery('SELECT * FROM players WHERE online = 1 ORDER BY name ASC');
					    } catch(DatabaseQueryException $e) {
									    try {
									    $SQL->myQuery('SELECT * FROM players WHERE online = 1 ORDER BY name ASC');
									    } catch(DatabaseQueryException $e) {
													    throw new DatabaseException('Your server does not store information on players online state.');
									    }
					    }
					    if ($SQL->num_rows() == 0) {
									    echo 'There is no players online on OldSchool Ots.';
					    } else {
									    $i = 0;
									    echo '<table><tr class="color0"><td style="width:150px"><b>Name</b></td><td style="width:150px"><b>Vocation</b></td><td style="width:60px"><b>Level</b></td></tr>';
									    while ($player = $SQL->fetch_array()) {
													    $i++;
													    echo '<tr '.getStyle($i).'><td><a href="characters.php?player_name='.urlencode($player['name']).'">'.htmlspecialchars($player['name']).'</a></td><td>'.htmlspecialchars($cfg['vocations'][$player['vocation']]['name']).'</td><td>'.$player['level'].'</td></tr>'."\n";
									    }
					    }
					    ?>
					    </table>
	    </div>
	    <div class="bot"></div>
</div>
<?php include ("footer.inc.php");?>

Link para o comentário
Compartilhar em outros sites

  • 0

eu uso gesior e to com um problema la no canto > do website em cima onde mostra os player online / max o player desloga sai da lista de online la so q la em cima ainda fica o numero 1 por um tempo como posso resolver para mudar na hora ?

 

e o segundo problema é quando eu fecho o ot demora tbm pra aparecer la em cima server offline me ajuda?

 

Me ajuda ai bros pf, dou rep + ! =D

 

@edit:

Eu calculei e demorou 1 minuto e 10 segundos para aparecer o SErver offline

Editado por Daniel100
Link para o comentário
Compartilhar em outros sites

  • 0

eu uso gesior e to com um problema la no canto > do website em cima onde mostra os player online / max o player desloga sai da lista de online la so q la em cima ainda fica o numero 1 por um tempo como posso resolver para mudar na hora ?

 

e o segundo problema é quando eu fecho o ot demora tbm pra aparecer la em cima server offline me ajuda?

 

Me ajuda ai bros pf, dou rep + ! =D

 

@edit:

Eu calculei e demorou 1 minuto e 10 segundos para aparecer o SErver offline

 

Isto normalmente é chamado de atualização de cache. Facilmente configurado no arquivo whoisonline.php ($cache_sec).

Estou elaborando um sistema muito util parecido com o do tibia.com. Quando player logar ou deslogar ele atualiza em tempo real. Estou tendo algumas sobrecargas em dbs, mas breve postarei no xtibia.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...