diff --git a/webapp/services/callback/MintNftHero.php b/webapp/services/callback/MintNftHero.php index 38b75964..e2f9e5ba 100644 --- a/webapp/services/callback/MintNftHero.php +++ b/webapp/services/callback/MintNftHero.php @@ -7,20 +7,24 @@ require_once ('services/callback/common/SignatureService.php'); require_once('mt/Item.php'); require_once('mt/Hero.php'); require_once('mt/Parameter.php'); +require_once('mt/BattleRandAttribute.php'); +require_once('models/Hero.php'); - +use mt\BattleRandAttribute; use mt\Item; use mt\Hero; use mt\Parameter; use phpcommon\SqlHelper; +use models\Hero as HeroModel; class MintNftHero { - const TYPE_1 = 1; //D - const TYPE_2 = 2; //C - const TYPE_3 = 3; //B - const TYPE_4 = 4; //A - const TYPE_5 = 5; //S + const TYPE_1 = 1; + const TYPE_2 = 2; + const TYPE_3 = 3; + const TYPE_4 = 4; + const TYPE_5 = 5; + const TYPE_6 = 6; public function process() { SignatureService::web3ServiceCheck(); @@ -49,6 +53,7 @@ class MintNftHero self::TYPE_3, self::TYPE_4, self::TYPE_5, + self::TYPE_6, ))){ echo json_encode(array( 'errcode' => 2, @@ -75,7 +80,7 @@ class MintNftHero } - $this->internalAddHero($tokenId,$itemId,$quality); + $this->internalAddHero($tokenId,$itemMeta,$quality); echo json_encode(array( 'errcode' => 0, 'errmsg' => "callback success", @@ -111,25 +116,29 @@ class MintNftHero } - private function internalAddHero($tokenId,$itemId,$quality) + private function internalAddHero($tokenId,$heroMeta,$quality) { - $randAttr = $this->_getRandAttr($itemId,$quality) ; + $randAttr = $this->_getRandAttr($heroMeta['id']) ; + $attribute = \mt\EconomyAttribute::getAttribute($heroMeta['relationship'], $quality); $fieldsKv = array( - 'hero_id' => $itemId, + 'hero_id' => $heroMeta['id'], 'token_id' => $tokenId, 'hero_lv' => 1, - 'quality' => 1, + 'quality' => $quality, 'state' => 0, 'skill_lv1' => 1, 'skill_lv2' => 1, 'rand_attr' => json_encode($randAttr), + 'wealth_attr' => json_encode($attribute), 'lock_type' => 0, 'unlock_time' => 0, 'unlock_trade_time' => 0, 'activate' => 1, - 'base_attr' => json_encode($randAttr), + 'activate_time' => myself()->_getNowTime(), 'createtime' => myself()->_getNowTime(), - 'modifytime' => myself()->_getNowTime() + 'modifytime' => myself()->_getNowTime(), + 'seal_type' => HeroModel::SEAL_STATE, + 'unseal_time' => myself()->_getNowTime(), ); SqlHelper::insert( @@ -139,43 +148,13 @@ class MintNftHero ); } - private function _getRandAttr($heroId,$quality){ - $heroMeta = Hero::get($heroId); - $baseAttr = Hero::getHeroAttr($heroMeta); - $paramMeta = Parameter::getVal('quality',0); + private function _getRandAttr($heroId){ $attr = array(); - if ($paramMeta){ - $rate = explode('|',$paramMeta); - foreach ($baseAttr as $value){ - if (in_array($value['attr_id'],array(kHAT_Hp,kHAT_Atk,kHAT_Def))){ -// $quality = self::_getAttrQuality($type); - $minRate = $rate[$quality-1] * 100; - $maxRate = $rate[$quality] * 100 - 1; - if ($quality == 5){ - $maxRate = $rate[$quality] * 100; - } - $finalRate = rand($minRate,$maxRate) / 100; - if ( $value['attr_id'] == kHAT_Hp){ - $attr_val = round($value['val'] * $finalRate,0); - }else{ - $attr_val = round($value['val'] * $finalRate,2); - } - - array_push($attr,array( - 'attr_id' => $value['attr_id'], - 'val' => $attr_val, - 'quality' => $quality, -// 'rate' => $finalRate, - ) - ); - } else { - array_push($attr,array( - 'attr_id' => $value['attr_id'], - 'val' => $value['val'] , - 'quality' => 0, - ) - ); - } + $basicMeta = BattleRandAttribute::get($heroId); + if ($basicMeta) { + $randMeta = BattleRandAttribute::getByWeight($basicMeta['randomAttribute_Default']); + if ($randMeta) { + $attr = BattleRandAttribute::getRandAttr($randMeta); } } return $attr;