| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
HL SSraspi 04.05.02 12:10 Half-Life -serverin statistiikat
<?php /* Imutin HL SDK:n ja tein tämän sen pohjalta. En anna mitään tukea tälle skriptille. -=|[ version 0.5b2 ]|=- todo: - tarkistetaan onko serveri elossa - ping - pelaajien sorttaus nimen, fraggien ja ajan mukaan - bugikorjauksia - optimointia - formi, johon voi itse kirjoitella osoitteen - .. Half-Life (c) (r) (tm) Valve & Sierra pekkajarvinen@kolumbus.fi */ // if (!isset($host) && !isset($port) && !is_numeric($port) && $port != "" && $host != "") { // asetukset: $use_form = 0; // 1/0 (on/off) käytetäänkö formia, mihin voi kirjoittaa serverin $host = "tfc2.hl.peliportti.net"; // serverin osoite (IP:kin käy) $port = "27015"; // portti // $sort_default = "frags"; // frags/time/name [todo] $show_rules = 0; // 0/1 näytetäänkö säännöt? $main_table_settings = 'border="0" cellspacing="0" cellpadding="1" width="*" align="center"'; $table_settings = 'border="0" cellspacing="0" cellpadding="2" align="center"'; //} $mods = array( "dod" => ", Day of Defeat", "cstrike" => ", Counter-Strike", "tfc" => ", Team Fortress Classic", "gearbox" => ", Opposing Force", "valve" => "" ); /* ****************************************************************************************************************************************************** */ /* ****************************************************************************************************************************************************** */ /* ****************************************************************************************************************************************************** */ function getnull ($src) { $data = ""; // alustetaan $out = ""; // alustetaan while($data != "\0") { // luetaan kunnes tulee \0 (null) $data = fread($src, 1); // luetaan yksi tavu $out .= $data; } return substr($out, 0, -1); // \0 (NULL, NIL, NUL, ..) pois lopusta } /* ****************************************************************************************************************************************************** */ function hlsend ($udp, $str) { // lähettää serverille tauhkaa fwrite($udp, "\377\377\377\377${str}\0\0"); // tunketaan roskaa serverille fread($udp, 4); // serveri palauttaa turhaa roskaa (4 x 0xFF) } /* ****************************************************************************************************************************************************** */ $fp = fsockopen("udp://${host}", $port, $errno, $errstr); // avataan UDP:tä käyttävä socketti if (!$fp) { echo "ERROR: $errno - $errstr<br>\n"; // virhe!11 } else { /* ****************************************************************************************************************************************************** */ // PING hlsend($fp, "ping"); // lähetetään serverille $hl["ping_j"] = fread($fp, 1); // 'j' if ($hl["ping_j"] != "j") {die ("ping ei toimi");} /* ****************************************************************************************************************************************************** */ /* // INFO - vanha protokolla hlsend($fp, "info"); fread($fp, 1); // 'c' $hl["address"] = getnull($fp); $hl["name"] = getnull($fp); $hl["map"] = getnull($fp); $hl["dir"] = getnull($fp); $hl["description"] = getnull($fp); $hl["current_players"] = ord(fread($fp, 1)); $hl["max_players"] = ord(fread($fp, 1)); $hl["protocol"] = ord(fread($fp, 1)); */ /* ****************************************************************************************************************************************************** */ // DETAILS - uusi protokolla hlsend($fp, "details"); // lähetetään serverille fread($fp, 2); // roskaa $hl["address"] = getnull($fp); // IP osoite $thost = split(":", $hl["address"]); // temp $hl["hosti"] = gethostbyaddr($thost[0]); // hosti unset($thost); $hl["name"] = getnull($fp); // nimi $hl["map"] = getnull($fp); // kenttä $hl["dir"] = getnull($fp); // hakemisto, esim. cstrike foreach ($mods as $modi => $modinimi) { if ($hl["dir"] == $modi) {$hl["dir2mod"] = $modinimi;} if (!isset($hl["dir2mod"])) {$hl["dir2mod"] = "";} } $hl["description"] = getnull($fp); // kuvaus $hl["current_players"] = ord(fread($fp, 1)); // monta pelaajaa pelaamassa $hl["max_players"] = ord(fread($fp, 1)); // maksimimäärä pelaajia $hl["protocol"] = ord(fread($fp, 1)); // protokollan versio $hl["type"] = fread($fp, 1); // l/d (listen/dedicated) $hl["os"] = fread($fp, 1); // l/w (linux/windows) $hl["pass"] = ord(fread($fp, 1)); // 0/1 $hl["mod"] = ord(fread($fp, 1)); // 0/1 if ($hl["os"] == "w") {$hl["os"] = "Windows";} else {$hl["os"] = "Linux";} if ($hl["type"] == "d") {$hl["type"] = "Dedicated";} else {$hl["type"] = "Listen";} if ($hl["pass"] == 1) {$hl["pass"] = "Yes";} else {$hl["pass"] = "No";} if ($hl["mod"] == 1) { $hl["mod_info"] = getnull($fp); // info www site $hl["mod_get"] = getnull($fp); // ftp site $hl["mod_version"] = unpack("L", fread($fp, 4)); // modin versio $hl["mod_size"] = unpack("l", fread($fp, 4)); // modin koko $hl["mod_sso"] = ord(fread($fp, 1)); // server side only? 0/1 $hl["mod_csd"] = ord(fread($fp, 1)); // requires custom client side .dll? 0/1 if ($hl["mod_sso"] == 1) {$hl["mod_sso"] = "Yes";} else {$hl["mod_sso"] = "No";} if ($hl["mod_csd"] == 1) {$hl["mod_csd"] = "Yes";} else {$hl["mod_csd"] = "No";} $hl["mod"] = "Yes"; } else { $hl["mod_info"] = ""; $hl["mod_get"] = ""; $hl["mod_version"] = ""; $hl["mod_size"] = ""; $hl["mod_sso"] = ""; $hl["mod_csd"] = ""; $hl["mod"] = "None"; } /* ****************************************************************************************************************************************************** */ // PLAYERS hlsend($fp, "players"); // lähetetään serverille fread($fp, 3); // roskaa + 'D' $hl["current_players"] = ord(fread($fp, 1)); // monta pelaajaa if ($hl["current_players"] > 0) { for($i = 0; $i < $hl["current_players"]; $i++) { fread($fp, 1); // pelaajan numero, turha tieto $plyr = htmlentities(getnull($fp)); // pelaajan nimi $frag = unpack("L", fread($fp, 4)); // fragit $time = unpack("f", fread($fp, 4)); // aika (float) $aika = mktime(0, 0, $time[""]); $aika = date("H:i:s", $aika); // tungetaan tiedot taulukkoon: $hl_players[] = array( "frags" => $frag[""], "name" => $plyr, "time" => $aika ); unset($plyr); unset($frag); unset($time); unset($aika); } } /* ****************************************************************************************************************************************************** */ if ($show_rules == 1) { // RULES hlsend($fp, "rules"); // lähetetään serverille fread($fp, 1); // 'e', turha(?) $hl["number_of_rules"] = unpack("s", fread($fp, 2)); // kuinka monta sääntöä if ($hl["number_of_rules"][""] > 0) { for($i = 0; $i < $hl["number_of_rules"][""]; $i++) { $hl["rule_name"][] = getnull($fp); // säännön nimi $hl["rule_value"][] = getnull($fp); // säännön asetus } } } /* ****************************************************************************************************************************************************** */ fclose($fp); // suljetaan yhteys } /* ****************************************************************************************************************************************************** */ /* ****************************************************************************************************************************************************** */ /* ****************************************************************************************************************************************************** */ ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Half-Life Server Statistics PHP by raspi 2002</title> <style type="text/css"> <!-- /* CSS */ body { background-color: #204060; margin: 0; padding: 0; } a:link { color: #E0E0E0; } a:visited { color: #E0E0E0; } a:hover { color: #FFFFFF; } a:active { color: #E0E0E0; } td { /* border: 0px solid #000000; */ /* border-right: 1px solid; */ background-color: #406080; } tr { border-width:0px; background-color: #FFFFFF; } table { border-width: 0px; background-color: #2020F0; } td.eka { background-color: #406080; } td.toka { background-color: #305070; } table.paatable { border-width:0px; background-color: #000000; } tr.paatr { border-width:0px; background-color: #808080; } td.paatd { border-width:0px; background-color: #000000; } div.keskelle { text-align: center; } --> </style> </head> <body> <br> <div align="center"> <!-- Main table --> <table class="paatable" <?php echo $main_table_settings;?>> <?php // todo.. if ($use_form == 1) { echo "<tr class=\"paatr\">\n"; echo "<td class=\"paatd\">\n"; echo " <!-- Form -->\n"; echo " <table $table_settings;>\n"; echo " <tr>\n"; echo " <td>\n"; echo " <h3>Get information:</h3>\n"; echo " </td>\n"; echo " </tr>"; echo " <tr>\n"; echo " <td>\n"; echo " <form>\n"; echo " Host:\n"; echo " <input type=\"text\" name=\"host\" size=\"30\" value=\"$host\">\n"; echo " Port:\n"; echo " <input type=\"text\" name=\"port\" size=\"5\" value=\"$port\">\n"; echo " <input type=\"submit\" value=\" ok \">\n"; echo " </form>\n"; echo " </td>\n"; echo " </tr>\n"; echo " </table>\n"; echo "</td>\n"; echo "</tr>\n"; } ?> <tr class="paatr"> <td class="paatd"> <!-- Server information --> <table <?php echo $table_settings;?>> <tr><td colspan="2"><h3>Server information</h3></tr> <tr><td><b>Address:</b></td><td><?php echo "{$hl["hosti"]} ({$hl["address"]})";?></td></tr> <tr><td><b>Name:</b></td><td><?php echo $hl["name"];?></td></tr> <tr><td><b>Description:</b></td><td><?php echo $hl["description"];?></td></tr> <tr><td><b>Mod:</b></td><td><?php echo "{$hl["mod"]} {$hl["dir2mod"]}";?></td></tr> <tr><td><b>Map:</b></td><td><?php echo $hl["map"];?></td></tr> <tr><td><b>Number of players:</b></td><td><?php echo "{$hl["current_players"]}/{$hl["max_players"]}";?></td></tr> <tr><td><b>Password:</b></td><td><?php echo $hl["pass"];?></td></tr> </table> </td> </tr> <tr class="paatr"> <td class="paatd"> <?php // listataan pelaajat if ($hl["current_players"] > 0) { echo "<!-- Players -->\n"; echo "<table $table_settings>\n"; echo " <tr><td colspan=\"3\"><h3>Players</h3></td></tr>\n"; echo " <tr>\n"; echo " <td><b><a href=\"?sortby=name\">Name</a></b></td>\n"; echo " <td><b><a href=\"?sortby=time\">Time</a></b></td>\n"; echo " <td><b><a href=\"?sortby=frags\">Frags</a></b></td>\n"; echo " </tr>\n"; for ($i = 0; $i < $hl["current_players"]; $i++) { if ($i % 2) { echo " <tr>\n"; echo " <td class=\"eka\">{$hl_players[$i]["name"]}</td>\n"; echo " <td class=\"eka\">{$hl_players[$i]["time"]}</td>\n"; echo " <td class=\"eka\"><b>{$hl_players[$i]["frags"]}</b></td>\n"; echo " </tr>\n"; } else { echo " <tr>\n"; echo " <td class=\"toka\">{$hl_players[$i]["name"]}</td>\n"; echo " <td class=\"toka\">{$hl_players[$i]["time"]}</td>\n"; echo " <td class=\"toka\"><b>{$hl_players[$i]["frags"]}</b></td>\n"; echo " </tr>\n"; } } } elseif ($hl["current_players"] == 0) { echo "<!-- Players -->\n"; echo "<table $table_settings>\n"; echo " <tr><td colspan=\"3\"><h3><b>NO Players</b></h3></td></tr>\n"; } ?> </table> </td> </tr> <?php if ($show_rules == 1) { echo "<tr class=\"paatr\">\n"; echo "<td class=\"paatd\">\n"; echo "<!-- Rules -->\n"; echo "<table $table_settings;>\n"; echo " <tr><td colspan=\"2\"><h3>Rules</h3></td></tr>\n"; echo " <tr>\n"; echo " <td><b>Rule name</b></td>\n"; echo " <td><b>Rule setting</b></td>\n"; echo " </tr>\n"; if ($hl["number_of_rules"][""] > 0) { for($i = 0; $i < $hl["number_of_rules"][""]; $i++) { if ($i % 2) { echo " <tr>\n"; echo " <td class=\"eka\">{$hl["rule_name"][$i]}</td>\n"; echo " <td class=\"eka\">{$hl["rule_value"][$i]}</td>\n"; echo " </tr>\n"; } else { echo " <tr>\n"; echo " <td class=\"toka\">{$hl["rule_name"][$i]}</td>\n"; echo " <td class=\"toka\">{$hl["rule_value"][$i]}</td>\n"; echo " </tr>\n"; } } } echo "</table>\n"; echo "</td>\n"; echo "</tr>\n"; } ?> <tr class="paatr"> <td class="paatd"> <table <?php echo $table_settings;?>> <tr> <td> by <a href="mailto:pekkajarvinen@kolumbus.fi">raspi</a> 2002<br> </td> </tr> </table> </td> </tr> </table> </div> </body> </html> empty 16:31 3.9.02 tein tuosta joskus aikoinaan sellaisen version joka hakee monen serverin tiedot: http://www.ahjteam.com/hl/hl.php sorsa: http://www.ahjteam.com/hl/sorsa.php Rap1ds 00:52 26.10.02 Mitenköhän sais vielä näkyviin Fragien lisäks pelaajien kuolemat? empty 16:16 19.5.03 jotkut ne osaa :< empty 05:22 25.6.03 aivan sairaan kauan kestää haku :E SluvE 22:49 19.3.05 VERC Collectivesta löytyy Half-Life-servereiden tietojen hakemisesta lisää. |
![]() Haku
|