All pastes #978645 Raw Edit

Stuff

public text v1 · immutable
·published 2008-04-09 18:31 UTC
rendered paste body
<?php
error_reporting(0);
////////////// functions ////////////////////////
function getHexColors($c) 
{
	$c = preg_replace("/[^a-f0-9]/i", "", $c);
	return array(
		hexdec(substr($c, 0, 2)),
		hexdec(substr($c, 2, 2)),
		hexdec(substr($c, 4, 2))
	);
}

function width($txt, $size, $font) 
{
	$b = ImageTTFBBox($size, 0, $font, $txt);
	return $b[2];
}

function parseIni($file) 
{
	$f = file($file);
	$sections = array();
	$curSection = false;
	foreach($f as $fl) 
	{
		if(!trim($fl)) continue;
		if(preg_match("/^\[(.*?)\]$/", trim($fl), $matches)) 
		{
			$curSection = $matches[1];
		} 
		else 
		{
			list($k, $v) = explode("=", trim($fl), 2);
			$sections[$curSection][$k] = $v;
		}
	}
	return $sections;
}
//////////////////////////////////////

if (@$_GET['name']) 
{
	$options = parseIni("config/config.ini", true);
	$mainFont = $options["General"]["MainFont"];
	$plainFont = $options["General"]["PlainFont"];

//	îïðåäåëÿåì ÿçûê èç êîíôèãà
	$lang = $options["Language"]["Lang"];
	$optionsLang = parseIni("lang/$lang.ini", true);
//	ini_set("user_agent", "Mozilla/5.0 Gecko/20070219 Firefox/2.0.0.2");
	$img = ImageCreateTrueColor(490, 64);

	$host = $options["MySQLServer"]["db_host"];
	$port = $options["MySQLServer"]["db_port"];
	$user = $options["MySQLServer"]["db_user"];
	$pass = $options["MySQLServer"]["db_pass"];
	$dbc = $options["MySQLServer"]["dbc"];
	$dbr = $options["MySQLServer"]["dbr"];
//	$realm = $options["realm"]["realmname"];

	$char_name = get_magic_quotes_gpc() ? $_GET['name'] : mysql_escape_string($_GET['name']);

	function win2uni($s)
	{
		$s = convert_cyr_string($s,'w','i');
		for ($result='', $i=0; $i<strlen($s); $i++)
		{
			$charcode = ord($s[$i]);
			$result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
		}
		return $result;
	}
// 	ïîëó÷àåì äàííûå î ïåðñîíàæå
	mysql_connect($host.':'.$port,$user,$pass) or die(mysql_error());
	mysql_select_db($dbc) or die(mysql_error());
	$sql = mysql_query("SELECT `guid`, `account`, `data`, `race`, `class`, `online`, `pending_honor` FROM `characters` WHERE `name`='".$char_name."';");
	if (mysql_num_rows($sql)!='1') 
	{
		exit("Îøèáêà! Ïåðñîíàæ íå íàéäåí!");
	}
	$row = mysql_fetch_array($sql, MYSQL_ASSOC);
	$race  =  $row['race'];
	$class = $row['class'];
	$guid = $row['guid'];
	$account = $row['account'];
	$charstat = $row['online'];
	
	if ($charstat == 1) 
	{
		$status = $optionsLang["StatusLookup"]["online"];
	}
	else $status = $optionsLang["StatusLookup"]["offline"];
	
	$data = explode(' ',$row['data']);
	$lvl =  $data[34];
	$honor = ceil($data[1432] + $row['pending_honor']);
	$kills = $data[1387];
//	õî÷ó ÷òîáû ïîëîñà ïîä èìåíåì ïîêàçûâàëà ñêîëüêî îñòàëîñü èãðîêó äî ñëåäóþùåãî óðîâíÿ, åñëè òîëüêî îí íå ìàêñèìàëüíîãî óðîâíÿ
//	$xp = $data[856];		// íå ðåâàëèçîâàë åùå
//	$next_xp = $data[857];		// íå ðåâàëèçîâàë åùå
	
	$staName[1] = $optionsLang["StateLookup"]["Strength"];
	$sta[1] = $data[171];
	$staName[2] = $optionsLang["StateLookup"]["Agility"];
	$sta[2] = $data[172];
	$staName[3] = $optionsLang["StateLookup"]["Stamina"];
	$sta[3] = $data[173];
	$sta[4] = $data[174];
	$staName[4] = $optionsLang["StateLookup"]["Intelect"];
	$sta[5] = $data[175];
	$staName[5] = $optionsLang["StateLookup"]["Spirit"];
	$stat[1] = $data[28];
	$statName[1] = $optionsLang["StateLookup"]["Health"];

	
//	ïîëó÷àåì äàííûå î ñòàòóñå ïåðñîíàæà: ÃÌ óðîâåíü
	mysql_connect($host.':'.$port,$user,$pass) or die(mysql_error());
	mysql_select_db($dbr) or die(mysql_error());
	
	$sqlr = mysql_query("SELECT `gmlevel` FROM `account` WHERE `id`='".$account."';");
	if (mysql_num_rows($sqlr)!='1') {exit("Îøèáêà!! Ïåðñîíàæ íå íàéäåí!");} 
	$rowr = mysql_fetch_array($sqlr, MYSQL_ASSOC);
	$gmlevel = $rowr['gmlevel'];
//	ïîëó÷àåì íàçâàíèå ðåàëìà
	$realm_row = mysql_query("SELECT `name` FROM `realmlist` WHERE `id`='".$options["realm"]["realm_id"]."';");
	$row = mysql_fetch_array($realm_row, MYSQL_ASSOC);
	$realm = $row['name'];
// 	ñëó÷àé äëÿ ñåðâåðîâ ñ íåñêîëüêèìè ðåàëìàìè, ïîêà íåäîäåëàíî
//	$sqlr2 = mysql_query("SELECT `realmid` FROM `realmcharacters` WHERE `acctid`='.$account.'");
//	if (mysql_num_rows($sqlr2)!='1') {exit("Îøèáêà!!! Ïåðñîíàæ íå íàéäåí!");}
//	$rowr2 = mysql_fetch_array($sqlr2, MYSQL_ASSOC);
//	$realmid = $rowr2['realmid'];
//	$sqlr3 = mysql_query("SELECT `name` FROM `realmlist` WHERE `id`='".$realmid."';");
//	if (mysql_num_rows($sqlr3)!='1') {exit("Îøèáêà!!!! Ïåðñîíàæ íå íàéäåí!");}
//	$rowr3 = mysql_fetch_array($sqlr3, MYSQL_ASSOC);

    if ($honor <= 0) {$rank = 0;}
	else if ($honor < 500) {$rank = 1;}
	else if ($honor < 1500) {$rank = 2;}
	else if ($honor < 3000) {$rank = 3;}
	else if ($honor < 5000) {$rank = 4;}
	else if ($honor < 7500) {$rank = 5;}
	else if ($honor < 10000) {$rank = 6;}
	else if ($honor < 15000) {$rank = 7;}
	else if ($honor < 20000) {$rank = 8;}
	else if ($honor < 30000) {$rank = 9;}
	else if ($honor < 40000) {$rank = 10;}
	else if ($honor < 50000) {$rank = 11;}
	else if ($honor < 75000) {$rank = 12;}
	else if ($honor < 100000) {$rank = 13;}
	else if ($honor < 150000) {$rank = 14;}
	else {$rank = 15;}

	if ($gmlevel > 0)
	{
		if ($gmlevel == 1)	{$gmlvl=$optionsLang["GMLevelLookup"]["moderator"];}
		else if ($gmlevel == 2)	{$gmlvl=$optionsLang["GMLevelLookup"]["gm"];}
		else if ($gmlevel == 3)	{$gmlvl=$optionsLang["GMLevelLookup"]["administrator"];}
	}
	else {$gmlvl = $optionsLang["GMLevelLookup"]["player_honor"]." ".$honor."  
	".$optionsLang["GMLevelLookup"]["player_kills"]." ".$kills;}

	if ($gmlevel > 0)
	{
		$text_color_1 = $options["ColorsGM"]["text_color_1"];
		$text_color_2 = $options["ColorsGM"]["text_color_2"];
		$color_1 = $options["ColorsGM"]["color_1"];
		$color_2 = $options["ColorsGM"]["color_2"];
	}
	else
		if (in_array($race, array(1,3,4,7,11)))
	    {
	         $text_color_1 = $options["ColorsA"]["text_color_1"];
	         $text_color_2 = $options["ColorsA"]["text_color_2"];
	         $color_1 = $options["ColorsA"]["color_1"];
	         $color_2 = $options["ColorsA"]["color_2"];
	    }
	    else
	    {
	         $text_color_1 = $options["ColorsH"]["text_color_1"];
	         $text_color_2 = $options["ColorsH"]["text_color_2"];
	         $color_1 = $options["ColorsH"]["color_1"];
	         $color_2 = $options["ColorsH"]["color_2"];
	    }

//	âûâîäèì õàðàêòåðèñòèêè ÷àðîâ
	if ($class == 1 || $class == 4)  // âîèíó è âîðó êðèò 
	{
		$statName[2] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1256]));
		$stat[2] = substr($ar[1],0,4)."%";
	}
	else // îñòàëüíûì ìàíó
	{
		$statName[2] = $optionsLang["StateLookup"]["Mana"];
		$stat[2] = $data[29];
	}

	if ($class == 1) // âîèíó áëîê, áðîíþ è óêëîí
	{
		$statName[3] = $optionsLang["StateLookup"]["Block"];
		$ar = unpack("f", pack("V", $data[1252]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["Dodge"];
		$ar = unpack("f", pack("V", $data[1253]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Defense"];
		$stat[5] = $data[186];
	}

	if ($class == 2) // ïàëó êðèò ñâÿòîé, áëîê è áðîíþ
	{
		$statName[3] = $optionsLang["StateLookup"]["HolyCritSpell"];
		$ar = unpack("f", pack("V", $data[1260]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["Block"];//
		$ar = unpack("f", pack("V", $data[1252]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Defense"];
		$stat[5] = $data[186];
	}

	if ($class == 3) // îõîòíèêó êðèò ñòðåëêîâûì, êðèò è óêëîí
	{
		$statName[3] = $optionsLang["StateLookup"]["CritRange"];
		$ar = unpack("f", pack("V", $data[1257]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1256]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Dodge"];
		$ar = unpack("f", pack("V", $data[1253]));
		$stat[5] = substr($ar[1],0,4)."%";
	}

	if ($class == 4) // âîðó óêëîí, ïàðè è áðîíþ
	{
		$statName[3] = $optionsLang["StateLookup"]["Dodge"];
		$ar = unpack("f", pack("V", $data[1253]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["Pary"];
		$ar = unpack("f", pack("V", $data[1254])); 
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Defense"];
		$stat[5] = $data[186];
	}

	if ($class == 5) // æðåöó êðèò òåìíîé, êðèò ñâÿòîé è áðîíþ
	{
		$statName[3] = $optionsLang["StateLookup"]["ShadowCritSpell"];
		$ar = unpack("f", pack("V", $data[1264]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["HolyCritSpell"];
		$ar = unpack("f", pack("V", $data[1260]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Defense"];
		$stat[5] = $data[186]; // çà÷åì?
	}

	if ($class == 7) // øàìàíó êðèò, êðèò ïðèðîäîé è áðîíþ (à âîîáùå íå ïëîõî áû êðèòû íà îãîíü, õîëîä...)
	{
		$statName[3] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1256]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["NatureCritSpell"];
		$ar = unpack("f", pack("V", $data[1262]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Defense"];
		$stat[5] = $data[186];
	}

	if ($class == 8) // ìàãó êðèòû íà îãîíü, õîëîä è òàéíóþ
	{
		$statName[3] = $optionsLang["StateLookup"]["FireCritSpell"];
		$ar = unpack("f", pack("V", $data[1261]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["FrostCritSpell"];
		$ar = unpack("f", pack("V", $data[1263]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["ArcaneCritSpell"];
		$ar = unpack("f", pack("V", $data[1265]));
		$stat[5] = substr($ar[1],0,4)."%";
	}

	if ($class == 9) // êîëäóíó êðèòû íà òåìíóþ, îãîíü è áðîíþ
	{
		$statName[3] = $optionsLang["StateLookup"]["FireCritSpell"];
		$ar = unpack("f", pack("V", $data[1261]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["ShadowCritSpell"];
		$ar = unpack("f", pack("V", $data[1264]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["Defense"];
		$stat[5] = $data[186];
	}

	if ($class == 11) // äðóèäó êðèò, êðèò ïðèðîäó è êðèò òàéíóþ
	{
		$statName[3] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1256]));
		$stat[3] = substr($ar[1],0,4)."%";
		$statName[4] = $optionsLang["StateLookup"]["NatureCritSpell"];
		$ar = unpack("f", pack("V", $data[1262]));
		$stat[4] = substr($ar[1],0,4)."%";
		$statName[5] = $optionsLang["StateLookup"]["ArcaneCritSpell"];
		$ar = unpack("f", pack("V", $data[1265]));
		$stat[5] = substr($ar[1],0,4)."%";
	}
	
//	îïðåäåëÿåì ïðîôåññèè ó èãðîêà
	for ($i=858; $i<1241; $i+=3)
	{
		if ($data[$i]==0)  continue;
		$skill = $data[$i];
		if ($skill > 65536) $skill -= 65536;
		$value = $data[$i+1];
		$value = $value % 65536;
		if(@$optionsLang["SkillLookup"][$skill])
		{
		    $prof["name"] = $optionsLang["SkillLookup"][$skill];
		    $prof["value"] = $value;
		    $profs[] = $prof;
		}
	}

	$gender = dechex($data[36]);
	$gender = str_pad($gender,8, 0, STR_PAD_LEFT);
	$gender = $gender{3};
	
//	îïðåäåëÿåì íàçâàíèå ãèëüäèè â êîòîðîé ñîñòîèò ïåðñîíàæ( åñëè ñîñòèîò )
	mysql_select_db($dbc) or die(mysql_error());
	$sql = mysql_query("SELECT `name` FROM `guild` g INNER JOIN `guild_member` gm ON g.guildid = gm.guildid WHERE gm.guid=".$guid.";");
	$row = mysql_fetch_array($sql, MYSQL_ASSOC);
	$guildName = $row['name'];

	$char_name = strtoupper(substr($char_name,0,1)). strtolower(substr($char_name,1,strlen($char_name)-1));

//	èêîíêà ðàíãà â çàâèñèìîñòè îò êîëè÷åñòâà õîíîð î÷êîâ
	$titleImg = "";
	if ($rank) $titleImg = "Pvprank$rank.png";
//	îïðåäåëÿåì âèä èêîíêè ðàññû íà áàðå â çàâèñèìîñòè îò óðîâíÿ ïåðñîíàæà
	if ($lvl < 60)
		$portrait = ImageCreateFromGif("static/portraits/np/$gender-$race-$class.gif");
	else 
		if($lvl < 70)  
			$portrait = ImageCreateFromGif("static/portraits/60/$gender-$race-$class.gif");
		else 
			$portrait = ImageCreateFromGif("static/portraits/70/$gender-$race-$class.gif");
		
	$white = ImageColorAllocate($img, 255, 255, 255);
	$whitea = ImageColorAllocateAlpha($img, 255, 255, 255, 80);
	$black = ImageColorAllocate($img, 0, 0, 0);
	$blacka = ImageColorAllocateAlpha($img, 0, 0, 0, 100);

	$text_r = 255;
	$text_g = 210;
	$text_b = 0;

	$s_text_r = 255;
	$s_text_g = 255;
	$s_text_b = 255;

	if($text_color_1) list($text_r, $text_g, $text_b) = getHexColors($text_color_1);
	if($text_color_2) list($s_text_r, $s_text_g, $s_text_b) = getHexColors($text_color_2);

	$textcolor = ImageColorAllocate($img, $text_r, $text_g, $text_b);
	$secondaryTextColor = ImageColorAllocate($img, $s_text_r, $s_text_g, $s_text_b);

	ImageFill($img, 0, 0, $black);

	$base_r = 0;
	$base_g = 0;
	$base_b = 0;

	$dest_r = 0;
	$dest_g = 120;
	$dest_b = 255;

	if($color_1) list($base_r, $base_g, $base_b) = getHexColors($color_1);
	if($color_2) list($dest_r, $dest_g, $dest_b) = getHexColors($color_2);

	for($i=0; $i<ImageSY($img); $i++) 
	{
		$r = min($base_r + (($dest_r - $base_r) / ImageSY($img) * $i) ,255);
		$g = min($base_g + (($dest_g - $base_g) / ImageSY($img) * $i) ,255);
		$b = min($base_b + (($dest_b - $base_b) / ImageSY($img) * $i) ,255);
		$c = ImageColorAllocate($img, $r, $g, $b);
		ImageLine($img, 0, $i, ImageSX($img), $i, $c);
		ImageColorDeallocate($img, $c);
	}

	$offset = 3;
	ImageFilledRectangle($img, $offset, $offset, ImageSX($img) - $offset - 1, ImageSY($img) - $offset - 1, $blacka);
	ImageRectangle($img, $offset, $offset, ImageSX($img) - $offset - 1, ImageSY($img) - $offset - 1, $blacka);

	ImageCopyResampled($img, $portrait, 0, 0, 0, 0, 64, 64, ImageSX($portrait), ImageSY($portrait));
	ImageRectangle($img, 0, 0, ImageSX($img) - 1, ImageSY($img) - 1, $black);

	$left = 0;
	$RIGHT_EDGE = 0;
	$fontSize = 16;
	if(strlen($char_name) >= 10)
		$fontSize = 16;
	if($titleImg) 
	{
		$rank = ImageCreateFromPNG("static/ranks/$titleImg");
		ImageCopyResampled($img, $rank, 70, 9, 0, 0, 20, 20, ImageSX($rank), ImageSY($rank));
		ImageTTFText($img, $fontSize, 0, 95, 30, $textcolor, $mainFont, $char_name);
		$left = width($char_name, $fontSize, $mainFont) + 60;
		$left = 180;
	}
	else 
	{
		ImageTTFText($img, $fontSize, 0, 75, 30, $textcolor, $mainFont, $char_name);
		$left = width($char_name, $fontSize, $mainFont) + 80;
	}
	
	$textLeft = min($left + 150, 335);
	$lineWidth = $textLeft - 120;

	for($i=1; $i<=3; $i++) 
	{
		if($profs && sizeof($profs) > 0) 
		{
			$prof = @$profs[$i-1];
			$name = @$prof['name'];
			$v = @$prof['value'];
			$txt = "$v $name";
			ImageTTFText($img, 8, 0, $textLeft - width($txt, 8, $plainFont), 11 + (($i-1) * 11), $textcolor, $plainFont, win2uni($txt));
		}
	}

	$midWidth = $lineWidth;
	$y = 33;
	ImageLine($img, 100, $y, 100+$midWidth, $y, $textcolor);
	for($i=0; $i<30; $i++) 
	{
		$c = ImageColorAllocateAlpha($img, $text_r, $text_g, $text_b, floor(87 / 30 * $i)+40);
		ImageLine($img, 100+$midWidth+$i, $y, 100+$midWidth+$i+1, $y, $c);
		ImageLine($img, 100-$i, $y, 99-$i, $y, $c);
		ImageColorDeallocate($img, $c);
	}

	ImageTTFText($img, 10, 0, 70, 46, $textcolor, $mainFont, "".win2uni($optionsLang["StateLookup"]["Level"])." $lvl ".win2uni($optionsLang["RaceLookup"][$race])." ".win2uni($optionsLang["ClassLookup"][$class]." - ". $status));
	 
	if($guildName)
	{
		ImageTTFText($img, 9, 0, 70, 59, $textcolor, $mainFont, "<" . $guildName . "> - " . $realm . " " . "");
	}
	else ImageTTFText($img, 9, 0, 70, 59, $textcolor, $mainFont, $realm . " server " . "");
	ImageTTFText($img, 9, 0, 5, 15, $textcolor, $mainFont, $gmlvl);
//	ïîëîæåíèå ïàðàìåòðîâ ñïðàâà
//	1 ñòîëáåö
    for($n = 1; $n <= 5; $n++)
	{
	    $w = $sta[$n];
		$texu = "$w";
		$bbo = ImageTTFBBox(9, 0, $mainFont, $texu);
		ImageTTFText($img, 9, 0, ImageSX($img) - $bbo[2] - 128, 3 + ($n*11), $secondaryTextColor, $mainFont, win2uni($texu));
	}	
//	2 ñòîëáåö
    for($n = 1; $n <= 5; $n++)
	{
	    $nam = $staName[$n];
		$texu2 = "$nam";
		$bbo2 = ImageTTFBBox(9, 0, $mainFont, $texu2);
		ImageTTFText($img, 9, 0, ImageSX($img) - $bbo2[2] - 110, 3 + ($n*11), $secondaryTextColor, $mainFont, win2uni($texu2));
	}	
//	3 ñòîëáåö
	for($i = 1; $i <= 5; $i++)
	{
		$v = $stat[$i];
		$text = "$v";
		$bbox = ImageTTFBBox(9, 0, $mainFont, $text);
		ImageTTFText($img, 9, 0, ImageSX($img) - $bbox[2] - 62, 3 + ($i*11), $secondaryTextColor, $mainFont, win2uni($text));
	}
//	4 ñòîëáåö
	for($i = 1; $i <= 5; $i++)
	{
		$name = $statName[$i];
		$text2 = "$name";
		$bbox2 = ImageTTFBBox(9, 0, $mainFont, $text2);
		ImageTTFText($img, 9, 0, ImageSX($img) - 60, 3 + ($i*11), $secondaryTextColor, $mainFont, win2uni($text2));
	}
	
	$filename = $char_name;
	$ext = "png";
	header("Content-disposition: inline; filename=$filename.$ext");
	header("content-type: image/$ext");
	header("cache-control: max-age=86400");
	ImagePNG($img);
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<FORM ACTION="index.php" METHOD="GET">
<INPUT name="name" TYPE="text" VALUE="Ââåäèòå Âàø íèê...">
<INPUT TYPE="submit" VALUE="Ïîëó÷èòü êîä*">
</FORM>
* - code copy of your browser's address bar! To obtain the signature should be inserted in the forum received a link between [IMG] and [/ IMG]