This commit is contained in:
aozhiwei 2022-01-05 19:31:10 +08:00
parent 1d42bf8c6b
commit 18245e0463
4 changed files with 108 additions and 9 deletions

View File

@ -20,8 +20,9 @@ class Attr(object):
def __init__(self):
self.fields = [
['attr_type', 0, '属性类型'],
['attr_val', 0, '属性值'],
['attr_id', 0, '属性id'],
['type', 0, '0: 绝对值 1百分比'],
['val', 0, '属性值'],
]
class Gun(object):

View File

@ -107,17 +107,17 @@ class HeroController extends BaseAuthedController {
$this->_rspErr(2, '锁定期间不能操作');
return;
}
$initLevelMeta = mt\HeroLevel::get(1, 1);
$initLevelMeta = mt\HeroLevel::getByQualityLevel(1, 1);
if (!$initLevelMeta) {
$this->_rspErr(100, '服务器内部错误');
return;
}
$currLevelMeta = mt\HeroLevel::get($heroDb['quality'], $heroDb['hero_lv']);
$currLevelMeta = mt\HeroLevel::getByQualityLevel($heroDb['quality'], $heroDb['hero_lv']);
if (!$currLevelMeta) {
$this->_rspErr(100, '服务器内部错误');
return;
}
$nextLevelMeta = mt\HeroLevel::get($heroDb['quality'], $heroDb['hero_lv'] + 1);
$nextLevelMeta = mt\HeroLevel::getByQualityLevel($heroDb['quality'], $heroDb['hero_lv'] + 1);
if (!$nextLevelMeta) {
$this->_rspErr(5, '已满级');
return;
@ -133,7 +133,7 @@ class HeroController extends BaseAuthedController {
)
);
}
break;
Break;
case V_ITEM_DIAMOND:
{
$costItems = array(
@ -157,7 +157,8 @@ class HeroController extends BaseAuthedController {
return;
}
$oldAttr = json_decode($heroDb['rand_attr'], true);
$randAttr = array();
$randAttr = $oldAttr;
mt\HeroLevel::getRandAttr($initLevelMeta, $nextLevelMeta, $oldAttr, $randAttr);
$this->_decItems($costItems);
Hero::update($heroUniId,
array(
@ -165,12 +166,104 @@ class HeroController extends BaseAuthedController {
'rand_attr' => json_encode($randAttr)
)
);
}
public function upgradeQuality()
{
$costItemId = getReqVal('cost_item_id', 0);
$heroUniId = getReqVal('hero_uniid', 0);
$heroDb = Hero::find($heroUniId);
if (!$heroDb) {
$this->_rspErr(1, '英雄不存在');
return;
}
if ($heroDb['state'] == Hero::GETED_STATE) {
$this->_rspErr(3, '试用英雄不能操作');
return;
}
if ($heroDb['unlock_time'] > $this->_getNowTime()) {
$this->_rspErr(2, '锁定期间不能操作');
return;
}
if ($heroDb['unlock_trade_time'] > $this->_getNowTime()) {
$this->_rspErr(2, '锁定期间不能操作');
return;
}
$initLevelMeta = mt\HeroLevel::getByQualityLevel(1, 1);
if (!$initLevelMeta) {
$this->_rspErr(100, '服务器内部错误');
return;
}
$initQualityMeta = mt\HeroQuality::getByQuality(1);
if (!$initQualityMeta) {
$this->_rspErr(100, '服务器内部错误');
return;
}
$currQualityMeta = mt\HeroQuality::getByQuality($heroDb['quality']);
if (!$currQualityMeta) {
$this->_rspErr(100, '服务器内部错误');
return;
}
$nextQualityMeta = mt\HeroQuality::getByQuality($heroDb['quality'] + 1);
if (!$nextQualityMeta) {
$this->_rspErr(5, '已满级');
return;
}
$nextLevelMeta = mt\HeroLevel::getByQualityLevel($heroDb['quality'] + 1, $heroDb['level']);
if (!$nextLevelMeta) {
$this->_rspErr(5, '已满级');
return;
}
$costItems = array();
switch ($costItemId) {
case V_ITEM_GOLD:
{
$costItems = array(
array(
'item_id' => $costItemId,
'item_num' => $currQualityMeta['gold']
)
);
}
break;
case V_ITEM_DIAMOND:
{
$costItems = array(
array(
'item_id' => $costItemId,
'item_num' => $currQualityMeta['diamond']
)
);
}
break;
default:
{
$this->_rspErr(2, '支付方式不支持');
return;
}
break;
}
$lackItem = null;
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
return;
}
$oldAttr = json_decode($heroDb['rand_attr'], true);
$randAttr = $oldAttr;
{
mt\HeroQuality::getNextAttr($initQualityMeta, $nextQualityMeta, $oldAttr, $randAttr);
$oldAttr = $randAttr;
}
{
mt\HeroLevel::getNextAttr($initLevelMeta, $nextLevelMeta, $oldAttr, $randAttr);
}
$this->_decItems($costItems);
Hero::update($heroUniId,
array(
'quality' => $heroDb['quality'] + 1,
'rand_attr' => json_encode($randAttr)
)
);
}
}

View File

@ -17,7 +17,7 @@ class HeroLevel {
return getXVal(self::$qualityLevelHash, $quality . '_' . $level, null);
}
public static function getRandAttr($initMeta, $currMeta, $oldAttr, &$newAttr)
public static function getRandAttr($initMeta, $nextMeta, $oldAttr, &$newAttr)
{
}

View File

@ -17,6 +17,11 @@ class HeroQuality {
return getXVal(self::$qualityHash, $level, null);
}
public static function getRandAttr($initMeta, $nextMeta, $oldAttr, &$newAttr)
{
}
protected static function getMetaList()
{
if (!self::$metaList) {