Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Runescapesta taitojen haku ja tulostus

Sivun loppuun

Mee [25.12.2006 17:13:35]

#

Olisiko jotain koodia joka tulostaisi runescapesta (http://www.runescape.com) tietyn hahmon taidot, tai vaikka vain yhden taidon?

Kentti [25.12.2006 18:09:30]

#

Eipä tuollaista oikein taida saada, ellet sitten jotenkin pääse niiden tietokantoihin käsiksi, tai rupea väsäämään lähdekoodin hakua nettisivuilta. En suosittele yrittämään...

msdos464 [25.12.2006 18:54:37]

#

Voisin tuollaisen ajankuluksi värkätä.. saako pelaajan statsit näkyviin ilman, että täytyy kirjautua tuolle sivulle? Esim. Warcraftin statsit näkyy tällä tavalla kätevästi:


http://www.battle.net/war3/ladder/w3xp-player-logged-games.aspx?Gateway=Northrend&PlayerName=WreckeD

Jos se vaatii kirjautumisen, niin tuosta tulee vähän hankalampaa.

Mee [25.12.2006 21:04:45]

#

Juu, saa. Tässä olisi osoite miten sen saa:
http://hiscore.runescape.com/lang/en/aff/runescape/hiscorepersonal.ws?user1=kayttajan-nick-tahan
Ja kiitti jos teet.

msdos464 [25.12.2006 23:14:10]

#

"Kayttajan Ni does not feature in the hiscores. You have to be in the top 1 million (for any skill) and have a minimum skill level of 30."

Että miten tuosta nyt sitten saisi jotain fiksua irti? :P

tsuriga [25.12.2006 23:23:32]

#

Korvaamalla URLista "kayttajan-nick-tahan" jollakin oikealla käyttäjänimellä. plx. Ja teen ton sulle viidelläkympillä.

juha127 [25.12.2006 23:36:53]

#

Vähä enemmän googlea.
Tuohon tarkoitukseen löytyy suoraan valmis scripti. No itselätäni se löytyy kätköistä tässä muodossa:

$handle = fopen("http://hiscore.runescape.com/lang/en/aff/runescape/hiscorepersonal.ws?user1=" . $_GET['name'],"r");
if($handle){
   while (!feof($handle)) {
   $contents .= fread($handle, 8192);}
fclose($handle);}
function parse($skill){

   return substr(strstr($GLOBALS['contents'], '>'.$skill.'<'), strrpos(substr(strstr($GLOBALS['contents'], '>'.$skill.'<'), 1, 90), "</td><td align=") - 7, 2);}

$skill = Array(
	1 => parse(Attack),
	4 => parse(Strength),
	7 => parse(Defence),
	10 => parse(Hitpoints),
	13 => parse(Ranged),
	16 => parse(Prayer),
	19 => parse(Magic),
	2 => parse(Cooking),
	5 => parse(Woodcutting),
	8 => parse(Fletching),
	11 => parse(Fishing),
	14 => parse(Firemaking),
	17 => parse(Crafting),
	20 => parse(Smithing),
	3 => parse(Mining),
	6 => parse(Herblore),
	9 => parse(Agility),
	12 => parse(Thieving),
	15 => parse(Slayer),
	18 => parse(Runecraft),
	21 => parse(Farming)
	);

Tuosta puuttuu viimeisimmät taidot, mutta senkuks lisäät ne taulukkoon, ja kehittelet tuosta mitä ihmeellisimpiä scriptejä, kuten minä aikoinaan. ;)

tsuriga [25.12.2006 23:47:24]

#

Sinne meni viiskymppiä. Onpahan sen verran hirveän näköistä koodia, että sen täytyy toimia.

Mee [26.12.2006 10:08:23]

#

tsuriga kirjoitti:

Sinne meni viiskymppiä. Onpahan sen verran hirveän näköistä koodia, että sen täytyy toimia.

Ja pöh, luuletko et olisin vielä maksanukki sulle?
Ja... ööh... tiiän et oon surku php:ssä mut jos tohon loppuun laittaa
echo "" niin mitä noiden lainausmerkkien sisään tulee?

ajv [26.12.2006 12:11:40]

#

Kuten tsuriga asian mainitsi, sen verran hirveen näköstä koodia että sen täytyy toimia :) Ite en ainakaan muutaman minuutin silmäilyllä nähnyt tuossa päätä enkä häntää... Eli hyvin vaikea sanoa mitä tuosta pitäisi tulostaa.

Edit: eikun echo parse($skills); ? Toimii jos toimii.

Niko [26.12.2006 12:39:59]

#

echo $skill[1] ... $skill[21]?

tsuriga [26.12.2006 14:02:49]

#

<?php

function parseRunescapeSkill($skill) {
	return substr(strstr($GLOBALS['hiscore_page'], '>' . $skill . '<'), strrpos(substr(strstr($GLOBALS['hiscore_page'], '>' . $skill . '<'), 1, 90), '</td><td align=') - 7, 2);
}

$hiscore_page = file_get_contents( "http://hiscore.runescape.com/lang/en/aff/runescape/hiscorepersonal.ws?user1=" . urlencode($_GET['name']));

$skills = array('Attack',
	'Strength',
	'Defence',
	'Hitpoints',
	'Ranged',
	'Prayer',
    'Magic',
    'Cooking',
	'Woodcutting',
	'Fletching',
	'Crafting',
	'Smithing',
	'Firemaking',
	'Mining',
	'Herblore',
	'Agility',
	'Thieving',
	'Slayer',
	'Runecraft',
	'Farming',
	'Hunter',
	'Construction');
$levels = array();

foreach ($skills as $skill) {
	$levels[$skill] = parseRunescapeSkill($skill);
}

echo 'Mining: ' . $levels['Mining'];

?>

Tältä koodi siis voisi näyttää, jos se toimisi. Parserointimoduuli kaipaisi fixausta. Mee, lue oppaita ja lähde ite rakentamaan jostakin pienemmästä. Varmaan opit kohta itekin tämän korjaamaan.

msdos464 [26.12.2006 14:30:57]

#

http://msdos464.no-ip.com/php/rune.php?player=temptress69

:)

<html>
<?php

	if (isset($_GET['player']))
		{
		$name = $_GET['player'];
		$source = preg_replace("/(\n|\r)/", "", file_get_contents( 'http://hiscore.runescape.com/lang/en/aff/runescape/hiscorepersonal.ws?user1=' . urlencode($_GET['player'])));

		preg_match_all("/<tr><td align\=\"right\"><img(.*?)><\/td>(.*?)<\/a><\/td>(.*?)<\/tr>/", $source, $taul);

		echo "<table border=1>\n<tr><td>Skill</td><td align=right>Rank</td><td align=right>Level</td><td align=right>Xp</td></tr>\n";
		for ($a = 0; $a < sizeof($taul[0]); $a++)
			echo "<tr><td>".substr($taul[2][$a], strrpos($taul[2][$a], "\">")+2)."</td>".$taul[3][$a]."</tr>\n";
		echo "</table><p>\n";
		}
	else
		 $name = "";

	echo "<form action=rune.php method=get><input name=player value=\"$name\"><input type=submit></form>";

?>
</html>

(Mod. edit: välejä pitkille riveille, kiltit. :< Menee leiska rikki ja tulee vaakasuuntainen scrollbar esiin.)

Mee [26.12.2006 14:36:53]

#

msdos464 kirjoitti:

...

Jaa, kiitos. Taidan käyttää tätä koodia. :). Ja vielä kiitos, juuri sellainen mitä pitikin!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta