public static function MakeItem($row, $locale) { if ($row['inventory'] == 0) { $item = new ItemEquip($row); } elseif (GetItemType($row['itemid']) == 500) { $item = new ItemPet($row, $locale); } else { $item = new ItemBase($row); } return $item; }
function ParseItem($id) { global $options, $imageoptions, $data_buffer, $foundHidingCap, $zmap; $iteminfo = GetItemWZInfo($id, CURRENT_LOCALE); $itemtype = GetItemType($id); $item_raw_type = floor($id / 1000); $item_section_id = $id % 1000; $zvalue = ''; $foundinfo = false; if (DEBUGGING) { echo 'Item: ' . $id . "\r\n"; echo 'Item type: ' . $itemtype . "\r\n"; echo 'Item raw type: ' . $item_raw_type . "\r\n"; echo 'Item section id: ' . $item_section_id . "\r\n"; echo 'Item image at: ' . GetItemDataLocation($data_buffer['main-dir'], $id) . "\r\n"; } if (isset($iteminfo[$options['weapongroup']])) { $weapongroup = $options['weapongroup']; $iteminfo = $iteminfo[$weapongroup]; $iteminfo['ITEMID'] = $id; if (DEBUGGING) { echo 'NX wep Item: ' . $weapongroup . "\r\n"; } } $isface = isset($iteminfo[$options['face']]); foreach ($iteminfo as $key => $value) { if (DEBUGGING) { echo '> ' . $key . "\r\n"; } $tmp = null; if ($key == 'ITEMID' || $key == 'info' || !$value instanceof TreeNode) { continue; } if ($isface) { if ($key == 'default') { $tmp = $value; } else { $tmp = $value->offsetGet('0'); } } else { $tmp = $value[$options['stance_frame']]; } if ($tmp === null) { if (DEBUGGING) { echo 'No info found for ' . $key . "\r\n"; //var_export($iteminfo); } continue; } $imgkey = $key; if (!$tmp instanceof TreeNode) { if (DEBUGGING) { echo 'Prolly uol->' . $tmp . "\r\n"; } $tmp = $iteminfo[$key]; } if ($tmp === null) { if (DEBUGGING) { echo 'No info found for ' . $key . "\r\n"; } continue; } $tmp->ksort(); foreach ($tmp as $category => $block) { if (DEBUGGING) { echo '>> ' . $category . "\r\n"; } if ($category == 'delay') { continue; } if (!$block instanceof TreeNode) { // Prolly UOL $block = $tmp[$category]; if ($block === null) { if (DEBUGGING) { echo 'UOL not found for ' . $key . ' -> ' . $category . "\r\n"; } continue; } } if (!$block instanceof TreeNode) { if (DEBUGGING) { echo 'Thats not a TreeNode! ' . $key . ' -> ' . $category . "\r\n"; } continue; } if ($block === null) { if (DEBUGGING) { echo 'thing not found for ' . $key . ' -> ' . $category . "\r\n"; } continue; } $tmptmp = $block; $imgkey = ''; $blockname = ''; while (true) { $imgkey = $tmptmp->name . ($imgkey == '' ? '' : '.' . $imgkey); $blockname = $tmptmp->name; if (!isset($tmptmp['..'])) { break; } if ($tmptmp['..']->isroot) { break; } if ($tmptmp['..']->name == 'main') { break; } $tmptmp = $tmptmp['..']; } $imgkey = str_replace('.origin', '', $imgkey); if (!isset($block['z'], $zmap[$block['z']])) { if (DEBUGGING) { echo 'No Z key found for ' . $key . ' -> ' . $category . ' -> ' . $block->name . ' (' . $item_raw_type . ') -- ' . $block->ToAbsoluteURI() . ' - ' . "\r\n"; } if ($item_raw_type == 21) { if (DEBUGGING) { echo 'Fixing Z index for face. Its face.' . "\r\n"; } $zval = $zmap['face']; } else { continue; } } else { $zval = $zmap[$block['z']]; } if (DEBUGGING) { echo $id . ' - ' . $itemtype . ' - ' . $key . ' - ' . $category . ' - ' . $zval . "\r\n"; } if ($itemtype == 2 && $key != $options['face'] && $options['stance'] != 'rope') { if (DEBUGGING) { echo "nope1" . $key . " : " . $options['face'] . "\r\n"; } continue 2; } if ($itemtype == 1 && $category == 'ear' && !$options['elven_ears']) { // Android / Merc! if (DEBUGGING) { echo "nope2\r\n"; } continue; } if ($itemtype != 2 && $key != $options['stance'] && $key != $options['face']) { if (DEBUGGING) { echo "nope3:" . $key . " : " . $options['stance'] . " : " . $options['face'] . "\r\n"; } continue 2; } if ($itemtype == 121 && $category != 'weapon') { if (DEBUGGING) { echo "nope4\r\n"; } continue 2; } if ($itemtype == 190) { if (DEBUGGING) { echo "nope5\r\n"; } continue 2; } $objectdata = array('info' => $block, 'type' => $itemtype, 'itemid' => $iteminfo['ITEMID'], 'stance' => $blockname, 'category' => $category, 'vslot' => isset($iteminfo['info']['vslot']) ? $iteminfo['info']['vslot'] : array(), 'islot' => isset($iteminfo['info']['islot']) ? $iteminfo['info']['islot'] : 'characterStart'); $x = $imageoptions['mainx']; $y = $imageoptions['mainy']; $mappings = $objectdata['info']['map']; if (!isset($mappings)) { continue; } $copy = $mappings->getArrayCopy(); krsort($copy); foreach ($copy as $mapname => $mapping) { if (!isset($data_buffer['body_map'][$mapname])) { $data_buffer['body_map'][$mapname][0] = $x + $mapping['X']; $data_buffer['body_map'][$mapname][1] = $y + $mapping['Y']; } else { $x = $data_buffer['body_map'][$mapname][0] - $mapping['X']; $y = $data_buffer['body_map'][$mapname][1] - $mapping['Y']; } } if (DEBUGGING) { echo 'Final map ' . $x . ', ' . $y . "\r\n"; } $objectdata['x'] = $x; $objectdata['y'] = $y; $objectdata['image'] = $imgkey . '.png'; if (DEBUGGING) { echo 'Image ' . $objectdata['image'] . "\r\n"; } $foundinfo = true; $data_buffer['zlayers'][$zval][] = $objectdata; if (strpos($objectdata['islot'], 'Cp') !== false && in_array('H1', $objectdata['vslot'])) { $foundHidingCap = true; } } } if ($foundinfo) { $data_buffer['item_locations'][$id] = GetItemDataLocation($data_buffer['main-dir'], $id); } }
function GetID($var, $adm = true) { $de = bindechex($var, 3); $num = strlen($de); $num2 = $num - 2; $num3 = $num2 - 2; $type = substr($de, $num2 - 2, $num2); $type = GetItemType(substr($type, 0, 2)); $item = substr($de, 0, $num2 - 2); $code = bindechex($item, 5); if ($type == '') { return lang('off_emptyslot'); } else { return GetItemID(GetTableName($type), $code, $adm); } }
} elseif ($row2['slot'] == -105) { // Cash Shirt if (GetItemType($itemid) == 105 && isset($shown_items[6])) { // Is a cash overall and has pants unset($shown_items[6]); } // Unset pants } } if (!isset($shown_items[5])) { if (DEBUGGING) { echo 'Missing slot 5 equip, setting shirt.' . "\r\n"; } $shown_items[5] = $gender == 0 ? 1060026 : 1061039; } if (!isset($shown_items[6]) && GetItemType($shown_items[5]) != 105) { if (DEBUGGING) { echo 'Missing slot 6 equip, setting pants.' . "\r\n"; } $shown_items[6] = $gender == 0 ? 1040036 : 1041046; } $character_equipment->free(); if ($char_stance == 'stand' || $char_stance == 'walk') { $char_stance .= $stand; } if (DEBUGGING) { //print_r($shown_items); } $request_info = array(); $request_info['slots'] = array(); $request_info['slots'][] = $skin;
function GetItemDataLocation($location, $id) { $inv = GetItemInventory($id); $type = GetItemType($id); if ($type == 996) { $url = $location . 'Character/Familiar/' . str_pad($id, 7, '0', STR_PAD_LEFT) . '.img/'; } elseif ($type < 5) { switch ($type) { case 0: case 1: $url = $location . 'Character/' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.img/'; break; case 2: $url = $location . 'Character/Face/' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.img/'; break; case 3: $url = $location . 'Character/Hair/' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.img/'; break; } } elseif ($inv == 1) { $name = GetWZItemTypeName($id); $url = $location . 'Character/' . $name . '/' . str_pad($id, 8, '0', STR_PAD_LEFT) . '.img/'; } else { if ($type == 500) { $url = $location . 'Inventory/Pet/' . $id . '.img/'; } else { $typeid = str_pad($type, 4, '0', STR_PAD_LEFT) . '.img'; $typename = ''; switch (floor($type / 100)) { case 2: $typename = 'Consume'; break; case 3: $typename = 'Install'; break; case 4: $typename = 'Etc'; break; case 5: $typename = 'Cash'; break; } $url = $location . 'Inventory/' . $typename . '/' . $typeid . '/' . str_pad($id, 8, '0', STR_PAD_LEFT) . '/'; } } return $url; }