RuneScape level lookup

Door Michiel Prank, 20 jaar geleden, 4.481x bekeken

Het vorige RS statistic lookup script van Rolf ( http://www.phphulp.nl/php/scripts/2/532/ ) werkt niet meer en hij wilde hem ook niet meer updaten.
Daarom heb ik maar besloten een nieuw stat-lookup script te maken.

Dankzij jagex kan je nu gelukkig de highscores ook sneller opvragen, wat nu ook goed merkbaar zou moeten zijn.

Ik geef geen ondersteuning op dit script. Dit werkend voorbeeld zou genoeg moeten zijn om je op weg te helpen.

Je kan gegevens op twee manieren opvragen:
$result["Defence"]["rank"]
of gewoon in een lus plaatsen.

$result["Defence"]["skill"]
zal Defence weergeven, waardoor je implementatie makkelijker zou moeten zijn.

Suggesties, vragen, opmerkingen, meld maar :)

Wijziging 03/03/03:
Summoning skill toegevoegd
Wijziging 06/12/07:
Eventjes een kleine notice neergezet + de file() regel aangepast zodat de newlines automatisch verwijdert worden.

Voorbeeld: http://worldswitcher.chessspider.nl/lookup.php

Gesponsorde koppelingen

PHP script bestanden

  1. runescape-level-lookup

 

Er zijn 19 reacties op 'Runescape level lookup'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Onbekend Onbekend
Onbekend Onbekend
20 jaar geleden
 
0 +1 -0 -1
Mooi, maar dit kan anders:
if($arrLevels === false ||
namelijk:
if($arrLevels ||

verder niet echt goed naar gekeken.
Winston Smith
Winston Smith
20 jaar geleden
 
0 +1 -0 -1
@Tommy: if($arrLevels) controleert of $arrLevels true is, niet of het false is. Dan zou het dus if(!$arrLevels) moeten zijn.
Michiel Prank
Michiel Prank
20 jaar geleden
 
0 +1 -0 -1
Ik heb hiervoor gekozen omdat ik denk dat het overzichtelijker is. Aangezien $arrLevels of een boolean of een array is, leek het mij duidelijk om het op deze manier te testen of het een boolean was met de waarde false, of niet.

Hetgene waar ik zelf niet blij mee ben met dit script is dat als de username niet bestaat, RuneScape dan een 404 foutmelding geeft. Dat word in dit script opgevangen als een failure en de bijbehorende waarschuwing word onderdrukt.
Onbekend Onbekend
Onbekend Onbekend
20 jaar geleden
 
0 +1 -0 -1
Oh, is waar ook kasper.
Hylke
Hylke
20 jaar geleden
 
0 +1 -0 -1
Waarom zou je "is identical to" gebruiken in dit geval? =) en heb je even een username van iemand?
Thijs X
Thijs X
20 jaar geleden
 
0 +1 -0 -1
Leuk scriptje,

@ Hylke,
voorbeeld van username staat in het script: ChessSpider
Wouter K
Wouter K
20 jaar geleden
 
0 +1 -0 -1
of gebruik mijn oude osm333
PHP erik
PHP erik
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if($arrLevels === false || empty($username) || strlen($username) > 15)
        return false;


Het is aan te raden overal brackets te gebruiken; consequent en overzichtelijk.

Maar ook ik wil even iets zeggen over dat === false. $arrLevels bevat namelijk de return-value van file(). file() returnt een array of geeft een error. Staat een error gelijk aan 'identical to false'? Dat vraag ik me sterk af. Ik zou zelf zeggen null in plaats van false.
Michiel Prank
Michiel Prank
20 jaar geleden
 
0 +1 -0 -1
@PHPerik
http://us.php.net/manual/en/function.file.php

"Returns the file in an array. Each element of the array corresponds to a line in the file, with the newline still attached. Upon failure, file() returns FALSE. "

Behalve dat word er ook nog een E_WARNING gelanceerd met een beschrijving van de fout.

Dat van brackets ben ik in principe wel met je eens. Echter heb ik mijzelf dit zo aangeleerd op mijn werk omdat dat daar de standaard is, terwijl ik dat daarvoor wel altijd met brackets deed.
Roel -
Roel -
20 jaar geleden
 
0 +1 -0 -1
Hij doet het niet, geen een username...
Michiel Prank
Michiel Prank
20 jaar geleden
 
0 +1 -0 -1
@Roel
Dat ligt echt aan jou ben ik bang. Op mijn persoonlijke host is de code precies zoals hij nu bovenstaand is.

http://chessspider.no-ip.info/lookup.php

En hij werkt perfect. Haal de @ even weg bij regel 38 voor de file() functie en zeg even of er een foutmelding komt (en plaats hem hier).
Eissoj
Eissoj
19 jaar geleden
 
0 +1 -0 -1
Nice script Machiel, ik heb alleen een probleempje;

$result["Defence"]["skill"] ik krijg: Notice: Undefined variable: result
Michiel Prank
Michiel Prank
19 jaar geleden
 
0 +1 -0 -1
Dan bestaat de variabele $result niet ;)
Waarschijnlijk heb je het voorbeeld aangepast? Kijk nog eens goed naar de $stats array, hoe die uitgelezen word en waar die vandaan komt.
Eissoj
Eissoj
19 jaar geleden
 
0 +1 -0 -1
Ik had niks veranderd, maar ik heb het gevonden, bij mij werd het dus

$stats['Defence']['skill']
Slash
slash
19 jaar geleden
 
0 +1 -0 -1
IK heb wat zitten proberen om een skill signature te maken, maar ik zit vast
hij neemt altijd m'n totaal skill terwijl ik bv m'n prayer wil laten zien.
De skill prayer neemt hij wel maar de xp, rank of lvl niet daar neemt hij altijd de resultaten van m'n totaal.

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
<?php
putenv('GDFONTPATH=' . realpath('.'));
$imgname='baseimage.jpg';
$im = @imagecreatefromjpeg($imgname);


error_reporting(E_ALL);

function
GetRSstats($username,&$result)
{

    # Return: Boolean
    # And an empty array in your second parameter on failure, or filled with the skills on success.
    # Please note; no support is given.
/*
###
### Made By Chessspider ( www.chessspider.nl - 2007© )
###
### Please leave this notice here. If you really want to make me happy, also put a link to my runescape world switcher:
### http://worldswitcher.chessspider.nl/
### on your website.
*/
        # You might have to update these some day...

    $arrSkills = array(
            "Prayer",
          
            );
// Skills... Order DOES matter, it should always be the same order as the highscores page.

    $sDomain = "http://hiscore.runescape.com/"; // With trailing /
    $sPage = "index_lite.ws?player="; // Page to request

        # You shouldnt have to change anything from here

    $arrLevels = @file($sDomain.$sPage.urlencode($username),FILE_IGNORE_NEW_LINES); // Obtaining scores, surpressing possible warnings
    $result = Array();

    if($arrLevels === false || empty($username) || strlen($username) > 15)
        return false;

    $iLength = count($arrSkills);
    for($i = 0;$i < $iLength;$i++)
    {

        $levels = explode(",",$arrLevels[$i]);

       $arrStats[$arrSkills[$i]]["skill"] = $arrSkills[$i];
        $arrStats[$arrSkills[$i]]["rank"] = $levels[0];
        $arrStats[$arrSkills[$i]]["level"] = $levels[1];
        $arrStats[$arrSkills[$i]]["exp"] = $levels[2];


    }


    $result = $arrStats;
    return true;
}



    if(GetRSstats("slash350",$stats))
    {


        foreach($stats as $values)

            

$var = $values['skill'];
$var1 = $values['exp'];

$color = imagecolorallocate($im, 0, 0, 0);
$font = 'arial.ttf';
imagettftext($im, 9, 9, 77, 28, $color, $font, $var);
imagettftext($im, 9, 9, 129, 54, $color, $font, $var1);
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($img);
}

    else
    {
        echo "Username does not exist";
    }

?>


Kan er iemand helpen ? alvast bedankt.
Iemand
iemand
19 jaar geleden
 
0 +1 -0 -1
Ik heb het script aangepast zodat je je username kan invoeren en als je skill niet ranked is er ook not ranked komt te staan.
LET OP: dit bestand moet wel opgeslagen worden als <rslookup.php>.
Dit is mijn code:
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
<?php
error_reporting(E_ALL);
function
GetRSstats($username,&$result)
{

    $arrSkills = array(
            "Total",
            "Attack",
            "Defence",
            "Strength",
            "Hitpoints",
            "Ranged",
            "Prayer",
            "Magic",
            "Cooking",
            "Woodcutting",
            "Fletching",
            "Fishing",
            "Firemaking",
            "Crafting",
            "Smithing",
            "Mining",
            "Herblore",
            "Agility",
            "Thieving",
            "Slayer",
            "Farming",
            "Runecraft",
            "Hunter",
            "Construction",
            "Summoning"
            ); // Skills... Order DOES matter, it should always be the same order as the highscores page.

    $sDomain = "http://hiscore.runescape.com/"; // With trailing /
    $sPage = "index_lite.ws?player="; // Page to request

        # You shouldnt have to change anything from here

    $arrLevels = @file($sDomain.$sPage.urlencode($username),FILE_IGNORE_NEW_LINES); // Obtaining scores, surpressing possible warnings
    $result = Array();

    if($arrLevels === false || empty($username) || strlen($username) > 15)
        return false;

    $iLength = count($arrSkills);
    for($i = 0;$i < $iLength;$i++)
    {

        $levels = explode(",",$arrLevels[$i]);
        $arrStats[$arrSkills[$i]]["skill"] = $arrSkills[$i];
        $arrStats[$arrSkills[$i]]["rank"] = $levels[0];
        $arrStats[$arrSkills[$i]]["level"] = $levels[1];
        $arrStats[$arrSkills[$i]]["exp"] = $levels[2];
    }


    $result = $arrStats;
    return true;
}

?>

<html>
<head>
<title>Stat lookup</title>
</head>
<body>
<form action="rslookup.php" method="POST">
Username:&nbsp;&nbsp;&nbsp;<input type="text" name="uname" value="" />
<br /><input type="submit" value="Zoek hiscores" />
</form><br />
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
<?php
$us
= $_POST['uname'];
    if(GetRSstats($us,$stats))
    {

        echo "Stats from: <b>".$us."</b><br /><br />";
        echo "<table width=600 id=l style='border-color:black; font-weight:800'>\n<tr><td style='font-weight:bolder'>Skill</td><td style='font-weight:bolder; width:300'>Rank</td><td style='font-weight:bolder; width:300'>Level</td><td style='font-weight:bolder; width:300'>XP</td></tr>\n";
        foreach($stats as $values){
        echo norank("<tr><td>".$values['skill']."</td><td>".$values['rank']."</td><td>".$values['level']."</td><td>".$values['exp']."</td></tr><tr><td></td></tr>\n");
        }

        echo "</table><br />";
     }

    else
    {
     if($us!=''){
     echo 'Username does not exists!!!';
     }
else{
     echo 'No username entered!!!';
     }
     }
function
norank($tekst) {
        $x = '-1';
        $tekst = eregi_replace($x, '<i style="font-weight:normal">Not Ranked</i>', $tekst);
        echo $tekst;
}

?>

</body>
</html>
Youri
Youri
18 jaar geleden
 
0 +1 -0 -1
Als ik nu naar mijn site toe ga, (http://youri.woelmuis.nl/lookup.php), staat er "Username does not exist".
Matthias R
Matthias R
18 jaar geleden
 
0 +1 -0 -1
Mooi gedaan ik ken wel een paar mensen die hier al een tijdje over zagen :p
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


18 jaar geleden
 
0 +1 -0 -1
Maak er gewoon zelf één. Zo moeilijk is het niet. Het enige wat je nodig hebt is een skill array.

@Youri: Word de username wel door gegeven?

Edit: Wacht maar tot dat mijn project af is. (Zal alvast iets verklappen.. GE + API)

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

Inhoudsopgave

  1. runescape-level-lookup

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.