Помогите с userbar - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Непрочитано 03.04.2009, 18:52   #1
Аватар для neo-skynet
Пользователь

Автор темы (Топик Стартер) Помогите с userbar

Вот я поставил userbar он не правильно отображает данные, потому что он под версию 2.х.х, а мне надо чтоб онтображал под 3.0.9 я знаю даже где править чтоб правильно отображал данные но не знаю какие значения ставить вот конфиг помогите

PHP код:
$data explode(' ',$row['data']);
    
$lvl =  $data[34];                // for 2.3.3+
    
$honor $data[1562];            // for 2.4.3
    
$kills $data[1517];            // for 2.4.3
    
$arenapoints $data[1563];        // for 2.4.3
//    Получаем данные по опыту(текущий уровень опыта и сколько до следующего уровня)
    
$xp $data[926];                 // for 2.4.1
    
$next_xp $data[927];             // for 2.4.1
    
    
$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];
    
$staName[4] = $optionsLang["StateLookup"]["Intelect"];
    
$sta[4] = $data[174];
    
$staName[5] = $optionsLang["StateLookup"]["Spirit"];
    
$sta[5] = $data[175];
    
$statName[1] = $optionsLang["StateLookup"]["Health"];
    
$stat[1] = $data[28]; 
Вот я единственное знаю как сделать чтоб правильно отображал лвл вот например $lvl = $data[34]; надо поменять на $lvl = $data[53]; а вот как все остальное не знаю может кто подскажет!!! или дайте ссылочку под версию 3.0.9
neo-skynet вне форума Отправить сообщение для neo-skynet с помощью ICQ Отправить сообщение для neo-skynet с помощью Skype™ Ответить с цитированием
Непрочитано 03.04.2009, 20:13   #2
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Помогите с userbar

Как бы ничего не упустил.
PHP код:
$data explode(' ',$row['data']);
    
//$lvl =  $data[34];                // for 2.3.3+
    
$lvl $data[53]; // Для 3.0.9
    //$honor = $data[1562];            // for 2.4.3
    
$honor $data[1648]; // Для 3.0.9
    //$kills = $data[1517];            // for 2.4.3
    
$kills $data[1602]; // Для 3.0.9
    //$arenapoints = $data[1563];        // for 2.4.3
    
$arenapoints $data[1649]; // Для 3.0.9
    //Получаем данные по опыту(текущий уровень опыта и сколько до следующего уровня)
    //$xp = $data[926];                 // for 2.4.1
    
$xp $data[1010]; // Для 3.0.9
    //$next_xp = $data[927];             // for 2.4.1
    
$next_xp $data[1011]; // Для 3.0.9
    
    
$staName[1] = $optionsLang["StateLookup"]["Strength"];
    
//$sta[1] = $data[171];
    
$sta[1] = $data[84]; // Для 3.0.9
    
$staName[2] = $optionsLang["StateLookup"]["Agility"];
    
//$sta[2] = $data[172];
    
$sta[2] = $data[85]; // Для 3.0.9
    
$staName[3] = $optionsLang["StateLookup"]["Stamina"];
    
//$sta[3] = $data[173];
    
$sta[3] = $data[86]; // Для 3.0.9
    
$staName[4] = $optionsLang["StateLookup"]["Intelect"];
    
//$sta[4] = $data[174];
    
$sta[4] = $data[87]; // Для 3.0.9
    
$staName[5] = $optionsLang["StateLookup"]["Spirit"];
    
//$sta[5] = $data[175];
    
$sta[5] = $data[93]; // Для 3.0.9
    
$statName[1] = $optionsLang["StateLookup"]["Health"];
    
//$stat[1] = $data[28];
    
$stat[1] = $data[23]; // Для 3.0.9 
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 03.04.2009, 20:28   #3
Аватар для neo-skynet
Пользователь

Автор темы (Топик Стартер) Ответ: Помогите с userbar

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Как бы ничего не упустил.
PHP код:
$data explode(' ',$row['data']);
    
//$lvl =  $data[34];                // for 2.3.3+
    
$lvl $data[53]; // Для 3.0.9
    //$honor = $data[1562];            // for 2.4.3
    
$honor $data[1648]; // Для 3.0.9
    //$kills = $data[1517];            // for 2.4.3
    
$kills $data[1602]; // Для 3.0.9
    //$arenapoints = $data[1563];        // for 2.4.3
    
$arenapoints $data[1649]; // Для 3.0.9
    //Получаем данные по опыту(текущий уровень опыта и сколько до следующего уровня)
    //$xp = $data[926];                 // for 2.4.1
    
$xp $data[1010]; // Для 3.0.9
    //$next_xp = $data[927];             // for 2.4.1
    
$next_xp $data[1011]; // Для 3.0.9
    
    
$staName[1] = $optionsLang["StateLookup"]["Strength"];
    
//$sta[1] = $data[171];
    
$sta[1] = $data[84]; // Для 3.0.9
    
$staName[2] = $optionsLang["StateLookup"]["Agility"];
    
//$sta[2] = $data[172];
    
$sta[2] = $data[85]; // Для 3.0.9
    
$staName[3] = $optionsLang["StateLookup"]["Stamina"];
    
//$sta[3] = $data[173];
    
$sta[3] = $data[86]; // Для 3.0.9
    
$staName[4] = $optionsLang["StateLookup"]["Intelect"];
    
//$sta[4] = $data[174];
    
$sta[4] = $data[87]; // Для 3.0.9
    
$staName[5] = $optionsLang["StateLookup"]["Spirit"];
    
//$sta[5] = $data[175];
    
$sta[5] = $data[93]; // Для 3.0.9
    
$statName[1] = $optionsLang["StateLookup"]["Health"];
    
//$stat[1] = $data[28];
    
$stat[1] = $data[23]; // Для 3.0.9 


Да спасибо заработало,но не все не отображается мана,блок,броня... а дух пишет очень большое число...
вот у меня еще есть такие строчки
PHP код:
$statName[3] = $optionsLang["StateLookup"]["Block"];
        
$ar unpack("f"pack("V"$data[1316]));        // for 2.4.1
        
$stat[3] = substr($ar[1],0,4)." %";
        
$statName[4] = $optionsLang["StateLookup"]["Dodge"];
        
$ar unpack("f"pack("V"$data[1317]));        // for 2.4.1
        
$stat[4] = substr($ar[1],0,4)." %";
        
$statName[5] = $optionsLang["StateLookup"]["Defense"];
        
$stat[5] = $data[186]; 
Какое тут значение?

PHP код:
$statName[3] = $optionsLang["StateLookup"]["HolyCritSpell"];
        
$ar unpack("f"pack("V"$data[1325]));        // for 2.4.1
        
$stat[3] = substr($ar[1],0,4)." %";
        
$statName[4] = $optionsLang["StateLookup"]["Block"];
        
$ar unpack("f"pack("V"$data[1316]));        // for 2.4.1
        
$stat[4] = substr($ar[1],0,4)." %";
        
$statName[5] = $optionsLang["StateLookup"]["Defense"];
        
$stat[5] = $data[186]; 
Какое тут значение?

PHP код:
$statName[3] = $optionsLang["StateLookup"]["ShadowCritSpell"];
        
$ar unpack("f"pack("V"$data[1329]));        // for 2.4.1
        
$stat[3] = substr($ar[1],0,4)." %";
        
$statName[4] = $optionsLang["StateLookup"]["HolyCritSpell"];
        
$ar unpack("f"pack("V"$data[1325]));        // for 2.4.1
        
$stat[4] = substr($ar[1],0,4)." %";
        
//$statName[5] = $optionsLang["StateLookup"]["Defense"];
        //$stat[5] = $data[186]; // зачем?
        
$statName[5] =$data[1483];    // бонус к хилу
        
$stat[5] =$data[1463]." /";   // бонус к спел дамагу 
Какое тут значение?

PHP код:
$statName[3] = $optionsLang["StateLookup"]["FireCritSpell"];
        
$ar unpack("f"pack("V"$data[1326]));        // for 2.4.1
        
$stat[3] = substr($ar[1],0,4)." %";
        
$statName[4] = $optionsLang["StateLookup"]["FrostCritSpell"];
        
$ar unpack("f"pack("V"$data[1328]));        // for 2.4.1
        
$stat[4] = substr($ar[1],0,4)." %";
        
//$statName[5] = $optionsLang["StateLookup"]["ArcaneCritSpell"];
        //$ar = unpack("f", pack("V", $data[1330]));        // for 2.4.1
        //$stat[5] = substr($ar[1],0,4)." %";
        
$statName[5] ="spell dmg";
        
$stat[5] =$data[1463];   // бонус к спел дамагу 
Какое тут значение?

PHP код:
$statName[3] = $optionsLang["StateLookup"]["FireCritSpell"];
        
$ar unpack("f"pack("V"$data[1326]));        // for 2.4.1
        
$stat[3] = substr($ar[1],0,4)." %";
        
$statName[4] = $optionsLang["StateLookup"]["ShadowCritSpell"];
        
$ar unpack("f"pack("V"$data[1329]));        // for 2.4.1
        
$stat[4] = substr($ar[1],0,4)." %";
        
//$statName[5] = $optionsLang["StateLookup"]["Defense"];
        //$stat[5] = $data[186];// зачем?
        
$statName[5] ="Spell dmg";
        
$stat[5] =$data[1463];   // бонус к спел дамагу 
Какое тут значение?

PHP код:
$statName[3] = $optionsLang["StateLookup"]["CritMele"];
        
$ar unpack("f"pack("V"$data[1321]));        // for 2.4.1
        
$stat[3] = substr($ar[1],0,4)." %";
        
$statName[4] = $optionsLang["StateLookup"]["NatureCritSpell"];
        
$ar unpack("f"pack("V"$data[1327]));        // for 2.4.1
        
$stat[4] = substr($ar[1],0,4)." %";
        
$statName[5] = $optionsLang["StateLookup"]["FrostCritSpell"];
        
$ar unpack("f"pack("V"$data[1328]));        // for 2.4.1
        
$stat[5] = substr($ar[1],0,4)." %"
Какое тут значение?
Если можно весь конфиг выложете пожалуйсто.....
neo-skynet вне форума Отправить сообщение для neo-skynet с помощью ICQ Отправить сообщение для neo-skynet с помощью Skype™ Ответить с цитированием
Непрочитано 03.04.2009, 20:37   #4
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Помогите с userbar

Цитата:
Сообщение от neo-skynet Посмотреть сообщение
Если можно весь конфиг выложете пожалуйсто.....
Пожалуйста, http://wiki.udbforums.org/index.php/Character_data
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 03.04.2009, 20:46   #5
Аватар для neo-skynet
Пользователь

Автор темы (Топик Стартер) Ответ: Помогите с userbar

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Я в том не разобрался, а нету готового (я понимаю что это может уже и наглость, но пожалуйсто.. вот мой конфиг не могли бы вы его исправить
Код:
<?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());
	
//	поддержка руских ников и гильдий	
	$database_encoding = 'cp1251';
	if($database_encoding) 
	{
	        $temp = mysql_query("SET NAMES $database_encoding");
	        $temp = mysql_query("SET character_set_results=$database_encoding");
	}

	$sql = mysql_query("SELECT `guid`, `account`, `data`, `race`, `class`, `online` 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[53];				// for 2.3.3+
	$honor = $data[1648];			// for 2.4.3
	$kills = $data[1602];			// for 2.4.3
	$arenapoints = $data[1649];		// for 2.4.3
//	Получаем данные по опыту(текущий уровень опыта и сколько до следующего уровня)
	$xp = $data[1010]; 				// for 2.4.1
	$next_xp = $data[1011]; 			// for 2.4.1
	
	$staName[1] = $optionsLang["StateLookup"]["Strength"];
	$sta[1] = $data[84];
	$staName[2] = $optionsLang["StateLookup"]["Agility"];
	$sta[2] = $data[85];
	$staName[3] = $optionsLang["StateLookup"]["Stamina"];
	$sta[3] = $data[86];
	$staName[4] = $optionsLang["StateLookup"]["Intelect"];
	$sta[4] = $data[87];
	$staName[5] = $optionsLang["StateLookup"]["Spirit"];
	$sta[5] = $data[93];
	$statName[1] = $optionsLang["StateLookup"]["Health"];
	$stat[1] = $data[23];

	
//	получаем данные о статусе персонажа: ГМ уровень
	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." ".$optionsLang["GMLevelLookup"]["player_arena"]." ".$arenapoints;}

	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[1321]));			// for 2.4.1
		$stat[2] = substr($ar[1],0,4)." %";
	}
	else // остальным ману
	{
		$statName[2] = $optionsLang["StateLookup"]["Mana"];
		$stat[2] = $data[22];
	}

	if ($class == 1) // воину блок, броню и уклон
	{
		$statName[3] = $optionsLang["StateLookup"]["Block"];
		$ar = unpack("f", pack("V", $data[1316]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["Dodge"];
		$ar = unpack("f", pack("V", $data[1317]));		// for 2.4.1
		$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[1325]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["Block"];
		$ar = unpack("f", pack("V", $data[1316]));		// for 2.4.1
		$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[1322]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1321]));		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		$statName[5] = $optionsLang["StateLookup"]["Dodge"];
		$ar = unpack("f", pack("V", $data[1317]));		// for 2.4.1
		$stat[5] = substr($ar[1],0,4)." %";
	}

	if ($class == 4) // вору уклон, пари и блок
	{
		$statName[3] = $optionsLang["StateLookup"]["Dodge"];
		$ar = unpack("f", pack("V", $data[1317]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["Pary"];
		$ar = unpack("f", pack("V", $data[1318])); 		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		$statName[5] = $optionsLang["StateLookup"]["Block"];
		$ar = unpack("f", pack("V", $data[1316]));		// for 2.4.1
		$stat[5] = substr($ar[1],0,4)." %";
	}

	if ($class == 5) // жрецу крит темной, крит святой и спел/хмл дамаг
	{
		$statName[3] = $optionsLang["StateLookup"]["ShadowCritSpell"];
		$ar = unpack("f", pack("V", $data[1329]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["HolyCritSpell"];
		$ar = unpack("f", pack("V", $data[1325]));		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		//$statName[5] = $optionsLang["StateLookup"]["Defense"];
		//$stat[5] = $data[186]; // зачем?
		$statName[5] =$data[1483];    // бонус к хилу
		$stat[5] =$data[1463]." /";   // бонус к спел дамагу
	}

	if ($class == 7) // шаману крит, крит природой и холодом
	{
		$statName[3] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1321]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["NatureCritSpell"];
		$ar = unpack("f", pack("V", $data[1327]));		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		$statName[5] = $optionsLang["StateLookup"]["FrostCritSpell"];
		$ar = unpack("f", pack("V", $data[1328]));		// for 2.4.1
		$stat[5] = substr($ar[1],0,4)." %";
	}

	if ($class == 8) // магу криты на огонь, холод и тайную
	{
		$statName[3] = $optionsLang["StateLookup"]["FireCritSpell"];
		$ar = unpack("f", pack("V", $data[1326]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["FrostCritSpell"];
		$ar = unpack("f", pack("V", $data[1328]));		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		//$statName[5] = $optionsLang["StateLookup"]["ArcaneCritSpell"];
		//$ar = unpack("f", pack("V", $data[1330]));		// for 2.4.1
		//$stat[5] = substr($ar[1],0,4)." %";
		$statName[5] ="spell dmg";
		$stat[5] =$data[1463];   // бонус к спел дамагу
	}

	if ($class == 9) // колдуну криты на темную, огонь и броню
	{
		$statName[3] = $optionsLang["StateLookup"]["FireCritSpell"];
		$ar = unpack("f", pack("V", $data[1326]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["ShadowCritSpell"];
		$ar = unpack("f", pack("V", $data[1329]));		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		//$statName[5] = $optionsLang["StateLookup"]["Defense"];
		//$stat[5] = $data[186];// зачем?
		$statName[5] ="Spell dmg";
		$stat[5] =$data[1463];   // бонус к спел дамагу
	}

	if ($class == 11) // друиду крит, крит природу и крит тайную
	{
		$statName[3] = $optionsLang["StateLookup"]["CritMele"];
		$ar = unpack("f", pack("V", $data[1321]));		// for 2.4.1
		$stat[3] = substr($ar[1],0,4)." %";
		$statName[4] = $optionsLang["StateLookup"]["NatureCritSpell"];
		$ar = unpack("f", pack("V", $data[1327]));		// for 2.4.1
		$stat[4] = substr($ar[1],0,4)." %";
		$statName[5] = $optionsLang["StateLookup"]["ArcaneCritSpell"];
		$ar = unpack("f", pack("V", $data[1330]));		// for 2.4.1
		$stat[5] = substr($ar[1],0,4)." %";
	}
	
//	определяем профессии у игрока
	for ($i=928; $i<1311; $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[57]);
	$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);
   
	// цвет линии опыта основан на цвете градиента юзербара 
	$xplinecolor = ImageColorAllocate($img, $dest_r, $dest_g, $dest_b); 

	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 = 21;
	if(strlen($char_name) >= 10)
		$fontSize = 18;
	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(315, 325);
	$count = sizeof($profs);
	if($count > 3) $count = 3;
	for($i=1; $i<=$count; $i++) 
	{
		if($profs && sizeof($profs) > 0) 
		{
			$prof = @$profs[$i-1];
			$name = @$prof['name'];
			$v = @$prof['value'];
			$txt = "$v $name";
			ImageTTFText($img, 7, 0, $textLeft-60, 10 + (($i-1) * 9), $textcolor, $plainFont, win2uni($txt));
		}
	}
	
   $lineWidth = $textLeft - 60; 
	$y = 33;
	ImageLine($img, 65, $y, 65+$lineWidth, $y, $textcolor); 
	ImageLine($img, 65, $y, 65+$lineWidth*$xp/$next_xp, $y, $xplinecolor); 
	/*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 . " сервер " . "");
	ImageTTFText($img, 8, 0, 110, 10, $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] - 105, 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] - 65, 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";
	
	if($options["General"]["RedirectUrl"]==1)
	{
		$url = "userbar";
		header("Location: http://".$_SERVER['HTTP_HOST']."/".$url."/".$filename.".".$ext);
	}
	header("Content-disposition: inline; filename=$filename.$ext");
	header("content-type: image/$ext");
	header("cache-control: max-age=86400");
	ImagePNG($img);
}
?>
neo-skynet вне форума Отправить сообщение для neo-skynet с помощью ICQ Отправить сообщение для neo-skynet с помощью Skype™ Ответить с цитированием
Непрочитано 03.04.2009, 20:55   #6
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Помогите с userbar

Готового нет и не должно быть. Есть отличная таблица, которая описывает каждое значение, я Вам ее уже дал. Теперь подумайте, я за Вас делать не буду.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:33. Часовой пояс GMT +3.

Вверх