RuneScape Levels (v2)
Door Rolf Flikker op, 23 jaar geleden, 8.346x bekeken
Een tijdje geleden poste ik een soortgelijk script dat ook levels van runescape-spelers van de site haalde. Die deed het best goed, totdat de site van runescape werd vernieuwd :(. het vorige script was overigens ook een zooitje wat betreft schrijfstijl, dit is veel meer in de richting van OOP. Mocht ik nog iets moeten verbeteren aan mn schrijfstijl, of kan ik bepaalde dingen beter anders doen? Meld het aub ff :).
Edit: Ook dit script is nu outdated, maar typ "Runescape" in in de zoekfunctie hiernaast, en je vindt genoeg alternatieven.
Voorbeeld: http://rofl.miereneukers.nl/phphulp/runescape.php
Gesponsorde koppelingen
PHP script bestanden
Er zijn 62 reacties op 'Runescape levels v2'
Gesponsorde koppelingen
ow :P, jah wist ik veel..
Ff onder de profecioneele mense die veel kunne steele of die .class bestande kunne editen:
Ik heb RuneScape opgeslaagen maar ik wil graag alle muziekjes hebbe :)
Weet iemand hoe ik die kan krijgen??
ik heb:
http://thugie.game-clans.nl/loader.class
http://thugie.game-clans.nl/loader83946787.cab
http://thugie.game-clans.nl/loader-212860987.jar
Ff onder de profecioneele mense die veel kunne steele of die .class bestande kunne editen:
Ik heb RuneScape opgeslaagen maar ik wil graag alle muziekjes hebbe :)
Weet iemand hoe ik die kan krijgen??
ik heb:
http://thugie.game-clans.nl/loader.class
http://thugie.game-clans.nl/loader83946787.cab
http://thugie.game-clans.nl/loader-212860987.jar
Uit runescape?? Je moet gewoon het liedje wat je wilt hebben luisteren. Daarna klik je op uitvoeren. Hierin vul je in C:\\WINDOWS\.file_store_32 en daarna krijg je een map. Hier staan midi files in zoals jingle 1 enzo. Deze kun je afluisteren en je hoord welk liedje degene is die je wilt hebben. Verplaatsen in anderere map en noemen zoals je wilt!
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
171
172
173
174
175
176
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
171
172
173
174
175
176
<?php
/**
* RuneScapeStats class
*
* Haalt de rankings van een runescapespeler uit de
* hiscore-tabellen op www.runescape.com .
* let op: de array die deze class geeft ziet er iets
* anders uit dan die van de vorige versie.
*
* @author Rolf de Jong, [email protected]
* @copyright Doe ermee wat wil, zolang je mijn naam ff vermeld :)
* @edit php4 compatible (Edwin Gozeling)
*/
class RuneScapeStats {
// Het domein van de runescape server (string)
var $server = 'hiscore-web.runescape.com';
// De relatieve url om bij het juiste bestand op de server te komen (string)
var $relURL = 'lang/en/aff/runescape/compare.ws';
// Gebruikersnaam van de speler waarvan de stats opgevraagt moeten worden (string)
var $user;
// Dit is de variabele waar de verkregen data uiteindelijk in wordt gezet (array)
var $statsArray;
// De skills waar bij gezocht moet worden
var $disciplines = array(
'Overall',
'Attack',
'Defence',
'Strength',
'Hitpoints',
'Ranged',
'Prayer',
'Magic',
'Cooking',
'Woodcutting',
'Fletching',
'Fishing',
'Firemaking',
'Crafting',
'Smithing',
'Mining',
'Herblore',
'Agility',
'Thieving',
'Slayer',
'Farming',
'Runecraft');
var $_httpBody = "";
var $_source;
// Constructor method; url-codeert de spelers naam waarvan de stat opgezocht moeten worden
// Parameters: $user (string)
// Return: void
function RuneScapeStats($user)
{
$this->user = urlencode($user);
}
// Haal de benodigde data van de server in html formaat
// Parameters: Geen
// Return: bool
function getSource()
{
$this->addParam('user1', $this->user);
$this->addParam('submit', 'Search');
$fp = fsockopen($this->server, 80, $errno, $errstr, 30);
if(!$fp)
{
return false;
}
$contentLen = strlen($this->_httpBody);
$req = <<<REQUEST
POST /{$this->relURL} HTTP/1.1
Host: {$this->server}
Referer: http://{$this->server}/{$this->relURL}
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Content-Type: application/x-www-form-urlencoded
Content-Length: {$contentLen}
{$this->_httpBody}
REQUEST;
fwrite($fp, $req);
while (!feof($fp))
{
$this->_source.= fgets($fp, 128);
}
fclose($fp);
return true;
}
// Zet alle stats in een array
// Parameters: Geen
// Return: void
function fetchArray()
{
$source = explode('<body', $this->_source); // Pak alles dat tussen
$source = explode('</body>', $source[1]); // <body en </body> zit
$i = 1;
foreach ($this->disciplines as $type) {
$part = explode($type.'</a>', $source[0]);
$part = explode('</td> </tr>', $part[1]);
if(strstr($part[0], 'Not Ranked</div>') !== false){
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
}
else
{
$this->statsArray[$i]['skill'] = $type;
$part = explode('align="right">', $part[0], 2);
$part2 = explode('</td>', $part[1]);
$this->statsArray[$i]['rank'] = $part2[0];
$part = explode('align="right">', $part2[1], 2);
$part3 = explode('</td>', $part[1]);
$this->statsArray[$i]['level'] = $part3[0];
$part = explode('align="right">', $part2[2], 2); $this->statsArray[$i]['xp'] = $part[1];
}
$i++;
}
}
// Voeg een parameter toe aan de body
// Parameters: $name (string), $value (string)
// Return: void
function addParam($name, $value)
{
strlen($this->_httpBody)<1 ? $this->_httpBody=$name.'='.$value : $this->_httpBody.='&'.$name.'='.$value ;
}
// Spuug de gevormde array uit :)
// Parameters: Geen
// Return: Array
function getResult()
{
return $this->statsArray;
}
}
// Voorbeeldje:
$RS = new RuneScapeStats('Weed Tiger');
$RS->getSource();
$RS->fetchArray();
$stats = $RS->getResult();
echo '<table>
<tr> <th>Skill</th>
<th>Rank</th>
<th>Level</th>
<th>XP</th>
</tr>';
foreach($stats as $values)
{
echo "<tr>\n";
echo '<td>'.$values['skill'].'</td>';
echo '<td>'.$values['rank'].'</td>';
echo '<td>'.$values['level'].'</td>';
echo '<td>'.$values['xp']."</td>\n";
echo "</tr>\n";
}
echo '</table>';
?>
/**
* RuneScapeStats class
*
* Haalt de rankings van een runescapespeler uit de
* hiscore-tabellen op www.runescape.com .
* let op: de array die deze class geeft ziet er iets
* anders uit dan die van de vorige versie.
*
* @author Rolf de Jong, [email protected]
* @copyright Doe ermee wat wil, zolang je mijn naam ff vermeld :)
* @edit php4 compatible (Edwin Gozeling)
*/
class RuneScapeStats {
// Het domein van de runescape server (string)
var $server = 'hiscore-web.runescape.com';
// De relatieve url om bij het juiste bestand op de server te komen (string)
var $relURL = 'lang/en/aff/runescape/compare.ws';
// Gebruikersnaam van de speler waarvan de stats opgevraagt moeten worden (string)
var $user;
// Dit is de variabele waar de verkregen data uiteindelijk in wordt gezet (array)
var $statsArray;
// De skills waar bij gezocht moet worden
var $disciplines = array(
'Overall',
'Attack',
'Defence',
'Strength',
'Hitpoints',
'Ranged',
'Prayer',
'Magic',
'Cooking',
'Woodcutting',
'Fletching',
'Fishing',
'Firemaking',
'Crafting',
'Smithing',
'Mining',
'Herblore',
'Agility',
'Thieving',
'Slayer',
'Farming',
'Runecraft');
var $_httpBody = "";
var $_source;
// Constructor method; url-codeert de spelers naam waarvan de stat opgezocht moeten worden
// Parameters: $user (string)
// Return: void
function RuneScapeStats($user)
{
$this->user = urlencode($user);
}
// Haal de benodigde data van de server in html formaat
// Parameters: Geen
// Return: bool
function getSource()
{
$this->addParam('user1', $this->user);
$this->addParam('submit', 'Search');
$fp = fsockopen($this->server, 80, $errno, $errstr, 30);
if(!$fp)
{
return false;
}
$contentLen = strlen($this->_httpBody);
$req = <<<REQUEST
POST /{$this->relURL} HTTP/1.1
Host: {$this->server}
Referer: http://{$this->server}/{$this->relURL}
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Content-Type: application/x-www-form-urlencoded
Content-Length: {$contentLen}
{$this->_httpBody}
REQUEST;
fwrite($fp, $req);
while (!feof($fp))
{
$this->_source.= fgets($fp, 128);
}
fclose($fp);
return true;
}
// Zet alle stats in een array
// Parameters: Geen
// Return: void
function fetchArray()
{
$source = explode('<body', $this->_source); // Pak alles dat tussen
$source = explode('</body>', $source[1]); // <body en </body> zit
$i = 1;
foreach ($this->disciplines as $type) {
$part = explode($type.'</a>', $source[0]);
$part = explode('</td> </tr>', $part[1]);
if(strstr($part[0], 'Not Ranked</div>') !== false){
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
}
else
{
$this->statsArray[$i]['skill'] = $type;
$part = explode('align="right">', $part[0], 2);
$part2 = explode('</td>', $part[1]);
$this->statsArray[$i]['rank'] = $part2[0];
$part = explode('align="right">', $part2[1], 2);
$part3 = explode('</td>', $part[1]);
$this->statsArray[$i]['level'] = $part3[0];
$part = explode('align="right">', $part2[2], 2); $this->statsArray[$i]['xp'] = $part[1];
}
$i++;
}
}
// Voeg een parameter toe aan de body
// Parameters: $name (string), $value (string)
// Return: void
function addParam($name, $value)
{
strlen($this->_httpBody)<1 ? $this->_httpBody=$name.'='.$value : $this->_httpBody.='&'.$name.'='.$value ;
}
// Spuug de gevormde array uit :)
// Parameters: Geen
// Return: Array
function getResult()
{
return $this->statsArray;
}
}
// Voorbeeldje:
$RS = new RuneScapeStats('Weed Tiger');
$RS->getSource();
$RS->fetchArray();
$stats = $RS->getResult();
echo '<table>
<tr> <th>Skill</th>
<th>Rank</th>
<th>Level</th>
<th>XP</th>
</tr>';
foreach($stats as $values)
{
echo "<tr>\n";
echo '<td>'.$values['skill'].'</td>';
echo '<td>'.$values['rank'].'</td>';
echo '<td>'.$values['level'].'</td>';
echo '<td>'.$values['xp']."</td>\n";
echo "</tr>\n";
}
echo '</table>';
?>
Ik weet het niet zeker, maar het kan ook nog zijn dat php 4 heredoc niet ondersteund
( <<<BLAAT
<p>blaat</p>
BLAAT; )
In dat geval moet je bijvoorbeeld
Vervangen door iets als:
( <<<BLAAT
<p>blaat</p>
BLAAT; )
In dat geval moet je bijvoorbeeld
Vervangen door iets als:
Probeer eens:
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
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
<?php
/**
* RuneScapeStats class
*
* Haalt de rankings van een runescapespeler uit de
* hiscore-tabellen op www.runescape.com .
* let op: de array die deze class geeft ziet er iets
* anders uit dan die van de vorige versie.
*
* @author Rolf de Jong, [email protected]
* @copyright Doe ermee wat wil, zolang je mijn naam ff vermeld :)
* @edit php4 compatible (Edwin Gozeling)
*/
class RuneScapeStats {
// Het domein van de runescape server (string)
var $server = 'hiscore-web.runescape.com';
// De relatieve url om bij het juiste bestand op de server te komen (string)
var $relURL = 'lang/en/aff/runescape/compare.ws';
// Gebruikersnaam van de speler waarvan de stats opgevraagt moeten worden (string)
var $user;
// Dit is de variabele waar de verkregen data uiteindelijk in wordt gezet (array)
var $statsArray;
// De skills waar bij gezocht moet worden
var $disciplines = array(
'Overall',
'Attack',
'Defence',
'Strength',
'Hitpoints',
'Ranged',
'Prayer',
'Magic',
'Cooking',
'Woodcutting',
'Fletching',
'Fishing',
'Firemaking',
'Crafting',
'Smithing',
'Mining',
'Herblore',
'Agility',
'Thieving',
'Slayer',
'Farming',
'Runecraft');
var $_httpBody = "";
var $_source;
// Constructor method; url-codeert de spelers naam waarvan de stat opgezocht moeten worden
// Parameters: $user (string)
// Return: void
function RuneScapeStats($user)
{
$this->user = urlencode($user);
}
// Haal de benodigde data van de server in html formaat
// Parameters: Geen
// Return: bool
function getSource()
{
$this->addParam('user1', $this->user);
$this->addParam('submit', 'Search');
$fp = fsockopen($this->server, 80, $errno, $errstr, 30);
if(!$fp)
{
return false;
}
$contentLen = strlen($this->_httpBody);
$req = "POST /".$this->relURL." HTTP/1.1\r\n";
$req.= "Host: ".$this->server."\r\n";
$req.= "Referer: http://".$this->server."/".$this->relURL."\r\n";
$req.= "Connection: Keep-Alive\r\n";
$req.= "Content-Type: application/x-www-form-urlencoded\r\n";
$req.= "Content-Length: ".$contentLen."\r\n";
$req.= "\r\n";
$req.= $this->_httpBody;
fwrite($fp, $req);
while (!feof($fp))
{
$this->_source.= fgets($fp, 128);
}
fclose($fp);
return true;
}
// Zet alle stats in een array
// Parameters: Geen
// Return: void
function fetchArray()
{
$source = explode('<body', $this->_source); // Pak alles dat tussen
$source = explode('</body>', $source[1]); // <body en </body> zit
$i = 1;
foreach ($this->disciplines as $type) {
$part = explode($type.'</a>', $source[0]);
$part = explode('</td> </tr>', $part[1]);
if(strstr($part[0], 'Not Ranked</div>') !== false){
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
}
else
{
$this->statsArray[$i]['skill'] = $type;
$part = explode('align="right">', $part[0], 2);
$part2 = explode('</td>', $part[1]);
$this->statsArray[$i]['rank'] = $part2[0];
$part = explode('align="right">', $part2[1], 2);
$part3 = explode('</td>', $part[1]);
$this->statsArray[$i]['level'] = $part3[0];
$part = explode('align="right">', $part2[2], 2); $this->statsArray[$i]['xp'] = $part[1];
}
$i++;
}
}
// Voeg een parameter toe aan de body
// Parameters: $name (string), $value (string)
// Return: void
function addParam($name, $value)
{
strlen($this->_httpBody)<1 ? $this->_httpBody=$name.'='.$value : $this->_httpBody.='&'.$name.'='.$value ;
}
// Spuug de gevormde array uit :)
// Parameters: Geen
// Return: Array
function getResult()
{
return $this->statsArray;
}
}
// Voorbeeldje:
$RS = new RuneScapeStats('Weed Tiger');
$RS->getSource();
$RS->fetchArray();
$stats = $RS->getResult();
echo '<table><tr><th>Skill</th><th>Rank</th><th>Level</th><th>XP</th></tr>';
foreach($stats as $values)
{
echo "<tr>\n";
echo '<td>'.$values['skill'].'</td>';
echo '<td>'.$values['rank'].'</td>';
echo '<td>'.$values['level'].'</td>';
echo '<td>'.$values['xp']."</td>\n";
echo "</tr>\n";
}
echo '</table>';
?>
/**
* RuneScapeStats class
*
* Haalt de rankings van een runescapespeler uit de
* hiscore-tabellen op www.runescape.com .
* let op: de array die deze class geeft ziet er iets
* anders uit dan die van de vorige versie.
*
* @author Rolf de Jong, [email protected]
* @copyright Doe ermee wat wil, zolang je mijn naam ff vermeld :)
* @edit php4 compatible (Edwin Gozeling)
*/
class RuneScapeStats {
// Het domein van de runescape server (string)
var $server = 'hiscore-web.runescape.com';
// De relatieve url om bij het juiste bestand op de server te komen (string)
var $relURL = 'lang/en/aff/runescape/compare.ws';
// Gebruikersnaam van de speler waarvan de stats opgevraagt moeten worden (string)
var $user;
// Dit is de variabele waar de verkregen data uiteindelijk in wordt gezet (array)
var $statsArray;
// De skills waar bij gezocht moet worden
var $disciplines = array(
'Overall',
'Attack',
'Defence',
'Strength',
'Hitpoints',
'Ranged',
'Prayer',
'Magic',
'Cooking',
'Woodcutting',
'Fletching',
'Fishing',
'Firemaking',
'Crafting',
'Smithing',
'Mining',
'Herblore',
'Agility',
'Thieving',
'Slayer',
'Farming',
'Runecraft');
var $_httpBody = "";
var $_source;
// Constructor method; url-codeert de spelers naam waarvan de stat opgezocht moeten worden
// Parameters: $user (string)
// Return: void
function RuneScapeStats($user)
{
$this->user = urlencode($user);
}
// Haal de benodigde data van de server in html formaat
// Parameters: Geen
// Return: bool
function getSource()
{
$this->addParam('user1', $this->user);
$this->addParam('submit', 'Search');
$fp = fsockopen($this->server, 80, $errno, $errstr, 30);
if(!$fp)
{
return false;
}
$contentLen = strlen($this->_httpBody);
$req = "POST /".$this->relURL." HTTP/1.1\r\n";
$req.= "Host: ".$this->server."\r\n";
$req.= "Referer: http://".$this->server."/".$this->relURL."\r\n";
$req.= "Connection: Keep-Alive\r\n";
$req.= "Content-Type: application/x-www-form-urlencoded\r\n";
$req.= "Content-Length: ".$contentLen."\r\n";
$req.= "\r\n";
$req.= $this->_httpBody;
fwrite($fp, $req);
while (!feof($fp))
{
$this->_source.= fgets($fp, 128);
}
fclose($fp);
return true;
}
// Zet alle stats in een array
// Parameters: Geen
// Return: void
function fetchArray()
{
$source = explode('<body', $this->_source); // Pak alles dat tussen
$source = explode('</body>', $source[1]); // <body en </body> zit
$i = 1;
foreach ($this->disciplines as $type) {
$part = explode($type.'</a>', $source[0]);
$part = explode('</td> </tr>', $part[1]);
if(strstr($part[0], 'Not Ranked</div>') !== false){
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
}
else
{
$this->statsArray[$i]['skill'] = $type;
$part = explode('align="right">', $part[0], 2);
$part2 = explode('</td>', $part[1]);
$this->statsArray[$i]['rank'] = $part2[0];
$part = explode('align="right">', $part2[1], 2);
$part3 = explode('</td>', $part[1]);
$this->statsArray[$i]['level'] = $part3[0];
$part = explode('align="right">', $part2[2], 2); $this->statsArray[$i]['xp'] = $part[1];
}
$i++;
}
}
// Voeg een parameter toe aan de body
// Parameters: $name (string), $value (string)
// Return: void
function addParam($name, $value)
{
strlen($this->_httpBody)<1 ? $this->_httpBody=$name.'='.$value : $this->_httpBody.='&'.$name.'='.$value ;
}
// Spuug de gevormde array uit :)
// Parameters: Geen
// Return: Array
function getResult()
{
return $this->statsArray;
}
}
// Voorbeeldje:
$RS = new RuneScapeStats('Weed Tiger');
$RS->getSource();
$RS->fetchArray();
$stats = $RS->getResult();
echo '<table><tr><th>Skill</th><th>Rank</th><th>Level</th><th>XP</th></tr>';
foreach($stats as $values)
{
echo "<tr>\n";
echo '<td>'.$values['skill'].'</td>';
echo '<td>'.$values['rank'].'</td>';
echo '<td>'.$values['level'].'</td>';
echo '<td>'.$values['xp']."</td>\n";
echo "</tr>\n";
}
echo '</table>';
?>
Erg leuk script, ik kan em goed gebruiken voor m'n clansite.
Ook erg handig om dingen te leren over connecties te maken, ookal snap ik dat stukje met $req als handler nog niet helemaal, en hoe dat zit met dat $_httpbody, want eerder zeg je dat het "" is, en later vraag je de lengte op, dat snap ik dus nog niet zo goed, maar ik heb al best veel geleerd van dit script :-)
Ook erg handig om dingen te leren over connecties te maken, ookal snap ik dat stukje met $req als handler nog niet helemaal, en hoe dat zit met dat $_httpbody, want eerder zeg je dat het "" is, en later vraag je de lengte op, dat snap ik dus nog niet zo goed, maar ik heb al best veel geleerd van dit script :-)
Bedankt voor het compliment :) altijd leuk om te horen.
$req is een string, het maken van die string heb ik gedaan met de HereDoc syntax, waarover je hier meer kunt lezen.
$_httpbody = ""; geeft aan dat het de variabele een lege string is.
$_httpbody wordt gevult d.m.v. addParam(), waarin ik een c++ - syntaxje heb gebruikt:
statement ? statement_is_waar : statement_is_onwaar
dit werkt hetzelfde alshet doel van de addParam-functie is om een string te genereren als
item1=value1&item2=value2&item3=value3. De naam staat ook voor 'Add Parameter'.
Om dat te bereiken test de functie eerst met strlen() of er al een waarde in $_httpbody staat, zo niet dan wordt ' naam=waarde ' in $_httpbody gezet, anders wordt albestaandestring&naam=waarde in $_httpbody gezet.
Als het allemaal nog een beetje wazig uitgelegt is, zeg het maar, het is immers kwart voor 2 's nachts wanneer ik dit schrijf..
Ga zo maar eens mijn bed attenderen...
$req is een string, het maken van die string heb ik gedaan met de HereDoc syntax, waarover je hier meer kunt lezen.
$_httpbody = ""; geeft aan dat het de variabele een lege string is.
$_httpbody wordt gevult d.m.v. addParam(), waarin ik een c++ - syntaxje heb gebruikt:
statement ? statement_is_waar : statement_is_onwaar
dit werkt hetzelfde alshet doel van de addParam-functie is om een string te genereren als
item1=value1&item2=value2&item3=value3. De naam staat ook voor 'Add Parameter'.
Om dat te bereiken test de functie eerst met strlen() of er al een waarde in $_httpbody staat, zo niet dan wordt ' naam=waarde ' in $_httpbody gezet, anders wordt albestaandestring&naam=waarde in $_httpbody gezet.
Als het allemaal nog een beetje wazig uitgelegt is, zeg het maar, het is immers kwart voor 2 's nachts wanneer ik dit schrijf..
Ga zo maar eens mijn bed attenderen...
Ik denk dat het aan je server zal liggen, of dat de server van RS er nét even uit lag. Het script werkt namelijk nog steeds. http://worldswitcher.chessspider.nl/lookup.php staat een programma dat iemand op deze class gebaseerd heeft. En dat werkt nog altijd perfect ;)
Ik zal ook wel naar me host kijke...
Edit:
Ik heb het bestand op een andere host gezet en daar deed die het ook niet, maar toen heb ik bedacht dat ik het versnelde script gebruikte en de orginele doet het wel op die andere host.
Edit:
De gewone versie van het script doet het niet op m'n eerste host wel op de 2e, dus het ligt aan mijn host.
En je hoeft dus niet naar het script te kijke want dat is gewoon goed.
En je hoeft dus niet naar het script te kijke want dat is gewoon goed.
Je bedoelt dat terwijl je typt, moeten de levels ingevult worden. Is zeker wel te doen, hoewel de server het misschien wel een beetje benauwt krijgt. Jelmer heeft een relaxte tut geschreven over AJAX, waarmeej je deze app zo in elkaar hebt. Hiero
Btw helpen kan ik wel maar nu even niet, want ik ben op vakantie ;)
Btw helpen kan ik wel maar nu even niet, want ik ben op vakantie ;)
hallo, leuk script alleen werkt het niet :s
Dits staat er wel:
Skill Rank Level XP
Overall
Attack
Defence
Strength
Hitpoints
Ranged
Prayer
Magic
Cooking
Woodcutting
Fletching
Fishing
Firemaking
Crafting
Smithing
Mining
Herblore
Agility
Thieving
Slayer
Farming
Runecraft
Maar er staan nergens lvls of zo.
En waar moette u account in typen?
(kheb nog niet veel verstand vanphp, ik werk al 1 jaar met html)
Dits staat er wel:
Skill Rank Level XP
Overall
Attack
Defence
Strength
Hitpoints
Ranged
Prayer
Magic
Cooking
Woodcutting
Fletching
Fishing
Firemaking
Crafting
Smithing
Mining
Herblore
Agility
Thieving
Slayer
Farming
Runecraft
Maar er staan nergens lvls of zo.
En waar moette u account in typen?
(kheb nog niet veel verstand vanphp, ik werk al 1 jaar met html)
Het script werkt nog steeds even goed als wanneer ik het uploade. Ik had zonet een soort van gebruiksaanwijzinkje getypt maar toen ging de browser raar doen (heeft iemand anders dat ook met phphulp.nl?).
Ik heb even extra commentaar bij het voorbeeld gezet, hopelijk is het dan duidelijker hoe je het moet gebruiken. Zo niet: probeer dan eerst te spelen met een script van niveau: beginner voordat je met classes begint ;)
Ik heb even extra commentaar bij het voorbeeld gezet, hopelijk is het dan duidelijker hoe je het moet gebruiken. Zo niet: probeer dan eerst te spelen met een script van niveau: beginner voordat je met classes begint ;)
Het is jammr dat het het nu even niet doet maar hier het script met invoer venster (tussen body plakken)(het bestand moet stats.php heten):
PS. miss. dat de layout er slecht uitziet maar dat kan je aanpasse...
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<p>
<form id="form1" name="form1" method="post" action="stats.php">
<label>RuneScape Name:
<input name="rsname" type="text" id="rsname" />
</label>
<label>
<input name="Submit" type="submit" value="Get Stats!" />
</label>
</form>
<?php
$name = $_POST['rsname'];
$dot = ":";
print ($name. $dot);
/**
* RuneScapeStats class
*
* Haalt de rankings van een runescapespeler uit de
* hiscore-tabellen op www.runescape.com .
* let op: de array die deze class geeft ziet er iets
* anders uit dan die van de vorige versie.
*
* @author Rolf de Jong, [email protected]
* @copyright Doe ermee wat wil, zolang je mijn naam ff vermeld :)
* @edit php4 compatible (Edwin Gozeling)
*/
class RuneScapeStats {
// Het domein van de runescape server (string)
var $server = 'hiscore-web.runescape.com';
// De relatieve url om bij het juiste bestand op de server te komen (string)
var $relURL = 'lang/en/aff/runescape/compare.ws';
// Gebruikersnaam van de speler waarvan de stats opgevraagt moeten worden (string)
var $user;
// Dit is de variabele waar de verkregen data uiteindelijk in wordt gezet (array)
var $statsArray;
// De skills waar bij gezocht moet worden
var $disciplines = array(
'Overall',
'Attack',
'Defence',
'Strength',
'Hitpoints',
'Ranged',
'Prayer',
'Magic',
'Cooking',
'Woodcutting',
'Fletching',
'Fishing',
'Firemaking',
'Crafting',
'Smithing',
'Mining',
'Herblore',
'Agility',
'Thieving',
'Slayer',
'Farming',
'Runecraft',
'Construction');
var $_httpBody = "";
var $_source;
// Constructor method; url-codeert de spelers naam waarvan de stat opgezocht moeten worden
// Parameters: $user (string)
// Return: void
function RuneScapeStats($user)
{
$this->user = urlencode($user);
}
// Haal de benodigde data van de server in html formaat
// Parameters: Geen
// Return: bool
function getSource()
{
$this->addParam('user1', $this->user);
$this->addParam('submit', 'Search');
$fp = fsockopen($this->server, 80, $errno, $errstr, 30);
if(!$fp)
{
return false;
}
$contentLen = strlen($this->_httpBody);
$req = "POST /".$this->relURL." HTTP/1.1\r\n";
$req.= "Host: ".$this->server."\r\n";
$req.= "Referer: http://".$this->server."/".$this->relURL."\r\n";
$req.= "Connection: Close\r\n";
$req.= "Content-Type: application/x-www-form-urlencoded\r\n";
$req.= "Content-Length: ".$contentLen."\r\n";
$req.= "\r\n";
$req.= $this->_httpBody;
fwrite($fp, $req);
while (!feof($fp))
{
$this->_source.= fgets($fp, 128);
}
fclose($fp);
return true;
}
// Zet alle stats in een array
// Parameters: Geen
// Return: void
function fetchArray()
{
$source = explode('<body', $this->_source); // Pak alles dat tussen
$source = explode('</body>', $source[1]); // <body en </body> zit
$i = 1;
foreach ($this->disciplines as $type) {
$part = explode($type.'</a>', $source[0]);
$part = explode('</td> </tr>', $part[1]);
if(strstr($part[0], 'Not Ranked') !== false){
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
}
else
{
$this->statsArray[$i]['skill'] = $type;
$part = explode('align="right">', $part[0], 2);
$part2 = explode('</td>', $part[1]);
$this->statsArray[$i]['rank'] = $part2[0];
$part = explode('align="right">', $part2[1], 2);
$part3 = explode('</td>', $part[1]);
$this->statsArray[$i]['level'] = $part3[0];
$part = explode('align="right">', $part2[2], 2); $this->statsArray[$i]['xp'] = $part[1];
}
$i++;
}
}
// Voeg een parameter toe aan de body
// Parameters: $name (string), $value (string)
// Return: void
function addParam($name, $value)
{
strlen($this->_httpBody)<1 ? $this->_httpBody=$name.'='.$value : $this->_httpBody.='&'.$name.'='.$value ;
}
// Spuug de gevormde array uit :)
// Parameters: Geen
// Return: Array
function getResult()
{
return $this->statsArray;
}
}
// Voorbeeldje:
$RS = new RuneScapeStats("$name");
$RS->getSource();
$RS->fetchArray();
$stats = $RS->getResult();
echo <<<HTML
<table border="1" bordercolor="#000000" bgcolor="#FFFFFF" background="http://teampk.ypm-design.com/images/1024_15.jpg" class="table">
<tr>
<td class="table"><b>Skill</b></td><td class="table"><b>Level</b></td><td class="table"><b>Rank</b></td><td class="table"><b>XP</b></td>
</tr>
HTML;
foreach($stats as $values){
echo "<tr>\n";
echo '<td class="table">'.$values['skill'].'</td>';
echo '<td class="table">'.$values['level'].'</td>';
echo '<td class="table">'.$values['rank'].'</td>';
echo '<td class="table">'.$values['xp']."</td>\n";
echo "</tr>\n";
}
echo '</table>';
?>
</p>
<form id="form1" name="form1" method="post" action="stats.php">
<label>RuneScape Name:
<input name="rsname" type="text" id="rsname" />
</label>
<label>
<input name="Submit" type="submit" value="Get Stats!" />
</label>
</form>
<?php
$name = $_POST['rsname'];
$dot = ":";
print ($name. $dot);
/**
* RuneScapeStats class
*
* Haalt de rankings van een runescapespeler uit de
* hiscore-tabellen op www.runescape.com .
* let op: de array die deze class geeft ziet er iets
* anders uit dan die van de vorige versie.
*
* @author Rolf de Jong, [email protected]
* @copyright Doe ermee wat wil, zolang je mijn naam ff vermeld :)
* @edit php4 compatible (Edwin Gozeling)
*/
class RuneScapeStats {
// Het domein van de runescape server (string)
var $server = 'hiscore-web.runescape.com';
// De relatieve url om bij het juiste bestand op de server te komen (string)
var $relURL = 'lang/en/aff/runescape/compare.ws';
// Gebruikersnaam van de speler waarvan de stats opgevraagt moeten worden (string)
var $user;
// Dit is de variabele waar de verkregen data uiteindelijk in wordt gezet (array)
var $statsArray;
// De skills waar bij gezocht moet worden
var $disciplines = array(
'Overall',
'Attack',
'Defence',
'Strength',
'Hitpoints',
'Ranged',
'Prayer',
'Magic',
'Cooking',
'Woodcutting',
'Fletching',
'Fishing',
'Firemaking',
'Crafting',
'Smithing',
'Mining',
'Herblore',
'Agility',
'Thieving',
'Slayer',
'Farming',
'Runecraft',
'Construction');
var $_httpBody = "";
var $_source;
// Constructor method; url-codeert de spelers naam waarvan de stat opgezocht moeten worden
// Parameters: $user (string)
// Return: void
function RuneScapeStats($user)
{
$this->user = urlencode($user);
}
// Haal de benodigde data van de server in html formaat
// Parameters: Geen
// Return: bool
function getSource()
{
$this->addParam('user1', $this->user);
$this->addParam('submit', 'Search');
$fp = fsockopen($this->server, 80, $errno, $errstr, 30);
if(!$fp)
{
return false;
}
$contentLen = strlen($this->_httpBody);
$req = "POST /".$this->relURL." HTTP/1.1\r\n";
$req.= "Host: ".$this->server."\r\n";
$req.= "Referer: http://".$this->server."/".$this->relURL."\r\n";
$req.= "Connection: Close\r\n";
$req.= "Content-Type: application/x-www-form-urlencoded\r\n";
$req.= "Content-Length: ".$contentLen."\r\n";
$req.= "\r\n";
$req.= $this->_httpBody;
fwrite($fp, $req);
while (!feof($fp))
{
$this->_source.= fgets($fp, 128);
}
fclose($fp);
return true;
}
// Zet alle stats in een array
// Parameters: Geen
// Return: void
function fetchArray()
{
$source = explode('<body', $this->_source); // Pak alles dat tussen
$source = explode('</body>', $source[1]); // <body en </body> zit
$i = 1;
foreach ($this->disciplines as $type) {
$part = explode($type.'</a>', $source[0]);
$part = explode('</td> </tr>', $part[1]);
if(strstr($part[0], 'Not Ranked') !== false){
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
}
else
{
$this->statsArray[$i]['skill'] = $type;
$part = explode('align="right">', $part[0], 2);
$part2 = explode('</td>', $part[1]);
$this->statsArray[$i]['rank'] = $part2[0];
$part = explode('align="right">', $part2[1], 2);
$part3 = explode('</td>', $part[1]);
$this->statsArray[$i]['level'] = $part3[0];
$part = explode('align="right">', $part2[2], 2); $this->statsArray[$i]['xp'] = $part[1];
}
$i++;
}
}
// Voeg een parameter toe aan de body
// Parameters: $name (string), $value (string)
// Return: void
function addParam($name, $value)
{
strlen($this->_httpBody)<1 ? $this->_httpBody=$name.'='.$value : $this->_httpBody.='&'.$name.'='.$value ;
}
// Spuug de gevormde array uit :)
// Parameters: Geen
// Return: Array
function getResult()
{
return $this->statsArray;
}
}
// Voorbeeldje:
$RS = new RuneScapeStats("$name");
$RS->getSource();
$RS->fetchArray();
$stats = $RS->getResult();
echo <<<HTML
<table border="1" bordercolor="#000000" bgcolor="#FFFFFF" background="http://teampk.ypm-design.com/images/1024_15.jpg" class="table">
<tr>
<td class="table"><b>Skill</b></td><td class="table"><b>Level</b></td><td class="table"><b>Rank</b></td><td class="table"><b>XP</b></td>
</tr>
HTML;
foreach($stats as $values){
echo "<tr>\n";
echo '<td class="table">'.$values['skill'].'</td>';
echo '<td class="table">'.$values['level'].'</td>';
echo '<td class="table">'.$values['rank'].'</td>';
echo '<td class="table">'.$values['xp']."</td>\n";
echo "</tr>\n";
}
echo '</table>';
?>
</p>
PS. miss. dat de layout er slecht uitziet maar dat kan je aanpasse...
Het script werkt, en ik ben een combat formule erin aan het bouwen, hij is bijna af, nu wil ik alleen nog dat de levels van de combat skills op de plaatsen komen van attacklevel, defencelevel, strenghtlevel etc. wat moet ik dan nog doen aan dit script?
EDIT, maar even om te melden dat het me al gelukt is, hij rekent nu ook je CB level automatisch uit :D
EDIT, maar even om te melden dat het me al gelukt is, hij rekent nu ook je CB level automatisch uit :D
Eej nice script alleen werkt ie bij mij niet maar ja.
Ik heb een fout ontdekt:
echo '<form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
echo 'Naam: <input type="text" name="naam" value="'.@$_GET['naam'].'" />';
echo '<br /><input type="submit" value="Zoek hiscores" />';
echo '</form><br />';
dit moet worden:
echo '<form action="'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
echo 'Naam: <input type="text" name="naam" value="'.@$_GET['naam'].'" />';
echo '<br /><input type="submit" value="Zoek hiscores" />';
echo '</form><br />';
dus bij:
echo '<form action="'http://.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
Moet worden:
echo '<form action="'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
volgens mij bij mij was dat in iedergeval ook een foutje.
Ik heb een fout ontdekt:
echo '<form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
echo 'Naam: <input type="text" name="naam" value="'.@$_GET['naam'].'" />';
echo '<br /><input type="submit" value="Zoek hiscores" />';
echo '</form><br />';
dit moet worden:
echo '<form action="'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
echo 'Naam: <input type="text" name="naam" value="'.@$_GET['naam'].'" />';
echo '<br /><input type="submit" value="Zoek hiscores" />';
echo '</form><br />';
dus bij:
echo '<form action="'http://.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
Moet worden:
echo '<form action="'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'" method="get">';
volgens mij bij mij was dat in iedergeval ook een foutje.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
?>
$this->statsArray[$i]['skill'] = $type;
$this->statsArray[$i]['rank'] = 0;
$this->statsArray[$i]['level'] = 0;
$this->statsArray[$i]['xp'] = 0;
?>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$this->statsArray[$type]['rank'] = 0;
$this->statsArray[$type]['level'] = 0;
$this->statsArray[$type]['xp'] = 0;
?>
$this->statsArray[$type]['rank'] = 0;
$this->statsArray[$type]['level'] = 0;
$this->statsArray[$type]['xp'] = 0;
?>
Vervolgens kun je de Attack oproepen via:
Het script werkt inderdaad niet meer. Ik ga het waarschijnlijk ook niet meer repareren, aangezien een fix maar een maandje of wat geldig is (ik heb het nu ong. 3 keer gerepareerd). Het script laat ik hier staan ter referentie. Als dat in strijd is met de policies hier oid, dan verwijder ik het.
Voor zover ik me herinner zijn er nog meer scripts met hetzelfde doel als dit script. Je kunt ze zoeken via de zoekfunctie.
Voor zover ik me herinner zijn er nog meer scripts met hetzelfde doel als dit script. Je kunt ze zoeken via de zoekfunctie.
Hier kun je lezen dat runescape een tijdje terug ook een light versie van de highscores uit heeft gebracht. Hiermee krijg je alleen je level, experience en rank zonder enige html er om heen, en kun je ze heel gemakkelijk opvragen.
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/miereneu/public_html/rofl/phphulp/runescape.php on line 141
Warning: fsockopen() [function.fsockopen]: unable to connect to hiscore-web.runescape.com:80 (Unknown error) in /home/miereneu/public_html/rofl/phphulp/runescape.php on line 141
Naam niet gevonden in de hiscores
Warning: fsockopen() [function.fsockopen]: unable to connect to hiscore-web.runescape.com:80 (Unknown error) in /home/miereneu/public_html/rofl/phphulp/runescape.php on line 141
Naam niet gevonden in de hiscores
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
Labels
- Geen tags toegevoegd.
PHP hulp
0 seconden vanaf nu