cmd) { case CmdCode::rank_fpower_getRank: # 6601 拉取战斗力榜单信息 return self::GetFpowerRank($req); case CmdCode::rank_fpower_drawReward: # 6602 领取战斗力榜单突破奖励 return self::DrawFpowerBreakThrougReward($req); case CmdCode::rank_fpower_getRanking: # 6603 查询玩家战斗力排名 return self::GetRankingOfUserFightPower($req); default: return Resp::err(ErrCode::cmd_err); } } /** * [6601]拉取战斗力榜单数据 * @param req $req */ static function GetFpowerRank($req) { $RowsPerPage = 10; # 常量:每页数据条数10条 $MaxRankId = 100; # 常量:最大上榜人数. $pageId = $req->paras[0]; # 参数:页码, 从零开始. $key = MemKey_GameRun::Game_FightPowerRank_zset($req->zoneid); # redis key $startid = 0 + $RowsPerPage * $pageId; # 起始id $endId = $startid + $RowsPerPage - 1; # 结束id if ($endId > $MaxRankId) { # 榜单长度 $endId = $MaxRankId; } $uids = $req->mem->zrevrange($key, $startid, $endId, true); # 取上榜玩家 $userInfos = array(); # 玩家信息 foreach ($uids as $uid => $fpower) { $uinfo = UserProc::getUserInfo($req->mem, $req->zoneid, $uid); # 读取玩家信息 $userInfos[] = array(# # 拼装玩家信息 'uid' => $uid, 'name' => $uinfo->game->name, 'level' => $uinfo->game->level, 'power' => $fpower, 'headImg' => $uinfo->game->img ); } Resp::ok($userInfos); # 返回值 } /** * [6602]领取战斗力突破奖励 * @param req $req */ static function DrawFpowerBreakThrougReward($req) { $rewardCondition = $req->paras[0]; # 领取奖励的档次条件(战斗力数值) $key = MemKey_GameRun::Game_FightPowerRank_zset($req->zoneid); # redis key $no1 = $req->mem->zrevrange($key, 0, 0, true); # 取第一名信息 $_power = 0; foreach ($no1 as $uid => $power) { # $_power = $power; # 状元的站立值 break; } if ($_power < $rewardCondition) { # 不满足领取条件 return Resp::err(ErrCode::rank_fpower_unlocked); } if (in_array($rewardCondition, $req->userInfo->game->privateState->RankFpowerRewardRec)) { # 检查是否已经领取过了 return Resp::err(ErrCode::rank_reward_hasgetted); } $rewardMo = GameConfig::rankreward_fpower_getItem($rewardCondition); # 奖励mo StoreProc::AddMultiItemInStore($req, $rewardMo->reward, $req->userInfo->game); # 发放奖励字符串. return Resp::ok(true); } /** * [6603]查询玩家战斗力排名 * @param req $req */ static function GetRankingOfUserFightPower($req) { $key = MemKey_GameRun::Game_FightPowerRank_zset($req->zoneid); # redis key $ranking = $req->mem->zrevrank($key, $req->uid); # 查询排名 $power = $req->mem->zscore($key, $req->uid); # 查询战斗力 $ret = array( 'ranking' => $ranking, 'power' => $power ); return Resp::ok($ret); # 返回 } /** * [6604] 排行榜查询战斗力最高值 * @param Req $req */ static function RankFpowerGetTop1Power($req) { $key = MemKey_GameRun::Game_FightPowerRank_zset($req->zoneid); # redis key $no1 = $req->mem->zrevrange($key, 0, 0, true); # 取第一名信息 $_power = 0; $_uid = ""; foreach ($no1 as $uid => $power) { # $_power = $power; # 榜一的战力值 $_uid = $uid; break; } return Resp::ok(array('uid' => $_uid, "power" => $_power)); } }