=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.'] Информация о персонаже: '.$a2.''; else $pers=''.$a2.' ['.$a5.']Информация о персонаже: '.$a2.''; } //анализ параметров персонажа на основе шмота - используется ф-цией 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='
'; $a=0; foreach ($st as $k=>$v) { if($a==0) { $string.=''; ++$a; } else { $string.=''; $a=0; } } $string.=''; foreach ($sk as $k=>$v) { if($a==0) { $string.=''; ++$a; } else { $string.=''; $a=0; } } $string.=''; foreach ($mas as $k) { $string.=''; } $string.='
'.$pers.'
Основные параметры
'.$k.''.$v.''.$k.''.$v.'
Умения
'.$k.''.$v.''.$k.''.$v.'
Вещи на персонаже
'.iconv('CP1251','UTF-8',$k[1]).'
'; 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.=''; } } $string.='

Дополнительные параметры
'.iconv('CP1251','UTF-8',$k).''.$v.'
'; return $string; } //формирование выходных данных "Сравнение персонажей" function gstring($pers0,$pers1,$par,$par1){ $string=''; $ar1=ar_udif($par,$par1); foreach ($ar1 as $k=>$v){ $string.=''; } $ar2=ar_dif($par,$par1); foreach ($ar2 as $k=>$v){ $string.=''; } $ar3=ar_dif($par1,$par); foreach ($ar3 as $k=>$v){ $string.=''; } $string.='
'.$pers0.''.$pers1.'
Параметры
'.iconv('CP1251','UTF-8',$par[$k]).''.iconv('CP1251','UTF-8',$k).''.iconv('CP1251','UTF-8',$par1[$k]).'
'.iconv('CP1251','UTF-8',$par[$k]).''.iconv('CP1251','UTF-8',$k).'0
0'.iconv('CP1251','UTF-8',$k).''.iconv('CP1251','UTF-8',$par1[$k]).'
'; 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>)|(
)|(
]+>)|(
]+>)|(<\\/div>)|(<\\/a>)|(]+>)|()|(
)|(<\\/b>)|()|(<\\/i>)/',"",$file); if(strpos($file,'Этот персонаж невидим!')===false && strpos($file,'Персонажа с именем')===false && strpos($file,'Персонажа с идентификатором')===false) { $sk=gskill($file); $st=gstat($file); preg_replace('/new Effect\([0-9]+,0,null,[0-9]+,\'[a-z]+\',\'([^\']+)\',false,0,\'[^\']+\',\'[^\']*\',\'([^\']+)\',0\)/e',"tal('\$1','\$2')",$file); preg_replace('/new Person\(([0-9]+),\'([^\']+)\',\'([^\']+)\',\'([^\']*)\'.*new Stats\([0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,([0-9]+)/e',"prn('\$1','\$2','\$3','\$4','\$5')",$file); $par=make_par($par); $string=astring($pers,$st,$sk,$mas,$par); echo $string; } else echo 'Этот персонаж невидим или не существует'; } } //не посредственно сравнение персонажей function main2($id,$id1){ if(!empty($id)&&!empty($id1)){ global $pers,$par,$mas; $id=str_replace(' ','+',$id); $id1=str_replace(' ','+',$id1); $url='http://haddan.ru/user.php?id='.$id; $file=file_get_contents($url); $file=preg_replace('/(]+>)|(]+>)|(<\\/span>)|(
)|(
]+>)|(
]+>)|(<\\/div>)|(<\\/a>)|(]+>)|()|(
)|(<\\/b>)|()|(<\\/i>)/',"",$file); if(strpos($file,'Этот персонаж невидим!')===false && strpos($file,'Персонажа с именем')===false && strpos($file,'Персонажа с идентификатором')===false) { $sk=gskill($file); $st=gstat($file); preg_replace('/new Effect\([0-9]+,0,null,[0-9]+,\'[a-z]+\',\'([^\']+)\',false,0,\'[^\']+\',\'[^\']*\',\'([^\']+)\',0\)/e',"tal('\$1','\$2')",$file); preg_replace('/new Person\(([0-9]+),\'([^\']+)\',\'([^\']+)\',\'([^\']*)\'.*new Stats\([0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,([0-9]+)/e',"prn('\$1','\$2','\$3','\$4','\$5')",$file); $par=make_par($par); ksort($par); $par=ar_dif($par,$st); $par0=array_merge($st,$sk,$par); $pers0=$pers; $par=Array(); } else { $pers0=$id.' - не существует или невидим'; $par0=$par; } $url='http://haddan.ru/user.php?id='.$id1; $file=file_get_contents($url); $file=preg_replace('/(]+>)|(]+>)|(<\\/span>)|(
)|(
]+>)|(
]+>)|(<\\/div>)|(<\\/a>)|(]+>)|()|(
)|(<\\/b>)|()/',"",$file); if(strpos($file,'Этот персонаж невидим!')===false && strpos($file,'Персонажа с именем')===false && strpos($file,'Персонажа с идентификатором')===false) { $sk=gskill($file); $st=gstat($file); preg_replace('/new Effect\([0-9]+,0,null,[0-9]+,\'[a-z]+\',\'([^\']+)\',false,0,\'[^\']+\',\'[^\']*\',\'([^\']+)\',0\)/e',"tal('\$1','\$2')",$file); preg_replace('/new Person\(([0-9]+),\'([^\']+)\',\'([^\']+)\',\'([^\']*)\'.*new Stats\([0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,([0-9]+)/e',"prn('\$1','\$2','\$3','\$4','\$5')",$file); $par=make_par($par); ksort($par); $par=ar_dif($par,$st); $par1=array_merge($st,$sk,$par); $pers1=$pers; } else { $pers1=$id1.' - не существует или невидим'; $par1=$par; } $string=gstring($pers0,$pers1,$par0,$par1); echo $string; } else main1($id); } ?>
Введите ник/id персонажа:
Введите ник/id персонажа
для сравнения: