neverwinter server status

  • 42 Risposte
  • 58448 Visite

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

*

Offline Pascal

  • *****
  • 989
  • 457
  • Rage!
    • Mostra profilo
    • Scavenger Graphics
neverwinter server status
« il: Maggio 21, 2010, 02:02:52 am »
Ecco il codice PHP del server status di neverwinter nights usato su www.iscandar.ch :D
Codice: [Seleziona]
<html>
<head>
<meta http-equiv="refresh" content="10">
<title>Venom NeverWinter Nights Server</title>
<style type="text/css">
<!--
p, a, h2, h3, body
{
color: #ffffff;
font-family: Arial, Helvetica;
}

.r, h1 {
color: #9900ff;
font-family: Arial, Helvetica;

}
-->
</style>
</head>
<body bgcolor=black>
<center>
<img src="http://www.scavenger.ch/frog/?di=1212741323755"><br />
<?php 
$ipaddr 
"84.55.233.4";
$port "5121";
$timeout 5;
$connect fsockopen"udp://" $ipaddr$port$errno$errstr$timeout );
if ( ! 
$connect ) {
print( "<h1>Server is down</h1><br>\n" );
print( "<h3>ERROR: $errno - $errstr</h3><br>\n" );
exit;
} else {
socket_set_timeout$connect$timeout );
$send "\xFE\xFD\x00\xE0\xEB\x2D\x0E\x14\x01\x0B\x01\x05\x08\x0A\x33\x34\x35\x13\x04\x36\x37\x38\x39\x14\x3A\x3B\x3C\x3D\x00\x00";
fwrite$connect$send );
$output fread$connect5000 );
if ( ! $output ) {
print ( "<h1>Server is down!<br></h1>\n" );
} else {
print( "<table border=0 width=70%>" );
print( "<tr><td>" );
$lines explode"\x00"$output );
print( "<u>Server IP:</u> <i class='r'>$ipaddr</i>:<i class='r'>$port</i><br>\n" );
print( "<u>Server Status:</u> <i class='r'>Online</i><br>\n" );
print( "<b>Game Category:</b> <i class='r'>" );
if ( $lines[16] == "274" ) {
print( "Action</i><br>\n" );
} elseif ( $lines[16] == "363" ) {
print( "Story</i><br>\n" );
} elseif ( $lines[16] == "364" ) {
print( "Story Lite</i><br>\n" );
} elseif ( $lines[16] == "275" ) {
print( "Role Play</i><br>\n" );
} elseif ( $lines[16] == "276" ) {
print( "Team</i><br>\n" );
} elseif ( $lines[16] == "365" ) {
print( "Melee</i><br>\n" );
} elseif ( $lines[16] == "366" ) {
print( "Arena</i><br>\n" );
} elseif ( $lines[16] == "277" ) {
print( "Social</i><br>\n" );
} elseif ( $lines[16] == "279" ) {
print( "Alternative</i><br>\n" );
} elseif ( $lines[16] == "278" ) {
print( "PW Action</i><br>\n" );
} elseif ( $lines[16] == "367" ) {
print( "PW Story</i><br>\n" );
} elseif ( $lines[16] == "368" ) {
print( "Solo</i><br>\n" );
} elseif ( $lines[16] == "370" ) {
print( "Tech Support</i><br>\n" );
}
print( "<u>Play Type:</u> <i class='r'>$lines[2]</i><br>\n" );
print( "<b><u>Game Name:</u> <i class='r'>$lines[3]</i></b><br>\n" );
print( "<u>Module Name:</u> <i class='r'>$lines[4]</i><br>\n" );
print( "<u>Version Number:</u> <i class='r'>$lines[14]);
print( "</td><td>" );
if ( $lines[20] == '1' ) {
print( " / XP-1 " );
} elseif ( $lines[20] == '2' ) {
print( " / XP-2 " );
} elseif ( $lines[20] == '3') {
print( " / XP-1 / XP-2 " );
}
print( "</i><br><br>\n" );

print( "<u>Level Range:</u> <i class='r'>$lines[7]</i> - <i class='r'>$lines[8]</i><br>\n" );

print( "<u>Player vs. Player:</u> " );
if ( $lines[9] == "NONE" ) {
print( "<i class='r'>" );
} elseif ( $lines[9] == "FULL" ) {
print( "<i class='r'>" );
} else {
print( "<i class='r'>" );
}
print( "$lines[9]</i><br>\n" );

print( "<u>Character Vault:</u> " );
if ( $lines[19] == '1' ) {
print( "<i class='r'>Local Vault</i><br>\n" );
} else {
print( "<i class='r'>Server Vault</i><br>\n" );
}
print( "<u>Only One Party:</u> " );
if ( $lines[12] == '1' ) {
print( "<i class='r'>enabled</i><br>\n" );
} else {
print( "<i class='r'>disabled</i><br>\n" );
}

print( "<u>Player Pause:</u> " );
if ( $lines[13] == '1' ) {
print( "<i class='r'>enabled</i><br>\n" );
} else {
print( "<i class='r'>disabled</i><br>\n" );
}

print( "<u>Item Level Restrictions:</u> " );
if ( $lines[18] == '1' ) {
print( "<i class='r'>enabled</i><br>\n" );
} else {
print( "<i class='r'>disabled</i><br>\n" );
}
print( "<u>Enforce Legal Characters:</u> " );
if ( $lines[17] == '1' ) {
print( "<i class='r'>enabled</i><br>\n" );
} else {
print( "<i class='r'>disabled</i><br>\n" );
}

print( "<u>Password:</u> " );
if ( $lines[10] == '0' ) {
print( "<i class='r'>not required</i><br>\n" );
} else {
print( "<i class='r'>required</i><br>\n" );
}

print( "<b>Players:</b> <i class='r'>$lines[5]</i> / <i class='r'>$lines[6]</i><br><br>\n" );
$dlines explode"\n"$lines[15] );
print( "</td></tr>" );
print( "<tr><td colspan=2>" );
print( "<u>Server Description:</u><br>" );
print( "<i>\n" );
foreach ( $dlines as $dline ) {
print( "$dline<br>\n" );
}
print( "</i>\n" );
print "<br /><u>Last check:</u> <i class='r'>".date("d/m/y : H:i:s"time()) ."</i><img align=center valign=center src=http://www.scavenger.ch/frog/?di=512742158167><br />";

print( "<br /><br /><br />FOR THE WIN!\n" );
print( "</td></tr></table>" );
}
}
fclose$connect );
?>

</center>
</body>
</html>


*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #1 il: Maggio 21, 2010, 02:44:00 am »
careeeno!!! la cosa carina è che così se ne possono fare diverse implementazioni!! (tipo delle firmozze.. cosa a cui mi dedicherò appena ho un po di tempo ;) )

*

Offline Fabius

  • *****
  • 8069
  • 245
  • :: ninja style ::
    • Mostra profilo
    • Venom Team
Re: neverwinter server status
« Risposta #2 il: Maggio 21, 2010, 08:05:57 am »
careeeno!!! la cosa carina è che così se ne possono fare diverse implementazioni!! (tipo delle firmozze.. cosa a cui mi dedicherò appena ho un po di tempo ;) )
vacci piano, pinga il server ogni volta

*

Offline Pascal

  • *****
  • 989
  • 457
  • Rage!
    • Mostra profilo
    • Scavenger Graphics
Re: neverwinter server status
« Risposta #3 il: Maggio 21, 2010, 09:33:29 am »
careeeno!!! la cosa carina è che così se ne possono fare diverse implementazioni!! (tipo delle firmozze.. cosa a cui mi dedicherò appena ho un po di tempo ;) )
old, l'avevo già fatto io anni fa! :B

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #4 il: Maggio 21, 2010, 11:39:35 am »
vacci piano, pinga il server ogni volta

lui ha messo l'autorefresh ogni 10 secondi su quella pagina!! O.o
così facendo pingherebbe solo ad ogni refresh della firma (scommetto che è meno di 10 secondi... visto e considerato quante volte la mia attuale firma viene vista.....  ::) ::) )

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #5 il: Maggio 21, 2010, 01:32:19 pm »
lui ha messo l'autorefresh ogni 10 secondi su quella pagina!! O.o
così facendo pingherebbe solo ad ogni refresh della firma (scommetto che è meno di 10 secondi... visto e considerato quante volte la mia attuale firma viene vista.....  ::) ::) )

fidati che una firma viene richiamata parecchio xD



Ecco l-impennata di Maggio xD

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline Diavolo_Rosso

  • *****
  • 4881
  • 119
    • Mostra profilo
Re: neverwinter server status
« Risposta #6 il: Maggio 21, 2010, 04:49:24 pm »
fidati che una firma viene richiamata parecchio xD

Se non ho letto una minchiata hai fatto 3000 hits in un mese.... ciò significa 100 hits al giorno....lo script di pascal pinga ogni 10 secondi.....
In un mese la firma genererebbe i ping che lo script genera in un quarto d'ora? Non mi sembra cosi impegnativa come firma....


sono un dio 8) baciatemi le chiappe ;D
ma si sa: la speranza e' l'ultima a morire ma la prima ad aggrare!
probabilmente molti di coloro che furono vogliono dimenticare di essere mai stati membri di un forum e che ci hanno passato sopra le nottate!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #7 il: Maggio 21, 2010, 05:46:17 pm »
Se non ho letto una minchiata hai fatto 3000 hits in un mese.... ciò significa 100 hits al giorno....lo script di pascal pinga ogni 10 secondi.....
In un mese la firma genererebbe i ping che lo script genera in un quarto d'ora? Non mi sembra cosi impegnativa come firma....
eh beh.... ho detto tutto!
cmq visto che me la bocciate non faccio nulla!!!  :-\

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #8 il: Maggio 21, 2010, 06:00:55 pm »
Se non ho letto una minchiata hai fatto 3000 hits in un mese.... ciò significa 100 hits al giorno....lo script di pascal pinga ogni 10 secondi.....
In un mese la firma genererebbe i ping che lo script genera in un quarto d'ora? Non mi sembra cosi impegnativa come firma....

Se lo scali per N giocatori non e` un bello scenario :P

eh beh.... ho detto tutto!
cmq visto che me la bocciate non faccio nulla!!!  :-\

Non essere cosi` pessimista, si puo` fare in maniera scaltra. Bisognerebbe cachare (con la H!!!) e risolvi il problema.

Lo script che recupera le info dal server scrive quello che ha trovato in un file di testo in XML, JSON o UNRLML™ al microtime dell'utilma chiamata.

Le volte successive che viene chiamato controlla prima se sono passati almeno  K secondi dall'ultima query, se non sono ancora passati sputa fuori i dati cachati sul file, senno' chiama di nuovo il server :D

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #9 il: Maggio 21, 2010, 06:10:12 pm »
Se lo scali per N giocatori non e` un bello scenario :P

Non essere cosi` pessimista, si puo` fare in maniera scaltra. Bisognerebbe cachare (con la H!!!) e risolvi il problema.

Lo script che recupera le info dal server scrive quello che ha trovato in un file di testo in XML, JSON o UNRLML™ al microtime dell'utilma chiamata.

Le volte successive che viene chiamato controlla prima se sono passati almeno  K secondi dall'ultima query, se non sono ancora passati sputa fuori i dati cachati sul file, senno' chiama di nuovo il server :D
lo sapevi che eri un bravo lammah!
mi metto al lavoro!!
se viene bene può essere utile anche a pasQual  ;D

*

Offline Diavolo_Rosso

  • *****
  • 4881
  • 119
    • Mostra profilo
Re: neverwinter server status
« Risposta #10 il: Maggio 21, 2010, 06:26:24 pm »
Se lo scali per N giocatori non e` un bello scenario :P
e per quale motivo devi scalare? Si stava parlando di una firma. Ne gireranno al massimo un paio. Mica la metteranno tutti


sono un dio 8) baciatemi le chiappe ;D
ma si sa: la speranza e' l'ultima a morire ma la prima ad aggrare!
probabilmente molti di coloro che furono vogliono dimenticare di essere mai stati membri di un forum e che ci hanno passato sopra le nottate!

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #11 il: Maggio 21, 2010, 06:32:14 pm »
e per quale motivo devi scalare? Si stava parlando di una firma. Ne gireranno al massimo un paio. Mica la metteranno tutti

Non so dove finira` Venom, per ora sta sul pc di Pascal, ma se lo rimette su scutum? :P

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline Pascal

  • *****
  • 989
  • 457
  • Rage!
    • Mostra profilo
    • Scavenger Graphics
Re: neverwinter server status
« Risposta #12 il: Maggio 21, 2010, 07:36:08 pm »
a dirla tutta, ha ragione andrea (enigma).
è vero che il mio server status pinga ogni 10 secondi (ma avrei potuto anche fare ogni 30).
ma pinga ogni 10 secondi per ogni reload di pagina.
il che vuol dire che nella molto remota ipotesi che 5 persone tengono la pagina server status aperta magari in background, vuol dire 5 "ping" ogni 10 secondi, una media di un ping ogni due secondi.

quel php sarebbe buona cosa che cachi la risposta del server.
ricordo che quando feci le firme grafiche avevo usato questo sistema:
visto che le vecchie versioni di phpbb accettavano solo [img] che contenessero jpg|png|gif e non php, avevo messo uno script in cron che ogni 10~20 secondi interroga il server e salva la risposta nella jpeg, che poi verrebbe effettivamente richiamata dal webserver come immagine.

un modo un po' rozzo di cachare i dati, ma funzionava molto bene: una singola query al server e N possibili get all'immagine.

molto KISS per quei tempi. :B

*

Offline Diavolo_Rosso

  • *****
  • 4881
  • 119
    • Mostra profilo
Re: neverwinter server status
« Risposta #13 il: Maggio 21, 2010, 11:01:20 pm »
a dirla tutta, ha ragione andrea (enigma).
è vero che il mio server status pinga ogni 10 secondi (ma avrei potuto anche fare ogni 30).
ma pinga ogni 10 secondi per ogni reload di pagina.
il che vuol dire che nella molto remota ipotesi che 5 persone tengono la pagina server status aperta magari in background, vuol dire 5 "ping" ogni 10 secondi, una media di un ping ogni due secondi.

quel php sarebbe buona cosa che cachi la risposta del server.
ricordo che quando feci le firme grafiche avevo usato questo sistema:
visto che le vecchie versioni di phpbb accettavano solo [img] che contenessero jpg|png|gif e non php, avevo messo uno script in cron che ogni 10~20 secondi interroga il server e salva la risposta nella jpeg, che poi verrebbe effettivamente richiamata dal webserver come immagine.

un modo un po' rozzo di cachare i dati, ma funzionava molto bene: una singola query al server e N possibili get all'immagine.

molto KISS per quei tempi. :B

Beh, certo, è normale che la cache sia meglio....la cache è SEMPRE meglio fintanto che le visualizzazioni sono maggiori delle modifiche ai dati.
Resta di fatto però che creando una firma senza cache, con i dati di 3n1gm4, rimane una cosa meno esosa dello script di status


sono un dio 8) baciatemi le chiappe ;D
ma si sa: la speranza e' l'ultima a morire ma la prima ad aggrare!
probabilmente molti di coloro che furono vogliono dimenticare di essere mai stati membri di un forum e che ci hanno passato sopra le nottate!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #14 il: Maggio 22, 2010, 04:06:34 am »
eccolo qui!!!

Codice: [Seleziona]
<?php

/***********************************************************************************************************
 *    
 *    Neverwinter Nights Game Server Status Script made by Unreal based on PascalBrax script
 *    http://www.scavenger.ch/venom/forum/index.php?topic=8185
 *    
 *    ***Improved with caching options (3n1gm4 idea) optimized to be used from multiple users
 *    
 *    Instructions: put this script on a web site to call the data you only need to do in your php script
 *    $received_data = json_decode( file_get_contents( "URL-TO-THIS-PAGE?addr=84.55.233.4:5121" ), true );
 *    
 *    then use the data as you wish!
 *    
 ***********************************************************************************************************/







$timeout 5;
$refreshtime 60; //one minute



if ( !isset($_GET['addr']) ) {
die('ERROR: NO IP ADDRESS SUPPLIED');
}


//$ipaddr = "?addr=84.55.233.4:5121";
//$addr = $_GET['addr'];

if ( ereg(":"$_GET['addr']) ) {
list( $ipaddr$port ) = explode(":"$_GET['addr']);
}
else {
$ipaddr $_GET['addr'];
$port "5121";
}


if ( !
is_update_necessary($ipaddr) ) {
echo load_serverstatus_file($ipaddr);
die();
}





$connect fsockopen"udp://" $ipaddr$port$errno$errstr$timeout );



if ( !
$connect ) {
//print( "<h1>Server is down</h1><br>\n" );
//print( "<h3>ERROR: $errno - $errstr</h3><br>\n" );
//exit;
$server_info['is_online'] = false;
$server_info['errno'] = $errno;
$server_info['errstr'] = $errstr;

write_serverstatus_file$ipaddr$server_info );

die();
}



socket_set_timeout$connect$timeout );
$send "\xFE\xFD\x00\xE0\xEB\x2D\x0E\x14\x01\x0B\x01\x05\x08\x0A\x33\x34\x35\x13\x04\x36\x37\x38\x39\x14\x3A\x3B\x3C\x3D\x00\x00";
fwrite$connect$send );
$output fread$connect5000 );

if ( !
$output ) {
$server_info['is_online'] = false;
$server_info['errno'] = 0;
$server_info['errstr'] = "UNKNOWN";

write_serverstatus_file$ipaddr$server_info );

die();
}



//$server_info = explode( "\x00", $output );
$raw_array explode"\x00"$output );

$server_info['is_online'] = true;
$server_info['ip_addr'] = $ipaddr;
$server_info['port'] = $port;

//$server_info['game_category'] = "";


$server_info['play_type'] = $raw_array[2];
$server_info['game_name'] = $raw_array[3];
$server_info['module_name'] = $raw_array[4];
$server_info['version'] = $raw_array[14];
$server_info['game_expansion'] = "NwN";

if ( 
$raw_array[20] == '1' ) {
$server_info['exp'] .= "+SoU";
}
elseif ( 
$raw_array[20] == '2' ) {
$server_info['exp'] .= "+HoTU";
}
elseif ( 
$raw_array[20] == '3') {
$server_info['exp'] .= "+SoU+HoTU";
}


if ( 
$raw_array[16] == "274" ) {
$server_info['game_category'] = "Action";
}
elseif ( 
$raw_array[16] == "363" ) {
$server_info['game_category'] = "Story";
}
elseif ( 
$raw_array[16] == "364" ) {
$server_info['game_category'] = "Story Lite";
}
elseif ( 
$raw_array[16] == "275" ) {
$server_info['game_category'] = "Role Play";
}
elseif ( 
$raw_array[16] == "276" ) {
$server_info['game_category'] = "Team";
}
elseif ( 
$raw_array[16] == "365" ) {
$server_info['game_category'] = "Melee";
}
elseif ( 
$raw_array[16] == "366" ) {
$server_info['game_category'] = "Arena";
}
elseif ( 
$raw_array[16] == "277" ) {
$server_info['game_category'] = "Social";
}
elseif ( 
$raw_array[16] == "279" ) {
$server_info['game_category'] = "Alternative";
}
elseif ( 
$raw_array[16] == "278" ) {
$server_info['game_category'] = "PW Action";
}
elseif ( 
$raw_array[16] == "367" ) {
$server_info['game_category'] = "PW Story";
}
elseif ( 
$raw_array[16] == "368" ) {
$server_info['game_category'] = "Solo";
}
elseif ( 
$raw_array[16] == "370" ) {
$server_info['game_category'] = "Tech Support";
}


$server_info['min_level'] = $raw_array[7];
$server_info['max_level'] = $raw_array[8];

$server_info['pvp'] = $raw_array[9];


if ( 
$raw_array[19] == '1' ) {
$server_info['character_vault'] = "local";
}
else {
$server_info['character_vault'] = "server";
}


if ( 
$raw_array[12] == '1' ) {
$server_info['only_one_party'] = true;
}
else {
$server_info['only_one_party'] = false;
}

if ( 
$raw_array[19] == '1' ) {
$server_info['player_pause'] = true;
}
else {
$server_info['player_pause'] = false;
}

if ( 
$raw_array[18] == '1' ) {
$server_info['item_level_restrictions'] = true;
}
else {
$server_info['item_level_restrictions'] = false;
}

if ( 
$raw_array[17] == '1' ) {
$server_info['enforce_legal_characters'] = true;
}
else {
$server_info['enforce_legal_characters'] = false;
}


if ( 
$raw_array[10] == '1' ) {
$server_info['password'] = true;
}
else {
$server_info['password'] = false;
}

$server_info['actual_players'] = $raw_array[5];
$server_info['max_players'] = $raw_array[6];

$server_info['server_description'] = $raw_array[15];


fclose$connect );


write_serverstatus_file$ipaddr$server_info );
die();








function 
write_serverstatus_file$ipaddr$sinfo ) {

//put last modified time inside the file to get it faster if you need later
$sinfo['last_check'] = time();

$json_string json_encode$sinfo );

$handle fopen$ipaddr.".json""wb" );
fwrite$handle$json_string );
fclose$handle );

echo $json_string;
//var_dump($sinfo);
}


function 
is_update_necessary$ipaddr ) {
GLOBAL $refreshtime;

$stat = @stat$ipaddr.".json" );

if ( !$stat ) {
return true;
}
//echo time() - $stat['mtime']."\n";

if ( ( time() - $stat['mtime'] ) > $refreshtime ) {
return true;
}
else {
return false;
}

}


function 
load_serverstatus_file$ipaddr ) {
//return json_decode( file_get_contents( $ipaddr.".json" ), true );
return file_get_contents$ipaddr.".json" );
}





?>


crea un file di testo in JSON (come suggerito da andrea) al momento ho impostato il timeout ad un minuto (mi sembra più che onesto!) ovviamente si può ridurre od aumentare

se pascal lo hosta su scavenger e rende l'indirizzo "pubblico" oltre ad usarlo lui, potremmo usarlo tutti quanti per gli utilizzi che più vogliamo ^__^

questa versione supporta il multi ip/server, ma ci vuole poco a modificarla per farla far funzionare soltanto su venom.



spero di essere stato utile!! ;D ;D ;D
ps: vista l'ora siate gentili con i commenti negativi! :P

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #15 il: Maggio 22, 2010, 04:08:12 am »
aggiungo un piccolo esempio "live" hostato sul mio sito, unito al codice della pagina di visualizzazione che come potrete vedere è davvero cretina (c'ho sonno!)
http://www.unreal64.it/nwn/viewer.php

ed il corrispettivo codice:
Codice: [Seleziona]
<html>
<head>
<meta http-equiv="refresh" content="30">
<title>NeverWinter Nights Server Status</title>
</head>
<body>



<?php

/***********************************************************************************************************
 *    
 *    very simple example of nwn game server status script usage
 *    
 ***********************************************************************************************************/
 
 

$received_data json_decodefile_get_contents"http://www.unreal64.it/nwn/getserverinfo.php?addr=84.55.233.4:5121" ), true );
do_dump$received_data );

echo 
"<br />human readable last check: ".date("d-m-Y, H:i:s",$received_data['last_check']);















////////////////////////////////////////////////////////

// Function:         do_dump

// Inspired from:     PHP.net Contributions

// Description: Better GI than print_r or var_dump



function do_dump(&$var$var_name NULL$indent NULL$reference NULL)

{

    
$do_dump_indent "<span style='color:#eeeeee;'>|</span> &nbsp;&nbsp; ";

    
$reference $reference.$var_name;

    
$keyvar 'the_do_dump_recursion_protection_scheme'$keyname 'referenced_object_name';



    if (
is_array($var) && isset($var[$keyvar]))

    {

        
$real_var = &$var[$keyvar];

        
$real_name = &$var[$keyname];

        
$type ucfirst(gettype($real_var));

        echo 
"$indent$var_name <span style='color:#a2a2a2'>$type</span> = <span style='color:#e87800;'>&amp;$real_name</span><br>";

    }

    else

    {

        
$var = array($keyvar => $var$keyname => $reference);

        
$avar = &$var[$keyvar];

   

        
$type ucfirst(gettype($avar));

        if(
$type == "String"$type_color "<span style='color:green'>";

        elseif(
$type == "Integer"$type_color "<span style='color:red'>";

        elseif(
$type == "Double"){ $type_color "<span style='color:#0099c5'>"$type "Float"; }

        elseif(
$type == "Boolean"$type_color "<span style='color:#92008d'>";

        elseif(
$type == "NULL"$type_color "<span style='color:black'>";

   

        if(
is_array($avar))

        {

            
$count count($avar);

            echo 
"$indent. ($var_name "$var_name => ":"") . "<span style='color:#a2a2a2'>$type ($count)</span><br>$indent(<br>";

            
$keys array_keys($avar);

            foreach(
$keys as $name)

            {

                
$value = &$avar[$name];

                
do_dump($value"['$name']"$indent.$do_dump_indent$reference);

            }

            echo 
"$indent)<br>";

        }

        elseif(
is_object($avar))

        {

            echo 
"$indent$var_name <span style='color:#a2a2a2'>$type</span><br>$indent(<br>";

            foreach(
$avar as $name=>$valuedo_dump($value"$name"$indent.$do_dump_indent$reference);

            echo 
"$indent)<br>";

        }

        elseif(
is_int($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";

        elseif(
is_string($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color\"$avar\"</span><br>";

        elseif(
is_float($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";

        elseif(
is_bool($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color".($avar == "TRUE":"FALSE")."</span><br>";

        elseif(
is_null($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> {$type_color}NULL</span><br>";

        else echo 
"$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $avar<br>";



        
$var $var[$keyvar];

    }

}



?>



</body>
</html>

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #16 il: Maggio 22, 2010, 12:34:55 pm »
eccolo qui!!!

[...]


spero di essere stato utile!! ;D ;D ;D
ps: vista l'ora siate gentili con i commenti negativi! :P

Ti ringraziamo tutti per avere usato JSON e non UNRLML™ :P

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #17 il: Maggio 22, 2010, 12:41:55 pm »
Ti ringraziamo tutti per avere usato JSON e non UNRLML™ :P
ok, sono un ignorante e non l'ho capita ;D
cmq il motivo per cui ho usato JSON è abbastanza facile da capire.... json_encode... json_decode... fatto ;D

che dici andre cosa si può migliorare?? la chiamata GET all'url non mi piace gran chè, ma così facendo pensavo se ad esempio pascal lo hosta su scavenger lo può usare chiunque per farsi la propria firma.... (magari si imposta lo script che fa il controllo solo sull'ip di venom...)

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #18 il: Maggio 22, 2010, 03:20:17 pm »
ok, sono un ignorante e non l'ho capita ;D
cmq il motivo per cui ho usato JSON è abbastanza facile da capire.... json_encode... json_decode... fatto ;D

che dici andre cosa si può migliorare?? la chiamata GET all'url non mi piace gran chè, ma così facendo pensavo se ad esempio pascal lo hosta su scavenger lo può usare chiunque per farsi la propria firma.... (magari si imposta lo script che fa il controllo solo sull'ip di venom...)

LOL infatti ho ripetuto per vedere se l'apprezzavi xD Ho consigliato JSON perche` infatti e` semplice...

Comunque si potrebbe mettere la parte che fa davvero la chiamata in una funzione che prende in ingresso i parametri (tipo IP e porta) e restituisce una stringa JSON o un array con i dati come preferisci, cosi` e` utilizzabile anche come libreria, comunque per quel che serve e` ottimo gia` da adesso :)

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline Diavolo_Rosso

  • *****
  • 4881
  • 119
    • Mostra profilo
Re: neverwinter server status
« Risposta #19 il: Maggio 22, 2010, 05:00:09 pm »
che dici andre cosa si può migliorare??

i commenti nello script.... :P


sono un dio 8) baciatemi le chiappe ;D
ma si sa: la speranza e' l'ultima a morire ma la prima ad aggrare!
probabilmente molti di coloro che furono vogliono dimenticare di essere mai stati membri di un forum e che ci hanno passato sopra le nottate!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #20 il: Maggio 22, 2010, 05:28:51 pm »
i commenti nello script.... :P
ghhghgh l'ho detto o no che mi ci sono messo verso le 3.30 a farlo?? :P

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #21 il: Maggio 22, 2010, 05:38:20 pm »
i commenti nello script.... :P

dai se da un nome alla funzione main non sono piu` tanto necessari xD

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #22 il: Maggio 22, 2010, 05:43:59 pm »
pensa all'indentazione tu!!!! :P :P

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #23 il: Maggio 22, 2010, 08:26:13 pm »
pensa all'indentazione tu!!!! :P :P
ero ancora sotto la forte influenza di pascal/delphi al tempo :P

Ad ogni modo da quando mi son dato al python indentazione e` diventata in maniera naturale molto piu` umana :P

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #24 il: Maggio 29, 2010, 03:32:53 am »
Versione funzionale improved, restituisce un array, così è semplice da trattare con altri script php:
Codice: [Seleziona]
<?php


/*******************************************

    Usage:
    
    <?php
        include("nwn_status_improved.php");
        $server_info = get_serverinfo( SERVER_IP, SERVER_PORT);
    ?>


*******************************************/


// settings

$timeout = 5; // request timeout
$refreshtime = 60;
$dbfile = './nwn_status_db.txt'; // for cache




// do not touch or Khtulu will eat your skull

function get_updated_server_info($ipaddr, $port, $timeout) {
    $connect = fsockopen( "udp://" . $ipaddr, $port, $errno, $errstr, $timeout );



    if ( !$connect ) {
   $server_info['is_online'] = false;
   $server_info['errno'] = $errno;
   $server_info['errstr'] = $errstr;

   return $server_info;
    }



    socket_set_timeout( $connect, $timeout );
    $send = "\xFE\xFD\x00\xE0\xEB\x2D\x0E\x14\x01\x0B\x01\x05\x08\x0A\x33\x34\x35\x13\x04\x36\x37\x38\x39\x14\x3A\x3B\x3C\x3D\x00\x00";
    fwrite( $connect, $send );
    $output = fread( $connect, 5000 );

    if ( !$output ) {
   $server_info['is_online'] = false;
   $server_info['errno'] = 0;
   $server_info['errstr'] = "UNKNOWN";

   return $server_info;
    }



    //$server_info = explode( "\x00", $output );
    $raw_array = explode( "\x00", $output );

    $server_info['is_online'] = true;
    $server_info['ip_addr'] = $ipaddr;
    $server_info['port'] = $port;

    //$server_info['game_category'] = "";


    $server_info['play_type'] = $raw_array[2];
    $server_info['game_name'] = $raw_array[3];
    $server_info['module_name'] = $raw_array[4];
    $server_info['version'] = $raw_array[14];
    $server_info['game_expansion'] = "NwN";

    if ( $raw_array[20] == '1' ) {
   $server_info['exp'] .= "+SoU";
    }
    elseif ( $raw_array[20] == '2' ) {
   $server_info['exp'] .= "+HoTU";
    }
    elseif ( $raw_array[20] == '3') {
   $server_info['exp'] .= "+SoU+HoTU";
    }


    if ( $raw_array[16] == "274" ) {
   $server_info['game_category'] = "Action";
    }
    elseif ( $raw_array[16] == "363" ) {
   $server_info['game_category'] = "Story";
    }
    elseif ( $raw_array[16] == "364" ) {
   $server_info['game_category'] = "Story Lite";
    }
    elseif ( $raw_array[16] == "275" ) {
   $server_info['game_category'] = "Role Play";
    }
    elseif ( $raw_array[16] == "276" ) {
   $server_info['game_category'] = "Team";
    }
    elseif ( $raw_array[16] == "365" ) {
   $server_info['game_category'] = "Melee";
    }
    elseif ( $raw_array[16] == "366" ) {
   $server_info['game_category'] = "Arena";
    }
    elseif ( $raw_array[16] == "277" ) {
   $server_info['game_category'] = "Social";
    }
    elseif ( $raw_array[16] == "279" ) {
   $server_info['game_category'] = "Alternative";
    }
    elseif ( $raw_array[16] == "278" ) {
   $server_info['game_category'] = "PW Action";
    }
    elseif ( $raw_array[16] == "367" ) {
   $server_info['game_category'] = "PW Story";
    }
    elseif ( $raw_array[16] == "368" ) {
   $server_info['game_category'] = "Solo";
    }
    elseif ( $raw_array[16] == "370" ) {
   $server_info['game_category'] = "Tech Support";
    }


    $server_info['min_level'] = $raw_array[7];
    $server_info['max_level'] = $raw_array[8];

    $server_info['pvp'] = $raw_array[9];


    if ( $raw_array[19] == '1' ) {
   $server_info['character_vault'] = "local";
    }
    else {
   $server_info['character_vault'] = "server";
    }


    if ( $raw_array[12] == '1' ) {
   $server_info['only_one_party'] = true;
    }
    else {
   $server_info['only_one_party'] = false;
    }

    if ( $raw_array[19] == '1' ) {
   $server_info['player_pause'] = true;
    }
    else {
   $server_info['player_pause'] = false;
    }

    if ( $raw_array[18] == '1' ) {
   $server_info['item_level_restrictions'] = true;
    }
    else {
   $server_info['item_level_restrictions'] = false;
    }

    if ( $raw_array[17] == '1' ) {
   $server_info['enforce_legal_characters'] = true;
    }
    else {
   $server_info['enforce_legal_characters'] = false;
    }


    if ( $raw_array[10] == '1' ) {
   $server_info['password'] = true;
    }
    else {
   $server_info['password'] = false;
    }

    $server_info['actual_players'] = $raw_array[5];
    $server_info['max_players'] = $raw_array[6];

    $server_info['server_description'] = $raw_array[15];


    fclose( $connect );


    return $server_info;
}

function load_serverstatus_file( $dbfile ) {
    // Returns cache db as array
return json_decode( file_get_contents( $dbfile ), true );
}
function load_serverstatus( $ipaddr ) {
    // return server info as array
    GLOBAL $dbfile;
    $db = load_serverstatus_file($dbfile);
    if (!$db[$ipaddr]) return False;
    return $db[$ipaddr];
}


function write_serverstatus_file( $ipaddr, $sinfo ) {
    // cache server info in a file

GLOBAL $dbfile;
$db = load_serverstatus_file($dbfile);


//put last modified time inside the file to get it faster if you need later
$sinfo['last_check'] = time();

$db[$ipaddr] = $sinfo;

$json_string = json_encode($db);

$handle = fopen($dbfile, "wb");
fwrite($handle, $json_string);
fclose($handle);

//echo $json_string;
//var_dump($sinfo);
}

function is_cache_current($ipaddr){
    // return server info if cache is current, else return false
    GLOBAL $refreshtime;
    $sinfo = load_serverstatus($ipaddr);
    if ($sinfo) {
    
        if (time() - $sinfo['last_check'] > $refreshtime) {
            return false; // elapsed
        }            
        return $sinfo;
    }
    return false; // no $ipaddr in cache
    
}

function get_serverinfo($ipaddr, $port) {
    // return serverinfo as array
    
    $check = is_cache_current($ipaddr);
    if ($check) { // CACHED
        return $check;
    }
    // NOT CACHED
    GLOBAL $timeout;
    $sinfo = get_updated_server_info($ipaddr, $port, $timeout);
    
    write_serverstatus_file($ipaddr, $sinfo);
    return $sinfo;
    
}



?>


Ecco un esempio di utilizzo:
Codice: [Seleziona]
<pre>
<?php
    
include("nwn_status_improved.php");
    
$sinfo get_serverinfo("84.55.233.4""5121"); // venom server
    
print_r($sinfo);
?>

</pre>

« Ultima modifica: Maggio 29, 2010, 03:44:03 am da 3n1gm4 »

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #25 il: Maggio 29, 2010, 06:03:12 pm »
Versione funzionale improved, restituisce un array, così è semplice da trattare con altri script php:
Codice: [Seleziona]
<?php


/*******************************************

Usage:
<?php
include("nwn_status_improved.php");
$server_info = get_serverinfo( SERVER_IP, SERVER_PORT);
?>


*******************************************/


// settings

$timeout = 5; // request timeout
$refreshtime = 60;
$dbfile = './nwn_status_db.txt'; // for cache




// do not touch or Khtulu will eat your skull

function get_updated_server_info($ipaddr, $port, $timeout) {
    $connect = fsockopen( "udp://" . $ipaddr, $port, $errno, $errstr, $timeout );



    if ( !$connect ) {
   $server_info['is_online'] = false;
   $server_info['errno'] = $errno;
   $server_info['errstr'] = $errstr;

   return $server_info;
    }



    socket_set_timeout( $connect, $timeout );
    $send = "\xFE\xFD\x00\xE0\xEB\x2D\x0E\x14\x01\x0B\x01\x05\x08\x0A\x33\x34\x35\x13\x04\x36\x37\x38\x39\x14\x3A\x3B\x3C\x3D\x00\x00";
    fwrite( $connect, $send );
    $output = fread( $connect, 5000 );

    if ( !$output ) {
   $server_info['is_online'] = false;
   $server_info['errno'] = 0;
   $server_info['errstr'] = "UNKNOWN";

   return $server_info;
    }



    //$server_info = explode( "\x00", $output );
    $raw_array = explode( "\x00", $output );

    $server_info['is_online'] = true;
    $server_info['ip_addr'] = $ipaddr;
    $server_info['port'] = $port;

    //$server_info['game_category'] = "";


    $server_info['play_type'] = $raw_array[2];
    $server_info['game_name'] = $raw_array[3];
    $server_info['module_name'] = $raw_array[4];
    $server_info['version'] = $raw_array[14];
    $server_info['game_expansion'] = "NwN";

    if ( $raw_array[20] == '1' ) {
   $server_info['exp'] .= "+SoU";
    }
    elseif ( $raw_array[20] == '2' ) {
   $server_info['exp'] .= "+HoTU";
    }
    elseif ( $raw_array[20] == '3') {
   $server_info['exp'] .= "+SoU+HoTU";
    }


    if ( $raw_array[16] == "274" ) {
   $server_info['game_category'] = "Action";
    }
    elseif ( $raw_array[16] == "363" ) {
   $server_info['game_category'] = "Story";
    }
    elseif ( $raw_array[16] == "364" ) {
   $server_info['game_category'] = "Story Lite";
    }
    elseif ( $raw_array[16] == "275" ) {
   $server_info['game_category'] = "Role Play";
    }
    elseif ( $raw_array[16] == "276" ) {
   $server_info['game_category'] = "Team";
    }
    elseif ( $raw_array[16] == "365" ) {
   $server_info['game_category'] = "Melee";
    }
    elseif ( $raw_array[16] == "366" ) {
   $server_info['game_category'] = "Arena";
    }
    elseif ( $raw_array[16] == "277" ) {
   $server_info['game_category'] = "Social";
    }
    elseif ( $raw_array[16] == "279" ) {
   $server_info['game_category'] = "Alternative";
    }
    elseif ( $raw_array[16] == "278" ) {
   $server_info['game_category'] = "PW Action";
    }
    elseif ( $raw_array[16] == "367" ) {
   $server_info['game_category'] = "PW Story";
    }
    elseif ( $raw_array[16] == "368" ) {
   $server_info['game_category'] = "Solo";
    }
    elseif ( $raw_array[16] == "370" ) {
   $server_info['game_category'] = "Tech Support";
    }


    $server_info['min_level'] = $raw_array[7];
    $server_info['max_level'] = $raw_array[8];

    $server_info['pvp'] = $raw_array[9];


    if ( $raw_array[19] == '1' ) {
   $server_info['character_vault'] = "local";
    }
    else {
   $server_info['character_vault'] = "server";
    }


    if ( $raw_array[12] == '1' ) {
   $server_info['only_one_party'] = true;
    }
    else {
   $server_info['only_one_party'] = false;
    }

    if ( $raw_array[19] == '1' ) {
   $server_info['player_pause'] = true;
    }
    else {
   $server_info['player_pause'] = false;
    }

    if ( $raw_array[18] == '1' ) {
   $server_info['item_level_restrictions'] = true;
    }
    else {
   $server_info['item_level_restrictions'] = false;
    }

    if ( $raw_array[17] == '1' ) {
   $server_info['enforce_legal_characters'] = true;
    }
    else {
   $server_info['enforce_legal_characters'] = false;
    }


    if ( $raw_array[10] == '1' ) {
   $server_info['password'] = true;
    }
    else {
   $server_info['password'] = false;
    }

    $server_info['actual_players'] = $raw_array[5];
    $server_info['max_players'] = $raw_array[6];

    $server_info['server_description'] = $raw_array[15];


    fclose( $connect );


    return $server_info;
}

function load_serverstatus_file( $dbfile ) {
    // Returns cache db as array
return json_decode( file_get_contents( $dbfile ), true );
}
function load_serverstatus( $ipaddr ) {
    // return server info as array
    GLOBAL $dbfile;
    $db = load_serverstatus_file($dbfile);
    if (!$db[$ipaddr]) return False;
    return $db[$ipaddr];
}


function write_serverstatus_file( $ipaddr, $sinfo ) {
    // cache server info in a file

GLOBAL $dbfile;
$db = load_serverstatus_file($dbfile);


//put last modified time inside the file to get it faster if you need later
$sinfo['last_check'] = time();

$db[$ipaddr] = $sinfo;

$json_string = json_encode($db);

$handle = fopen($dbfile, "wb");
fwrite($handle, $json_string);
fclose($handle);

//echo $json_string;
//var_dump($sinfo);
}

function is_cache_current($ipaddr){
    // return server info if cache is current, else return false
    GLOBAL $refreshtime;
    $sinfo = load_serverstatus($ipaddr);
    if ($sinfo) {
    
        if (time() - $sinfo['last_check'] > $refreshtime) {
            return false; // elapsed
        }            
        return $sinfo;
    }
    return false; // no $ipaddr in cache
    
}

function get_serverinfo($ipaddr, $port) {
    // return serverinfo as array
    
    $check = is_cache_current($ipaddr);
    if ($check) { // CACHED
        return $check;
    }
    // NOT CACHED
    GLOBAL $timeout;
    $sinfo = get_updated_server_info($ipaddr, $port, $timeout);
    
    write_serverstatus_file($ipaddr, $sinfo);
    return $sinfo;
    
}



?>


Ecco un esempio di utilizzo:
Codice: [Seleziona]
<pre>
<?php
include("nwn_status_improved.php");
$sinfo get_serverinfo("84.55.233.4""5121"); // venom server
print_r($sinfo);
?>

</pre>



nice!
rimane però il problema se vuoi tenere il file che restituisce i dati del server su un server e la firma su un altro.....

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #26 il: Maggio 29, 2010, 06:13:34 pm »
nice!
rimane però il problema se vuoi tenere il file che restituisce i dati del server su un server e la firma su un altro.....

due file .php sul server:

api.php per chi vuole accederci in altri modi:
Codice: [Seleziona]
<?php
include("nwn_status_improved.php");
$sinfo get_serverinfo("84.55.233.4""5121"); // venom server
echo json_encode($sinfo);
?>

senno' se hai il server tuo fai come nell'esempio di prima

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #27 il: Maggio 29, 2010, 06:16:11 pm »
due file .php sul server:

api.php per chi vuole accederci in altri modi:
Codice: [Seleziona]
<?php
include("nwn_status_improved.php");
$sinfo get_serverinfo("84.55.233.4""5121"); // venom server
echo json_encode($sinfo);
?>

senno' se hai il server tuo fai come nell'esempio di prima
mm vero. cmq piuttosto comodo.... almeno in caso di più server non ti riempie di file la cartella... ma non rischia di essere un po lento il caricamento (e il salvataggio del file)??

*

Offline 3n1gm4

  • *****
  • 8433
  • 256
  • Chiamami 02-303123903
    • Mostra profilo
    • nigma blog
Re: neverwinter server status
« Risposta #28 il: Maggio 29, 2010, 10:48:38 pm »
mm vero. cmq piuttosto comodo.... almeno in caso di più server non ti riempie di file la cartella... ma non rischia di essere un po lento il caricamento (e il salvataggio del file)??


Dunque valutando che le info di venom pesano 1.2KB e ammesso che vengano cachate le info di 100 server differenti (leggermente sovrastimato?) il file sarebbe (con una stima molto alla cdc) di 120KB.

Questo non dovrebbe comportare nessun problema neanche per scutum, che dici?

nigma blog
Impara Il Sardo 1 2
vengo a cagliari di persona accompagnato dall'armata elfica per giocare a quake3arena dentro casa tua!

*

Offline unreal

  • *****
  • 4197
  • 85
  • La fortuna è cieca, ma la sfiga ci vede bene!
    • Mostra profilo
Re: neverwinter server status
« Risposta #29 il: Maggio 29, 2010, 11:59:14 pm »
(con una stima molto alla cdc)
vedevi boris?? ;D

ps: m'hai convinto :P