class-call-of-duty-server-stats
Gesponsorde koppelingen
PHP script bestanden
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
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
<?php
class cod
{
private $gamedata;
public $error = false;
public $serverip = '84.244.180.66';
public $serverport = 28960;
public $player = Array ();
public $score = Array ();
public $ping = Array ();
public $players = 0;
public $errormsg;
public function set_ip ($ip, $port, $start = false)
{
if (is_numeric (str_replace (".", "", $ip)) && is_numeric ($port))
{
$this->serverip = $ip;
$this->serverport = $port;
}
else
{
$this->set_error ("De IP en / of Port is niet geldig.");
}
if ($start)
{
$this->start ();
}
}
public function start ()
{
if (!empty ($gamedata))
{
$this->set_error ("Lees A.U.B. de uitleg onderaan de class.");
}
$sock = fsockopen ('udp://' . $this->serverip, $this->serverport);
if ($sock && !$this->error)
{
fwrite ($sock, 'ÿÿÿÿ getstatus');
fread ($sock, 4);
$status = stream_get_meta_data ($sock);
if ($status['unread_bytes'] == 0)
{
echo "Error reading status";
exit;
}
$data = explode ("\n", fread ($sock, $status['unread_bytes']));
array_shift ($data);
$this->gamedata = explode ("\\", array_shift ($data));
foreach ($data as $i => $player)
{
preg_match ('#([0-9]+) ([0-9]+) "(.*)"#', $player, $stat);
array_shift ($stat);
if (!empty ($stat))
{
$this->score[$i] = $stat[0];
$this->ping[$i] = $stat[1];
$this->player[$i] = $stat[2];
}
}
$this->players = count ($this->player);
}
else
{
$this->set_error ("Kon niet verbinden met " . $this->serverip . ":" . $this->serverport . "!");
}
}
public function get_data ($one)
{
for ($i = 1; $i < count ($this->gamedata); $i++)
{
if ($this->gamedata[$i] == $one)
{
return $this->gamedata[$i + 1];
}
}
return "Unknown";
}
private function set_error ($emsg)
{
$this->error = true;
$this->errormsg = $emsg;
}
}
/* UITLEG
Zo roepen we de class aan:
$cod = new cod ();
Daarna zetten we de IP van de server waar we de status van af gaan halen door dat zo te doen:
$cod->set_ip ("ip", port);
Omdat we kunnen kiezen of de class meteen de informatie van de server moet halen of niet, kunnen we een 3e parameter toevoegen:
$cod->set_ip ("ip", port, true); // De class haalt meteen de server info op.
Als we de 3e parameter NIET gebruiken, moeten we zelf de class met de server laten verbinden door dat zo te doen:
$cod->start ();
Als we geen errors voor onze neus krijgen, worden er een aantal vab. gevult met data over de players & server informatie:
$cod->player; (Array, bevat alle players op de server.)
$cod->ping; (Array, bevat de ping van alle players op de server.)
$cod->score; (Array, bevat de score van alle players op de server.)
$cod->players; (INT, bevat het aantal players op de server.)
Hieronder staat een voorbeeld hoe het eruit zou moeten zien:
*/
$cod = new cod ();
// Deze functie is nu weggelaten, zodat de class verbinding maakt met een andere CoD server.
//$cod->set_ip ("0.0.0.0", 0000);
$cod->start();
if (!$cod->error)
{
echo "<b>" . $cod->serverip . ":" . $cod->serverport . "</b><br /><br />";
echo "Player 1 met naam: <b>" . $cod->player[0] . "</b>.<br />";
echo "Heeft een ping van: <b>" . $cod->ping[0] . "</b>.<br />";
echo "En z'n score is: <b>" . $cod->score[0] . "</b>.<br /><br />";
echo "Er zijn(is) <b>" . $cod->players . "</b> player(s) op de server!";
}
else
{
echo $cod->errormsg;
exit;
}
?>
class cod
{
private $gamedata;
public $error = false;
public $serverip = '84.244.180.66';
public $serverport = 28960;
public $player = Array ();
public $score = Array ();
public $ping = Array ();
public $players = 0;
public $errormsg;
public function set_ip ($ip, $port, $start = false)
{
if (is_numeric (str_replace (".", "", $ip)) && is_numeric ($port))
{
$this->serverip = $ip;
$this->serverport = $port;
}
else
{
$this->set_error ("De IP en / of Port is niet geldig.");
}
if ($start)
{
$this->start ();
}
}
public function start ()
{
if (!empty ($gamedata))
{
$this->set_error ("Lees A.U.B. de uitleg onderaan de class.");
}
$sock = fsockopen ('udp://' . $this->serverip, $this->serverport);
if ($sock && !$this->error)
{
fwrite ($sock, 'ÿÿÿÿ getstatus');
fread ($sock, 4);
$status = stream_get_meta_data ($sock);
if ($status['unread_bytes'] == 0)
{
echo "Error reading status";
exit;
}
$data = explode ("\n", fread ($sock, $status['unread_bytes']));
array_shift ($data);
$this->gamedata = explode ("\\", array_shift ($data));
foreach ($data as $i => $player)
{
preg_match ('#([0-9]+) ([0-9]+) "(.*)"#', $player, $stat);
array_shift ($stat);
if (!empty ($stat))
{
$this->score[$i] = $stat[0];
$this->ping[$i] = $stat[1];
$this->player[$i] = $stat[2];
}
}
$this->players = count ($this->player);
}
else
{
$this->set_error ("Kon niet verbinden met " . $this->serverip . ":" . $this->serverport . "!");
}
}
public function get_data ($one)
{
for ($i = 1; $i < count ($this->gamedata); $i++)
{
if ($this->gamedata[$i] == $one)
{
return $this->gamedata[$i + 1];
}
}
return "Unknown";
}
private function set_error ($emsg)
{
$this->error = true;
$this->errormsg = $emsg;
}
}
/* UITLEG
Zo roepen we de class aan:
$cod = new cod ();
Daarna zetten we de IP van de server waar we de status van af gaan halen door dat zo te doen:
$cod->set_ip ("ip", port);
Omdat we kunnen kiezen of de class meteen de informatie van de server moet halen of niet, kunnen we een 3e parameter toevoegen:
$cod->set_ip ("ip", port, true); // De class haalt meteen de server info op.
Als we de 3e parameter NIET gebruiken, moeten we zelf de class met de server laten verbinden door dat zo te doen:
$cod->start ();
Als we geen errors voor onze neus krijgen, worden er een aantal vab. gevult met data over de players & server informatie:
$cod->player; (Array, bevat alle players op de server.)
$cod->ping; (Array, bevat de ping van alle players op de server.)
$cod->score; (Array, bevat de score van alle players op de server.)
$cod->players; (INT, bevat het aantal players op de server.)
Hieronder staat een voorbeeld hoe het eruit zou moeten zien:
*/
$cod = new cod ();
// Deze functie is nu weggelaten, zodat de class verbinding maakt met een andere CoD server.
//$cod->set_ip ("0.0.0.0", 0000);
$cod->start();
if (!$cod->error)
{
echo "<b>" . $cod->serverip . ":" . $cod->serverport . "</b><br /><br />";
echo "Player 1 met naam: <b>" . $cod->player[0] . "</b>.<br />";
echo "Heeft een ping van: <b>" . $cod->ping[0] . "</b>.<br />";
echo "En z'n score is: <b>" . $cod->score[0] . "</b>.<br /><br />";
echo "Er zijn(is) <b>" . $cod->players . "</b> player(s) op de server!";
}
else
{
echo $cod->errormsg;
exit;
}
?>