//глобальные переменные
$par=Array();
$mas=Array();
$tan=Array();
$pers;
$i=0;
//функция array_diff_key для пхп
// версии ниже 5.1
function ar_dif($a,$b){
$vers=substr(phpversion(),0,3);
if($vers>=5.1)
{
return array_diff_key($a,$b);
}
else
{
foreach($a as $k=>$v)
{
if(!$b[$k]) $c[$k]=$v;
}
return $c;
}
}
//функция array_intersect_key для пхп
// версии ниже 5.1
function ar_udif($a,$b){
$vers=substr(phpversion(),0,3);
if($vers>=5.1)
{
return array_intersect_key($a,$b);
}
else
{
foreach($a as $k=>$v)
{
if($b[$k]) $c[$k]=$v;
}
return $c;
}
}
//получение имени перса, расы, клана
function prn($a1,$a2,$a3,$a4,$a5){
global $pers;
if(!empty($a4))
$pers='
'.$a2.' ['.$a5.']
';
else
$pers=''.$a2.' ['.$a5.']
';
}
//анализ параметров персонажа на основе шмота - используется ф-цией wer
function pars($a1,$a2){
global $par;
if(strpos($a2,'%')!==false)$a1=$a1.'%';
if(strpos($a2,'-')===false && strpos($par[$a1],'-')===false)
$par[$a1]=$par[$a1]+$a2;
else
{
$b1=preg_replace('/([0-9]+)-([0-9]+)/',"\$1",$par[$a1]);
$b2=preg_replace('/([0-9]+)-([0-9]+)/',"\$2",$par[$a1]);
$b3=preg_replace('/([0-9]+)-([0-9]+)/',"\$1",$a2);
$b4=preg_replace('/([0-9]+)-([0-9]+)/',"\$2",$a2);
if(($b1+$b3)!=($b2+$b4))
$par[$a1]=($b1+$b3).'-'.($b2+$b4);
else
$par[$a1]=($b1+$b3);
}
}
//анализ шмота перса - !!параметры нач прочность,прочность после ремонта,состояние - в елементах массива 2,3,4 !!!!
//для отображения задействован тоько 1 елемент массива - название вещи
function wer($a1,$a2,$a3,$a4,$a5,$a6){
global $mas;
global $i;
$i++;
$mas[$i]['1']=$a1;
$mas[$i]['2']=$a2;
$mas[$i]['3']=$a3;
$mas[$i]['4']=$a5;
$mas[$i]['5']=$a6;
$a4=preg_replace('/\ —\ /',"-",$a4);
$a4=preg_replace('/[А-Я][а-я]+([А-Я])/',"\$1",$a4);
$a4=preg_replace('/( .+Тип [А-Яа-я]+ Назначение [^\ ]+)|(Одевается под [^\ ]+)|(Надеваются под шлем )|( .+Тип [А-Яа-я]+ )|(Двуручное оружие[^А-Я]+)|(редкая )/',"",$a4);
preg_replace('/((Скорость [0-9]-й атаки )|([^+0-9-]+))([^А-Яа-я]+)/e',"pars('\$1','\$4')",$a4);
}
//запись талантов и склонностей в массив
function tal($a1,$a2)
{
global $tan;
$tan[$a1]=$a2;
}
//добавление параметров в % к суммарным параметрам перса
function make_par($par){
foreach($par as $k=>$v)
{
if(strpos($k,'%')!==false && !empty($par[str_replace('%','',$k)]))
{
$k=str_replace('%','',$k);
$par[$k]=$par[$k]+round($v/$par[$k]);
}
}
return $par;
}
//анализ статов персонажа
function gstat($file){
$stats=explode(',',preg_replace('/.*new Stats\(([^)]+).*/s',"\$1",$file));
$st['Сила ']=$stats[0];
$st['Интеллект ']=$stats[3];
$st['Ловкость ']=$stats[1];
$st['Мудрость ']=$stats[4];
$st['Злость ']=$stats[2];
$st['Интуиция ']=$stats[5];
$st['Выносливость ']=$stats[6];
$st['Энергетика ']=$stats[7];
$st['Здоровье ']=$stats[9];
$st['Мана ']=$stats[10];
return $st;
}
//анализ умений персонажа
function gskill($file){
$skill=explode(',',preg_replace('/.*g_aSkills = \[([^\]]+).*/s',"\$1",$file));
preg_replace('/\[[0-9]+,null,([0-9]+),\'([^\']+)\',{[^}]+},\'[^\']+\',([0-9]+),([0-9]),[0-9]+,\'([^\']+)\',null,\'[a-z]+\',\'[a-z]+\',\'[a-z]+\',[0-9]+,\'\',([0-9]+)\]/e',"wer('\$2','\$3','\$4','\$5','\$6','\$1')",$file);
$sk['Колющее оружие']=$skill[0];
$sk['Режущее оружие']=$skill[1];
$sk['Рубящее оружие']=$skill[2];
$sk['Дробящее оружие']=$skill[3];
$sk['Бой одним оружием']=$skill[4];
$sk['Бой двуручным оружием']=$skill[5];
$sk['Бой двумя оружиями']=$skill[6];
$sk['Парирование']=$skill[7];
$sk['Рукопашный бой']=$skill[8];
$sk['Не распределенные']=$skill[9];
$sk['Огонь']=$skill[10];
$sk['Воздух']=$skill[11];
$sk['Вода']=$skill[12];
$sk['Земля']=$skill[13];
$sk['Черная']=$skill[14];
$sk['Белая']=$skill[15];
$sk['Магия природы']=$skill[17];
return $sk;
}
//формирование выходных данных "Анализ персонажа"
function astring($pers,$st,$sk,$mas,$par){
$string='
| '.$pers.' |
| Основные параметры | ';
$a=0;
foreach ($st as $k=>$v)
{
if($a==0)
{
$string.='| '.$k.' | '.$v.' | ';
++$a;
}
else
{
$string.=''.$k.' | '.$v.' | ';
$a=0;
}
}
$string.='| Умения | ';
foreach ($sk as $k=>$v)
{
if($a==0)
{
$string.='| '.$k.' | '.$v.' | ';
++$a;
}
else
{
$string.=''.$k.' | '.$v.' | ';
$a=0;
}
}
$string.='| Вещи на персонаже | ';
foreach ($mas as $k)
{
$string.='| '.iconv('CP1251','UTF-8',$k[1]).' | ';
}
$string.=' | Дополнительные параметры | ';
ksort($par);
$par=ar_dif($par,$st);
foreach ($par as $k=>$v)
{
if((strpos($k,'%')!==false && empty($par[str_replace('%','',$k)]))||strpos($k,'%')===false)
{
if(strlen($k)>20)$font='style="font-size:10pt"';
else $font='';
$string.='| '.iconv('CP1251','UTF-8',$k).' | '.$v.' | ';
}
}
$string.='
|
';
return $string;
}
//формирование выходных данных "Сравнение персонажей"
function gstring($pers0,$pers1,$par,$par1){
$string='| '.$pers0.' | '.$pers1.' |
| Параметры | |
';
$ar1=ar_udif($par,$par1);
foreach ($ar1 as $k=>$v){
$string.='| '.iconv('CP1251','UTF-8',$par[$k]).' | '.iconv('CP1251','UTF-8',$k).' | '.iconv('CP1251','UTF-8',$par1[$k]).' |
';
}
$ar2=ar_dif($par,$par1);
foreach ($ar2 as $k=>$v){
$string.='| '.iconv('CP1251','UTF-8',$par[$k]).' | '.iconv('CP1251','UTF-8',$k).' | 0 |
';
}
$ar3=ar_dif($par1,$par);
foreach ($ar3 as $k=>$v){
$string.='| 0 | '.iconv('CP1251','UTF-8',$k).' | '.iconv('CP1251','UTF-8',$par1[$k]).' |
';
}
$string.='
';
return $string;
}
//непосредственно анализ персонажа
function main1($id){
if(!empty($id)){
global $pers,$par,$mas;
$id=str_replace(' ','+',$id);
$url='http://haddan.ru/user.php?id='.$id;
$file=file_get_contents($url);
$file=preg_replace('/(
]+>)|(]+>)|(<\\/span>)|(
)|(