RuneScape Levels (v2)

Door Rolf Flikker op, 23 jaar geleden, 8.308x 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

  1. runescape-levels-v2

 

Er zijn 62 reacties op 'Runescape levels v2'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Han eev
Han eev
23 jaar geleden
 
0 +1 -0 -1
Mooi script!!
Ook dat OOP is mooi =)
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Ik krijg de foutmelding

Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/runescap/public_html/highscore.php on line 45

Enig id hoe dat komt? Verder is het helemaal geweldig!=)))
Cake Masher
Cake Masher
23 jaar geleden
 
0 +1 -0 -1
Jah, geweldig af genoomen van dat ander script die hier al is gepost!
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
@jelle je hebt waarschijnlijk php 4, het script gebruikt een paar dingen die nieuw zijn in php 5, zoals de __construct() functie

@rick Dat script 'waar ik het vanaf genomen had' was van mijzelf ;) ik heb een rewrite geschreven omdat het niet meer werkte
Cake Masher
Cake Masher
23 jaar geleden
 
0 +1 -0 -1
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
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
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!
PurpleMadness -
PurpleMadness -
23 jaar geleden
 
0 +1 -0 -1
Wow!
Mooi gescript!
Dit is nog eens een voorbeeld van OOP
Ookal boeit me RS niet, dit ziet er prachtig uit!
Cake Masher
Cake Masher
23 jaar geleden
 
0 +1 -0 -1
@jelle
Vet, Bedankt man!

@purplemadness
heb je hem ook al gebprobeert?
Bij mij wil hij namelijk niet..


23 jaar geleden
 
0 +1 -0 -1
OOP!!!!! :-)
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
Hell yeah!
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Ik weet niet maar ik baal er van dat mijn server geen php5 ondersteund dus als er iemand is die hem wil herschrijven zodat hij ook op php4 werkt zou dat hardstikke mooi zijn! Ik begrijp zelf nog niet zoveel van php daarom kan ik het zelf niet=(
EdwinG
EdwinG
23 jaar geleden
 
0 +1 -0 -1
Om dit werkend te krijgen onder php4 zijn de volgende dingen belangrijk.
1: verwijder de toegangs-levels (public,protected,private)
2: hernoem __construct naar de class-naam

Wat daarna nog nodig is weet ik niet, maar dit zijn de belangrijkste verschillen.
EdwinG
EdwinG
23 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
?>
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$req
= <<<REQUEST
POST /{$this->relURL} HTTP/1.1
Host: {$this->server}
...

?>

Vervangen door iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$req
= 'POST /'.$this->relURL." HTTP/1.1\r\n";
$req.= 'Host: '.$this->server."\n\r";
...

?>
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
OK ik zal het uittesten! alvast bedankt!

Ik heb trouwens php 4.4.1 =p
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Jammer het werkt niet=\

Parse error: parse error, unexpected T_SL in /home/runescap/public_html/highscores.php on line 81
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
Probeer eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
?>
EdwinG
EdwinG
23 jaar geleden
 
0 +1 -0 -1
Zoals ik het heb werkt in ieder geval onder 4.3.10, verder zou 4.* gewoon heredoc moeten ondersteunen.
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Naja ik zet er dan wel boven

error_reporting(E_ALL);

ff kijken wat nog meer fout is dan=\
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
Edit: Het script ff flink wat sneller gemaakt door te http header met "Connection: Close" te verzenden zodra de benodigde data binnen in, in plaats van wachten tot de hele pagina binnen is.
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Zou leuk zijn als je nu dat van die combat formule erin zou kunnen bouwen=P Maar mooi dat ie nu lekker snel is!
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
Thnx :), maaruh als je dat van die combat nou 'ns zelf probeert ;)
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Tja ik ben echt een beggineling.. Ik kreeg geneens een mail formulier aan het werken=S
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Slecht nieuws.... Ze hebben weer wat aan de look van de highscores veranderd en het ziet er nu weer anders uit... En hellaas werktet script niet meer...


23 jaar geleden
 
0 +1 -0 -1
@jelle, er is ook een edit knop hoor, maar als je zo'n fout maakt moet je of de code opnieuw downloaden of de fout eruit halen

en als je niet eens een mailform aan de gang krijgt moet je hier maar misschien vanaf blijven
Rolf Flikker op
Rolf Flikker op
23 jaar geleden
 
0 +1 -0 -1
K heb het script vanmiddag nog getest en er nog een miereneukerig bugje uitgehaald (als je ergens geen punten voor had gaf runescape '...Not&nbsp;Rated...' terwijl het script zocht op 'Not Rated') voor de rest doet ie het nog perfect (ik heb php5)
Jelle -
Jelle -
23 jaar geleden
 
0 +1 -0 -1
Ja hij doet het nog perfect. Ik heb wel gemerkt dat ie op andere sites bij sommige plat liggen en bij programmas zoals ss ook lol. Maar deze werkt idd nog door. Me internet deed het niet toenk teste=S
Gautam
gautam
23 jaar geleden
 
0 +1 -0 -1
Waarmee open je php bestanden nou.. Als ik ze open met firefox, krijg ik alle text te zien, en pikt hij alleen de html delen eruit.

Als ik klik op openen met internet explorer doet hij het niet, dan opent hij gewoon internet explorern niet.. :S
Roel
Roel
22 jaar geleden
 
0 +1 -0 -1
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 :-)
Rolf Flikker op
Rolf Flikker op
22 jaar geleden
 
0 +1 -0 -1
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 als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(statement) { waar } else { onwaar };
?>
het 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...
Lortn
lortn
22 jaar geleden
 
0 +1 -0 -1
euhm hallo
ik heb een probleem kun je me es uitleggen wat ik moet doen
ik ben niet van de slimste maar k'zou toch wel willen dat je me helpt Aub
thx ty np greetz djeet
Nick Mulder
Nick Mulder
22 jaar geleden
 
0 +1 -0 -1
Het script doet het niet meer, de error:

Warning: fsockopen() [function.fsockopen]: unable to connect to hiscore-web.runescape.com:80 (ÓÉÓÚÁ¬½Ó·½ÔÚÒ»¶Îʱ¼äºóûÓÐÕýÈ·´ð¸´»òÁ¬½ÓµÄÖ÷»úûÓз´Ó¦£¬Á¬½Ó³¢ÊÔʧ°Ü¡£ ) in e:\free\teampk\Slayer__Nick_1024.php on line 164
Rolf Flikker op
Rolf Flikker op
22 jaar geleden
 
0 +1 -0 -1
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 ;)
Nick Mulder
Nick Mulder
22 jaar geleden
 
0 +1 -0 -1
Ok, die werkt inderdaad nog wel.
Maar als het aan de server ligt heeft de host er iets aan verandert want het script deed het wel.
En de RuneScape server ligt er dan al 5 dagen uit.
Rolf Flikker op
Rolf Flikker op
22 jaar geleden
 
0 +1 -0 -1
Okay dan kijk ik er wel een keer naar..
Nick Mulder
Nick Mulder
22 jaar geleden
 
0 +1 -0 -1
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.
Doney
Doney
22 jaar geleden
 
0 +1 -0 -1
Mooi script!

Rolf, ik heb nu ook een Calculator, maar hij werkt wel, behalve dat je je RS naam kan invullen en dat ie de Skill XP dan zelf invult. Kan je me daarmee helpen? Mss op MSN/WLM ?
Rolf Flikker op
Rolf Flikker op
22 jaar geleden
 
0 +1 -0 -1
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 ;)
Vanquish
vanquish
22 jaar geleden
 
0 +1 -0 -1
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)
Rolf Flikker op
Rolf Flikker op
22 jaar geleden
 
0 +1 -0 -1
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 ;)
Rolf Flikker op
Rolf Flikker op
22 jaar geleden
 
0 +1 -0 -1
Edit: Het script zet false in RuneScapeStats::statsArray als de naam niet gevonden is
Slash
slash
22 jaar geleden
 
0 +1 -0 -1
leuke script .. ik heb een help site over runescape ik zou graag deze script op de site gebruiken alleen heb ik geen vakje waar de de naam in kan vullen (zodat de gebruikers van de site hun stats kunnen oproepen, kan er iemand helpen ? alvast bedankt.
Nick Mulder
Nick Mulder
22 jaar geleden
 
0 +1 -0 -1
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):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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...
Michael
michael
22 jaar geleden
 
0 +1 -0 -1
Alles leuk en aardig:D

Maar kan iemand mij verder helpen?
Ik begrijp niet echt hoe ik het script aan de praat krijg.

Alvast bedankt,,
Michael`
Wouter
Wouter
22 jaar geleden
 
0 +1 -0 -1
Werkt aardig tik maar mijn naam is in osm333 of sinas7 of zezima
Clown
clown
22 jaar geleden
 
0 +1 -0 -1
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
Jelle
jelle
22 jaar geleden
 
0 +1 -0 -1
Het werkt echt niet bij mij. Ik heb zelf ook een combat formule in php klaar liggen (zelf gemaakt!) en ben best bereid deze te delen indien dit script goed werkt. Ik krijg mij zowel mijn host Lycos als Freehostia geen stats tezien.
Colin aaaaaaa
Colin aaaaaaa
21 jaar geleden
 
0 +1 -0 -1
Perfect script! Ik gebruik het al op mijn RS website :)

Alleen is er geen Sumbit knop bij, dat heb ik even aangepast. Ik zal het script dadelijk wel posten.
Roderik Roderik
Roderik Roderik
21 jaar geleden
 
0 +1 -0 -1
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:&nbsp;&nbsp;&nbsp;<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:&nbsp;&nbsp;&nbsp;<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.
Rolf Flikker op
Rolf Flikker op
21 jaar geleden
 
0 +1 -0 -1
Ik snap al die commotie over hij doet niet doen enzo niet. Ik heb het script weer geupload naar een server, kijk maar bij het voorbeeld.
Jeroen
jeroen
21 jaar geleden
 
0 +1 -0 -1
Kan iemand dan gewoon eens een werkend script plaatsen... :(

of weet iemand hoe ik heb volgende kan aanpassen?
Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\rs2.php on line 160

Ik gebruik WAMP voor m'n localhost
Roderik Roderik
Roderik Roderik
21 jaar geleden
 
0 +1 -0 -1
Hij werkt wel eerst deed ie het niet by mij maar ik gebruik de site van me moeder en daar doet ie het in iedergeval wel
Nathan
Nathan
21 jaar geleden
 
0 +1 -0 -1
Stel dat je alleen Attack wilt laten zien met bv echo, welke variabele moet je dan gebruiken. Heb al vanalles geprobeerd maar niets werkt.
Rolf Flikker op
Rolf Flikker op
21 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

?>
Op regel 129~132 pas je aan naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
                $this
->statsArray[$type]['rank'] = 0;
                $this->statsArray[$type]['level'] = 0;
                $this->statsArray[$type]['xp'] = 0;
?>

Vervolgens kun je de Attack oproepen via:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$attack
= $stats['Attack']['level']
?>
Desertme(sander)
desertme(sander)
21 jaar geleden
 
0 +1 -0 -1
ik zie wel vaker een scipt over runescape met dat lvl op halen en zo

nou vroeg ik me eens af bestaat zoiets ook voor wow of kun je het daar echt alleen via de site van worldofwarcraft zelf zien ???

trouwens mooi scipt ;)
Nathan
Nathan
21 jaar geleden
 
0 +1 -0 -1
Bedankt Rolf je hebt me enorm geholpen, ik ben namelijk zeker geen expert in OOP.
Mar cel
Mar cel
21 jaar geleden
 
0 +1 -0 -1
Het werkt gewoon niet:S, kan niemand ff het script wat up to date is plaatsen?
Roderik Roderik
Roderik Roderik
21 jaar geleden
 
0 +1 -0 -1
lolo hij werkt niet althans in het voorbeeld niet.
Wouter K
Wouter K
20 jaar geleden
 
0 +1 -0 -1
... error op lijn 141
Rolf Flikker op
Rolf Flikker op
20 jaar geleden
 
0 +1 -0 -1
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.
Robert -
Robert -
20 jaar geleden
 
0 +1 -0 -1
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.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter De Schuyter
Wouter De Schuyter
20 jaar geleden
 
0 +1 -0 -1
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

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. runescape-levels-v2

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.