Kirjautuminen

Haku

Tehtävät

Kilpailu

Algoritmikisa
Putka Open 2020 -kisan
2. kierros päättyy klo 23:00!

Keskustelu: Koodit näytille: PHP: HL serverin tiedot Qstat lla

Sivu 1 / 1

Sivun loppuun

SotaOrava [07.06.2003 23:34:47]

#

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>";

}
?>

SotaOrava [07.06.2003 23:35:52]

#

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 :)

odys [08.06.2003 01:02:13]

#

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 :)

SotaOrava [08.06.2003 02:30:21]

#

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".

snakari [08.06.2003 03:46:40]

#

SotaOrava, mene omaan profiiliisi, omat koodivinkit sieltä niin pääset muokkaaman kuntoon

SotaOrava [08.06.2003 12:51:02]

#

Ok, ja kiitos :)

Gwaur [08.06.2003 13:19:48]

#

Onko tässä tuo "HL" sama kuin Half-Life?

SotaOrava [08.06.2003 20:23:12]

#

On. HL = Half-Life :)

jonde [09.06.2003 00:51:07]

#

no ei se "lagaa" todella pahasti jos sen osaa tehdä oikein

SotaOrava [09.06.2003 20:58:35]

#

Noh mikä esim mureassa on niin todellakin lagaa...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta