| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: PHP + Gameserver im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige hi. ich will über php einige variablen auf einem cs-server abfragen. wie mache ich das am besten? soweit bin ...
![]() |
| | #1 (permalink) |
| Member of Honour ![]() Registriert seit: 06.10.01 ![]() Likes: 1 | Anzeige hi. ich will über php einige variablen auf einem cs-server abfragen. wie mache ich das am besten? soweit bin ich schon: $log = "Log: "; $h = fsockopen($ip, 7130, $errno, $errmsg, 5); if (!$h) { die("keine verbindung."); } else { $log .= fputs($h, "rcon_password nix"); $log .= fputs($h, "rcon sv_gravity"); echo $log; der rcon port ist meines wissens nach 7130.. wieso funktioniert das nicht? ich bitte um hilfe. thx, little_Newbie |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 17.10.01 ![]() Likes: 0 | wird das ganze cleartext übertragen? gibt es da n spezielles zeichen am ende jedes befehles? ...ach ja...hab mir gerade mal die hilfe zu fputs angeschaut...und verweise mal darauf.. http://ch.php.net/manual/de/function.fputs.php da wird als rückgabewert ein int angegeben. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 12.02.02 ![]() Likes: 0 | probier mal: Code: allgemein.php: <? $csinfo=new CounterStrike; $status=$csinfo->getServerInfo($serveradr,$serverport,1000); require(\\"cs.php\\"); ?> <?=$csinfo->m_servervars[\"servername\"]?> //fragt den Servernamen ab <?=$csinfo->m_servervars[\"serveraddress\"]?> //fragt die Serveradresse ab <?=$csinfo->m_servervars[\"mapname\"]?> //fragt die aktuelle Map ab <?=$csinfo->m_servervars[\"currentplayers\"]?> //fragt die aktuellen Spieler auf dem Server ab <?=$csinfo->m_servervars[\"maxplayers\"]?> //fragt nach der max. Spieleranzahl für den Server // Wenn man von jeder Map auf dem Server auch gleich ein Screenshort // anzeigen lassen möchte, so muss man die Bilder genauso wie die // eigentlichen Mapnamen nennen und diese folgend einbinden: <img border=\\"0\\" src=\\"maps/<?=$csinfo->m_servervars[\\"mapname\\"]?>.jpg\\" width=\\"289\\" height=\\"219\\"> <? include(spieler.php); include(regeln.php); ?> Code: spieler.php
<?
$csinfo=new CounterStrike;
$status=$csinfo->getServerPlayers($HTTP_GET_VARS[\\"serveradr\\"],$HTTP_GET_VARS[\\"serverport\\"],1000);
?>
//Nun müssen wir die Informationen eines jeden Spielers der auf dem
// Server ist abfragen:
<div align=\\"center\\">
<center>
<table border=\\"0\\" cellpadding=\\"0\\" cellspacing=\\"0\\" style=\\"border-collapse: collapse\\" bordercolor=\\"#111111\\" width=\\"304\\" height=\\"40\\" id=\\"AutoNumber1\\">
<tr>
<td width=\\"171\\" height=\\"15\\" align=\\"center\\"><b>
<font size=\\"2\\" face=\\"Verdana\\">Name</font></b></td>
<td width=\\"54\\" height=\\"15\\" align=\\"center\\">
<p align=\\"center\\"><b><font size=\\"2\\" face=\\"Verdana\\">Frags</font></b></td>
<td width=\\"72\\" height=\\"15\\" align=\\"center\\"><b>
<font size=\\"2\\" face=\\"Verdana\\">Spielzeit</font></b></td>
</tr>
<? if (is_array($csinfo->m_playerinfo)) { ?>
<? while (list(,$player) = each ($csinfo->m_playerinfo)) { ?>
<tr>
<td width=\\"171\\" height=\\"21\\" align=\\"center\\"><font size=\\"2\\" face=\\"Verdana\\"><?=$player[\\"name\\"]?></font></td>
<td width=\\"54\\" height=\\"21\\" align=\\"center\\"><font size=\\"2\\" face=\\"Verdana\\" color=\\"#FF0000\\"><?=$player[\\"frags\\"]?></font></td>
<td width=\\"72\\" height=\\"21\\" align=\\"center\\"><font size=\\"2\\" face=\\"Verdana\\"><?=$player[\\"time\\"]?></font></td>
</tr>
<? } ?>
<? } else { ?>
<tr>
<td colspan=\\"3\\" align=\\"center\\"><font size=\\"2\\" face=\\"Verdana\\">Keine Spieler auf dem Server</font></td>
</tr>
<? } ?>
</table>
</center>
</div> <?=$player["name"]?> Spielername <?=$player["frags"]?> Frags des Spielers <?=$player["time"]?> Zeit, wie lange der Spieler schon auf dem Server ist Code: regeln.php
<?
$csinfo=new CounterStrike;
$status=$csinfo->getServerRules($HTTP_GET_VARS[\\"serveradr\\"],$HTTP_GET_VARS[\\"serverport\\"],1000);
?>
<div align=\\"center\\">
<center>
<table border=\\"0\\" cellpadding=\\"0\\" cellspacing=\\"0\\" style=\\"border-collapse: collapse\\" bordercolor=\\"#111111\\" width=\\"195\\" height=\\"19\\" id=\\"AutoNumber1\\">
<tr>
<td width=\\"124\\" height=\\"10\\" align=\\"center\\"><b>
<font size=\\"2\\" face=\\"Verdana\\">Einstellung</font></b></td>
<td width=\\"65\\" height=\\"10\\" align=\\"center\\"><b>
<font size=\\"2\\" face=\\"Verdana\\">Wert</font></b></td>
</tr>
<? while (list($name,$value) = each ($csinfo->m_serverrules)) { ?>
<tr>
<td width=\\"124\\" height=\\"5\\" align=\\"center\\"><font size=\\"2\\" face=\\"Verdana\\"><?=$name?></font></td>
<td width=\\"65\\" height=\\"5\\" align=\\"center\\"><font size=\\"2\\" face=\\"Verdana\\"><?=$value?></font></td>
</tr>
<? } ?>
</table>
</center>
</div> <?=$name?> Regelbezeichnung <?=$value?> Wert der jeweiligen Regel und zum Schluss brauchst du noch die oben per require einbezogene cs.php: Code: cs.php:
<?
function fragsort ($a, $b) {
if ($a[\"frags\"] == $b[\"frags\"]) return 0;
if ($a[\"frags\"] > $b[\"frags\"]) {
return -1;
} else {
return 1;
}
}
Class CounterStrike {
var $m_playerinfo =\"\"; // Info about players
var $m_servervars =\"\"; // Info about the server current map, players etc
var $m_serverrules =\"\"; // Serverrules
//
// Get exact time, used for timeout counting
//
function timenow() {
return doubleval(ereg_replace('^0\.([0-9]*) ([0-9]*)$','\\2.\\1',microtime()));
}
//
// Read raw data from server
//
function getServerData($command,$serveraddress,$portnumber,$waittime) {
$serverdata =\"\";
$serverdatalen=0;
if ($waittime< 500) $waittime= 500;
if ($waittime>2000) $waittime=2000;
$waittime=doubleval($waittime/1000.0);
if (!$cssocket=fsockopen(\"udp://\".$serveraddress,$portnumber,$errnr)) {
$this->errmsg=\"No connection\";
return \"\";
}
socket_set_blocking($cssocket,true);
socket_set_timeout($cssocket,0,500000);
fwrite($cssocket,$command,strlen($command));
// Mark
$starttime=$this->timenow();
do {
$serverdata.=fgetc($cssocket);
$serverdatalen++;
$socketstatus=socket_get_status($cssocket);
if ($this->timenow()>($starttime+$waittime)) {
$this->errmsg=\"Connection timed out\";
fclose($cssocket);
return \"\";
}
} while ($socketstatus[\"unread_bytes\"] );
fclose($cssocket);
return $serverdata;
}
function getnextstring(&$data) {
$temp=\"\";
$counter=0;
while (ord($data[$counter++])!=0) $temp.=$data[$counter-1];
$data=substr($data,strlen($temp)+1);
return $temp;
}
function getnextbytevalue(&$data) {
$temp=ord($data[0]);
$data=substr($data,1);
return $temp;
}
function getnextfragvalue(&$data) {
$frags=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
if ($frags>=4294967294) $frags-=4294967296;
$data=substr($data,4);
return $frags;
}
function getnextplaytime(&$data) {
$decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
$binnumber=base_convert($decnumber,10,2);
while (strlen($binnumber) < 32) $binnumber=\"0\".$binnumber;
$exp=abs(base_convert(substr($binnumber,1,8),2,10))-127;
if (substr($binnumber,0,1)==\"1\") $exp=0-$exp;
$man=1;$manadd=0.5;
for ($counter=9;$counter<32;$counter++) {
if (substr($binnumber,$counter,1)==\"1\") $man+=$manadd;
$manadd=$manadd/2;
}
$time=round(pow(2,$exp)*$man);
$playtime=\"\";
if ($time>3600) {
$playtime=sprintf(\"%2dh\",$time/3600);
}
$time%=3600;
$playtime=$playtime.sprintf(\"%2dm\",$time/60);
$time%=60;
$playtime=$playtime.sprintf(\"%2ds\",$time);
$data=substr($data,5);
return $playtime;
}
// **********************************************************************
// getServerRules
// Read rules/setup from the gameserver into m_serverrules
// Return true if successful
// **********************************************************************
function getServerRules($serveraddress,$portnumber,$waittime) {
$cmd=\"\xFF\xFF\xFF\xFFrules\x00\";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ;
// Check length of returned data, if < 5 something went wrong
if (strlen($serverdata)<5) return false;
// Figure out how many rules there are
$rules=(ord($serverdata[5]))+(ord($serverdata[6])*256);
if ($rules!=0) {
// Strip OOB data
$serverdata=substr($serverdata,7);
for ($i=1;$i<=$rules;$i++) {
$rulename =$this->getnextstring($serverdata);
$rulevalue =$this->getnextstring($serverdata);
$this->m_serverrules[$rulename]=$rulevalue;
}
return true;
} else {
return false;
}
}
// **********************************************************************
// getServerinfo
// Read information about the gameserver into m_servervars
// Serveraddress,servername,current map etc etc
// Return true if successful
// **********************************************************************
function getServerInfo($serveraddress,$portnumber,$waittime) {
$cmd=\"\xFF\xFF\xFF\xFFinfo\x00\";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ;
// Check length of returned data, if < 5 something went wrong
if (strlen($serverdata)<5) return false;
// Strip OOB data
$serverdata=substr($serverdata,5);
$this->m_servervars[\"serveraddress\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"servername\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"mapname\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"game\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"gamename\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"currentplayers\"] =$this->getnextbytevalue($serverdata);
$this->m_servervars[\"maxplayers\"] =$this->getnextbytevalue($serverdata);
return true;
}
// **********************************************************************
// Get Playerinfo
// Read information about the players into m_playerinfo
// Name,frags,playtime
// Return true if successful
// **********************************************************************
function getServerPlayers($serveraddress,$portnumber,$waittime) {
// Servercommand
$cmd=\"\xFF\xFF\xFF\xFFplayers\x00\";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
// Check length of returned data, if < 5 something went wrong
if (strlen($serverdata)<5) return false;
// Check number of players to read data for
$players=ord($serverdata[5]);
// Strip OOB data and other stuff
$serverdata=substr($serverdata,7);
for ($i=1;$i<=$players;$i++) {
$playername =htmlspecialchars($this->getnextstring($serverdata));
$frags =$this->getnextfragvalue($serverdata);
$playtime =$this->getnextplaytime($serverdata);
$this->m_playerinfo[$i] =array(\"name\"=>$playername,\"frags\"=>$frags,\"time\"=>$playtime);
}
// Sort players in fragorder
if ($players>1) usort($this->m_playerinfo,\"fragsort\");
return true;
}
}
?> ![]() (ich weiss der Code ist nicht besonders toll, und geschweige die HTML-Seiten, aber das kannst du ja anpassen ) |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| gameserver erstellen | keksinat0r | Games | 8 | 27.06.08 11:22 |
| Gameserver Sponsor | FuRiOuS | Games | 2 | 24.06.07 19:54 |
| Gameserver | Sierra | Games | 10 | 03.11.04 21:49 |
| Gameserver Rconpassword - wie sicher? | Darkhunter | Virenschutz · Tools & Aggressive Software | 6 | 19.02.04 22:58 |