$meta['id'], 'price_info' => array( 'cost_list' => array(), 'discount_begin_time' => phpcommon\datetimeToTimestamp($meta['discount_begin']), 'discount_end_time' => phpcommon\datetimeToTimestamp($meta['discount_end']) ) ); $discount = splitStr1($meta['discount']); if ($meta['gold'] > 0) { array_push($info['price_info']['cost_list'], array( array( 'item_id' => V_ITEM_GOLD, 'item_num' => $meta['gold'], 'discount' => count($discount) > 0 ? (int)$discount[0] : 0 ))); } if ($meta['diamond'] > 0) { array_push($info['price_info']['cost_list'], array( array( 'item_id' => V_ITEM_DIAMOND, 'item_num' => $meta['diamond'], 'discount' => count($discount) > 1 ? (int)$discount[1] : 0 ) )); } return $info; } public static function getCostItems($priceInfo, $costItemId) { $costGroup = null; array_walk($priceInfo['cost_list'], function ($val) use(&$costGroup, $costItemId) { if ($costGroup) { return; } if (count($val) > 0 && $val[0]['item_id'] == $costItemId) { $costGroup = $val; return; } }); if (!$costGroup) { return null; } $costItems = array(); array_walk($costGroup, function ($val) use (&$costItems, $priceInfo) { if ($val['discount'] > 0 && myself()->_getNowTime() >= $priceInfo['discount_begin_time'] && myself()->_getNowTime() <= $priceInfo['discount_end_time'] ) { array_push($costItems, array( 'item_id' => $val['item_id'], 'item_num' => (int)($val['item_num'] * ($priceInfo['discount'] / 100)), )); } else { array_push($costItems, array( 'item_id' => $val['item_id'], 'item_num' => $val['item_num'], )); } }); return $costItems; } public static function getUseCostItems($itemMeta) { $costItems = array(); foreach (splitStr2($itemMeta['use_cost']) as $arr) { if (count($arr) >= 2) { array_push($costItems, array( 'item_id' => $arr[0], 'item_num' => $arr[1] )); } } return $costItems; } public static function isRandAttrItem($itemMeta) { return $itemMeta['type'] == self::MATERIAL_TYPE && $itemMeta['sub_type'] == self::MATERIAL_CHIP_SUBTYPE; } public static function isRoleChipItem($itemMeta) { return $itemMeta['type'] == self::CHIP_TYPE && $itemMeta['sub_type'] == self::ROLE_CHIP_SUBTYPE; } public static function isGunChipItem($itemMeta) { return $itemMeta['type'] == self::CHIP_TYPE && $itemMeta['sub_type'] == self::GUN_CHIP_SUBTYPE; } public static function getBaseAttrs($meta) { $cfgAttrs = StrHelper::parseList($meta['attrs'], array('|', ':')); $attrs = array(); foreach ($cfgAttrs as $cfgAttr) { array_push($attrs, array( 'attr_id' => $cfgAttr[0], 'type' => $cfgAttr[1], 'val' => $cfgAttr[2], )); } return $attrs; } public static function isBagItem($type, $subType) { return in_array($type, array( self::GIFT_PACKAGE_TYPE, self::FUNC_TYPE, self::MATERIAL_TYPE, self::FRAGMENT_TYPE, 14 )); } public static function getMetaListByType($type) { $metaList = array(); foreach (self::getMetaList() as $meta){ if ($meta['type'] == $type){ array_push($metaList,$meta); } } return $metaList; } protected static function getMetaList() { if (!self::$metaList) { self::$metaList = getMetaTable('item@item.php'); } return self::$metaList; } protected static $metaList; }