From 59ec4c358a051e8f2297717492968ea8380b747e Mon Sep 17 00:00:00 2001 From: hujiabin Date: Tue, 7 Mar 2023 11:34:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E7=9A=AE=E8=82=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Hero.py | 1 + doc/_common.py | 11 +- sql/gamedb.sql | 1 + webapp/controller/HeroController.class.php | 559 +++++++++++---------- webapp/models/Hero.php | 46 +- webapp/models/HeroSkin.php | 72 ++- 6 files changed, 391 insertions(+), 299 deletions(-) diff --git a/doc/Hero.py b/doc/Hero.py index 780f3811..62ca56df 100644 --- a/doc/Hero.py +++ b/doc/Hero.py @@ -26,6 +26,7 @@ class Hero(object): 'url': 'webapp/index.php?c=Hero&a=skinList', 'params': [ _common.ReqHead(), + ['hero_id', 0, '英雄itemId'], ], 'response': [ _common.RspHead(), diff --git a/doc/_common.py b/doc/_common.py index d66c5a3f..fd68a533 100644 --- a/doc/_common.py +++ b/doc/_common.py @@ -245,10 +245,9 @@ class Hero(object): ['lock_type', 0, '0:无锁 1:升级 2:升阶 3:派遣中'], ['unlock_lefttime', 0, '解锁剩余时间(单位秒)'], ['unlock_time', 0, '使用解锁utc时间(升级或者升阶触发),锁定期间不可战斗和做其他操作,配合lock_type使用'], - ['current_pvp_get_ceg', 0, '当前pvp获取的ceg数量'], - ['current_pve_get_ceg', 0, '当前pve获取的ceg数量'], - ['last_pvp_get_ceg_time', 0, '最后一次获取pvp获取ceg时间'], - ['last_pve_get_ceg_time', 0, '最后一次获取pve获取ceg时间'], + ['current_get_gold', 0, '当前获取的gold数量'], + ['last_get_gold_time', 0, '最后一次获取gold时间'], + ['gold_uplimit', 0, '每天gold上限'], ['unlock_trade_time', 0, '出售解锁utc时间(升级或者升阶完成后触发),只锁交易,其他的操作仍可进行,和lock_type无关是独立的锁!!!'], ['advanced_count', 0, '进阶次数'], ['offer_reward_state', 0, '是否悬赏中'], @@ -289,8 +288,8 @@ class HeroSkin(object): def __init__(self): self.fields = [ ['skin_id', 0, '英雄皮肤id'], - ['skin_state', 0, '英雄皮肤状态 0=已经购,1 = 试用状态'], - ['try_expire_at', 0, '试用到期时间(utc时间)'], + ['is_have', 0, '是否拥有 1:拥有 0:未拥有'], + ['use_state', 0, '选中状态 1:选中 0:未选中'], ] class Item(object): diff --git a/sql/gamedb.sql b/sql/gamedb.sql index 1a4fe4dd..e8712281 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -184,6 +184,7 @@ CREATE TABLE `t_hero_skin` ( `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', `account_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT 'account_id', `skin_id` int(11) NOT NULL DEFAULT '0' COMMENT '英雄皮肤id', + `hero_id` int(11) NOT NULL DEFAULT '0' COMMENT '英雄id', `skin_state` int(11) NOT NULL DEFAULT '0' COMMENT '英雄皮肤状态 0=已经购,1 = 试用状态', `get_from` int(11) NOT NULL DEFAULT '0' COMMENT '获得方式 0 = 系统赠送 1 = 金币购买', `consume_num` int(11) NOT NULL DEFAULT '0' COMMENT '消耗货币的具体数量', diff --git a/webapp/controller/HeroController.class.php b/webapp/controller/HeroController.class.php index e681506e..dc1c8ea7 100644 --- a/webapp/controller/HeroController.class.php +++ b/webapp/controller/HeroController.class.php @@ -75,6 +75,299 @@ class HeroController extends BaseAuthedController { )); } + 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\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1); + if (!$nextLevelMeta) { + $this->_rspErr(5, "It's already the highest level"); + return; + } + + $meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1); + $costItems = array( + array( + 'item_id' => V_ITEM_GOLD, + 'item_num' => $meta['gold'] + ), + array( + 'item_id' => V_ITEM_DIAMOND, + 'item_num' => $meta['diamond'] + ) + ); + + $newHeroDb = $heroDb; + $newHeroDb['hero_lv'] += 1; + $attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,0); + $newHeroDb['rand_attr'] = json_encode($attrs); + + $heroDto = Hero::toDto($heroDb); + $newHeroDto = Hero::toDto($newHeroDb); + $this->_rspData(array( + + 'old_hero' => $heroDto, + 'new_hero' => $newHeroDto, + 'cost' => $costItems + )); + } + + 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\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1); + if (!$nextLevelMeta) { + $this->_rspErr(5, "It's already the highest level"); + return; + } + + //升级所需消耗 + $meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1); + $costItems = array( + array( + 'item_id' => V_ITEM_GOLD, + 'item_num' => $meta['gold'] + ), + array( + 'item_id' => V_ITEM_DIAMOND, + 'item_num' => $meta['diamond'] + ) + ); + $lackItem = null; + if (!$this->_hasEnoughItems($costItems, $lackItem)) { + $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); + return; + } + $this->_decItems($costItems); + + $attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,1); + 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(){ + $heroId = getReqVal('hero_uid',0); + $heroDb = Hero::find($heroId); + if (! $heroDb){ + $this->_rspErr(1, "You don't have the hero yet"); + return; + } + $row = SqlHelper::ormSelectOne( + $this->_getSelfMysql(), + 't_hero_preset', + array( + 'account_id' => $this->_getAccountId(), + 'hero_uid' => $heroId, + ) + ); + if ($row){ + $data = array( + 'skill_id' => $row['skill_id'], + 'weapon_uid1' => $row['weapon_uid1'], + 'weapon_uid2' => $row['weapon_uid2'], + 'chip_page' => $row['chip_page'], + ); + }else{ + $data = array( + 'skill_id' => \mt\Skill::DEFAULT_SKILL, + 'weapon_uid1' => 0, + 'weapon_uid2' => 0, + 'chip_page' => 1, + ); + } + $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 ; + } + SqlHelper::upsert + ($this->_getSelfMysql(), + 't_hero_preset', + array( + 'account_id' => $this->_getAccountId(), + 'hero_uid' => $heroId, + ), + array( + 'skill_id' => $skillId, + 'weapon_uid1' => $weaponUid1, + 'weapon_uid2' => $weaponUid2, + 'chip_page' => $chipPageId, + 'modifytime' => $this->_getNowTime(), + ), + array( + 'account_id' => $this->_getAccountId(), + 'hero_uid' => $heroId, + 'skill_id' => $skillId, + 'weapon_uid1' => $weaponUid1, + 'weapon_uid2' => $weaponUid2, + 'chip_page' => $chipPageId, + 'createtime' => $this->_getNowTime(), + 'modifytime' => $this->_getNowTime(), + + ) + ); + $this->_rspOk(); + } + + + + public function upgradeSkillCommon(){ $heroUniId = getReqVal('hero_uniid', 0); $skillIndex = getReqVal('skill_index', 0); @@ -157,42 +450,6 @@ class HeroController extends BaseAuthedController { )); } - public function skinList() - { - $skinList = array(); - SqlHelper::ormSelect( - $this->_getSelfMysql(), - 't_hero_skin', - array( - 'account_id' => $this->_getAccountId() - ), - function ($row) use(&$skinList) { - array_push($skinList, HeroSkin::toDto($row)); - } - ); - $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; - } - Hero::takeonSkin($heroUniId, $skinId); - $this->_rspOk(); - } - public function getUpgradeLevelList() { $infos = array(); @@ -625,51 +882,6 @@ class HeroController extends BaseAuthedController { )); } - 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\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1); - if (!$nextLevelMeta) { - $this->_rspErr(5, "It's already the highest level"); - return; - } - - $meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1); - $costItems = array( - array( - 'item_id' => V_ITEM_GOLD, - 'item_num' => $meta['gold'] - ), - array( - 'item_id' => V_ITEM_DIAMOND, - 'item_num' => $meta['diamond'] - ) - ); - - $newHeroDb = $heroDb; - $newHeroDb['hero_lv'] += 1; - $attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,0); - $newHeroDb['rand_attr'] = json_encode($attrs); - - $heroDto = Hero::toDto($heroDb); - $newHeroDto = Hero::toDto($newHeroDb); - $this->_rspData(array( - - 'old_hero' => $heroDto, - 'new_hero' => $newHeroDto, - 'cost' => $costItems - )); - } - public function upgradeQualityOld() { $costHeroUniId = getReqVal('cost_hero_uniid', 0); @@ -973,189 +1185,4 @@ class HeroController extends BaseAuthedController { 'old_hero'=>Hero::toDto($oldHeroDb) )); } - - 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; - } - if ($heroDb['hero_lv'] != $costHeroDb['hero_lv']){ - $this->_rspErr(100, 'You need the same level to do it'); - return; - } - } - $heroMeta = mt\Hero::get($heroDb['hero_id']); - if (!$heroMeta) { - $this->_rspErr(100, 'server internal error'); - return; - } - $nextLevelMeta = mt\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1); - if (!$nextLevelMeta) { - $this->_rspErr(5, "It's already the highest level"); - return; - } - - //升级所需消耗 - $meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1); - $costItems = array( - array( - 'item_id' => V_ITEM_GOLD, - 'item_num' => $meta['gold'] - ), - array( - 'item_id' => V_ITEM_DIAMOND, - 'item_num' => $meta['diamond'] - ) - ); - $lackItem = null; - if (!$this->_hasEnoughItems($costItems, $lackItem)) { - $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); - return; - } - $this->_decItems($costItems); - - $attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,1); - 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(){ - $heroId = getReqVal('hero_uid',0); - $heroDb = Hero::find($heroId); - if (! $heroDb){ - $this->_rspErr(1, "You don't have the hero yet"); - return; - } - $row = SqlHelper::ormSelectOne( - $this->_getSelfMysql(), - 't_hero_preset', - array( - 'account_id' => $this->_getAccountId(), - 'hero_uid' => $heroId, - ) - ); - if ($row){ - $data = array( - 'skill_id' => $row['skill_id'], - 'weapon_uid1' => $row['weapon_uid1'], - 'weapon_uid2' => $row['weapon_uid2'], - 'chip_page' => $row['chip_page'], - ); - }else{ - $data = array( - 'skill_id' => \mt\Skill::DEFAULT_SKILL, - 'weapon_uid1' => 0, - 'weapon_uid2' => 0, - 'chip_page' => 1, - ); - } - $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 ; - } - SqlHelper::upsert - ($this->_getSelfMysql(), - 't_hero_preset', - array( - 'account_id' => $this->_getAccountId(), - 'hero_uid' => $heroId, - ), - array( - 'skill_id' => $skillId, - 'weapon_uid1' => $weaponUid1, - 'weapon_uid2' => $weaponUid2, - 'chip_page' => $chipPageId, - 'modifytime' => $this->_getNowTime(), - ), - array( - 'account_id' => $this->_getAccountId(), - 'hero_uid' => $heroId, - 'skill_id' => $skillId, - 'weapon_uid1' => $weaponUid1, - 'weapon_uid2' => $weaponUid2, - 'chip_page' => $chipPageId, - 'createtime' => $this->_getNowTime(), - 'modifytime' => $this->_getNowTime(), - - ) - ); - $this->_rspOk(); - } } diff --git a/webapp/models/Hero.php b/webapp/models/Hero.php index f0b67a93..6d599fda 100644 --- a/webapp/models/Hero.php +++ b/webapp/models/Hero.php @@ -5,6 +5,7 @@ namespace models; require_once('mt/Hero.php'); require_once('mt/HeroLevelAttr.php'); require_once('mt/HeroQuality.php'); +require_once('mt/HeroLevel.php'); require_once('mt/AttrHelper.php'); require_once('mt/Item.php'); require_once('mt/SkillCommon.php'); @@ -231,24 +232,24 @@ class Hero extends BaseModel { $unlockTime = $row['unlock_time']; } - $qualityMeta = mt\HeroQuality::getByQuality($row['quality']); + $levelMeta = mt\HeroLevel::getByLevel($row['hero_lv']); $todayGetGold = $row['today_get_gold']; $lastGetGoldTime = $row['last_get_gold_time']; if (myself()->_getDaySeconds($lastGetGoldTime) < myself()->_getNowDaySeconds()) { $todayGetGold = 0; } - $todayPveGetCeg = $row['today_pve_get_ceg']; - $lastPveGetCegTime = $row['last_pve_get_ceg_time']; - if (myself()->_getDaySeconds($lastPveGetCegTime) < - myself()->_getNowDaySeconds()) { - $todayPveGetCeg = 0; - } - $todayMissionGetCeg = $row['today_mission_get_ceg']; - $lastMissionGetCegTime = $row['last_mission_get_ceg_time']; - if (myself()->_getDaySeconds($lastMissionGetCegTime) < myself()->_getNowDaySeconds()) { - $todayMissionGetCeg = 0; - } +// $todayPveGetCeg = $row['today_pve_get_ceg']; +// $lastPveGetCegTime = $row['last_pve_get_ceg_time']; +// if (myself()->_getDaySeconds($lastPveGetCegTime) < +// myself()->_getNowDaySeconds()) { +// $todayPveGetCeg = 0; +// } +// $todayMissionGetCeg = $row['today_mission_get_ceg']; +// $lastMissionGetCegTime = $row['last_mission_get_ceg_time']; +// if (myself()->_getDaySeconds($lastMissionGetCegTime) < myself()->_getNowDaySeconds()) { +// $todayMissionGetCeg = 0; +// } $baseAttr=[]; $attrPro=[]; $heroMeta = mt\Hero::get($row['hero_id']); @@ -285,12 +286,13 @@ class Hero extends BaseModel { 'unlock_time' => $unlockTime, 'unlock_lefttime' => max(0, $unlockTime - myself()->_getNowTime()), - 'current_pvp_get_ceg' => $todayGetGold / 100, - 'last_pvp_get_ceg_time' => $lastGetGoldTime, - 'current_pve_get_ceg' => $todayPveGetCeg / 100, - 'last_pve_get_ceg_time' => $lastPveGetCegTime, - 'current_mission_get_ceg' => $todayMissionGetCeg / 100, - 'last_mission_get_ceg_time' => $lastMissionGetCegTime, + 'current_get_gold' => $todayGetGold / 100, + 'last_get_gold_time' => $lastGetGoldTime, + 'gold_uplimit' => $levelMeta['gold_limit'], +// 'current_pve_get_ceg' => $todayPveGetCeg / 100, +// 'last_pve_get_ceg_time' => $lastPveGetCegTime, +// 'current_mission_get_ceg' => $todayMissionGetCeg / 100, +// 'last_mission_get_ceg_time' => $lastMissionGetCegTime, 'unlock_trade_time' => $row['unlock_trade_time'], 'advanced_count' => $row['advanced_count'], // 'lucky' => $heroLucky, @@ -342,6 +344,14 @@ class Hero extends BaseModel { public static function internalAddHero($conn, $heroMeta, $accountId, $tokenId,$state) { + $skinItemMeta = \mt\Item::getMetaListByType(\mt\Item::HERO_SKIN_TYPE); + if ($skinItemMeta){ + foreach ($skinItemMeta as $value){ + if ($value['playerid'] == $heroMeta['id'] && $value['isdefaultskin'] ==1){ + HeroSkin::addSkin($value); + } + } + } $realHeroMeta = mt\Hero::get($heroMeta['id']); $randAttr = array(); $fieldsKv = array( diff --git a/webapp/models/HeroSkin.php b/webapp/models/HeroSkin.php index b6db2bd9..9fc0db9e 100644 --- a/webapp/models/HeroSkin.php +++ b/webapp/models/HeroSkin.php @@ -25,13 +25,69 @@ class HeroSkin extends BaseModel { return $row; } - public static function toDto($row) + public static function findBx($heroId) { - return array( - 'skin_id' => $row['skin_id'], - 'skin_state' => $row['skin_state'], - 'try_expire_at' => $row['try_expire_at'], + $row = SqlHelper::ormSelectOne( + myself()->_getSelfMysql(), + 't_hero_skin', + array( + 'account_id' => myself()->_getAccountId(), + 'hero_id' => $heroId + ) ); + return $row; + } + + public static function takeonSkin($skinId,$heroId){ + $row = self::findBx($heroId); + SqlHelper::update( + myself()->_getSelfMysql(), + 't_hero_skin', + array( + 'account_id' => myself()->_getAccountId(), + 'skin_id' => $row['skin_id'] + ), + array( + 'hero_id'=>0 + ) + ); + SqlHelper::update( + myself()->_getSelfMysql(), + 't_hero_skin', + array( + 'account_id' => myself()->_getAccountId(), + 'skin_id' => $skinId + ), + array( + 'hero_id'=>$heroId + ) + ); + } + + + public static function getSkinList($cb){ + SqlHelper::ormSelect( + myself()->_getSelfMysql(), + 't_hero_skin', + array( + 'account_id' => myself()->_getAccountId() + ), + function ($row) use($cb) { + $cb($row); + } + ); + } + + + public static function toDto($meta) + { + $row = self::find($meta['id']); + $array = array( + 'skin_id'=>$meta['id'], + 'is_have' => $row?1:0, + 'use_state' => $row['hero_id']?1:0, + ); + return $array; } public static function addSkin($itemMeta) @@ -43,10 +99,7 @@ class HeroSkin extends BaseModel { 'account_id' => myself()->_getAccountId(), 'skin_id' => $itemMeta['id'] ), - array( - 'skin_state' => 3, - 'modifytime' => myself()->_getNowTime() - ), + array(), array( 'account_id' => myself()->_getAccountId(), 'skin_id' => $itemMeta['id'], @@ -54,6 +107,7 @@ class HeroSkin extends BaseModel { 'get_from' => 0, 'consume_num' => 0, 'try_expire_at' => 0, + 'hero_id' => $itemMeta['isdefaultskin']?$itemMeta['playerid']:0, 'createtime' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() )