|
@@ -18,16 +18,16 @@ class HeroProc {
|
|
|
switch ($req->cmd) {
|
|
|
case CmdCode::cmd_hero_levelup: # [6301] 英雄升级
|
|
|
return HeroProc::HeroLevelUpCostExpItem($req);
|
|
|
- case CmdCode::cmd_hero_stageup: # 6304 英雄进阶 SABCD
|
|
|
+ case CmdCode::cmd_hero_stageup: # [6304] 英雄进阶 SABCD
|
|
|
return HeroProc::HeroStageUp($req);
|
|
|
+// case CmdCode::cmd_hero_upstar: # [6305] 英雄升星
|
|
|
+// return HeroProc::HeroUpStarByPieces($req);
|
|
|
// case CmdCode::cmd_hero_changelockstate: # [6306] 英雄-修改锁定状态
|
|
|
// return HeroProc::HeroChangelockstate($req);
|
|
|
// case CmdCode::cmd_hero_gethero: # [6308] 分解英雄
|
|
|
// return HeroProc::GetHero($req);
|
|
|
// case CmdCode::cmd_hero_strength: # [6309] 英雄升阶
|
|
|
// return HeroProc::HeroStrength($req);
|
|
|
-// case CmdCode::cmd_hero_upstar: # [6305] 英雄升星
|
|
|
-// return HeroProc::HeroUpStarByPieces($req);
|
|
|
// case CmdCode::cmd_hero_openFavor: # [6310] 英雄好感度解锁
|
|
|
// return HeroProc::HeroOpenFavor($req);
|
|
|
// case CmdCode::cmd_hero_separate: # [6311] 分解英雄
|
|
@@ -36,39 +36,135 @@ class HeroProc {
|
|
|
// return HeroProc::BuyHeroMaxCountLimt($req);
|
|
|
// case CmdCode::cmd_hero_changefriendsupport: # [6313] 更换支援好友
|
|
|
// return HeroProc::ChangeFriendSupport($req);
|
|
|
+# --------- 英雄技能 -----------
|
|
|
case CmdCode::cmd_hero_upgradeSkillLevel: # [6314] 英雄的技能升级
|
|
|
return HeroProc::UpgradeSkillLevel($req);
|
|
|
+ case CmdCode::cmd_hero_unlockSkill: # [6324] 英雄技能 - 解锁技能
|
|
|
+ return;
|
|
|
+ case CmdCode::cmd_hero_skillLevel_onekeyupgrade: # [6325] 英雄技能 - 一键升级
|
|
|
+ return;
|
|
|
case CmdCode::cmd_hero_saveHeroTeamConfig: # [6315] 保存玩家战队数据
|
|
|
return HeroProc::SaveHeroTeamConfig($req);
|
|
|
- case CmdCode::cmd_hero_upGodBlood: # [6322] 神血升级
|
|
|
- return HeroProc::UpGodBloodHeroByPieces($req);
|
|
|
-// case CmdCode::cmd_hero_unlockByPieces: # [6323] 解锁碎片
|
|
|
-// return HeroProc::UnLockHeroByPieces($req);
|
|
|
# --------- 英雄评论 -----------
|
|
|
case CmdCode::cmd_hero_GetDiscuss: # [6316]拉取英雄评论
|
|
|
return HeroDiscussProc::GetDiscusses($req);
|
|
|
case CmdCode::cmd_hero_PostDiscuss: # [6317]对英雄发表评论
|
|
|
return HeroDiscussProc::Post($req);
|
|
|
- case CmdCode::cmd_hero_DeleteDiscuss: # [6319]删除评论
|
|
|
- return HeroDiscussProc::DeletePost($req);
|
|
|
case CmdCode::cmd_hero_PraiseDiscuss: # [6318]给某条评论点赞
|
|
|
return HeroDiscussProc::PriaseMsg($req);
|
|
|
+ case CmdCode::cmd_hero_DeleteDiscuss: # [6319]删除评论
|
|
|
+ return HeroDiscussProc::DeletePost($req);
|
|
|
case CmdCode::cmd_hero_scoreit: # [6320]给某个英雄评分
|
|
|
return HeroDiscussProc::Score($req);
|
|
|
#----------------------------------------------
|
|
|
case CmdCode::cmd_hero_buyHero: # [6321]购买英雄
|
|
|
return HeroProc::BuyHeroByCostPieces($req);
|
|
|
+ case CmdCode::cmd_hero_upGodBlood: # [6322] 神血升级
|
|
|
+ return HeroProc::UpGodBloodHeroByPieces($req);
|
|
|
+// case CmdCode::cmd_hero_unlockByPieces: # [6323] 解锁碎片
|
|
|
+// return HeroProc::UnLockHeroByPieces($req);
|
|
|
+
|
|
|
default: # err: 未知的命令码
|
|
|
return Resp::err(ErrCode::cmd_err);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 英雄技能升级
|
|
|
+ * @param type $req
|
|
|
+ */
|
|
|
+ static function UpgradeSkillLevel($req) {
|
|
|
+# $resp = ResponseVo::ErrResponse($req, ErrCode::msg_methodnotimplement);
|
|
|
+ $user = $req->userInfo->game; # user引用
|
|
|
+ $huid = $req->paras[0]; # 英雄的UID
|
|
|
+ $skillId = $req->paras[1]; # 要升级的技能
|
|
|
+ $skillType = $req->paras[2]; # 要升级的技能
|
|
|
+ $costGold = $req->paras[3]; # 要升级的消耗金币
|
|
|
+# # 1.检查是否存在要升级的英雄
|
|
|
+ $collectHeros = $user->heros->collectHeros;
|
|
|
+ if (!$collectHeros) {
|
|
|
+ $collectHeros = ObjectInit();
|
|
|
+ }
|
|
|
+ if (!CommUtil::isPropertyExists($collectHeros, $huid)) {
|
|
|
+ return Resp::err(ErrCode::hero_no);
|
|
|
+ }
|
|
|
+# # 2.判断英雄的该技能能否升级....
|
|
|
+ isEditor() and $strengthHero = new UserHeroModel();
|
|
|
+ $strengthHero = $collectHeros->$huid;
|
|
|
+# # 取出这个英雄的技能数据
|
|
|
+ $targteHeroSkills = ObjectInit();
|
|
|
+ if (CommUtil::isPropertyExists($strengthHero, "skills")) {
|
|
|
+ $targteHeroSkills = $strengthHero->skills;
|
|
|
+ }
|
|
|
+# 如果不存在这个类型的技能,则 初始化一个.
|
|
|
+ if (!CommUtil::isPropertyExists($targteHeroSkills, $skillType)) {
|
|
|
+ $targteHeroSkills->$skillType = JsonUtil::decode('{"level":1}');
|
|
|
+ }
|
|
|
+ $curSkillInfo = $targteHeroSkills->$skillType;
|
|
|
+ $curSkillLevel = $curSkillInfo->level;
|
|
|
+# 3.判断技能等级能否在继续升级了
|
|
|
+ if ($curSkillLevel >= $strengthHero->level) {
|
|
|
+ return Resp::err(ErrCode::hero_upgradeSkill_maxLevel);
|
|
|
+ }
|
|
|
+# 4.取出该技能升级消耗的常量数据
|
|
|
+# 检查是否存在当前技能的消耗常量数据
|
|
|
+// $lvs = GameConfig::skill_shengji_getItem($skillId);
|
|
|
+ $lvs = GameConfig::skill_upgrade_cost_getItem($skillId);
|
|
|
+ if (!$lvs) {
|
|
|
+ return Resp::err(ErrCode::hero_upgradeSkill_cost_const_no);
|
|
|
+ }
|
|
|
+ $realGold = $lvs->basic + ($curSkillLevel - 1) * $lvs->xishu;
|
|
|
+ $arr_extracost = explode(";", $lvs->extra);
|
|
|
+ foreach ($arr_extracost as $value) {
|
|
|
+ $arr = explode(",", $value);
|
|
|
+ if (count($arr) == 2) {
|
|
|
+ $extraLevel = $arr[0];
|
|
|
+ $extraGold = $arr[1];
|
|
|
+ if ($extraLevel == $curSkillLevel + 1) {
|
|
|
+ $realGold += $extraGold;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+# 判断金币是否充足
|
|
|
+ $bDeal = false; # 成交
|
|
|
+ if ($realGold != $costGold) {
|
|
|
+ return Resp::err(ErrCode::paras_err, "costGold error! server need:" . $realGold);
|
|
|
+ } else {
|
|
|
+ if ($costGold > 0) {
|
|
|
+ if ($user->gold < $costGold) {
|
|
|
+ return Resp::err(ErrCode::notenough_gold_msg);
|
|
|
+ } else {
|
|
|
+ $bDeal = UserGameModel::Consume_Gold($user, $costGold);
|
|
|
+ }
|
|
|
+ } else if ($costGold == 0) {
|
|
|
+ $bDeal = true;
|
|
|
+ } else {
|
|
|
+ return Resp::err(ErrCode::paras_err);
|
|
|
+ }
|
|
|
+ }
|
|
|
+# 4.消耗金币和英雄
|
|
|
+ if ($bDeal) {
|
|
|
+ $targteHeroSkills->$skillType->level += 1;
|
|
|
+ $strengthHero->skills = $targteHeroSkills;
|
|
|
+ ActiveProc::ChangeTaskCount($req);
|
|
|
+# 回写数据
|
|
|
+ UserProc::updateUserInfo($req);
|
|
|
+ $resp = Resp::ok($strengthHero);
|
|
|
+ }
|
|
|
+ return $resp;
|
|
|
+ }
|
|
|
+
|
|
|
+//
|
|
|
+ // <editor-fold defaultstate="collapsed" desc="英雄 强化">
|
|
|
+
|
|
|
/**
|
|
|
* 6304 英雄 升阶(消耗碎片)
|
|
|
* @param Req $req
|
|
|
*/
|
|
|
static function HeroStageUp($req) {
|
|
|
- $g = glc(); # 全局配置
|
|
|
+// $g = glc(); # 全局配置
|
|
|
$user = $req->userInfo->game; # user引用
|
|
|
$huid = $req->paras[0]; # 英雄的UID
|
|
|
$nextGrade = $req->paras[1]; # 下一阶
|
|
@@ -80,7 +176,7 @@ class HeroProc {
|
|
|
if (!CommUtil::isPropertyExists($collectHeros, $huid)) { # 1.检查是否存在要升级的英雄
|
|
|
return Resp::err(ErrCode::hero_no);
|
|
|
}
|
|
|
- isEditor() and $upHero = new UserHeroModel();
|
|
|
+// isEditor() and $upHero = new UserHeroModel();
|
|
|
$upHero = $collectHeros->$huid;
|
|
|
if ($upHero->grade >= "S") { # 已经达到S级
|
|
|
return Resp::err(ErrCode::hero_strength_maxstrengthlevel);
|
|
@@ -121,7 +217,7 @@ class HeroProc {
|
|
|
if (!CommUtil::isPropertyExists($collectHeros, $heroUID)) {
|
|
|
return Resp::err(ErrCode::hero_no);
|
|
|
}
|
|
|
- isEditor() and $targetHero = new UserHeroModel; # 智能感知辅助
|
|
|
+// isEditor() and $targetHero = new UserHeroModel; # 智能感知辅助
|
|
|
$targetHero = $collectHeros->$heroUID;
|
|
|
|
|
|
$maxLevel = $gcfg->Hero_Upgrade_BasicMaxLevel;
|
|
@@ -158,6 +254,25 @@ class HeroProc {
|
|
|
return Resp::ok($targetHero);
|
|
|
}
|
|
|
|
|
|
+// </editor-fold>
|
|
|
+//
|
|
|
+// <editor-fold defaultstate="collapsed" desc="队伍配置">
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [6315]保存队伍的战斗配置信息
|
|
|
+ * @param Req $req
|
|
|
+ */
|
|
|
+ static function SaveHeroTeamConfig($req) {
|
|
|
+ $teamsetting = $req->paras[0]; # 配置信息json文件
|
|
|
+ $req->userInfo->game->heroTeamConfig = $teamsetting; # 更新配置
|
|
|
+ UserProc::updateUserInfo($req); # 回写数据
|
|
|
+# # 添加到战斗力隐藏榜单中, for pvp back matchers, -wg 2017.07.13
|
|
|
+ self::CalcTeamFightPower($req->zoneid, $req->uid, $req->userInfo->game);
|
|
|
+ return Resp::ok(array('result' => "succeed"));
|
|
|
+ }
|
|
|
+
|
|
|
+// </editor-fold>
|
|
|
+//
|
|
|
// <editor-fold defaultstate="collapsed" desc="已过时代码">
|
|
|
|
|
|
/**
|
|
@@ -314,93 +429,6 @@ class HeroProc {
|
|
|
return $resp;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 英雄技能升级
|
|
|
- * @param type $req
|
|
|
- */
|
|
|
- static function UpgradeSkillLevel($req) {
|
|
|
-# $resp = ResponseVo::ErrResponse($req, ErrCode::msg_methodnotimplement);
|
|
|
- $user = $req->userInfo->game; # user引用
|
|
|
- $huid = $req->paras[0]; # 英雄的UID
|
|
|
- $skillId = $req->paras[1]; # 要升级的技能
|
|
|
- $skillType = $req->paras[2]; # 要升级的技能
|
|
|
- $costGold = $req->paras[3]; # 要升级的消耗金币
|
|
|
-# # 1.检查是否存在要升级的英雄
|
|
|
- $collectHeros = $user->heros->collectHeros;
|
|
|
- if (!$collectHeros) {
|
|
|
- $collectHeros = ObjectInit();
|
|
|
- }
|
|
|
- if (!CommUtil::isPropertyExists($collectHeros, $huid)) {
|
|
|
- return Resp::err(ErrCode::hero_no);
|
|
|
- }
|
|
|
-# # 2.判断英雄的该技能能否升级....
|
|
|
- isEditor() and $strengthHero = new UserHeroModel();
|
|
|
- $strengthHero = $collectHeros->$huid;
|
|
|
-# # 取出这个英雄的技能数据
|
|
|
- $targteHeroSkills = ObjectInit();
|
|
|
- if (CommUtil::isPropertyExists($strengthHero, "skills")) {
|
|
|
- $targteHeroSkills = $strengthHero->skills;
|
|
|
- }
|
|
|
-# 如果不存在这个类型的技能,则 初始化一个.
|
|
|
- if (!CommUtil::isPropertyExists($targteHeroSkills, $skillType)) {
|
|
|
- $targteHeroSkills->$skillType = JsonUtil::decode('{"level":1}');
|
|
|
- }
|
|
|
- $curSkillInfo = $targteHeroSkills->$skillType;
|
|
|
- $curSkillLevel = $curSkillInfo->level;
|
|
|
-# 3.判断技能等级能否在继续升级了
|
|
|
- if ($curSkillLevel >= $strengthHero->level) {
|
|
|
- return Resp::err(ErrCode::hero_upgradeSkill_maxLevel);
|
|
|
- }
|
|
|
-# 4.取出该技能升级消耗的常量数据
|
|
|
-# 检查是否存在当前技能的消耗常量数据
|
|
|
-// $lvs = GameConfig::skill_shengji_getItem($skillId);
|
|
|
- $lvs = GameConfig::skill_upgrade_cost_getItem($skillId);
|
|
|
- if (!$lvs) {
|
|
|
- return Resp::err(ErrCode::hero_upgradeSkill_cost_const_no);
|
|
|
- }
|
|
|
- $realGold = $lvs->basic + ($curSkillLevel - 1) * $lvs->xishu;
|
|
|
- $arr_extracost = explode(";", $lvs->extra);
|
|
|
- foreach ($arr_extracost as $value) {
|
|
|
- $arr = explode(",", $value);
|
|
|
- if (count($arr) == 2) {
|
|
|
- $extraLevel = $arr[0];
|
|
|
- $extraGold = $arr[1];
|
|
|
- if ($extraLevel == $curSkillLevel + 1) {
|
|
|
- $realGold += $extraGold;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-# 判断金币是否充足
|
|
|
- $bDeal = false; # 成交
|
|
|
- if ($realGold != $costGold) {
|
|
|
- return Resp::err(ErrCode::paras_err, "costGold error! server need:" . $realGold);
|
|
|
- } else {
|
|
|
- if ($costGold > 0) {
|
|
|
- if ($user->gold < $costGold) {
|
|
|
- return Resp::err(ErrCode::notenough_gold_msg);
|
|
|
- } else {
|
|
|
- $bDeal = UserGameModel::Consume_Gold($user, $costGold);
|
|
|
- }
|
|
|
- } else if ($costGold == 0) {
|
|
|
- $bDeal = true;
|
|
|
- } else {
|
|
|
- return Resp::err(ErrCode::paras_err);
|
|
|
- }
|
|
|
- }
|
|
|
-# 4.消耗金币和英雄
|
|
|
- if ($bDeal) {
|
|
|
- $targteHeroSkills->$skillType->level += 1;
|
|
|
- $strengthHero->skills = $targteHeroSkills;
|
|
|
- ActiveProc::ChangeTaskCount($req);
|
|
|
-# 回写数据
|
|
|
- UserProc::updateUserInfo($req);
|
|
|
- $resp = Resp::ok($strengthHero);
|
|
|
- }
|
|
|
- return $resp;
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 更改好友支援
|
|
|
* @param type $req
|
|
@@ -1166,19 +1194,6 @@ class HeroProc {
|
|
|
return $resp;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * [6315]保存队伍的战斗配置信息
|
|
|
- * @param Req $req
|
|
|
- */
|
|
|
- static function SaveHeroTeamConfig($req) {
|
|
|
- $teamsetting = $req->paras[0]; # 配置信息json文件
|
|
|
- $req->userInfo->game->heroTeamConfig = $teamsetting; # 更新配置
|
|
|
- UserProc::updateUserInfo($req); # 回写数据
|
|
|
-# # 添加到战斗力隐藏榜单中, for pvp back matchers, -wg 2017.07.13
|
|
|
- self::CalcTeamFightPower($req->zoneid, $req->uid, $req->userInfo->game);
|
|
|
- return Resp::ok(array('result' => "succeed"));
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 购买玩家可以收集的英雄的数量上限
|
|
|
* @param type $req
|
|
@@ -1290,23 +1305,19 @@ class HeroProc {
|
|
|
if (!$heroCfg) { # 这里能不能附加错误信息给外面
|
|
|
return null;
|
|
|
}
|
|
|
-# 先生成一个hero的UID
|
|
|
$collectHeros = $user->heros->collectHeros;
|
|
|
- $uid = self::CreateNewGameHeroUID($collectHeros, $user->heros->recordMaxUID);
|
|
|
+ $uid = self::CreateNewGameHeroUID($collectHeros, $user->heros->recordMaxUID); # 先生成一个hero的UID
|
|
|
$user->heros->recordMaxUID = $uid;
|
|
|
$hero = self::getGameHeroModelInstance($heroCfg, $heromodelId, $uid);
|
|
|
$hero->curStar = $star; # 设定star
|
|
|
$collectHeros->$uid = $hero; # 回写
|
|
|
- $user->heros->collectHeros = $collectHeros; # 回写
|
|
|
-# 更新 图鉴
|
|
|
+ $user->heros->collectHeros = $collectHeros; # 回写
|
|
|
if (!CommUtil::isPropertyExists($user, "heroManual")) {
|
|
|
$user->heroManual = new HeroManualModel();
|
|
|
$user->heroManual->initInstance();
|
|
|
}
|
|
|
$manual = $user->heroManual;
|
|
|
- self:: tryNewManual($req->mem, $manual, $hero);
|
|
|
-
|
|
|
-
|
|
|
+ self::tryNewManual($req->mem, $manual, $hero); # 更新 图鉴
|
|
|
return $hero; # 返回
|
|
|
}
|
|
|
|
|
@@ -1323,24 +1334,18 @@ class HeroProc {
|
|
|
$gamedata->heroManual->initInstance();
|
|
|
}
|
|
|
$manual = $gamedata->heroManual;
|
|
|
-//1.检查是否存在这个英雄的模板
|
|
|
- $heroCfg = GameConfig::hero_getItem($heromodelId);
|
|
|
+
|
|
|
+ $heroCfg = GameConfig::hero_getItem($heromodelId); //1.检查是否存在这个英雄的模板
|
|
|
if (!$heroCfg) {
|
|
|
return Resp::err(ErrCode::hero_const_no_err);
|
|
|
}
|
|
|
-//2.存在的话,先生成一个UID
|
|
|
- $collectHeros = $gamedata->heros->collectHeros;
|
|
|
-
|
|
|
+ $collectHeros = $gamedata->heros->collectHeros; //2.存在的话,先生成一个UID
|
|
|
$uid = self::CreateNewGameHeroUID($collectHeros, $gamedata->heros->recordMaxUID);
|
|
|
$gamedata->heros->recordMaxUID = $uid;
|
|
|
$hero = self::getGameHeroModelInstance($heroCfg, $heromodelId, $uid);
|
|
|
$collectHeros->$uid = $hero;
|
|
|
-
|
|
|
$gamedata->heros->collectHeros = $collectHeros;
|
|
|
-
|
|
|
self:: tryNewManual($req->mem, $manual, $hero);
|
|
|
-
|
|
|
-
|
|
|
return $hero;
|
|
|
}
|
|
|
|
|
@@ -1406,11 +1411,10 @@ class HeroProc {
|
|
|
$collectHeros = ObjectInit();
|
|
|
}
|
|
|
if (!CommUtil::isPropertyExists($collectHeros, $heroUID)) {
|
|
|
- return; # 要升级的英雄不存在
|
|
|
+ return; # 要升级的英雄不存在
|
|
|
}
|
|
|
- isEditor() and $targetHero = new UserHeroModel;
|
|
|
+// isEditor() and $targetHero = new UserHeroModel;
|
|
|
$targetHero = $collectHeros->$heroUID;
|
|
|
-
|
|
|
$maxLevel = $g->Hero_Upgrade_BasicMaxLevel; # 等级上限
|
|
|
if ($targetHero->level >= $maxLevel) {
|
|
|
return; # 已达顶级
|
|
@@ -1420,7 +1424,7 @@ class HeroProc {
|
|
|
CLog:: Assert("HeroProc", $targetHero->xp >= 0, #
|
|
|
"[" . $req->uid . "] : HeroLevelUpgrade Exp is negative!");
|
|
|
|
|
|
- while ($targetHero->xp >= $targetHero->maxXp) {
|
|
|
+ while ($targetHero->xp >= $lvs->needExp) {
|
|
|
if ($targetHero->level < $maxLevel) { # 如果未到达最大等级
|
|
|
$targetHero->level += 1;
|
|
|
$lvs = GameConfig::hero_levelexp_getItem($targetHero->level);
|
|
@@ -1434,221 +1438,7 @@ class HeroProc {
|
|
|
$targetHero->xp = $targetHero->maxXp; # 经验不能超过最大值
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-// </editor-fold>
|
|
|
-// <editor-fold defaultstate="collapsed" desc="废弃代码">
|
|
|
-
|
|
|
- /**
|
|
|
- * [6301] 英雄升级 - 消耗经验道具书,获得经验
|
|
|
- * @param type $req
|
|
|
- */
|
|
|
- static function HeroLevelUpCostItem($req) {
|
|
|
- $gcfg = glc();
|
|
|
- $user = $req->userInfo->game; # user引用
|
|
|
- $heroUID = $req->paras[0]; # 玩家英雄实例编号
|
|
|
- $costItemIds = $req->paras[1]; # 消耗的道具ID
|
|
|
- $costGold = $req->paras[2];
|
|
|
-
|
|
|
-//1.检查是否存在要升级的英雄
|
|
|
- $collectHeros = $user->heros->collectHeros;
|
|
|
- if (!$collectHeros) {
|
|
|
- $collectHeros = ObjectInit();
|
|
|
- }
|
|
|
- if (!CommUtil::isPropertyExists($collectHeros, $heroUID)) {
|
|
|
- return Resp::err(ErrCode::hero_no);
|
|
|
- }
|
|
|
- isEditor() and $targetHero = new UserHeroModel;
|
|
|
- $targetHero = $collectHeros->$heroUID;
|
|
|
-//2.检查玩家等级是否达到当前等级上限
|
|
|
- //$strengthconst = GameConfig::heroextra_dengjie_getItem($targetHero->strengthLevel);
|
|
|
- $maxLevel = $gcfg->Hero_Upgrade_BasicMaxLevel; // $strengthconst->maxLevel;
|
|
|
- if ($targetHero->level >= $maxLevel) {
|
|
|
- return Resp::err(ErrCode::hero_upgrade_maxupgradelevel);
|
|
|
- }
|
|
|
-//3.检查消耗的道具是否是都存在的
|
|
|
- $arr_costUID = explode(",", $costItemIds);
|
|
|
- $isAllExist = true;
|
|
|
- $itemObj = ObjectInit();
|
|
|
-
|
|
|
- foreach ($arr_costUID as $value) {
|
|
|
- if ($value == "") {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (!CommUtil::isPropertyExists($itemObj, $value)) {
|
|
|
- $itemObj->$value = 1;
|
|
|
- } else {
|
|
|
- $itemObj->$value += 1;
|
|
|
- }
|
|
|
- }
|
|
|
-//以上是统计各种道具的消耗数量
|
|
|
-//下面是检查道具的数量,在背包中是否充足
|
|
|
- $myPacketItems = $user->store->items;
|
|
|
- foreach ($itemObj as $key => $value) {
|
|
|
- if ($value > 0) {
|
|
|
- if (!CommUtil::isPropertyExists($myPacketItems, $key)) {
|
|
|
- $isAllExist = false;
|
|
|
- break;
|
|
|
- } else {
|
|
|
- if ($myPacketItems->$key < $value) {
|
|
|
- $isAllExist = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (!$isAllExist) {
|
|
|
- return Resp::err(ErrCode::hero_upgrade_cost);
|
|
|
- }
|
|
|
-//4.计算消耗的道具一共给多少经验值以及 一共要消耗多少金币
|
|
|
- $totalEXP = 0;
|
|
|
- $realCostGold = 0;
|
|
|
- foreach ($arr_costUID as $value) {
|
|
|
- if ($value == "") {
|
|
|
- continue;
|
|
|
- }
|
|
|
- isEditor() and $costItemConst = new sm_hero_levelexp_costitem;
|
|
|
- $costItemConst = GameConfig::hero_levelexp_costitem_getItem($value);
|
|
|
- if (!$costItemConst) {
|
|
|
- return Resp::err(ErrCode::hero_upgrade_cost_const_no);
|
|
|
- } else {
|
|
|
- $totalEXP += $costItemConst->dogExp;
|
|
|
- $realCostGold += $costItemConst->costGold;
|
|
|
- }
|
|
|
- }
|
|
|
-//5.取升级消耗数据,提取消耗的金币数量,判断金币是否充足
|
|
|
- $bDeal = false; # 成交标志
|
|
|
- if ($costGold != $realCostGold) {
|
|
|
- return Resp::err(ErrCode ::paras_err, $errMsg);
|
|
|
- } else {
|
|
|
- if ($costGold > 0) {
|
|
|
- if ($user->gold < $costGold) {
|
|
|
- return Resp::err(ErrCode::notenough_gold_msg);
|
|
|
- } else {
|
|
|
- $bDeal = UserGameModel:: Consume_Gold($user, $costGold);
|
|
|
- }
|
|
|
- } else if ($costGold == 0) {
|
|
|
- $bDeal = true;
|
|
|
- } else {
|
|
|
- return Resp::err(ErrCode::paras_err);
|
|
|
- }
|
|
|
- }
|
|
|
- if ($bDeal) {
|
|
|
- self:: HeroAddEXP($heroUID, $totalEXP, $req); # 获得经验
|
|
|
-#消耗道具
|
|
|
- foreach ($itemObj as $key => $value) {
|
|
|
- $myPacketItems->$key -= $value;
|
|
|
- if ($myPacketItems->$key < 0) {
|
|
|
- $myPacketItems->$key = 0;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $req->userInfo->game->store->items = $myPacketItems;
|
|
|
- UserProc::updateUserInfo($req);
|
|
|
- $resp = Resp::ok($targetHero);
|
|
|
- }
|
|
|
- ActiveProc::ChangeTaskCount($req);
|
|
|
-
|
|
|
- return $resp;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * [6301] 英雄升级 - 吞噬其他英雄的卡牌,获得经验
|
|
|
- * @param Req $req
|
|
|
- */
|
|
|
- static function HeroLevelUp($req) {
|
|
|
- $g = glc(); # 全局变量
|
|
|
- $user = $req->userInfo->game; # user引用
|
|
|
- $heroUID = $req->paras[0]; # 玩家英雄实例编号
|
|
|
- $costHeroUids = $req->paras[1]; # 消耗的玩家英雄实例编号
|
|
|
- $costGold = $req->paras[2];
|
|
|
-//1.检查是否存在要升级的英雄
|
|
|
- $collectHeros = $user->heros->collectHeros;
|
|
|
- if (!$collectHeros) {
|
|
|
- $collectHeros = ObjectInit();
|
|
|
- }
|
|
|
- if (!CommUtil::isPropertyExists($collectHeros, $heroUID)) {
|
|
|
- return Resp::err(ErrCode::hero_no);
|
|
|
- }
|
|
|
- isEditor() and $targetHero = new UserHeroModel;
|
|
|
- $targetHero = $collectHeros->$heroUID;
|
|
|
-//2.检查玩家等级是否达到当前等级上限
|
|
|
-////$maxLevel = $gcfg->Hero_Upgrade_BasicMaxLevel + 10 * $targetHero->strengthLevel;
|
|
|
- $strengthconst = GameConfig::heroextra_dengjie_getItem($targetHero->strengthLevel);
|
|
|
- $maxLevel = $strengthconst->maxLevel;
|
|
|
- if ($targetHero->level >= $maxLevel) {
|
|
|
- return Resp::err(ErrCode::hero_upgrade_maxupgradelevel);
|
|
|
- }
|
|
|
-//3.检查消耗的英雄是否是都存在的
|
|
|
- $arr_costUID = explode(",", $costHeroUids);
|
|
|
- $isAllExist = true;
|
|
|
- foreach ($arr_costUID as $value) {
|
|
|
- if ($value == "") {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (!CommUtil::isPropertyExists($collectHeros, $value)) {
|
|
|
- $isAllExist = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!$isAllExist) {
|
|
|
- return Resp::err(ErrCode::hero_upgrade_cost);
|
|
|
- }
|
|
|
-//4.计算消耗的英雄一共给多少经验值
|
|
|
- $totalEXP = 0;
|
|
|
- $errMsg = "";
|
|
|
- foreach ($arr_costUID as $value) {
|
|
|
- if ($value == "") {
|
|
|
- continue;
|
|
|
- }
|
|
|
- isEditor() and $curHero = new UserHeroModel;
|
|
|
- $errMsg = $errMsg . " uid::" . $value;
|
|
|
- $curHero = $collectHeros->$value;
|
|
|
- $tempLv = $curHero->level;
|
|
|
- $tempLevelConst = GameConfig::hero_levelexp_getItem($tempLv);
|
|
|
- $totalEXP += (int) $tempLevelConst->dogExp;
|
|
|
- $errMsg = $errMsg . " add xp::" . $tempLevelConst->dogExp;
|
|
|
-// $totalEXP += (int) ( $curHero->xp * $gcfg->Hero_Upgrade_EXP_XiShu);
|
|
|
-// $errMsg = $errMsg . " xp::" . $curHero->xp;
|
|
|
-// $totalEXP += $gcfg->Hero_Upgrade_BasicEXP;
|
|
|
-// $errMsg = $errMsg . " basic::" . $gcfg->Hero_Upgrade_BasicEXP;
|
|
|
- $errMsg = $errMsg . " end.";
|
|
|
- }
|
|
|
-//然后算一算获得这么多经验值之后,最新的英雄等级是多少
|
|
|
- $realCostGold = $totalEXP * $g->Hero_Upgrade_ExpConverGold;
|
|
|
- $errMsg = $errMsg . " totalEXP:" . $totalEXP;
|
|
|
-//5.取升级消耗数据,提取消耗的金币数量,判断金币是否充足
|
|
|
- $bDeal = false; # 成交标志
|
|
|
- if ($costGold != $realCostGold) {
|
|
|
- return Resp::err(ErrCode ::paras_err, $errMsg);
|
|
|
- } else {
|
|
|
- if ($costGold > 0) {
|
|
|
- if ($user->gold < $costGold) {
|
|
|
- return Resp::err(ErrCode::notenough_gold_msg);
|
|
|
- } else {
|
|
|
- $bDeal = UserGameModel:: Consume_Gold($user, $costGold);
|
|
|
- }
|
|
|
- } else if ($costGold == 0) {
|
|
|
- $bDeal = true;
|
|
|
- } else {
|
|
|
- return Resp::err(ErrCode::paras_err);
|
|
|
- }
|
|
|
- }
|
|
|
- if ($bDeal) {
|
|
|
- self:: HeroAddEXP($heroUID, $totalEXP, $req); # 获得经验
|
|
|
- foreach ($arr_costUID as $value) {
|
|
|
- if ($value == "") {
|
|
|
- continue;
|
|
|
- }
|
|
|
- unset($collectHeros->$value); # 消耗卡牌
|
|
|
- }
|
|
|
- UserProc::updateUserInfo($req);
|
|
|
- $resp = Resp::ok($targetHero);
|
|
|
- }
|
|
|
- ActiveProc::ChangeTaskCount($req);
|
|
|
-
|
|
|
- return $resp;
|
|
|
+ } // end while
|
|
|
}
|
|
|
|
|
|
// </editor-fold>
|