This commit is contained in:
aozhiwei 2022-01-05 16:33:34 +08:00
parent d4b5f02603
commit c38e9d3cb1
2 changed files with 63 additions and 2 deletions

View File

@ -3,6 +3,8 @@
require_once('mt/Shop.php'); require_once('mt/Shop.php');
require_once('mt/Hero.php'); require_once('mt/Hero.php');
require_once('mt/Item.php'); require_once('mt/Item.php');
require_once('mt/HeroLevel.php');
require_once('mt/HeroQuality.php');
require_once('models/Hero.php'); require_once('models/Hero.php');
require_once('models/HeroSkin.php'); require_once('models/HeroSkin.php');
@ -86,6 +88,7 @@ class HeroController extends BaseAuthedController {
public function upgradeLevel() public function upgradeLevel()
{ {
$costItemId = getReqVal('cost_item_id', 0);
$heroUniId = getReqVal('hero_uniid', 0); $heroUniId = getReqVal('hero_uniid', 0);
$heroDb = Hero::find($heroUniId); $heroDb = Hero::find($heroUniId);
if (!$heroDb) { if (!$heroDb) {
@ -104,11 +107,64 @@ class HeroController extends BaseAuthedController {
$this->_rspErr(2, '锁定期间不能操作'); $this->_rspErr(2, '锁定期间不能操作');
return; return;
} }
$heroMeta = mt\Hero::get($heroDb['hero_id']); $initLevelMeta = mt\HeroLevel::get(1, 1);
if (!$heroMeta) { if (!$initLevelMeta) {
$this->_rspErr(100, '服务器内部错误'); $this->_rspErr(100, '服务器内部错误');
return; return;
} }
$currLevelMeta = mt\HeroLevel::get($heroDb['quality'], $heroDb['hero_lv']);
if (!$currLevelMeta) {
$this->_rspErr(100, '服务器内部错误');
return;
}
$nextLevelMeta = mt\HeroLevel::get($heroDb['quality'], $heroDb['hero_lv'] + 1);
if (!$nextLevelMeta) {
$this->_rspErr(5, '已满级');
return;
}
$costItems = array();
switch ($costItemId) {
case V_ITEM_GOLD:
{
$costItems = array(
array(
'item_id' => $costItemId,
'item_num' => $currLevelMeta['gold']
)
);
}
break;
case V_ITEM_DIAMOND:
{
$costItems = array(
array(
'item_id' => $costItemId,
'item_num' => $currLevelMeta['diamond']
)
);
}
break;
default:
{
$this->_rspErr(2, '支付方式不支持');
return;
}
break;
}
$lackItem = null;
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
return;
}
$randAttr = array();
$this->_decItems($costItems);
Hero::update($heroUniId,
array(
'level' => $heroDb['level'] + 1,
'rand_attr' => json_encode($randAttr)
)
);
} }
public function upgradeQuality() public function upgradeQuality()

View File

@ -17,6 +17,11 @@ class HeroLevel {
return getXVal(self::$qualityLevelHash, $quality . '_' . $level, null); return getXVal(self::$qualityLevelHash, $quality . '_' . $level, null);
} }
public static function getRandAttr($initMeta, $currMeta)
{
}
protected static function getMetaList() protected static function getMetaList()
{ {
if (!self::$metaList) { if (!self::$metaList) {