_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']; } $resetLv_state = $this->_getDailyV(TN_DAILY_RESET_HERO_LEVEL_STATE, $unique_id); $hero = Hero::toDto($heroDb); $hero['avatarInfo'] = Hero::avatarInfo($heroDb); $hero['resetLv_state'] = $resetLv_state; $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; } $itemMeta = \mt\Item::get($skinId); if ($itemMeta['isdefaultskin'] != 1 && !$heroSkinDb) { $this->_rspErr(2, "You don't have the skin yet"); return; } HeroSkin::takeonSkin( $skinId,$heroDb['hero_id']); $this->_rspOk(); } /* 升阶预览 */ public function upgradeQualityPreview(){ $itemId = getReqVal('itemId', 0); $quality = getReqVal('quality', 0); if ($quality == \mt\HeroQuality::MAX_QUALITY){ $this->_rspErr(5, "It's already the highest quality"); return; } $heroQualityMeta = \mt\HeroQuality::getByQuality($itemId,$quality+1); if (!$heroQualityMeta){ $this->_rspErr(100, 'server internal error'); return; } $costItems = array( array( 'item_id' => V_ITEM_GOLD, 'item_num' => $heroQualityMeta['gold'] ), array( 'item_id' => $heroQualityMeta['item'], 'item_num' => $heroQualityMeta['item_num'] ), ); $this->_rspData(array( 'cost' => $costItems )); } /* 英雄升阶 */ public function upgradeQuality(){ $heroUniId = getReqVal('hero_uniid', 0); $heroDb = Hero::find($heroUniId); if (!$heroDb) { $this->_rspErr(100, 'param error or null'); return; } if ($heroDb['quality'] == \mt\HeroQuality::MAX_QUALITY){ $this->_rspErr(5, "It's already the highest level"); return; } $heroQualityMeta = \mt\HeroQuality::getByQuality($heroDb['hero_id'],$heroDb['quality']+1); if (!$heroQualityMeta){ $this->_rspErr(100, 'server internal error'); return; } $costItems = array( array( 'item_id' => V_ITEM_GOLD, 'item_num' => $heroQualityMeta['gold'] ), array( 'item_id' => $heroQualityMeta['item'], 'item_num' => $heroQualityMeta['item_num'] ), ); $lackItem = null; if (!$this->_hasEnoughItems($costItems, $lackItem)) { $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); return; } $this->_decItems($costItems); Hero::update($heroUniId, array( 'quality' => $heroDb['quality'] + 1, )); $propertyChgService = new services\PropertyChgService(); $propertyChgService->addHeroChg(); $propertyChgService->addUserChg(); $propertyChgService->addBagChg(); $this->_rspData(array( 'property_chg' => $propertyChgService->toDto(), )); } /* 升级预览 */ 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_HERO_META, 'item_num' => $nextLevelMeta['serum'] ) ); // $metaList = mt\Item::getMetaListByType(mt\Item::FRAGMENT_TYPE); // foreach ($metaList as $meta){ // if ($meta['relationship'] == $heroDb['hero_id']) { // array_push($costItems,array( // 'item_id' => $meta['id'], // 'item_num' => $nextLevelMeta['piece'], // )); // } // } $heroDto = Hero::toDto($heroDb); $newHeroDto = $heroDto; $newHeroDto['hero_lv'] += 1; $attrs_new = Hero::nextLvAttr($heroDb); $newHeroDto['rand_attr'] = $attrs_new; $this->_rspData(array( 'old_hero' => $heroDto, 'new_hero' => $newHeroDto, 'cost' => $costItems )); } /* 英雄升级 */ public function upgradeLvNew() { return $heroUniId = getReqVal('hero_uniid', 0); $heroDb = Hero::find($heroUniId); $oldHero = Hero::toDto($heroDb); if (!$heroDb) { $this->_rspErr(100, 'param error or null'); 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_HERO_META, 'item_num' => $nextLevelMeta['serum'] ), ); $lackItem = null; if (!$this->_hasEnoughItems($costItems, $lackItem)) { $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); return; } $this->_decItems($costItems); // Bag::decItem(V_ITEM_HERO_META,$nextLevelMeta['serum']); { //埋点 $event = [ 'name' => LogService::HERO_LEVEL_UP, 'val' => $nextLevelMeta['gold'] ]; LogService::consumeGold($event); } $attrs = Hero::LvUpAddAttr($heroDb); Hero::update($heroUniId, array( 'hero_lv' => $heroDb['hero_lv'] + 1, 'rand_attr' => json_encode($attrs['rand_attr']), 'base_attr' => json_encode($attrs['base_attr']), //'state' => Hero::GETED_STATE, )); 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(); $propertyChgService->addBagChg(); $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); $propertyChgService = new services\PropertyChgService(); $propertyChgService->addGunChg(); $this->_rspData(array( 'property_chg' => $propertyChgService->toDto(), )); } /* * 设置通用技能 */ public function setHeroSkill(){ $skillId = getReqVal('skill_id',0); $skillMeta = \mt\Skill::get($skillId); if (! $skillMeta){ $this->_rspErr(1,'skill_id parameter error'); return ; } $userDb = $this->_getOrmUserInfo(); $hero_uid = $userDb['hero_id']; $preset = HeroPreset::getHeroPreset($hero_uid); HeroPreset::upsertPreset($hero_uid,$skillId,$preset['chip_page'],0,0); $this->_rspOk(); } }