Tja!
Jag undrar hur man med hjälp av PHP kan kontrollera statusen på en Counter-Strike server för att sedan skriva ut det på sin hemsida. Typ "Server: Online" eller "Server: Offline"... Tack på förhand!
Kontrollera status på CS-Server?
15 svar · 1 665 visningar · startad av streetrobban
Hej!
streetrobban: Jag har inte det svar du söker, men jag vill fråga samma som din fråga fast lite mer "extended"...
streetrobban ville bara veta om servern var online/offline
men jag vill veta lite mer... typ som Vilken map den är på, hur många som är inne, vem som är inne osv.. allt annat man kan komma åt, vill jag komma åt
Tackar också i förhand!
Snakes skrev:
Hej!
streetrobban: Jag har inte det svar du söker, men jag vill fråga samma som din fråga fast lite mer "extended"...streetrobban ville bara veta om servern var online/offline
men jag vill veta lite mer... typ som Vilken map den är på, hur många som är inne, vem som är inne osv.. allt annat man kan komma åt, vill jag komma åtTackar också i förhand!
Kanske moostat kan vara något för dig
http://www.moolok.com/moostat/
Tack för svaren!
Snakes: Något som du beskriver skulle vara suveränt, men jag nöjer mig även med att bara visa "status" på servern.
Pedda: Jag hittade ett liknande script fast lite enklare. Men när jag prövar dem båda får jag alltid följande samma felmeddelande.
Warning: fread(): Length parameter must be greater than 0. in /mooSTAT_hl.php on line 15
Vet dock inte hur jag ska åtgärda detta.
Detta scriptet letade jag upp på phpsidan.nu (eller om det var phpportalen.se), fungerar utmärkt oberoende på vad safe mode är satt på. Se länk..
ChristianS: Tack för scriptet! Jag testade att bara byta ut adressen och porten till min server. Men det funkar inte. Det tar jättelång tid för sidan att laddas och när den väl är klar så kommer inga uppgifter upp. Jag får dock inget felmeddelande. Vet någon var felet kan ligga?
Hallå? Ingen som vet vad felet kan vara?
Du får nog posta raderna med kod där felet ligger om nån ska kunna hjälpa dig.
Pedda: Om jag visste vilka rader felet var på skulle jag pasta dom. Men eftersom jag inte får något felmeddelande så vet jag inte vad jag ska pasta. Så jag skickar hela koden:
<html>
<title></title>
<head>
</head>
<body>
<?
$srvip = "213.114.233.231"; $srvp = "1200"; /* srvip= servern, srvp= port */
$consrv = fsockopen("udp://" . $srvip, $srvp);
fputs($consrv, "ÿÿÿÿinfostring"); $ble = fread($consrv, 220); $inf = explode("\\", $ble);
if ($inf[28] == 'l') $sys = "Linux"; else $sys = "Windows";
if ($inf[26] == '1') $pass = "Yes"; else $pass = "No";
if ($inf[24] == 'd') $delis = "Dedicated Server"; else $delis = "Listen Server";
unset($consrv);
if ($inf[2] == 46) {
print"<br><b>Hostname</b>:<i> $inf[18]</i><br><b>IP</b>:<i> $srvip:$srvp</i><br><b>Game</b>: <i>$inf[16]</i><br><b>Players</b>:<i> $inf[6]/$inf[12]</i><br><b>Map</b>:<i> $inf[20]</i><br><b>Type</b>: <i>$delis</i><br><b>OS</b>:<i> $sys</i><br><b>Password</b>:<i> $pass</i>";
} else {
print"<p><br><b>Hostname</b>:<i> $inf[20]</i><br><b>IP</b>:<i> $srvip:$srvp</i><br><b>Game</b>: <i>$inf[18]</i><br><b>Players</b>:<i> $inf[6]/$inf[12]</i><br><b>Map</b>:<i> $inf[22]</i><br><b>Type</b>: <i>$delis</i><br><b>OS</b>:<i> $sys</i><br><b>Password</b>:<i> $pass</i></p>";
}
?>
</body>
</html>
Koden du postade funkar för mig.
Den skriver ut:
Hostname: [Sektion.8]
IP: 213.114.233.231:1200
Game: Counter-Strike
Players: 0/10
Map: de_cbble
Type: Dedicated Server
OS: Windows
Password: Yes
Testa att lägga till överst på sidan:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
?>
Vad konstigt! Det är ju så det ska se ut. Jag får följande meddelande på samma kod:
Notice: Undefined offset: 28 in /home/kunder/cs.php on line 19
Notice: Undefined offset: 26 in /home/kunder/cs.php on line 20
Notice: Undefined offset: 24 in /home/kunder/cs.php on line 21
Notice: Undefined offset: 2 in /home/kunder/cs.php on line 23
Notice: Undefined index: 20 in /home/kunder/cs.php on line 27
Notice: Undefined index: 18 in /home/kunder/cs.php on line 27
Notice: Undefined index: 6 in /home/kunder/cs.php on line 27
Notice: Undefined index: 12 in /home/kunder/cs.php on line 27
Notice: Undefined index: 22 in /home/kunder/cs.php on line 27
Hostname:
IP: thaa.kicks-ass.net:1200
Game:
Players: /
Map:
Type: Listen Server
OS: Windows
Password: No
Den enda skillnaden med koden jag testade nu var att byta ut ip adressen till thaa.kicks-ass.net:1200 som är DNS'en. Ligger felet hos mitt webhotell eller?
EDIT: Jag får exakt samma fel när jag provar med IP-adressen istället.
*BUMP* Fortfarande ingen som vet var felet ligger? Är det hos mitt webbhotell? Jag använder mig av Crystone AB.
Aktivera gd2-dll:en och sockets-dll:en som finns till php-installationen. Brukar fungera efter det.
enklast vore väl att köra qstat.
$query = NULL;
exec("/dir/till/qstat -$prefix $ip:$port -raw @_@", $query);
$server = preg_split('/@_@/',$query[0],-1,PREG_SPLIT_NO_EMPTY);
nått åt det hållet.
visst, kan man scripta egen klass för att quera spelservrar så väljer man det helst men qstat är en bra början. Mer info om Hex o sånt kan du hittta @ http://dev.kquery.com
Nu verkar det ju som om ni fått det att funka, men
fputs($consrv, "ÿÿÿÿinfostring"); $ble = fread($consrv, 220); $inf = explode("\", $ble);
exploden borde nog ha "\\" som avgränsare istället. Det borde bli fel på den raden.
pettsson skrev:
Nu verkar det ju som om ni fått det att funka, men
fputs($consrv, "ÿÿÿÿinfostring"); $ble = fread($consrv, 220); $inf = explode("\", $ble);exploden borde nog ha "\\" som avgränsare istället. Det borde bli fel på den raden.
Utan dubbla såna så får jag:
Parse error: syntax error, unexpected T_STRING in eh.php on line 20
Med dubbla så får jag detta:
Notice: Undefined offset: 28 in eh.php on line 16
Notice: Undefined offset: 26 in eh.php on line 17
Notice: Undefined offset: 24 in eh.php on line 18
Hostname: #uG.net | UniversalGaming.net | WS #9 :: BOKAD
IP: cs.universalgaming.net:27019
Game: Counter-Strike
Players: 8/14
Map: de_nuke
Type: Listen Server
OS: Windows
Password: No
Koden som orsakar det senare felet:
<html>
<title></title>
<head>
</head>
<body>
<?
$srvip = "cs.universalgaming.net"; $srvp = "27019"; /* srvip= servern, srvp= port */
$consrv = fsockopen("udp://" . $srvip, $srvp);
fputs($consrv, "ÿÿÿÿinfostring"); $ble = fread($consrv, 220); $inf = explode("\\", $ble);
if ($inf[28] == 'l') $sys = "Linux"; else $sys = "Windows";
if ($inf[26] == '1') $pass = "Yes"; else $pass = "No";
if ($inf[24] == 'd') $delis = "Dedicated Server"; else $delis = "Listen Server";
unset($consrv);
if ($inf[2] == 46) {
print"<br><b>Hostname</b>:<i> $inf[18]</i><br><b>IP</b>:<i> $srvip:$srvp</i><br><b>Game</b>: <i>$inf[16]</i><br><b>Players</b>:<i> $inf[6]/$inf[12]</i><br><b>Map</b>:<i> $inf[20]</i><br><b>Type</b>: <i>$delis</i><br><b>OS</b>:<i> $sys</i><br><b>Password</b>:<i> $pass</i>";
} else {
print"<p><br><b>Hostname</b>:<i> $inf[20]</i><br><b>IP</b>:<i> $srvip:$srvp</i><br><b>Game</b>: <i>$inf[18]</i><br><b>Players</b>:<i> $inf[6]/$inf[12]</i><br><b>Map</b>:<i> $inf[22]</i><br><b>Type</b>: <i>$delis</i><br><b>OS</b>:<i> $sys</i><br><b>Password</b>:<i> $pass</i></p>";
}
?>
</body>
</html>
Hjälp?