kHAT_Hp, 'val' => self::getAttrValueMin($meta) ), array( 'attr_id' => kHAT_Atk, 'val' => self::getAttrValueMin($meta) ), array( 'attr_id' => kHAT_Def, 'val' => self::getAttrValueMin($meta) ), ); } break; case self::FINAL_RAND_ATTR:{ $attr = array( array( 'attr_id' => kHAT_Hp, 'val' => self::getAttrValue($meta) ), array( 'attr_id' => kHAT_Atk, 'val' => self::getAttrValue($meta) ), array( 'attr_id' => kHAT_Def, 'val' => self::getAttrValue($meta) ), ); } break; case self::MAX_RAND_ATTR:{ $attr = array( array( 'attr_id' => kHAT_Hp, 'val' => self::getAttrValueMax($meta) ), array( 'attr_id' => kHAT_Atk, 'val' => self::getAttrValueMax($meta) ), array( 'attr_id' => kHAT_Def, 'val' => self::getAttrValueMax($meta) ), ); } break; default:{ $attr = array(); } } return $attr; } protected static function getAttrValue($meta) { $strs = explode('|', $meta['attr_weight']); $totalSpace = 0; foreach ($strs as $tmpStr) { $strs2 = explode(':', $tmpStr); if (count($strs2) == 2) { $totalSpace += $strs2[1]; } } if ($totalSpace > 0) { $randSpace = rand(0, $totalSpace); $currSpace = 0; foreach ($strs as $tmpStr) { $strs2 = explode(':', $tmpStr); if (count($strs2) == 2) { $currSpace += $strs2[1]; } if ($randSpace <= $currSpace) { return $strs2[0]; } } } return 0; } protected static function getAttrValueMin($meta) { $strs = explode('|', $meta['attr_weight']); foreach ($strs as $tmpStr) { $strs2 = explode(':', $tmpStr); return $strs2[0]; } } protected static function getAttrValueMax($meta) { $strs = explode('|', $meta['attr_weight']); $strs2 = explode(':', $strs[count($strs)-1]); return $strs2[0]; } protected static function getMetaList() { if (!self::$metaList) { self::$metaList = getMetaTable('heroLevelAttr@heroLevelAttr.php'); } return self::$metaList; } protected static $metaList; }