Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- ini_set( 'display_errors', 'On' );
- error_reporting( E_ALL );
- /*
- include "<путь_до_файла_класса>";
- $robj = new readitem("Item.txt"); //читаем базу
- print "<pre>";
- print_r($robj->item); //переменная содержит полученные данные
- print "</pre>";
- */
- # Формат возвращаеммого массива:
- /* [Weapons]
- [index] => 0 Index
- [slot] => 0 Slot
- [skill] => 0 Skill
- [x] => 1 X
- [y] => 2 Y
- [serial] => 1 Serial
- [option] => 1 Option
- [drop] => 1 Drop
- [level] => 6 Level
- [dMin] => 6 MinDmg
- [dMax] => 11 MaxDmg
- [speed] => 50 AttSpeed
- [dur] => 20 Dur
- [mdur] => 0 MagDur
- [mpow] => 0 MagPower
- [lreq] => 0 LvlReq
- [sreq] => 40 StrReq
- [areq] => 40 AgiReq
- [ereq] => 0 EneReq
- [vreq] => 0 VitReq
- [creq] => 0 CmdReq
- [sattr] => 1 SetAttr
- [dw] => 1 DW/SM
- [dk] => 1 DK/BK
- [elf] => 1 ELF/ME
- [mg] => 1 MG
- [dl] => 1 DL
- [sum] => 1 SUM
- [name] => Kris Name
- [group] => 0 Item Group
- */
- #Более подробно смотрите легенду в Item(Kor).txt все сделано по ней для всех групп вещей
- #end
- /*
- директива для медленных серверов
- */
- //ini_set("max_execution_time","60");
- class readitem
- {
- var $item; //массив с данными о вещах
- var $firstS = -1;
- #region "базы" атрибутов для гупп вещей
- private $gW = array("index", "slot", "skill","x","y","serial","option","drop","level","dMin","dMax","speed","dur","mdur","mpow","lreq","sreq","areq","ereq","vreq","creq","sattr","dw","dk","elf","mg","dl","sum","rf");//weap
- private $gA = array("index","slot","skill","x","y","serial","option","drop","level","def","block","dur","lreq","sreq","areq","ereq","vreq","creq","sattr","dw","dk","elf","mg","dl","sum","rf"); //arm
- private $gWn = array("index","slot","skill","x","y","serial","option","drop","level","def","dur","lreq","ereq","sreq","areq","creq","buymoney","dw","dk","elf","mg","dl","sum","rf");//12
- private $gP = array("index","slot","skill","x","y","serial","option","drop","level","dur","lreq","ereq","sreq","areq","vreq","creq","Res7","sattr","dw","dk","elf","mg","dl","sum","rf");//13
- private $gJ = array("index","slot","skill","x","y","serial","option","drop","value","level");//14
- private $gS = array("index","slot","skill","x","y","serial","option","drop","level","lreq","ereq","BuyMoney","dw","dk","elf","mg","dl","sum","rf");//15
- #end
- /**
- * Конструктор класса
- * @file - адрес до файла с вещами
- **/
- function readitem($file)
- {
- if (file_exists($file))
- {
- $dataAr = file($file);
- $i=0;
- foreach($dataAr as $id=>$value)
- {
- $value = trim($value);
- if (substr($value,0,2)!="//" && strlen($value)>0 && $value!="end")
- {
- if (strlen($value)>0 && strlen($value)<3)
- $cGroup = $value;
- else
- {
- if ($this->firstS==-1)
- {
- if (strlen($value)<90)
- $this->firstS = 0;
- else
- $this->firstS = 2;
- }
- switch ($cGroup)
- {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5: $this->item[$i]= self::readWeapons($value); break;
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11: $this->item[$i]= self::readArmors($value); break;
- case 12: $this->item[$i]= self::read12($value); break;
- case 13: $this->item[$i]= self::read13($value); break;
- case 14: $this->item[$i]= self::read14($value); break;
- case 15: $this->item[$i]= self::readSkiils($value); break;
- default: $this->item[$i]["error"] = "Unknown item Group";break;
- }
- $this->item[$i]["name"]= self::getIName($value); //узнаем имя вещи
- $this->item[$i]["group"]= $cGroup; //указываем группу вещи
- $i++;
- }
- }
- }
- }
- else
- $this->item["error"]="Can't found $file";
- }
- /**
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function getIName($itmar)
- {
- preg_match("/[\"]{1}([A-Za-z0-9']{1,20}[\s]{0,}){1,5}[\"]{1}/", $itmar , $name); //имя вещи, сразу с ковыками
- $name = htmlspecialchars(substr($name[0],1,-1),ENT_QUOTES);
- if (!$name) return "Unknown item";
- return $name;
- }
- /**
- * возвращает массив с данными (циверками)
- * @itmar - строка о вещи из базы
- **/
- function getReq ($itmar,$num=3)
- {
- $value=preg_replace("/\s/","\t",$itmar);
- preg_match_all("/[0-9-]{1,".$num."}/", $value , $replaced);
- return $replaced[0];
- }
- /**
- * читаем оружие
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function readWeapons($itmar)
- {
- $get = self::getReq (&$itmar);
- unset($ar);
- if (count($get)<2)
- $ar["error"]="Can't read item info! $itmar";
- else
- {
- $j = $this->firstS;
- foreach ($this->gW as $i=>$val)
- {
- $ar[$val] = $get[$j];
- $j++;
- }
- }
- return $ar;
- }
- /**
- * читаем амуницию
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function readArmors($itmar)
- {
- $get = self::getReq (&$itmar);
- unset($ar);
- if (count($get)<2)
- $ar["error"]="Can't read item info! $itmar";
- else
- {
- $j = $this->firstS;
- foreach ($this->gA as $i=>$val)
- {
- $ar[$val] = $get[$j];
- $j++;
- }
- }
- return $ar;
- }
- /**
- * читаем группу 12
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function read12($itmar)
- {
- $get = self::getReq (&$itmar);
- unset($ar);
- if (count($get)<2)
- $ar["error"]="Can't read item info! $itmar";
- else
- {
- $j = $this->firstS;
- if (!self::checkN($get[0]))
- $j--;
- foreach ($this->gWn as $i=>$val)
- {
- $ar[$val] = $get[$j];
- $j++;
- }
- }
- return $ar;
- }
- /**
- * читаем группу 13
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function read13($itmar)
- {
- $get = self::getReq (&$itmar);
- unset($ar);
- if (count($get)<2)
- $ar["error"]="Can't read item info! $itmar";
- else
- {
- $j = $this->firstS;
- if (!self::checkN($get[0]))
- $j--;
- foreach ($this->gP as $i=>$val)
- {
- $ar[$val] = $get[$j];
- $j++;
- }
- }
- return $ar;
- }
- /**
- * читаем группу 14
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function read14($itmar)
- {
- $get = self::getReq (&$itmar);
- unset($ar);
- if (count($get)<2)
- $ar["error"]="Can't read item info! $itmar";
- else
- {
- $j = $this->firstS;
- if (!self::checkN($get[0]))
- $j--;
- foreach ($this->gJ as $i=>$val)
- {
- $ar[$val] = $get[$j];
- $j++;
- }
- }
- return $ar;
- }
- /**
- * читаем манию и скиллы
- * возвращает название вещи
- * @itmar - строка о вещи из базы
- **/
- function readSkiils($itmar)
- {
- $get = self::getReq (&$itmar,6);
- if (count($get)<2)
- $ar["error"]="Can't read item info! $itmar";
- else
- {
- $j = $this->firstS;
- if (!self::checkN($get[0]))
- $j--;
- foreach ($this->gS as $i=>$val)
- {
- $ar[$val] = $get[$j];
- $j++;
- }
- }
- return $ar;
- }
- function checkN($var)
- {
- if (substr($var,0,1)=="0" && strlen($var)>1)
- return true;
- return false;
- }
- }
- //$robj = new readitem("item.txt"); //читаем базу
- //print "<pre>";
- //print_r($robj->item); //переменная содержит полученные данные
- //print "</pre>";
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement