_rspData(array( 'hero_list' => $heroList )); } public function heroDetails() { $unique_id = trim(getReqVal('unique_id', 0)); if ( ! $unique_id) { $this->_rspErr(1, 'Please enter instructions'); return; } $heroDb = Hero::find($unique_id); if (! $heroDb){ $this->_rspErr(1, "You don't have the hero yet"); return; } $heroDb['tags'] = ''; if ($heroDb['token_id']){ $nftDb = Nft::getNft($heroDb['token_id']); $heroDb['tags'] = $nftDb['tags']; } $hero = Hero::toDto($heroDb); $this->_rspData(array( 'data' => $hero )); } public function skinList() { $heroId = getReqVal('hero_id',0); if (!$heroId){ $this->_rspErr(1, "param null"); return; } $itemMeta = \mt\Item::get($heroId); if (!$itemMeta || $itemMeta['type']!=\mt\Item::HERO_TYPE){ $this->_rspErr(1, "param error"); return; } $skinList = array(); $skinMeta = \mt\Item::getMetaListByType(\mt\Item::HERO_SKIN_TYPE); if ($skinMeta){ foreach ($skinMeta as $value){ if ($value['playerid'] == $heroId){ array_push($skinList,HeroSkin::toDto($value)); } } } $this->_rspData(array( 'skin_list' => $skinList )); } public function takeonSkin() { $heroUniId = getReqVal('hero_uniid', 0); $skinId = getReqVal('skin_id', 0); $heroDb = Hero::find($heroUniId); $heroSkinDb = HeroSkin::find($skinId); if (!$heroDb) { $this->_rspErr(1, "You don't have the hero yet"); return; } if (!$heroSkinDb) { $this->_rspErr(2, "You don't have the skin yet"); return; } HeroSkin::takeonSkin( $skinId,$heroDb['hero_id']); $this->_rspOk(); } public function upgradeLevelPreview(){ $heroUniId = getReqVal('hero_uniid', 0); $heroDb = Hero::find($heroUniId); if (!$heroDb) { $this->_rspErr(1, 'hero does not exist'); return; } $heroMeta = mt\Hero::get($heroDb['hero_id']); if (!$heroMeta) { $this->_rspErr(100, 'server internal error'); return; } $nextLevelMeta = mt\HeroLevel::getByLevel($heroDb['hero_lv'] + 1); if (!$nextLevelMeta) { $this->_rspErr(5, "It's already the highest level"); return; } $costItems = array( array( 'item_id' => V_ITEM_GOLD, 'item_num' => $nextLevelMeta['gold'] ), array( 'item_id' => V_ITEM_DIAMOND, 'item_num' => $nextLevelMeta['diamond'] ) ); $heroDto = Hero::toDto($heroDb); $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, 'new_hero' => $newHeroDto, 'cost' => $costItems )); } public function test(){ $levelAttrMeta= \mt\HeroLevelAttr::find(30100); $attr= \mt\HeroLevelAttr::addRandAttr($levelAttrMeta,2); print_r($attr); } public function upgradeLv() { $heroUniId = getReqVal('hero_uniid', 0); $costHeroUniId = getReqVal('cost_hero_uniid', 0); $heroDb = Hero::find($heroUniId); $oldHero = Hero::toDto($heroDb); $costHeroDb = Hero::findEx($costHeroUniId); if (!$heroDb) { $this->_rspErr(100, 'param error or null'); return; } if ($heroDb['hero_lv'] == Hero::LV_1 || $heroDb['hero_lv'] == Hero::LV_2 || $heroDb['hero_lv'] == Hero::LV_3 ){ if (! $costHeroDb){ $this->_rspErr(100, 'material param error or null'); return; } if ($costHeroDb['token_id']){ $this->_rspErr(100, 'NFT cannot be a material'); return; } // if ($costHeroDb['state'] == Hero::FREE_STATE){ // $this->_rspErr(100, 'Unable to use free hero'); // return; // } switch ($heroDb['hero_lv']){ case Hero::LV_1:{ if ($heroDb['hero_lv'] < $costHeroDb['hero_lv']){ $this->_rspErr(100, 'Grade discrepancy'); return; } };break; case Hero::LV_2:{ if ($heroDb['hero_lv'] < $costHeroDb['hero_lv'] && $costHeroDb['hero_lv'] <= Hero::LV_1){ $this->_rspErr(100, 'Grade discrepancy'); return; } };break; case Hero::LV_3:{ if ($heroDb['hero_lv'] < $costHeroDb['hero_lv'] && $costHeroDb['hero_lv'] <= Hero::LV_2){ $this->_rspErr(100, 'Grade discrepancy'); return; } } } } $heroMeta = mt\Hero::get($heroDb['hero_id']); if (!$heroMeta) { $this->_rspErr(100, 'server internal error'); return; } $nextLevelMeta = mt\HeroLevel::getByLevel($heroDb['hero_lv'] + 1); if (!$nextLevelMeta) { $this->_rspErr(5, "It's already the highest level"); return; } //升级所需消耗 $costItems = array( array( 'item_id' => V_ITEM_GOLD, 'item_num' => $nextLevelMeta['gold'] ), array( 'item_id' => V_ITEM_DIAMOND, 'item_num' => $nextLevelMeta['diamond'] ) ); $lackItem = null; if (!$this->_hasEnoughItems($costItems, $lackItem)) { $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); return; } $this->_decItems($costItems); $attrs = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::FINAL_RAND_ATTR); Hero::update($heroUniId, array( 'hero_lv' => $heroDb['hero_lv'] + 1, 'rand_attr' => json_encode($attrs), 'state' => Hero::GETED_STATE, )); if ($costHeroDb){ Hero::update($costHeroUniId, array( 'account_id' => myself()->_getAccountId() . '!!!', )); } if ($heroDb['hero_lv'] + 1 > myself()->_getV(TN_HERO_MAX_LEVEL, 0)) { myself()->_setV(TN_HERO_MAX_LEVEL, 0, $heroDb['hero_lv'] + 1); } $newHero = Hero::toDto(Hero::find($heroUniId)); $propertyChgService = new services\PropertyChgService(); $propertyChgService->addHeroChg(); $propertyChgService->addUserChg(); $this->_rspData(array( 'property_chg' => $propertyChgService->toDto(), 'old_hero' => $oldHero, 'new_hero' => $newHero, )); } public function presetHero(){ $heroUid = getReqVal('hero_uid',0); $heroDb = Hero::find($heroUid); if (! $heroDb){ $this->_rspErr(1, "You don't have the hero yet"); return; } $data = HeroPreset::getHeroPreset($heroUid); $this->_rspData(array( 'data' => $data, )); } public function applyHero(){ $heroId = getReqVal('hero_uid',0); $chipPageId = getReqVal('chip_page',0); $weaponUid1 = getReqVal('weapon_uid1',0); $weaponUid2 = getReqVal('weapon_uid2',0); $skillId = getReqVal('skill_id',0); $heroDb = Hero::find($heroId); if (! $heroDb){ $this->_rspErr(1, "You don't have the hero yet"); return; } $chipPageDb = ChipPage::find($chipPageId); if (! $chipPageDb){ $this->_rspErr(1, "You don't have the chip page"); return; } if ($weaponUid1){ $gunDb1 = Gun::find($weaponUid1); if (!$gunDb1){ $this->_rspErr(1, "You don't have the gun1 yet"); return; } } if ($weaponUid2){ $gunDb2 = Gun::find($weaponUid2); if (!$gunDb2){ $this->_rspErr(1, "You don't have the gun2 yet"); return; } } $skillMeta = \mt\Skill::get($skillId); if (! $skillMeta){ $this->_rspErr(1,'skill_id parameter error'); return ; } HeroPreset::upsertPreset($heroId,$skillId,$chipPageId,$weaponUid1,$weaponUid2); $this->_rspOk(); } }