Php softa joka hakee Qstat:sta hl pohjaisen serverin tiedot.
<?php /* Pieni ohjelma jolla voi hakea helposti hl pohjaisen serverin tiedot. Tarvitaan: shell_exec(); käyttö, joka taitaa olla valitettavasti harvassa :( Qstatsi tarvitaan myös sen saa osoitteesta http://www.qstat.org/qstatdl.html Linux mielellään en ole testannut windows lla. Asennusohjeet Qstatsista: http://poksi.net:1234/~cstrike/qstat.txt Tämänhän teki HiFi yks irc kaveri :] Esimerkki scriptistä: http://bot-finland.com/~kurre/hl.php voit myös perään lisätä suoraan sen ip n ja portin jonka haluat esim: http://bot-finland.com/~kurre/hl.php?ip=194.100.214.134:27015 jos jätät portin pois scripti laittaa vakio portin. Miksi tein ja mihin voi käyttää? HiFi kait tämän idean keksi ja sillä oli joku ongelma joten se sitten "haastoi" minutkin tämän kait se hifikin sitten teki sen en tiedä, mutta omani on simppeli :) Tietysti tuo väri on kyllä hiukan turha, mutta olkoot nyt siinä... Noh itse aattelin ainakin vaikka hakea tietoa muile sivuille tästä esim niille joille shell_exec tai qstat ei ole mahdollista - SotaOrava */ # Asetukset # qstatsin kansio $qstat = "qstat25c"; # # virhe viesti jos jotain odottamatonta tapahtuu $errori = "Serveriin ei saatu yhteyttä."; # # defaultti serverin ip, jos ip tä ei määritellä erikseen $dip = "194.100.214.134:27015"; # Koodi alkaa # Tarkistetaan onko ip tä asetettu, jos ei niin laitetaan defaultti if(!isset($ip)) { $ip = $dip; } # Ajetaan shell komento ja laitetaan sen palauttamat arvot $sisalto muuttujaan. $sisalto = shell_exec("/home/kurre/$qstat/qstat -hls $ip"); # Otetaan rivit sisallon soluihin, että se mitä tarvitaan on solussa [1] $sisalto = explode("\n",$sisalto); # Siistitään kaikki paskat pois $sisalto = ereg_replace(" / ","/",$sisalto[1]); $sisalto = ereg_replace("/ ", "/",$sisalto); $sisalto = ereg_replace(" /", "/",$sisalto); # Otetaan kaikki valien valissa olevat tiedot tai noh en osaa selittää :] $sisalto = explode(" ",$sisalto); # Turhat välit veke ja laitetaan tietomuuttujiin asia tekstit foreach($sisalto as $asia) { if(empty($asia)) echo ""; else { $tieto[] = $asia; } } # Tungetaan serverin nimen sanat samaksi muuttujaksi if(count($tieto) > 5) { for($i = 5; $i < count($tieto); $i++) { $serverinnimi .= "$tieto[$i] "; } } # Tarkistetaan onko pelaaja määrä täys vai ei ja laitetaan väri sen mukaan $pmaara = explode("/", $tieto[1]); if($pmaara[0] >= $pmaara[1]) $pvari = red; else { $pvari = green; } # Jaetaan ip ja portti erikseen $ipjaportti = explode(":", $tieto[0]); $ipserveri = $ipjaportti[0]; $porttiserveri = $ipjaportti[1]; # Jos tulee erroria niin tulostetaan errori teksti muussa tapauksessa tulostetaan asiat. if($tieto[1] == "ERROR" || $tieto[1] == "DOWN" || $tieto[2] == "response") echo "<font color=red><b>$errori</b></font>"; else { echo "<b>Serverin ip/dns:</b> $ipserveri <br>"; echo "<b>Serverin portti:</b> $porttiserveri<br>"; echo "<b>Pelaajat:</b> <font color=$pvari>$tieto[1]</font> <br>"; echo "<b>Mappi:</b> $tieto[2]</b> <br>"; echo "<b>Modi:</b> $tieto[4]</b> <br>"; echo "<b>Serverinnimi:</b> $serverinnimi</b>"; } ?>
Turha kohta:
$ipserveri = $ipjaportti[0]; $porttiserveri = $ipjaportti[1];
Noita ei enää muuttujiin tarvitse ottaa, mutta kun koodaa noin 3 aikaan yöllä ei ajattele tollasia :)
Joo ja sisennykset puuttuu kokonaan.
On sentään jonkin verran kommentteja koodissa. Kai tästä voi olla jollekkin hyötyä.. Eikös tätäkin voisi socketeilla koittaa väsätä ettei tarvii tota qstat hommelia. Tulisi vähän haastetta mukaan :)
Jep, noh siis tein picolla ja normaalisti käytän tuota Ultraedit 32:sta, joka tekee sisennykset itse :) Voisihan sen soceteilla hoitaa ja itse yhden tehnytkin, mutta se "lagaa" todella pahasti... tämä on nopeaa ja toimivaa :) Ja nythän muut voi hakea vaikka tuosta osotteesta haluamansa serverin tiedot
edittiä koodiin:
korvaa:
if($tieto[1] == "ERROR")
tällä rivillä:
if($tieto[1] == "ERROR" || $tieto[1] == "DOWN" || $tieto[2] == "response")
Tämä rivi siis tekee sen että jos server on DOWN niin se tulostaa errorin, jos näin ei olisi se tulostaisi pelaajien kohdalle "DOWN".
SotaOrava, mene omaan profiiliisi, omat koodivinkit sieltä niin pääset muokkaaman kuntoon
Ok, ja kiitos :)
Onko tässä tuo "HL" sama kuin Half-Life?
On. HL = Half-Life :)
no ei se "lagaa" todella pahasti jos sen osaa tehdä oikein
Noh mikä esim mureassa on niin todellakin lagaa...
Aihe on jo aika vanha, joten et voi enää vastata siihen.