Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.20 KB | None | 0 0
  1. <?php
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4.  
  5. /*
  6. include "<путь_до_файла_класса>";
  7. $robj = new readitem("Item.txt"); //читаем базу
  8. print "<pre>";
  9. print_r($robj->item); //переменная содержит полученные данные
  10. print "</pre>";
  11. */
  12. # Формат возвращаеммого массива:
  13. /* [Weapons]
  14. [index] => 0 Index
  15. [slot] => 0 Slot
  16. [skill] => 0 Skill
  17. [x] => 1 X
  18. [y] => 2 Y
  19. [serial] => 1 Serial
  20. [option] => 1 Option
  21. [drop] => 1 Drop
  22. [level] => 6 Level
  23. [dMin] => 6 MinDmg
  24. [dMax] => 11 MaxDmg
  25. [speed] => 50 AttSpeed
  26. [dur] => 20 Dur
  27. [mdur] => 0 MagDur
  28. [mpow] => 0 MagPower
  29. [lreq] => 0 LvlReq
  30. [sreq] => 40 StrReq
  31. [areq] => 40 AgiReq
  32. [ereq] => 0 EneReq
  33. [vreq] => 0 VitReq
  34. [creq] => 0 CmdReq
  35. [sattr] => 1 SetAttr
  36. [dw] => 1 DW/SM
  37. [dk] => 1 DK/BK
  38. [elf] => 1 ELF/ME
  39. [mg] => 1 MG
  40. [dl] => 1 DL
  41. [sum] => 1 SUM
  42. [name] => Kris Name
  43. [group] => 0 Item Group
  44. */
  45. #Более подробно смотрите легенду в Item(Kor).txt все сделано по ней для всех групп вещей
  46. #end
  47.  
  48. /*
  49. директива для медленных серверов
  50. */
  51. //ini_set("max_execution_time","60");
  52.  
  53. class readitem
  54. {
  55. var $item; //массив с данными о вещах
  56. var $firstS = -1;
  57.  
  58. #region "базы" атрибутов для гупп вещей
  59. 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
  60. 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
  61. 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
  62. 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
  63. private $gJ = array("index","slot","skill","x","y","serial","option","drop","value","level");//14
  64. private $gS = array("index","slot","skill","x","y","serial","option","drop","level","lreq","ereq","BuyMoney","dw","dk","elf","mg","dl","sum","rf");//15
  65. #end
  66.  
  67. /**
  68. * Конструктор класса
  69. * @file - адрес до файла с вещами
  70. **/
  71. function readitem($file)
  72. {
  73. if (file_exists($file))
  74. {
  75. $dataAr = file($file);
  76. $i=0;
  77.  
  78. foreach($dataAr as $id=>$value)
  79. {
  80. $value = trim($value);
  81. if (substr($value,0,2)!="//" && strlen($value)>0 && $value!="end")
  82. {
  83.  
  84. if (strlen($value)>0 && strlen($value)<3)
  85. $cGroup = $value;
  86.  
  87. else
  88. {
  89. if ($this->firstS==-1)
  90. {
  91. if (strlen($value)<90)
  92. $this->firstS = 0;
  93. else
  94. $this->firstS = 2;
  95. }
  96.  
  97.  
  98. switch ($cGroup)
  99. {
  100. case 0:
  101. case 1:
  102. case 2:
  103. case 3:
  104. case 4:
  105. case 5: $this->item[$i]= self::readWeapons($value); break;
  106. case 6:
  107. case 7:
  108. case 8:
  109. case 9:
  110. case 10:
  111. case 11: $this->item[$i]= self::readArmors($value); break;
  112. case 12: $this->item[$i]= self::read12($value); break;
  113. case 13: $this->item[$i]= self::read13($value); break;
  114. case 14: $this->item[$i]= self::read14($value); break;
  115. case 15: $this->item[$i]= self::readSkiils($value); break;
  116. default: $this->item[$i]["error"] = "Unknown item Group";break;
  117. }
  118.  
  119. $this->item[$i]["name"]= self::getIName($value); //узнаем имя вещи
  120. $this->item[$i]["group"]= $cGroup; //указываем группу вещи
  121. $i++;
  122. }
  123. }
  124. }
  125. }
  126. else
  127. $this->item["error"]="Can't found $file";
  128.  
  129. }
  130.  
  131. /**
  132. * возвращает название вещи
  133. * @itmar - строка о вещи из базы
  134. **/
  135. function getIName($itmar)
  136. {
  137. preg_match("/[\"]{1}([A-Za-z0-9']{1,20}[\s]{0,}){1,5}[\"]{1}/", $itmar , $name); //имя вещи, сразу с ковыками
  138.  
  139. $name = htmlspecialchars(substr($name[0],1,-1),ENT_QUOTES);
  140. if (!$name) return "Unknown item";
  141. return $name;
  142. }
  143.  
  144. /**
  145. * возвращает массив с данными (циверками)
  146. * @itmar - строка о вещи из базы
  147. **/
  148. function getReq ($itmar,$num=3)
  149. {
  150. $value=preg_replace("/\s/","\t",$itmar);
  151. preg_match_all("/[0-9-]{1,".$num."}/", $value , $replaced);
  152.  
  153. return $replaced[0];
  154. }
  155.  
  156. /**
  157. * читаем оружие
  158. * возвращает название вещи
  159. * @itmar - строка о вещи из базы
  160. **/
  161. function readWeapons($itmar)
  162. {
  163. $get = self::getReq (&$itmar);
  164. unset($ar);
  165.  
  166. if (count($get)<2)
  167. $ar["error"]="Can't read item info! $itmar";
  168. else
  169. {
  170. $j = $this->firstS;
  171. foreach ($this->gW as $i=>$val)
  172. {
  173. $ar[$val] = $get[$j];
  174. $j++;
  175. }
  176. }
  177. return $ar;
  178. }
  179.  
  180. /**
  181. * читаем амуницию
  182. * возвращает название вещи
  183. * @itmar - строка о вещи из базы
  184. **/
  185. function readArmors($itmar)
  186. {
  187. $get = self::getReq (&$itmar);
  188.  
  189. unset($ar);
  190.  
  191. if (count($get)<2)
  192. $ar["error"]="Can't read item info! $itmar";
  193. else
  194. {
  195. $j = $this->firstS;
  196. foreach ($this->gA as $i=>$val)
  197. {
  198. $ar[$val] = $get[$j];
  199. $j++;
  200. }
  201. }
  202. return $ar;
  203. }
  204.  
  205. /**
  206. * читаем группу 12
  207. * возвращает название вещи
  208. * @itmar - строка о вещи из базы
  209. **/
  210. function read12($itmar)
  211. {
  212. $get = self::getReq (&$itmar);
  213.  
  214. unset($ar);
  215.  
  216. if (count($get)<2)
  217. $ar["error"]="Can't read item info! $itmar";
  218. else
  219. {
  220. $j = $this->firstS;
  221.  
  222. if (!self::checkN($get[0]))
  223. $j--;
  224.  
  225. foreach ($this->gWn as $i=>$val)
  226. {
  227. $ar[$val] = $get[$j];
  228. $j++;
  229. }
  230. }
  231. return $ar;
  232. }
  233.  
  234. /**
  235. * читаем группу 13
  236. * возвращает название вещи
  237. * @itmar - строка о вещи из базы
  238. **/
  239. function read13($itmar)
  240. {
  241. $get = self::getReq (&$itmar);
  242.  
  243. unset($ar);
  244.  
  245. if (count($get)<2)
  246. $ar["error"]="Can't read item info! $itmar";
  247. else
  248. {
  249. $j = $this->firstS;
  250.  
  251. if (!self::checkN($get[0]))
  252. $j--;
  253.  
  254. foreach ($this->gP as $i=>$val)
  255. {
  256. $ar[$val] = $get[$j];
  257. $j++;
  258. }
  259. }
  260. return $ar;
  261. }
  262.  
  263.  
  264. /**
  265. * читаем группу 14
  266. * возвращает название вещи
  267. * @itmar - строка о вещи из базы
  268. **/
  269. function read14($itmar)
  270. {
  271. $get = self::getReq (&$itmar);
  272. unset($ar);
  273.  
  274.  
  275. if (count($get)<2)
  276. $ar["error"]="Can't read item info! $itmar";
  277. else
  278. {
  279. $j = $this->firstS;
  280.  
  281. if (!self::checkN($get[0]))
  282. $j--;
  283.  
  284. foreach ($this->gJ as $i=>$val)
  285. {
  286. $ar[$val] = $get[$j];
  287. $j++;
  288. }
  289. }
  290. return $ar;
  291. }
  292.  
  293. /**
  294. * читаем манию и скиллы
  295. * возвращает название вещи
  296. * @itmar - строка о вещи из базы
  297. **/
  298. function readSkiils($itmar)
  299. {
  300. $get = self::getReq (&$itmar,6);
  301.  
  302. if (count($get)<2)
  303. $ar["error"]="Can't read item info! $itmar";
  304. else
  305. {
  306. $j = $this->firstS;
  307.  
  308. if (!self::checkN($get[0]))
  309. $j--;
  310.  
  311.  
  312. foreach ($this->gS as $i=>$val)
  313. {
  314. $ar[$val] = $get[$j];
  315. $j++;
  316. }
  317.  
  318. }
  319. return $ar;
  320. }
  321.  
  322. function checkN($var)
  323. {
  324. if (substr($var,0,1)=="0" && strlen($var)>1)
  325. return true;
  326.  
  327. return false;
  328. }
  329.  
  330. }
  331.  
  332.  
  333. //$robj = new readitem("item.txt"); //читаем базу
  334. //print "<pre>";
  335. //print_r($robj->item); //переменная содержит полученные данные
  336. //print "</pre>";
  337.  
  338.  
  339. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement