Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Помогите с userbar
#1
Вот я поставил userbar он не правильно отображает данные, потому что он под версию 2.х.х, а мне надо чтоб онтображал под 3.0.9 я знаю даже где править чтоб правильно отображал данные но не знаю какие значения ставить вот конфиг помогите

PHP код:
<?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
Ответ
#2
Как бы ничего не упустил.
PHP код:
<?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
Ответ
#3
PROGRAMMATOR Написал:Как бы ничего не упустил.
PHP код:
<?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 код:
<?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 код:
<?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 код:
<?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 код:
<?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 код:
<?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 код:
<?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)." %";
Какое тут значение?
Если можно весь конфиг выложете пожалуйсто.....Wink
Ответ
#4
neo-skynet;30362 Написал:Если можно весь конфиг выложете пожалуйсто.....
Пожалуйста, http://wiki.udbforums.org/index.php/Character_data
Ответ
#5
PROGRAMMATOR Написал:Пожалуйста, http://wiki.udbforums.org/index.php/Character_data

Я в том не разобрался, а нету готового (я понимаю что это может уже и наглость, но пожалуйсто.. вот мой конфиг не могли бы вы его исправить
Код:
<?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);
}
?>
Ответ
#6
Готового нет и не должно быть. Есть отличная таблица, которая описывает каждое значение, я Вам ее уже дал. Теперь подумайте, я за Вас делать не буду.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Userbar для 11159 VoltVolt 10 4,253 02-03-2010, 12:31 AM
Последний пост: VoltVolt
  Помогите в создании сайта Arsenn 2 2,432 10-25-2009, 05:45 PM
Последний пост: Arsenn
  Помогите запустить сервер Asix 10 4,859 07-11-2009, 02:15 AM
Последний пост: JanusLee

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)