From f14a7e24dd167f7f69e49724bb67edb2f01273bb Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 25 Nov 2021 19:03:09 +0800 Subject: [PATCH] 1 --- doc/Hero.py | 158 ++----- doc/_common.py | 4 +- sql/gamedb.sql | 7 +- webapp/controller/HeroController.class.php | 501 ++------------------- webapp/models/Hero.php | 55 ++- webapp/models/HeroSkin.php | 13 + webapp/mt/Hero.php | 2 +- webapp/mt/Item.php | 9 +- webapp/mt/Skill.php | 24 + 9 files changed, 196 insertions(+), 577 deletions(-) create mode 100644 webapp/mt/Skill.php diff --git a/doc/Hero.py b/doc/Hero.py index 4dd5f22..970d10b 100644 --- a/doc/Hero.py +++ b/doc/Hero.py @@ -33,7 +33,8 @@ class Hero(object): ] }, { - 'desc': 'buyHero', + 'name': 'buyHero', + 'desc': '购买英雄', 'group': 'Hero', 'url': 'webapp/index.php?c=Hero&a=buyHero', 'params': [ @@ -47,7 +48,8 @@ class Hero(object): ] }, { - 'desc': 'buySkin', + 'name': 'buySkin', + 'desc': '购买皮肤', 'group': 'Hero', 'url': 'webapp/index.php?c=Hero&a=buySkin', 'params': [ @@ -57,116 +59,44 @@ class Hero(object): _common.RspHead(), ] }, - ] - self.apis_ = [ - { - 'desc': 'addItemToDB', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=addItemToDB', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'getAllHero', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=getAllHero', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'getHeroInfoByID', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=getHeroInfoByID', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'getYokeItemInfo', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=getYokeItemInfo', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'changeSkin', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=changeSkin', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'buySkin', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=buySkin', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'buyHero', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=buyHero', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'getAllHeroSkinByID', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=getAllHeroSkinByID', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'skillLvUp', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=skillLvUp', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, - { - 'desc': 'useYokeItem', - 'group': 'NHero', - 'url': 'webapp/index.php?c=NHero&a=useYokeItem', - 'params': [ - _common.ReqHead(), - ], - 'response': [ - _common.RspHead(), - ] - }, + { + 'name': 'takeonSkin', + 'desc': '穿戴皮肤', + 'group': 'Hero', + 'url': 'webapp/index.php?c=Hero&a=takonSkin', + 'params': [ + _common.ReqHead(), + ['hero_id', 0, '英雄id'], + ['skin_id', 0, '皮肤id'], + ], + 'response': [ + _common.RspHead(), + ] + }, + { + 'name': 'upgradeSkill', + 'desc': '升级技能', + 'group': 'Hero', + 'url': 'webapp/index.php?c=Hero&a=upgradeSkill', + 'params': [ + _common.ReqHead(), + ['hero_id', 0, '英雄id'], + ], + 'response': [ + _common.RspHead(), + ] + }, + { + 'name': 'useYokeItem', + 'desc': '使用羁绊道具', + 'group': 'Hero', + 'url': 'webapp/index.php?c=Hero&a=useYokeItem', + 'params': [ + _common.ReqHead(), + ['hero_id', 0, '英雄id'], + ], + 'response': [ + _common.RspHead(), + ] + }, ] diff --git a/doc/_common.py b/doc/_common.py index ccc85fd..40b0ada 100644 --- a/doc/_common.py +++ b/doc/_common.py @@ -132,8 +132,8 @@ class Hero(object): ['skin_id', 0, '英雄皮肤id'], ['skill1_lv1', 0, '必杀技等级'], ['skill1_lv2', 0, '躲避技能等级'], - ['yoke_exp', 0, '当前羁绊等级的经验'], - ['yoke_total_exp', 0, '羁绊获得的总经验'], + ['yoke_lv', 0, '羁绊等级'], + ['yoke_exp', 0, '羁绊经验'], ] class HeroSkin(object): diff --git a/sql/gamedb.sql b/sql/gamedb.sql index 2510cea..971fb7e 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -55,12 +55,13 @@ CREATE TABLE `t_hero` ( `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', `accountid` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT 'accountid', `hero_id` int(11) NOT NULL DEFAULT '0' COMMENT '英雄id', - `hero_lv` int(11) NOT NULL DEFAULT '0' COMMENT '英雄等级', `skin_id` int(11) NOT NULL DEFAULT '0' COMMENT '皮肤id', + `hero_lv` int(11) NOT NULL DEFAULT '0' COMMENT '英雄等级', + `hero_exp` int(11) NOT NULL DEFAULT '0' COMMENT '英雄等级', + `yoke_lv` int(11) NOT NULL DEFAULT '0' COMMENT '羁绊等级', + `yoke_exp` int(11) NOT NULL DEFAULT '0' COMMENT '羁绊经验', `skill1_lv1` int(11) NOT NULL DEFAULT '1' COMMENT '必杀技等级', `skill1_lv2` int(11) NOT NULL DEFAULT '1' COMMENT '躲避技能等级', - `yoke_exp` int(11) NOT NULL DEFAULT '0' COMMENT '当前羁绊等级的经验', - `yoke_total_exp` int(11) NOT NULL DEFAULT '0' COMMENT '羁绊获得的总经验', `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`idx`), diff --git a/webapp/controller/HeroController.class.php b/webapp/controller/HeroController.class.php index e5534b4..d94c6b2 100644 --- a/webapp/controller/HeroController.class.php +++ b/webapp/controller/HeroController.class.php @@ -2,6 +2,7 @@ require_once('mt/Shop.php'); require_once('mt/Hero.php'); +require_once('mt/Item.php'); require_once('models/Hero.php'); require_once('models/HeroSkin.php'); @@ -89,469 +90,61 @@ class HeroController extends BaseAuthedController { } public function buySkin() + { + $skinId = getReqVal('skin_id', 0); + $skinMeta = mt\Item::get($skinId); + if (!$skinMeta) { + $this->rspErr(1, 'skin_id参数错误'); + return; + } + if (!mt\Item::isType($skinMeta, mt\Item::SKIN_TYPE)){ + $this->rspErr(1, 'skin_id参数错误'); + return; + } + HeroSkin::addSkin($skinId); + } + + public function takeonSkin() { $heroId = getReqVal('hero_id', 0); $skinId = getReqVal('skin_id', 0); + $heroDb = Hero::find($heroId); + $heroSkinDb = Hero::find($skinId); + if (!$heroDb) { + $this->rspErr(1, '你还没这个英雄'); + return; + } + if (!$heroSkinDb) { + $this->rspErr(2, '你还没这个皮肤'); + return; + } + Hero::takeonSkin($heroId, $skinId); + $this->rspOk(); } - private function addHeroAndSkin($heroID,$_heroCfg,$skinID) + public function upgradeSkill() { - $code = 100; - $itemArr = array(); - $resultArr = array(); - $heroCfg = $_heroCfg; - //添加指定皮肤 - $skinData = array( - 'accountid' => $this->getAccountId(),'hero_id' => $heroID,'skin_id' => $skinID, - 'skin_state' => 0, - 'get_from' => 1, - 'consume_num' => 0, - 'trytime' => 0 - ); - $this->addHeroSkin($skinData); - //添加默认皮肤 - $skinListStr = $heroCfg["skinlist"]; - $skinIDArr = explode("|",$skinListStr); - $defualtSkinID = $skinIDArr[0]; - $skinData02 = array( - 'accountid' => $this->getAccountId(),'hero_id' => $heroID,'skin_id' => $defualtSkinID, - 'skin_state' => 0, - 'get_from' => 0, - 'consume_num' => 0, - 'trytime' => 0 - ); - $itemData = array("hero_id"=>$heroID,"default_skinID"=>$defualtSkinID,"skin_id"=>$skinID); - array_push($itemArr,$itemData); - $this->addHeroSkin($skinData02); - $this->addAllHero($itemArr); - array_push($resultArr,$itemData); - array_push($resultArr,$skinData); - array_push($resultArr,$skinData02); - return $resultArr; + $heroId = getReqVal('hero_id', 0); + $skillIdx = getReqVal('skill_idx', 0); + $heroDb = Hero::find($heroId); + if (!$heroDb) { + $this->rspErr(1, '你还没这个英雄'); + return; + } + if (!in_array($skillIdx, array(0, 1))) { + $this->rspErr(1, 'skill_idx参数必须为0-1'); + return; + } + Hero::upgradeSkill($heroId, $skillIdx); + $this->rspOk(); } - public function changeSkin()//切换英雄皮肤 + public function useYokeItem() { - $skinID = $_REQUEST['skin_id']; - $heroID = $_REQUEST['hero_id']; - $account_id = $_REQUEST['account_id']; - $conn = $this->getMysql($account_id); - - // error_log("updateHeroSkinSuccess======".$heroID); - $sqlStr = "Update hero set skinid =:skinid WHERE accountid=:accountid AND id=:id "; - $row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':id'=>$heroID,':skinid'=>$skinID)); - - $this->sendDataToClient(100,"updateHeroSkin",$skinID); - } - public function buySkin1()//购买英雄皮肤 - { - - $account_id = $_REQUEST['account_id']; - $skinID = $_REQUEST['skin_id']; - $heroID = $_REQUEST['hero_id']; - $goodsID = $_REQUEST['goodsID']; - - $shopMeta = mt\NewShop::getShopItemByID($goodsID); - $code = 100; - $skinData = null; - if($shopMeta) - { - $priceNum = $shopMeta["priceNum"]; - $priceID = $shopMeta["priceID"]; - $code = $this->checkPriceEnough($priceNum,$priceID); - } - else - { - $code = 99; - } - - - - if (SERVER_ENV != _ONLINE) { - $code = 100; - $skinData = array( - 'accountid' => $this->getAccountId(),'hero_id' => $heroID,'skin_id' => $skinID, - 'skin_state' => 0, - 'get_from' => 0, - 'consume_num' => 0, - 'trytime' => 0 - ); - $this->addHeroSkin($skinData); - } - else - { - if($code == 100) - { - $skinData = array( - 'accountid' => $this->getAccountId(),'hero_id' => $heroID,'skin_id' => $skinID, - 'skin_state' => 0, - 'get_from' => 0, - 'consume_num' => 0, - 'trytime' => 0 - ); - $this->addHeroSkin($skinData); - } - } - if($code == 100) - { - $conn = $this->getMysql($account_id); - $sqlStr = "Update hero set skinid =:skinid WHERE accountid=:accountid AND id=:id "; - $row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':id'=>$heroID,':skinid'=>$skinID)); - } - $this->sendDataToClient($code,"buyHeroSuccess",$skinData); - - } - public function buyHero1()//购买英雄 - { - - $playerCfg = require('../res/player@player.php'); - $account_id = $_REQUEST['account_id']; - $heroID = $_REQUEST['hero_id']; - $buyType = $_REQUEST['buyType']; - $heroCfg = null; - $code = 99; - $money = 0; - $heroData = null; - $leftMoney = 0; - $skinPrice = 0; - $skinID = null; - if($playerCfg[$heroID]) - { - $heroCfg = $playerCfg[$heroID]; - $goodsID = $heroCfg["itemid"]; - $goodsItem = mt\NewShop::getShopItemByID($goodsID); - $priceNum = $goodsItem["priceNum"];//商品价格 - $priceID = $goodsItem["priceID"];//商品价格货币ID - if($buyType == 1) - { - $playerSkinCfg = require('../res/playerskin@playerskin.php'); - $skinID = $_REQUEST['skin_id']; - if($playerSkinCfg[$skinID]) - { - $skinCfg = $playerSkinCfg[$skinID]; - $skinGoodsID = $skinCfg["itemid"]; - $skinGoodsItem = mt\NewShop::getShopItemByID($skinGoodsID); - $skinPriceNum = $skinGoodsItem["priceNum"];//商品价格 - $skinPrice = $skinPriceNum; - } - - } - $priceNum = $priceNum +$skinPrice; - - $code = $this->checkPriceEnough($priceNum,$priceID); - if($code == 100) - { - // error_log("购买英雄成功=====".$priceNum); - $conn = $this->getMysql($account_id); - $sqlStr3 = "SELECT coin_num,diamond_num FROM user WHERE accountid=:accountid; "; - $row = $conn->execQuery($sqlStr3,array(':accountid' => $account_id)); - - if($row) - { - $money = $row[0]["coin_num"]; - $diamond = $row[0]["diamond_num"]; - $leftMoney = $money; - $leftDiamond = $diamond; - } - else - { - $code = 90; - } - if($code == 100) - { - if($priceID == "10001") - { - $leftMoney = $leftMoney -$priceNum; - } - else if($priceID == "10003") - { - $leftDiamond = $leftDiamond -$priceNum; - } - //更新货币到数据库 - $this->updateCurrency($leftMoney,$leftDiamond); - //添加新英雄到数据库 - if($buyType == 0) - { - $heroData = $this->addHeroToDB($heroID,$heroCfg); - } - else - { - $heroData = $this->addHeroAndSkin($heroID,$heroCfg,$skinID); - } - - - } - } - } - $this->sendDataToClient($code,"buyHero",$heroData); - } - - public function skillLvUp()//技能升级 - { - $skillCfgArr = require('../res/skill@skill.php'); - $playerCfg = require('../res/player@player.php'); - - $skillID = $_REQUEST['skillID']; - $skillCfg = null; - $heroID = $_REQUEST['heroID']; - $skillType = $_REQUEST['skillType']; - $account_id = $_REQUEST['account_id']; - $heroCfg = null; - $maxLv = 0; - $itemArr = array(); - - if($playerCfg[$heroID]) - { - $heroCfg = $playerCfg[$heroID]; - } - $skillLv = 0; - $code = 100; - $needItemArr = array(); - if($skillCfgArr[$skillID]) - { - $skillCfg = $skillCfgArr[$skillID]; - } - else - { - $code = 99;//技能不存在 - } - if($skillCfg) - { - $consumeStr = $skillCfg["upcost"]; - $consumeStrArr = explode(";",$consumeStr); - - $len = count($consumeStrArr); - for($i = 0; $i < $len; $i++) - { - $tmpStrArr = explode(":",$consumeStrArr[$i]); - $itemData = array("itemID"=>$tmpStrArr[0],"itemNum"=>$tmpStrArr[1]); - array_push($needItemArr,$itemData); - } - $conn = $this->getMysql($account_id); - $sqlStr = "SELECT skill1_lv1,skill1_lv2 FROM hero WHERE accountid=:accountid AND id=:id;"; - $sqlStr2 = ""; - $leftMoney = 0; - $leftDiamond = 0; - $row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':id' => $heroID)); - if($row) - { - if($skillType == 1) - { - $skillLv = number_format($row[0]["skill1_lv1"]); - $sqlStr2 = "Update hero set skill1_lv1 =:skill1_lv WHERE accountid=:accountid AND id=:id "; - $skillList1Str = $heroCfg["skill1list"]; - $tmpArr = explode("|",$skillList1Str); - $maxLv = count($tmpArr); - } - else if($skillType == 2) - { - $skillLv = number_format($row[0]["skill1_lv2"]); - $sqlStr2 = "Update hero set skill1_lv2 =:skill1_lv WHERE accountid=:accountid AND id=:id "; - $skillList1Str = $heroCfg["skill2list"]; - $tmpArr = explode("|",$skillList1Str); - $maxLv = count($tmpArr); - } - //获得Money和钻石 - $money = 0; - $diamond = 0; - $conn = $this->getMysql($account_id); - $sqlStr3 = "SELECT coin_num,diamond_num FROM user WHERE accountid=:accountid; "; - $row = $conn->execQuery($sqlStr3,array(':accountid' => $account_id)); - - if($row) - { - $money = $row[0]["coin_num"]; - $diamond = $row[0]["diamond_num"]; - $leftMoney = $money; - $leftDiamond = $diamond; - } - else - { - $code = 90; - } - //获得背包所有道具 - if($code == 100) - { - $conn = $this->getMysql($account_id); - $sqlStr3 = "SELECT * FROM bag WHERE accountid=:accountid; "; - $row = $conn->execQuery($sqlStr3,array(':accountid' => $account_id)); - - if($row) {//判断道具是否足够 - $needItemArrLen = count($needItemArr); - $enoughN = 0; - $allItemLen = count($row); - for($i = 0; $i < $needItemArrLen; $i++) - { - $tempNeedItemID = $needItemArr[$i]["itemID"]; - $tempNeedItemNum = $needItemArr[$i]["itemNum"]; - //error_log("技能升级01======".$tempNeedItemID."==".$tempNeedItemNum); - if($tempNeedItemID == "10001") - { - $code = 97;//金币不足 - if($tempNeedItemNum <= $money) - { - $code = 100; - $leftMoney = $money -$tempNeedItemNum; - } - } - else if($tempNeedItemID == "10003") - { - $code = 96;//钻石不足 - if($tempNeedItemNum <= $diamond) - { - $code = 100; - $leftDiamond = $diamond - $tempNeedItemNum; - } - } - else - { - $code = 95;//道具不足 - for($j = 0; $j < $allItemLen; $j++) - { - $bagItemID = $row[$j]["id"]; - $bagItemNum = $row[$j]["num"]; - if($tempNeedItemID == $bagItemID) - { - //error_log("技能升级======".$bagItemID."==".$bagItemNum); - if($tempNeedItemNum <= $bagItemNum) - { - $code = 100; - $deleteItem = array("item_id"=>$bagItemID,"item_num"=>$tempNeedItemNum); - array_push($itemArr,$deleteItem); - break; - } - } - } - } - if($code != 100) - { - break; - } - - } - } - else - { - $code = 90; - } - } - - - } - if($skillLv + 1 <= $maxLv) - { - $skillLv ++; - } - else - { - $code = 98;//已经升到最大级 - } - - if($code == 100)//更新数据库 - { - $this->decItem($itemArr); - $this->updateCurrency($leftMoney,$leftDiamond); - $conn = $this->getMysql($account_id); - $row = $conn->execQuery($sqlStr2,array(':accountid' => $account_id,':id' => $heroID,':skill1_lv' => $skillLv)); - - //error_log("更新英雄数据到服务器==="); - } - } - $resultArr = array("skillLv"=>$skillLv); - $this->sendDataToClient($code,"ok",$resultArr); - } - public function useYokeItem()//使用羁绊道具 - { - $newItemCfg = require('../res/newitem@newitem.php'); - $playerCfg = require('../res/player@player.php'); - $itemID = $_REQUEST['itemID']; - $itemNum = $_REQUEST['itemNum']; - $heroID = $_REQUEST['heroID']; - $itemArr = array(); - $deleteItem = array("item_id"=>$itemID,"item_num"=>$itemNum); - - array_push($itemArr,$deleteItem); - $code = $this->deleteItem($deleteItem); - $expNum = 0; - $curHeroExp = 0; - $lvUp = 0; - $heroLv = 0; - $totalGetExp = 0; - if($code == 100) - { - if($newItemCfg[$itemID]) - { - $itemCfg = $newItemCfg[$itemID]; - $perExp = number_format($itemCfg["pre1"]); - $expNum = $perExp*$itemNum ; - } - $account_id = $_REQUEST['account_id']; - $conn = $this->getMysql($account_id); - $sqlStr = "SELECT yokeexp,lv, yoketotalexp FROM hero WHERE accountid=:accountid AND id=:id;"; - $row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':id' => $heroID)); - if($row) - { - $curHeroExp = number_format($row[0]["yokeexp"]); - $heroLv = number_format($row[0]["lv"]); - $totalGetExp = number_format($row[0]["yoketotalexp"]); - } - if($playerCfg[$heroID] && $heroLv > 0) - { - $heroLvUpNeedExpStr = $playerCfg[$heroID]["lvexp"]; - $heroLvUpNeedExpArray = explode("|",$heroLvUpNeedExpStr); - $maxLv = count($heroLvUpNeedExpArray); - $isOut = 0; - $totalExp = 0; - if($heroLv < $maxLv)//未超过最大等级 - { - while($expNum > 0 && $isOut == 0) - { - $czExp = $heroLvUpNeedExpArray[$heroLv -1] - $curHeroExp; - - if($expNum - $czExp >= 0)//当前经验狗升级 - { - $heroLv ++; - $expNum = $expNum - $czExp; - $totalExp = $totalExp +$czExp; - $curHeroExp = 0; - //error_log("TestLVUp=====".$heroLv."==".$czExp."==".$expNum.json_encode($heroLvUpNeedExpArray)); - if($heroLv >= $maxLv)//未超过最大等级 - { - $isOut = 1; - } - } - else//经验不够升级 - { - - $curHeroExp = $curHeroExp +$expNum; - $totalExp = $totalExp +$expNum; - $expNum = 0; - } - } - $totalGetExp = $totalGetExp + $totalExp; - - } - else - { - $code = 95;//已经升到最大级 - } - - } - else - { - $code = 94;//错误数据 - } - if($code == 100) - { - $this->decItem($itemArr); - $conn = $this->getMysql($account_id); - $sqlStr = "Update hero set lv =:lv,yokeexp =:yokeexp,yoketotalexp =:yoketotalexp WHERE accountid=:accountid AND id=:id "; - $row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':id' => $heroID,':lv' => $heroLv,':yokeexp' => $curHeroExp,':yoketotalexp' => $totalGetExp)); - //error_log("更新英雄数据到服务器===".$heroLv."==".$curHeroExp); - } - } - $resultArr = array("itemCnt"=>$itemNum,"itemPerExp"=>$perExp,"itemID"=>$itemID,"heroLV"=>$heroLv,"totalExp"=>$totalGetExp,"curExp"=>$curHeroExp); - $this->sendDataToClient($code,"ok",$resultArr); + $heroId = getReqVal('hero_id', 0); + $itemId = getReqVal('item_id', 0); + $itemNum = getReqVal('item_num', 0); + $this->rspOk(); } } diff --git a/webapp/models/Hero.php b/webapp/models/Hero.php index abf9866..01e930b 100644 --- a/webapp/models/Hero.php +++ b/webapp/models/Hero.php @@ -10,6 +10,19 @@ use phpcommon\SqlHelper; class Hero extends BaseModel { + public static function find($heroId) + { + $row = SqlHelper::ormSelectOne( + myself()->getSelfMysql(), + 't_hero', + array( + 'accountid' => myself()->getAccountId(), + 'hero_id' => $heroId, + ) + ); + return $row; + } + public static function toDto($row) { return array( @@ -18,8 +31,8 @@ class Hero extends BaseModel { 'skin_id' => $row['skin_id'], 'skill1_lv1' => $row['skill1_lv1'], 'skill1_lv2' => $row['skill1_lv2'], + 'yoke_lv' => $row['yoke_lv'], 'yoke_exp' => $row['yoke_exp'], - 'yoke_total_exp' => $row['yoke_total_exp'], ); } @@ -42,8 +55,8 @@ class Hero extends BaseModel { 'skin_id' => $defSkin, 'skill1_lv1' => 1, 'skill1_lv2' => 1, + 'yoke_lv' => 0, 'yoke_exp' => 0, - 'yoke_total_exp' => 0, 'createtime' => myself()->getNowTime(), 'modifytime' => myself()->getNowTime() ) @@ -53,4 +66,42 @@ class Hero extends BaseModel { } } + public static function takeonSkin($heroId, $skinId) + { + SqlHelper::update( + myself()->getSelfMysql(), + 't_hero', + array( + 'accountid' => myself()->getAccountId(), + 'hero_id' => $heroMeta['id'] + ), + array( + 'skin_id' => $skinId, + 'modifytime' => myself()->getNowTime() + ) + ); + } + + public static function upgradeSkill($heroId, $skillIdx) + { + if (!in_array($skillIdx, array(0, 1))) { + return; + } + $fieldName = 'skill1_lv' . ($skillIdx + 1); + SqlHelper::update( + myself()->getSelfMysql(), + 't_hero', + array( + 'accountid' => myself()->getAccountId(), + 'hero_id' => $heroId + ), + array( + $fieldName => function () use($fieldName) { + return "${fieldName} + 1"; + }, + 'modifytime' => myself()->getNowTime() + ) + ); + } + } diff --git a/webapp/models/HeroSkin.php b/webapp/models/HeroSkin.php index 85b97f1..d1612e2 100644 --- a/webapp/models/HeroSkin.php +++ b/webapp/models/HeroSkin.php @@ -9,6 +9,19 @@ use phpcommon\SqlHelper; class HeroSkin extends BaseModel { + public static function find($skinId) + { + $row = SqlHelper::ormSelectOne( + myself()->getSelfMysql(), + 't_hero_skin', + array( + 'accountid' => myself()->getAccountId(), + 'skin_id' => $skinId + ) + ); + return $row; + } + public static function toDto($row) { return array( diff --git a/webapp/mt/Hero.php b/webapp/mt/Hero.php index 064e152..6a1f7da 100644 --- a/webapp/mt/Hero.php +++ b/webapp/mt/Hero.php @@ -8,7 +8,7 @@ class Hero { public static function get($id) { - return self::getMetaList()[$id]; + return getXVal(self::getMetaList(), $id); } public static function getDefaultSkin($meta) diff --git a/webapp/mt/Item.php b/webapp/mt/Item.php index 075498c..3485690 100644 --- a/webapp/mt/Item.php +++ b/webapp/mt/Item.php @@ -6,9 +6,16 @@ use phpcommon; class Item { + const SKIN_TYPE = 12; + public static function get($id) { - return array_key_exists($id, self::getMetaList()) ? self::getMetaList()[$id] : null; + return getXVal(self::getMetaList(), $id, null); + } + + public static function isType($meta, $type) + { + return $meta['type'] == $type; } public static function getOldItem($id) diff --git a/webapp/mt/Skill.php b/webapp/mt/Skill.php new file mode 100644 index 0000000..30fe2a3 --- /dev/null +++ b/webapp/mt/Skill.php @@ -0,0 +1,24 @@ +