From 2b325c5b65fc5eba5757bbcbd146345b9743ad6e Mon Sep 17 00:00:00 2001 From: hujiabin Date: Wed, 29 Mar 2023 14:52:45 +0800 Subject: [PATCH] 1 --- webapp/controller/HeroController.class.php | 20 +++-- webapp/mt/HeroLevelAttr.php | 97 +++++++++++++++------- 2 files changed, 79 insertions(+), 38 deletions(-) diff --git a/webapp/controller/HeroController.class.php b/webapp/controller/HeroController.class.php index db7a6177..8235bec1 100644 --- a/webapp/controller/HeroController.class.php +++ b/webapp/controller/HeroController.class.php @@ -137,13 +137,14 @@ class HeroController extends BaseAuthedController { ) ); - $newHeroDb = $heroDb; - $newHeroDb['hero_lv'] += 1; - $attrs = Hero::LvUpAddAttr($heroDb,0); - $newHeroDb['rand_attr'] = json_encode($attrs); - $heroDto = Hero::toDto($heroDb); - $newHeroDto = Hero::toDto($newHeroDb); + + $newHeroDto = $heroDto; + $newHeroDto['hero_lv'] += 1; + $attrs_min = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::MIN_RAND_ATTR); + $attrs_max = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::MAX_RAND_ATTR); + $newHeroDto['rand_attr_min'] = $attrs_min; + $newHeroDto['rand_attr_max'] = $attrs_max; $this->_rspData(array( 'old_hero' => $heroDto, @@ -151,6 +152,11 @@ class HeroController extends BaseAuthedController { 'cost' => $costItems )); } + public function test(){ + $levelAttrMeta= \mt\HeroLevelAttr::find(30100); + $attr= \mt\HeroLevelAttr::addRandAttr($levelAttrMeta,2); + print_r($attr); + } public function upgradeLv() { @@ -228,7 +234,7 @@ class HeroController extends BaseAuthedController { } $this->_decItems($costItems); - $attrs = Hero::LvUpAddAttr($heroDb,1); + $attrs = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::FINAL_RAND_ATTR); Hero::update($heroUniId, array( 'hero_lv' => $heroDb['hero_lv'] + 1, 'rand_attr' => json_encode($attrs), diff --git a/webapp/mt/HeroLevelAttr.php b/webapp/mt/HeroLevelAttr.php index ffc54dd0..b6cbab9f 100644 --- a/webapp/mt/HeroLevelAttr.php +++ b/webapp/mt/HeroLevelAttr.php @@ -10,6 +10,9 @@ use phpcommon; class HeroLevelAttr { private static $BASE_ATTR = [kHAT_Hp,kHAT_Atk,kHAT_Def,kHAT_Critical,kHAT_CriDamage]; + const MIN_RAND_ATTR = 0; + const MAX_RAND_ATTR = 1; + const FINAL_RAND_ATTR = 2; public static function find($id) { @@ -17,37 +20,62 @@ class HeroLevelAttr { } public static function addRandAttr($meta,$type){ - if ($type == 1){ - $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) - ), - ); - }else{ - $attr = array( - array( - 'attr_id' => kHAT_Hp, - 'val' => self::getAttrValueMin($meta) - ), - array( - 'attr_id' => kHAT_Atk, - 'val' => self::getAttrValueMin($meta) - ), - array( - 'attr_id' => kHAT_Def, - 'val' => self::getAttrValueMin($meta) - ), - ); - + switch ($type){ + //随机属性最小值 + case self::MIN_RAND_ATTR :{ + $attr = array( + array( + 'attr_id' => 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; } @@ -91,6 +119,13 @@ class HeroLevelAttr { } } + 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) {