[RS] Highscores verkrijgen

Door Deze site laat je geen account deleten, 20 jaar geleden, 4.835x bekeken

Ik kreeg pas de vraag of ik iemand mee kon helpen met een script om een level uit de highscores van runescape te halen, omdat de manier waarop dat kon blijkbaar geupdate was. Ik help graag dus ik heb het aangenomen, en nu is er dit script(of class) uitgekomen.

p.s: Runescape is wel veel verandert sinds toen ik het nog speelde zeg :S

Gesponsorde koppelingen

PHP script bestanden

  1. rs-highscores-verkrijgen

 

Er zijn 9 reacties op 'Rs highscores verkrijgen'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
20 jaar geleden
 
0 +1 -0 -1
je doet eerst $contents = str_replace('<br />',',',$contents); en daarna $stats = explode(',',$contents);

waarom doe je niet meteen explode('<br />', .... ?
 
0 +1 -0 -1
Nou, op de pagina waar ik info vandaan haal staat het er zo op:
57357,66,19325426
155357,62,9325426

Dus iedere keer een enter(geen <br />) tussen elke skill, ik doe dus eerst nl2br, om al die enters in <br /> te veranderen. En omdat het makkelijk is als er alleen maar komma's zijn(want dan kan ik er 1 grote array van maken). vervang ik die <br /> 's vervolgens door komma's.
PHP erik
PHP erik
20 jaar geleden
 
0 +1 -0 -1
Vraagje: is het niet makkelijker met regular expressions?
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
Wat in dit topic blijkt, is het niet echt handig om file_get_contents in de method zelf op te nemen. Ik zou de site ergens in een property opslaan, zodat hij hem maar 1 maal hoeft op te halen.
 
0 +1 -0 -1
Kun je daar een voorbeeld van geven, wat je precies bedoelt?
Jan geen
Jan geen
20 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
<?php
class highscores {

    var
$content = '';

    function
highscores($link) {
        $this->content = file_get_contents($link);
    }

    function
getskill($player,$skill,$mode) {
        $skills = array("Overall","Attack","Defence","Strenght","Hitpoints","Ranged","Prayer","Magic","Cooking","Woodcutting","Fletching","Fishing","Firemaking","Crafting","Smithing","Mining","Herblore","Agility","Thieving","Slayer","Farming","Runecrafting","Hunter","Construction");
        $link = "http://hiscore.runescape.com/index_lite.ws?player=".$player;
        $contents = nl2br($this->content));
        $contents = str_replace('<br />',',',$contents);
        $contents = str_replace('-1','1000000+',$contents);
        $contents = explode(',',$contents);
        
        # Content opslaan
        $this->content = $contents;

        $nrskill = array_search($skill,$this->content);
        if($nrskill !== FALSE) {
            switch ($mode) {
                case
0;
                    return $stats[($nrskill*3)+1];
                    break;
                case
1;
                    return $stats[($nrskill*3)+2];
                    break;
                case
2;
                    return $stats[$nrskill*3];
                    break;
                default;

                    return $stats[($nrskill*3)+1];
                    break;
            }
        }
else {
            return "Unknown skill";
        }
    }
    function
expleft($currentexp,$goal) {
        $a=0;
        for($b=1; $x<$goal; $b++) {
            $a += floor($b+300*pow(2, ($b/7)));
        }

        $expneeded = floor($a/4);
        $expleft = $expneeded-$currentexp;
        return $expleft;
    }
}


$highscores = new Highscores($link);
$highscores->getSkill("");
$highscores->getSkill("");
$highscores->getSkill("");
//...
?>


Wanneer je nu een instantie maakt van je klasse geef je de link mee, de content word in het object opgeslagen. Als je nu meerdere aanroepen doet van getSkill wordt niet elke keer de content van de andere site afgehaald.
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
Meer iets in de zin van:
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
<?php
    class Highscores {
        protected $statisticPages = array();
        public $apiURL = 'http://hiscore.runescape.com/index_lite.ws?player=%s';
    
        protected function obtainStatisticsPage($username)
        {

            // alleen ophalen waneer hij nog niet in de 'cache' zit:
            if(!isset($this->statisticPages[$username])) {
                $this->statisticPages[$username] = file_get_contents(sprintf($this->apiURL, urlencode($username)));
            }

            
            return $this->statisticPages[$username];
        }

        
        public function getStatistics($username, ... )
        {

            $content = $this->obtainStatisticsPage($username);
            
             /**
              * doe je ding zoals in het originele script, maar dan zonder
              * de file_get_contents aanroep. Die vervang je door die
              * bovenstaande regel.
              */

        }
    }

?>
 
0 +1 -0 -1
Die van Jelmer vind ik best ingewikkeld :P. Daar kijk ik later nog es naar(het is vakantie, kom op zeg). Ik probeer die van rick wel ff
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
AJ
AJ
20 jaar geleden
 

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

Inhoudsopgave

  1. rs-highscores-verkrijgen

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.