Browse Source

排行榜和拍卖接口提交

cyzhao 2 năm trước cách đây
mục cha
commit
2d971da731

+ 9 - 1
Gameserver/Amfphp/base/CmdCode.php

@@ -857,7 +857,13 @@ class CmdCode {
     /**
      * 排行榜 - 通关榜
      */
-    const rank_passgate_getrank = 6605;
+    //const rank_passgate_getrank = 6605;
+
+    /**
+     * 排行榜--玩家等级榜信息
+     */
+    const rank_playerlevel_getrank = 6605;
+
 
     /**
      * 排行榜 - 领取通关榜突破奖励
@@ -874,6 +880,8 @@ class CmdCode {
      */
     const rank_passgate_breachLog = 6608;
 
+    
+    
     //
     // </editor-fold>
     //

+ 1 - 1
Gameserver/Amfphp/model/Const/GameConfig.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-06-27 17:26:43
+ // 日期: 2022-06-28 16:43:14
 ////////////////////
 
 /**

+ 1 - 1
Gameserver/Amfphp/model/Const/globalsettings.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-06-07 14:43:48
+ // 日期: 2022-06-17 09:55:10
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/primordial_data.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-04-26 14:55:18
+ // 日期: 2022-06-24 13:52:12
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_drop.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-03-25 15:17:11
+ // 日期: 2022-06-28 16:29:04
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_gate.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-04-28 16:35:47
+ // 日期: 2022-06-14 16:16:16
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_gate_zone.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-17 12:02:38
+ // 日期: 2022-06-14 16:18:52
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_hero.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-24 15:58:58
+ // 日期: 2022-06-24 14:53:10
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_hero_levelexp.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-21 14:42:31
+ // 日期: 2022-06-08 13:51:14
 ////////////////////
 
 

+ 2 - 2
Gameserver/Amfphp/model/Const/sm_item_base.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-25 15:44:20
+ // 日期: 2022-06-28 16:27:19
 ////////////////////
 
 
@@ -129,7 +129,7 @@ class sm_item_base
     public $channel;
 
     /**
-    * @var Int32 竞拍初始价格不得低于此价格 default(0) 
+    * @var String 竞拍初始价格不得低于此价格 default(0) 
     */
     public $auctionPrice;
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_item_taskcard.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-24 11:15:29
+ // 日期: 2022-06-14 11:29:18
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_item_taskcard_type.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-24 11:15:29
+ // 日期: 2022-06-14 11:29:18
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_item_weapon.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-16 17:40:30
+ // 日期: 2022-05-31 17:47:31
 ////////////////////
 
 

+ 6 - 1
Gameserver/Amfphp/model/Const/sm_item_yanling.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-28 17:14:43
+ // 日期: 2022-06-28 16:14:36
 ////////////////////
 
 
@@ -23,6 +23,11 @@ class sm_item_yanling
     */
     public $type;
 
+    /**
+    * @var Int32 套系id default(0) 
+    */
+    public $composeId;
+
     /**
     * @var Int32 下一星级得言灵id-------废弃 default(0) 
     */

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_playerlevel.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-21 14:42:36
+ // 日期: 2022-05-31 10:24:28
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_plot.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-05-24 11:16:36
+ // 日期: 2022-06-14 11:31:08
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_weaponextra_level.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-21 14:42:46
+ // 日期: 2022-05-31 17:46:48
 ////////////////////
 
 

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_yanlingextra_level.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-27 18:00:31
+ // 日期: 2022-06-21 15:09:02
 ////////////////////
 
 

+ 2 - 2
Gameserver/Amfphp/model/User/Info_PrivateState.php

@@ -80,11 +80,11 @@ class Info_PrivateState extends Object_ext {
     public $RankFpowerRewardRec = array();
 
     /**
-     * 排行榜, 通关记录突破奖励领取记录
+     * 排行榜, 通关记录突破奖励领取记录----改成了玩家等级榜
      * @var type
      */
     public $RankPassGateRewardRec = array();
-
+    
     /**
      * @var int 上次检查被挑战记录的时间戳
      */

+ 2 - 0
Gameserver/Amfphp/model/User/Info_UserBase.php

@@ -279,6 +279,8 @@ class Info_UserBase extends Object_ext {
             TaskProc::OnUserLevelUp($this->level);                              # 通知任务模块,这里应该有事件模块
             EventProc::OnUserLevelup($initLevel, $this->level);                 # 事件模块          
             StatisticsProc::TargetStatistics(Enum_TargetStatistics::userlevel, $this->level,$initLevel);
+            
+            RankProc::recordPlayerLevelInfo(req()->uid, $this->level, req()->zoneid);
         }
     }
 

+ 2 - 1
Gameserver/Amfphp/process/AuctionProc.php

@@ -149,8 +149,9 @@ class AuctionProc {
         my_Assert($mo != null, ErrCode::err_const_no);
 
         $sList = explode(',', $mo->buyoutPrice);
+        $pList = explode(',', $mo->auctionPrice);
         my_Assert($bugoutPrice >= $sList[1], ErrCode::auction_loadpricelow);
-        my_Assert($userBidPrice >= $mo->auctionPrice, ErrCode::auction_loadpricelow);
+        my_Assert($userBidPrice >= $pList[1], ErrCode::auction_loadpricelow);
         
         StoreProc::removeItemFromStore($user->store, $itemId, $num);
 

+ 1 - 1
Gameserver/Amfphp/process/EventProc/CornerSignEventProc.php

@@ -132,7 +132,7 @@ class CornerSignEventProc {
     }
 
     /**
-     * 排行榜--通关奖励状态有变化
+     * 排行榜--通关奖励状态有变化--暂时改成等级榜
      */
     public static function OnRanking_GageReward_new() {
         ctx()->privateState->cornerSignNotifications[] = OperateEventType::Ranking_ClearanceReward;

+ 85 - 11
Gameserver/Amfphp/process/RankProc.php

@@ -28,18 +28,57 @@ class RankProc {
             case CmdCode::rank_getTop1:                                         # 6604 查询top1信息
                 return self::RankGetAllTop1();
 
-            case CmdCode::rank_passgate_getrank:                                # 6605 查询通关榜榜单信息
-                return self::GetPassgateRank();
+            case CmdCode::rank_playerlevel_getrank:                             # 6605 查询通关榜榜单信息
+                return self::getPlayerLevelRankInfo();               
+//            case CmdCode::rank_passgate_getrank:                              # 6605 查询通关榜榜单信息
+//                return self::GetPassgateRank();
             case CmdCode::rank_passgate_drawReward:                             # 6606 领取通关榜突破奖励
                 return self::DrawPassgateReward();
-
             case CmdCode::rank_passgate_breachLog:                              # 6608 查询通关帮突破记录
                 return self::GetPassgateBreachLog();
-
+                
             default:
                 return Resp::err(ErrCode::cmd_err);
         }
     }
+    
+    /**
+     * 获得等级榜信息
+     * @return type
+     */
+    static function getPlayerLevelRankInfo() {     
+        $RowsPerPage = 10;                                                      # 常量:每页数据条数10条
+        $MaxRankId = 100;                                                       # 常量:最大上榜人数.
+        $pageId = req()->paras[0];                                              # 参数:页码, 从零开始.
+
+        $key = self::Game_Rank_playerLevel_zset(req()->zoneid);          # redis key
+        $startid = 0 + $RowsPerPage * ($pageId - 1);                            # 起始id
+        $endId = $startid + $RowsPerPage - 1;                                   # 结束id
+        if ($endId > $MaxRankId) {                                              # 榜单长度
+            $endId = $MaxRankId;
+        }
+        $uids = gMem()->zrevrange($key, $startid, $endId, true);                # 取上榜玩家
+        $userInfos = array();                                                   # 玩家信息
+        foreach ($uids as $uid => $score) {
+            $game = UserProc::getUserGame(req()->zoneid, $uid);                 # 读取玩家信息 
+            $userInfos[] = array(#                                              # 拼装玩家信息
+                'uid' => $uid,
+                'name' => my_null_default($game->baseInfo->name, ""),
+                'level' => my_null_default($game->baseInfo->level, 1),
+                'score' => my_null_default($score, 0),
+                'headImg' => my_null_default($game->baseInfo->headImg, "")
+            );
+        }
+
+        $user_ranking = gMem()->zrevrank($key, req()->uid);                     # 查询玩家排名
+        $user_score = gMem()->zscore($key, req()->uid);                         # 查询积分
+        return Resp::ok(array(#                                                 # 返回值
+                    'rankInfo' => $userInfos,
+                    'ranking' => my_null_default($user_ranking, 100) + 1, #     # 修正下排名(zset中是从零开始的), 如果是null => 榜单之外
+                    'score' => my_null_default($user_score, 0)
+        ));
+        
+    }
 
     /**
      * 查询指定榜单的top1
@@ -190,10 +229,11 @@ class RankProc {
     // <editor-fold defaultstate="collapsed" desc="  通关帮  ">
 
     /**
-     * [6608]排行榜 - 查询通关榜突破记录
+     * [6608]排行榜 - 查询通关榜突破记录--改成了玩家等级榜
      */
     static function GetPassgateBreachLog() {
-        $key = MemKey_GameRun::Game_Rank_passage_BreachLog_hash(req()->zoneid); # redis key 战力榜突破记录
+        //$key = MemKey_GameRun::Game_Rank_passage_BreachLog_hash(req()->zoneid); # redis key 战力榜突破记录
+        $key = self::Game_Rank_playerlevel_BreachLog_hash(req()->zoneid);        
         $kv = gMem()->hgetall($key);
         $ret = array();
         foreach ($kv as $condition => $uid) {
@@ -213,13 +253,14 @@ class RankProc {
     }
 
     /**
-     * [6606] 领取通关榜突破奖励
+     * [6606] 领取通关榜突破奖励--改成了玩家等级榜
      */
     static function DrawPassgateReward() {
         $rewardCondition = req()->paras[0];                                     # 领取奖励的档次条件(战斗力数值)
 
         $privateState = ctx()->privateState;
-        $key = MemKey_GameRun::Game_Rank_passgate_zset(req()->zoneid);          # redis key
+        //$key = MemKey_GameRun::Game_Rank_passgate_zset(req()->zoneid);          # redis key
+        $key = self::Game_Rank_playerLevel_zset(req()->zoneid);
         $no1 = gMem()->zrevrange($key, 0, 0, true);                             # 取第一名信息
         $score = 0;
         foreach ($no1 as $uid => $_score) {                                     #
@@ -234,7 +275,9 @@ class RankProc {
         }
         $privateState->RankPassGateRewardRec[] = $rewardCondition;              # 添加领取记录
 
-        $rewardMo = GameConfig::rankreward_passgate_getItem($rewardCondition);  # 奖励mo
+        //$rewardMo = GameConfig::rankreward_passgate_getItem($rewardCondition);  # 奖励mo
+        $rewardMo = GameConfig::rank_playerlevel_reward_getItem($rewardCondition);
+        
         StoreProc::AddMultiItemInStore($rewardMo->reward, ctx());               # 发放奖励字符串.
         UserProc::updateUserInfo();                                             # 流程结束,回写玩家数据
         return Resp::ok();
@@ -278,11 +321,12 @@ class RankProc {
     }
 
     /**
-     * [6603]查询玩家通关榜排名
+     * [6603]查询玩家通关榜排名--改成了玩家等级榜
      * @param req $req
      */
     static function GetRankingOfUserPassGate($req) {
-        $key = MemKey_GameRun::Game_Rank_passgate_zset($req->zoneid);           # redis key
+        //$key = MemKey_GameRun::Game_Rank_passgate_zset($req->zoneid);         # redis key
+        $key = self::Game_Rank_playerLevel_zset($req->zoneid);                  # redis key
         $ranking = gMem()->zrevrank($key, $req->uid);                           # 查询排名
         $power = gMem()->zscore($key, $req->uid);                               # 查询通关记录
         $ret = array(
@@ -296,6 +340,36 @@ class RankProc {
     //
     // <editor-fold defaultstate="collapsed" desc="  辅助方法  ">
 
+    /**
+     * 更新玩家等级信息
+     * @param type $uid
+     * @param type $level
+     */
+    public static function recordPlayerLevelInfo($uid,$level,$zoneid) {       
+        gMem()->zadd(self::Game_Rank_playerLevel_zset($zoneid), array("$uid" => $level));   
+        
+        $key_log = self::Game_Rank_playerlevel_BreachLog_hash($zoneid); # redis key 等级榜突破记录
+        
+        $mo = GameConfig::rank_playerlevel_reward();
+        foreach ($mo as $condition => $reward) {    # 遍历突破奖励数据
+            if ($level >= $condition && !gMem()->hexists($key_log, $condition)) {  # 判断是否达成突破奖励标准
+                gMem()->hset($key_log, $condition, $uid);                       # 添加突破记录
+                CornerSignEventProc::OnRanking_GageReward_new();
+            }
+        }
+    }
+    
+    public static function Game_Rank_playerLevel_zset($zoneid) {
+        $key_rank = "gamerun-rank-playerLevel-zone$zoneid";
+        return $key_rank;
+    }
+
+    public static function Game_Rank_playerlevel_BreachLog_hash($zoneid) {
+        $key_rank = "gamerun-rank-playerlevel-breaklog-zone$zoneid";
+        return $key_rank;
+    }
+
+
     /**
      * 常量: 最大玩家人数100W(假设单服人数不会超过这个数字)
      */