Call of Duty 2 Server Stats
Waar kan ik vinden hoe ik dit moet maken?
Is mijn vraag onduidelijk? :p
Heb je haast?
Het DreamStats System werkt trouwens prima met cod2.
@Arjan: Ik wil het zelf gaan schrijven :) ik weet alleen niet hoe je verbinding moet schrijven met de server enz :)
Heb je zelfs fyziek toegang tot de server? Met andere woorden is het jou server?
Yps het is op het LAN
En je kan ook bij de logfiles, ik neem aan dat je die aanmaakt?
Dan moet je udp verkeer uit elkaar kunnen trekken. Dan word het voor mij niet intressant meer om alles voor te kauwen (te ingewikkeld).
het enige probleem is dat je maar net moet weten hoe je connect enz.:P
deze zoekresultaten iets opleveren.
Volgens mij had de COD server daar een appart protocol/poort voor, maar weet het niet zeker meer. Misschien dat Ik heb de squery.com geprobeert maar als ik een server van game-monitor.com selecteer (die het doet) krijg ik een error...
zoek even in de scriptdatabase. Uiteraard weet Phphulp hier voor een degelijke antwoord!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?php
$ip = "83.98.179.152"; //ip van de server
$port = 28960; //De poort van de server standaard is: 28960
function color($text){
$text = eregi_replace('\^0', '<font color="gray">',$text);
$text = eregi_replace('\^1', '<font color="red">',$text);
$text = eregi_replace('\^2', '<font color="green">',$text);
$text = eregi_replace('\^3', '<font color="yellow">',$text);
$text = eregi_replace('\^4', '<font color="blue">',$text);
$text = eregi_replace('\^5', '<font color="lightblue">',$text);
$text = eregi_replace('\^6', '<font color="pink">',$text);
$text = eregi_replace('\^7', '<font color="black">',$text);
$text = eregi_replace('\^8', '<font color="darkblue">',$text);
$text = eregi_replace('\^9', '<font color="darkred">',$text);
return $text;
}
function tel($text){
$texta = explode("^", $text);
$aantal = count($texta);
return $aantal-1;
}
function view($find, $in, $type = ''){
$position = array_search ($find, $in);
if($type == ''){
return htmlentities($in[$position+1]);
}elseif($type == 'l'){
return strtolower($in[$position+1]);
}elseif($type == 'b'){
if($in[$position+1] == '0'){
return 'On';
}else{
return 'Off';
}
}else{
if($in[$position+1] == '0'){
return 'No';
}else{
return 'Yes';
}
}
}
$con = fsockopen("udp://".$ip, $port);
fwrite($con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00));
fread($con, 4);
$status = socket_get_status($con);
# Als geen verbinding:
if($status["unread_bytes"] == 0){
exit("De server is down...");
}
# Als wel verbinding:
$empfangen = "";
while($status["unread_bytes"] != 0){
$empfangen .= fread($con, 1);
$status = socket_get_status($con);
}
fclose($con);
$daten = explode("\n", $empfangen);
$rules = explode("\\",$daten[1]);
$hostname = view('sv_hostname', $rules);
$aantal = tel($hostname);
$hostname = color($hostname);
$playercount = count ($daten);
$playercount = $playercount-3;
echo "<div align='center'>\n";
echo "<table width='400'>\n";
echo "<tr><td colspan='2' align='center'><h1>CoD2 Server Status:</h1></td></tr>\n";
echo "<tr><th>Servername:</th><td>" . $hostname;
for ($i=0; $i<$aantal; $i++){
echo "</font>";
}
echo "</td></tr>\n";
echo "<tr><th>Server-IP:</th><td>" . $ip . ":" . $port . "</td></tr>\n";
echo "<tr><th>Gametype:</th><td>" . view('g_gametype', $rules) . "</font></td></tr>\n";
echo "<tr><th>Friendly fire:</th><td>" . view('scr_friendlyfire', $rules, 'b') . "</td></tr>\n";
echo "<tr><th>Killcam:</th><td>" . view('scr_killcam', $rules, 'b') . "</td></tr>\n";
echo "<tr><th>Voice:</th><td>" . view('sv_voice', $rules, 'b') . "</td></tr>\n";
echo "<tr><th>Version:</th><td>" . view('shortversion', $rules) . "</td></tr>\n";
echo "<tr><th>Password:</th><td>" . view('pswrd', $rules, 'c') . "</td></tr>\n";
echo "<tr><th>Players:</th><td>" . $playercount . "/" . view('sv_maxclients', $rules) . "</td></tr>\n";
echo "<tr><th>Current map:</th><td>" . view('mapname', $rules, 'l') . "</td></tr>\n";
echo "<tr><td colspan='2' align='center'>";
if (file_exists("image/" . view('mapname', $rules, 'l') . ".jpg")){
echo "<img alt='" . view('mapname', $rules, 'l') . "' width='300' src='image/" . view('mapname', $rules, 'l') . ".jpg' /><br />" . view('mapname', $rules, 'l');
}else{
echo "<img width='300' alt='" . view('mapname', $rules, 'l') . "' src='image/custom.jpg' /><br />" . view('mapname', $rules, 'l');
}
echo "</td></tr>\n";
echo "</table>";
# Playerinfo
$score = '';
foreach($daten as $k => $v){
if($k > 1 && !empty($v)){
$playerinfo = explode('"',$v);
$aantal = tel($playerinfo[1]);
$end = '';
for ($i=0; $i<$aantal; $i++){
$end .= "</font>";
}
$playerinfo[1] = color($playerinfo[1]) . $end;
$playerinfo[0] = explode(" ",$playerinfo[0]);
$ping[$k] = $playerinfo[0][1];
$score[$k] = $playerinfo[0][0];
$nick[$k] = $playerinfo[1];
}
}
if(isset($_GET['orderby'])){
$orderby = $_GET['orderby'];
}else{
$orderby = 'score';
}
switch($orderby){
case 'ping':
$order = $ping;
break;
case 'nickname':
$order = $nick;
break;
default:
$order = $score;
break;
}
echo "<table width='400'>\n";
echo "<tr><th><a href='?orderby=score'>Score</a></th><th><a href='?orderby=nickname'>Nickname</a></th><th><a href='?orderby=ping'>Ping</a></th></tr>";
if(is_array($order)){
arsort($order);
foreach($order as $k => $v){
echo "<tr><td align='center'>" . $score[$k] . "</td><td align='center'>" . $nick[$k] . "</td><td align='center'>" . $ping[$k] . "</td></tr>\n";
}
}
echo "</table>\n";
echo "</div>";
?>
$ip = "83.98.179.152"; //ip van de server
$port = 28960; //De poort van de server standaard is: 28960
function color($text){
$text = eregi_replace('\^0', '<font color="gray">',$text);
$text = eregi_replace('\^1', '<font color="red">',$text);
$text = eregi_replace('\^2', '<font color="green">',$text);
$text = eregi_replace('\^3', '<font color="yellow">',$text);
$text = eregi_replace('\^4', '<font color="blue">',$text);
$text = eregi_replace('\^5', '<font color="lightblue">',$text);
$text = eregi_replace('\^6', '<font color="pink">',$text);
$text = eregi_replace('\^7', '<font color="black">',$text);
$text = eregi_replace('\^8', '<font color="darkblue">',$text);
$text = eregi_replace('\^9', '<font color="darkred">',$text);
return $text;
}
function tel($text){
$texta = explode("^", $text);
$aantal = count($texta);
return $aantal-1;
}
function view($find, $in, $type = ''){
$position = array_search ($find, $in);
if($type == ''){
return htmlentities($in[$position+1]);
}elseif($type == 'l'){
return strtolower($in[$position+1]);
}elseif($type == 'b'){
if($in[$position+1] == '0'){
return 'On';
}else{
return 'Off';
}
}else{
if($in[$position+1] == '0'){
return 'No';
}else{
return 'Yes';
}
}
}
$con = fsockopen("udp://".$ip, $port);
fwrite($con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00));
fread($con, 4);
$status = socket_get_status($con);
# Als geen verbinding:
if($status["unread_bytes"] == 0){
exit("De server is down...");
}
# Als wel verbinding:
$empfangen = "";
while($status["unread_bytes"] != 0){
$empfangen .= fread($con, 1);
$status = socket_get_status($con);
}
fclose($con);
$daten = explode("\n", $empfangen);
$rules = explode("\\",$daten[1]);
$hostname = view('sv_hostname', $rules);
$aantal = tel($hostname);
$hostname = color($hostname);
$playercount = count ($daten);
$playercount = $playercount-3;
echo "<div align='center'>\n";
echo "<table width='400'>\n";
echo "<tr><td colspan='2' align='center'><h1>CoD2 Server Status:</h1></td></tr>\n";
echo "<tr><th>Servername:</th><td>" . $hostname;
for ($i=0; $i<$aantal; $i++){
echo "</font>";
}
echo "</td></tr>\n";
echo "<tr><th>Server-IP:</th><td>" . $ip . ":" . $port . "</td></tr>\n";
echo "<tr><th>Gametype:</th><td>" . view('g_gametype', $rules) . "</font></td></tr>\n";
echo "<tr><th>Friendly fire:</th><td>" . view('scr_friendlyfire', $rules, 'b') . "</td></tr>\n";
echo "<tr><th>Killcam:</th><td>" . view('scr_killcam', $rules, 'b') . "</td></tr>\n";
echo "<tr><th>Voice:</th><td>" . view('sv_voice', $rules, 'b') . "</td></tr>\n";
echo "<tr><th>Version:</th><td>" . view('shortversion', $rules) . "</td></tr>\n";
echo "<tr><th>Password:</th><td>" . view('pswrd', $rules, 'c') . "</td></tr>\n";
echo "<tr><th>Players:</th><td>" . $playercount . "/" . view('sv_maxclients', $rules) . "</td></tr>\n";
echo "<tr><th>Current map:</th><td>" . view('mapname', $rules, 'l') . "</td></tr>\n";
echo "<tr><td colspan='2' align='center'>";
if (file_exists("image/" . view('mapname', $rules, 'l') . ".jpg")){
echo "<img alt='" . view('mapname', $rules, 'l') . "' width='300' src='image/" . view('mapname', $rules, 'l') . ".jpg' /><br />" . view('mapname', $rules, 'l');
}else{
echo "<img width='300' alt='" . view('mapname', $rules, 'l') . "' src='image/custom.jpg' /><br />" . view('mapname', $rules, 'l');
}
echo "</td></tr>\n";
echo "</table>";
# Playerinfo
$score = '';
foreach($daten as $k => $v){
if($k > 1 && !empty($v)){
$playerinfo = explode('"',$v);
$aantal = tel($playerinfo[1]);
$end = '';
for ($i=0; $i<$aantal; $i++){
$end .= "</font>";
}
$playerinfo[1] = color($playerinfo[1]) . $end;
$playerinfo[0] = explode(" ",$playerinfo[0]);
$ping[$k] = $playerinfo[0][1];
$score[$k] = $playerinfo[0][0];
$nick[$k] = $playerinfo[1];
}
}
if(isset($_GET['orderby'])){
$orderby = $_GET['orderby'];
}else{
$orderby = 'score';
}
switch($orderby){
case 'ping':
$order = $ping;
break;
case 'nickname':
$order = $nick;
break;
default:
$order = $score;
break;
}
echo "<table width='400'>\n";
echo "<tr><th><a href='?orderby=score'>Score</a></th><th><a href='?orderby=nickname'>Nickname</a></th><th><a href='?orderby=ping'>Ping</a></th></tr>";
if(is_array($order)){
arsort($order);
foreach($order as $k => $v){
echo "<tr><td align='center'>" . $score[$k] . "</td><td align='center'>" . $nick[$k] . "</td><td align='center'>" . $ping[$k] . "</td></tr>\n";
}
}
echo "</table>\n";
echo "</div>";
?>
Eris:
Wat zijn jullie dom zeg
zoek even in de scriptdatabase. Uiteraard weet Phphulp hier voor een degelijke antwoord!
zoek even in de scriptdatabase. Uiteraard weet Phphulp hier voor een degelijke antwoord!
LOL! Iemand is hier trots op PHPhulp ^^
Woopie100:
ik heb het over cod2 en deze werkt daar niet voor :)
Die van mij?
Ik heb 'm aangepast voor cod2 probeer eens, je zal zien dat het werkt...
Gewijzigd op 09/01/2006 20:13:00 door Bo az
raar dan denk ik dat het aan de server ligt :) ik ga wel ff een server downloaden waar alles mag :P
Het lag aan de server dat het niet werkte :( maargoed hij werkt :) bedankt iedereen voor jullie hulp :)
1 vraagje : kan je ook de deaths bekijken? :P
Nee, daarvoor moet je server statistieken hebben die aan de hand van de logfile gemaakt worden.