Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Web-обвязки (https://forum.zone-game.info/forumdisplay.php?f=161)
-   -   Помогите с userbar (https://forum.zone-game.info/showthread.php?t=3345)

neo-skynet 03.04.2009 18:52

Помогите с 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

PROGRAMMATOR 03.04.2009 20:13

Ответ: Помогите с 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 


neo-skynet 03.04.2009 20:28

Ответ: Помогите с userbar
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 30361)
Как бы ничего не упустил.
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)." %"

Какое тут значение?
Если можно весь конфиг выложете пожалуйсто.....;)

PROGRAMMATOR 03.04.2009 20:37

Ответ: Помогите с userbar
 
Цитата:

Сообщение от neo-skynet (Сообщение 30362)
Если можно весь конфиг выложете пожалуйсто.....

Пожалуйста, http://wiki.udbforums.org/index.php/Character_data

neo-skynet 03.04.2009 20:46

Ответ: Помогите с userbar
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 30364)

Я в том не разобрался, а нету готового (я понимаю что это может уже и наглость, но пожалуйсто.. вот мой конфиг не могли бы вы его исправить
Код:

<?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);
}
?>


PROGRAMMATOR 03.04.2009 20:55

Ответ: Помогите с userbar
 
Готового нет и не должно быть. Есть отличная таблица, которая описывает каждое значение, я Вам ее уже дал. Теперь подумайте, я за Вас делать не буду.


Текущее время: 03:30. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot