浏览代码

1. 补充了首位达成全服奖励条件的玩家记录.

gwang 5 年之前
父节点
当前提交
813b579552

+ 10 - 0
Gameserver/Amfphp/base/CmdCode.php

@@ -564,6 +564,16 @@ class CmdCode {
      * 排行榜 - 领取通关榜突破奖励
      */
     const rank_passgate_drawReward = 6606;
+
+    /**
+     * 排行榜 - 查询战力突破记录
+     */
+    const rank_fpower_breachLog = 6607;
+
+    /**
+     * 排行榜 - 查询通关榜突破记录
+     */
+    const rank_passgate_breachLog = 6608;
     // 
     // </editor-fold>
     //

+ 19 - 1
Gameserver/Amfphp/base/MemKey_GameRun.php

@@ -147,7 +147,16 @@ class MemKey_GameRun {
      * @param type $zoneid
      */
     public static function Game_FightPowerRank_zset($zoneid) {
-        return "gamerun-fightpower-zone$zoneid";
+        return "gamerun-rank-fightpower-zone$zoneid";
+    }
+
+    /**
+     * 运行时数据 - 战力突破记录
+     * @param int $zoneid
+     * @return type
+     */
+    public static function Game_Rank_FPowerBreakLog_hash($zoneid) {
+        return "gamerun-rank-fpower-breaklog-zone$zoneid";
     }
 
     /**
@@ -172,6 +181,15 @@ class MemKey_GameRun {
         return "gamerun-rank-passgate-count-zone$zoneid";
     }
 
+    /**
+     * 运行时数据 - 通关帮突破记录
+     * @param type $zoneid
+     * @return type
+     */
+    public static function Game_Rank_passage_BreachLog_hash($zoneid) {
+        return "gamerun-rank-passgate-breaklog-zone$zoneid";
+    }
+
 // </editor-fold>
 
     /**

+ 6 - 0
Gameserver/Amfphp/process/HeroProc.php

@@ -1164,6 +1164,12 @@ class HeroProc {
                 }
             }
             gMem()->zadd(MemKey_GameRun::Game_FightPowerRank_zset($zoneid), array($uid => $fp));
+            $key_log = MemKey_GameRun::Game_Rank_FPowerBreakLog_hash($zoneid);  # 突破记录
+            foreach (GameConfig::rankreward_fpower() as $condition => $reward) {
+                if ($fp >= $condition && !gMem()->hexists($key_log, $condition)) {# 达成突破奖励标准
+                    gMem()->hset($key_log, $condition, $uid);                   # 添加突破记录
+                }
+            }
         }
         return $fp;
     }

+ 61 - 10
Gameserver/Amfphp/process/RankProc.php

@@ -24,7 +24,8 @@ class RankProc {
                 return self::DrawFpowerBreakThrougReward($req);
             case CmdCode::rank_fpower_getRanking:                               # 6603 查询玩家战斗力排名
                 return self::GetRankingOfUserFightPower($req);
-
+            case CmdCode::rank_fpower_breachLog:                                # 6607 查询战力榜突破记录
+                return self::GetFpowerBreachLog($req);
             case CmdCode::rank_getTop1:                                         # 6604 查询top1信息
                 return self::RankGetAllTop1($req);
 
@@ -32,15 +33,59 @@ class RankProc {
                 return self::GetPassgateRank($req);
             case CmdCode::rank_passgate_drawReward:                             # 6606 领取通关榜突破奖励
                 return self::DrawPassgateReward($req);
+            case CmdCode::rank_passgate_breachLog:                              # 6608 查询通关帮突破记录
+                return self::GetPassgateBreachLog($req);
 
             default:
                 return Resp::err(ErrCode::cmd_err);
         }
     }
 
+    /**
+     * 查询指定榜单的top1
+     * @param type $req
+     * @param type $key
+     * @return type
+     */
+    static function _RankGetTop1($req, $key) {
+        $no1 = $req->mem->zrevrange($key, 0, 0, true);                          # 取第一名信息
+        foreach ($no1 as $uid => $score) {                                      # 
+            $uinfo = UserProc::getUserInfo($req->mem, $req->zoneid, $uid);      # 读取玩家信息
+            return array(#                                                      # 拼装玩家信息
+                'uid' => $uid,
+                'name' => my_null_default($uinfo->game->name, ""),
+                'level' => my_null_default($uinfo->game->level, 1),
+                'score' => my_null_default($score, 0),
+                'headImg' => my_null_default($uinfo->game->img, "")
+            );
+        }
+        return null;                                                            # 未找到
+    }
+
     //
     //   <editor-fold defaultstate="collapsed" desc="  战斗力榜  ">
 
+    /**
+     * 排行榜 - 查询战力榜突破记录
+     * @param req $req
+     */
+    static function GetFpowerBreachLog($req) {
+        $key = MemKey_GameRun::Game_Rank_FPowerBreakLog_hash($req->zoneid);     # redis key 战力榜突破记录
+        $kv = $req->mem->hgetall($key);
+        $ret = array();
+        foreach ($kv as $condition => $uid) {
+            $uinfo = UserProc::getUserInfo($req->mem, $req->zoneid, $uid);      # 读取玩家信息
+            $ret[$condition] = array(#                                          # 拼装玩家信息
+                'uid' => $uid,
+                'name' => my_null_default($uinfo->game->name, ""),
+                'level' => my_null_default($uinfo->game->level, 1),
+                'score' => my_null_default($score, 0),
+                'headImg' => my_null_default($uinfo->game->img, "")
+            );
+        }
+        return Resp::ok($ret);
+    }
+
     /**
      * [6601]拉取战斗力榜单数据
      * @param req $req
@@ -136,11 +181,21 @@ class RankProc {
         return Resp::ok($ret);
     }
 
-    static function _RankGetTop1($req, $key) {
-        $no1 = $req->mem->zrevrange($key, 0, 0, true);                          # 取第一名信息
-        foreach ($no1 as $uid => $score) {                                      # 
+// </editor-fold>
+    //
+    // <editor-fold defaultstate="collapsed" desc="  通关帮  ">
+
+    /**
+     * 排行榜 - 查询通关榜突破记录
+     * @param req $req
+     */
+    static function GetPassgateBreachLog($req) {
+        $key = MemKey_GameRun::Game_Rank_passage_BreachLog_hash($req->zoneid);     # redis key 战力榜突破记录
+        $kv = $req->mem->hgetall($key);
+        $ret = array();
+        foreach ($kv as $condition => $uid) {
             $uinfo = UserProc::getUserInfo($req->mem, $req->zoneid, $uid);      # 读取玩家信息
-            return array(#                                                      # 拼装玩家信息
+            $ret[$condition] = array(#                                          # 拼装玩家信息
                 'uid' => $uid,
                 'name' => my_null_default($uinfo->game->name, ""),
                 'level' => my_null_default($uinfo->game->level, 1),
@@ -148,13 +203,9 @@ class RankProc {
                 'headImg' => my_null_default($uinfo->game->img, "")
             );
         }
-        return null;                                                            # 未找到
+        return Resp::ok($ret);
     }
 
-// </editor-fold>
-    //
-    // <editor-fold defaultstate="collapsed" desc="  通关帮  ">
-
     /**
      * [6606] 领取通关榜突破奖励
      * @param req $req