Browse Source

1. 挑战功能

gwang 5 years ago
parent
commit
2238158a9a

+ 45 - 47
Gameserver/Amfphp/base/MemKey_User.php

@@ -11,17 +11,15 @@ namespace loyalsoft;
  * @author gwang (mail@wanggangzero.cn)
  * @copyright ? 2017-4-6, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  */
-class MemKey_User
-{
-
+class MemKey_User {
 //
 // <editor-fold defaultstate="collapsed" desc="    辅助方法  ">
 //
+
     /**
      * @return bool 是否使用短名称
      */
-    private static function bUseShort()
-    {
+    private static function bUseShort() {
 //        return true;  # 全部启用
         return defined('GAME_ONLINE') and GAME_ONLINE;
     }
@@ -32,8 +30,7 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    private static function Key_($zoneid, $uid)
-    {
+    private static function Key_($zoneid, $uid) {
         return self::bUseShort() ? 'u-' . $uid . '-' . $zoneid : 'user-' . $uid . '-zone' . $zoneid;
     }
 
@@ -47,8 +44,7 @@ class MemKey_User
      * @param string $uid
      * @return string json []
      */
-    public static function Union_PlayedZoneInfo_normal($uid)
-    {
+    public static function Union_PlayedZoneInfo_normal($uid) {
         return self::bUseShort() ? 'u-' . $uid . '-z' : 'user-' . $uid . '-zoneinfo';
     }
 
@@ -57,21 +53,20 @@ class MemKey_User
      * @param string $uid
      * @return string json
      */
-    public static function Union_PublicState_normal($uid)
-    {
+    public static function Union_PublicState_normal($uid) {
         return self::bUseShort() ? 'u-' . $uid . '-p' : 'user-' . $uid . '-public';
     }
 
 // </editor-fold>
 //
+
     /**
      * 玩家信息
      * @param int $zoneid 分区id
      * @param string $uid
      * @return string
      */
-    public static function Info($zoneid, $uid)
-    {
+    public static function Info($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-g' : '-gameinfo');
     }
 
@@ -81,19 +76,36 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function Interact($zoneid, $uid)
-    {
+    public static function Interact($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-i' : '-interact');
     }
 
+    /**
+     * 主动挑战记录
+     * @param type $zoneid
+     * @param type $uid
+     */
+    public static function OffensiveLog_zset($zoneid, $uid) {
+        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-offlog' : '-offensivelog');
+    }
+
+    /**
+     * 被动挑战记录
+     * @param type $zoneid
+     * @param type $uid
+     * @return type
+     */
+    public static function DefensiveLog_zset($zoneid, $uid) {
+        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-deflog' : '-defensivelog');
+    }
+
     /**
      * 玩家证书
      * @param int $zoneid 分区id
      * @param string $uid
      * @return string
      */
-    public static function Sig($zoneid, $uid)
-    {
+    public static function Sig($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-sig' : '-sig');
     }
 
@@ -105,8 +117,7 @@ class MemKey_User
      * @param strng $uid
      * @return string
      */
-    public static function Mail_CurId_int($zoneid, $uid)
-    {
+    public static function Mail_CurId_int($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-m-ci' : '-mail-curid');
     }
 
@@ -116,8 +127,7 @@ class MemKey_User
      * @param strng $uid
      * @return string
      */
-    public static function Mail_SysRecord_set($zoneid, $uid)
-    {
+    public static function Mail_SysRecord_set($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-m-s' : '-mail-sysrecord');
     }
 
@@ -127,8 +137,7 @@ class MemKey_User
      * @param strng $uid
      * @return string
      */
-    public static function Mail_Queue_hash($zoneid, $uid)
-    {
+    public static function Mail_Queue_hash($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-m-q' : '-mail-queue');
     }
 
@@ -142,8 +151,7 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function FriendsList_set($zoneid, $uid)
-    {
+    public static function FriendsList_set($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-f-l' : '-friends-list');
     }
 
@@ -153,8 +161,7 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function FriendsMsgQueue_hash($zoneid, $uid)
-    {
+    public static function FriendsMsgQueue_hash($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-f-m' : '-friends-msgqueue');
     }
 
@@ -164,8 +171,7 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function FriendsOps_hash($zoneid, $uid)
-    {
+    public static function FriendsOps_hash($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-f-o' : '-friends-ops');
     }
 
@@ -175,8 +181,7 @@ class MemKey_User
      * @param type $uid
      * @return type
      */
-    public static function GiftOps($zoneid, $uid)
-    {
+    public static function GiftOps($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-f-go' : '-friends-giftops');
     }
 
@@ -192,8 +197,7 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function TokenInfo($zoneid, $uid)
-    {
+    public static function TokenInfo($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-t' : '-tokens');
     }
 
@@ -204,21 +208,20 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function GiftStore($zoneid, $uid)
-    {
+    public static function GiftStore($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . ( self::bUseShort() ? '-gt' : '-giftitems');
     }
 
 // </editor-fold>
 //
+
     /**
      * 支付流程中, 渠道支付服务器发过来的订单通知, 需要客户端主动请求服务端刷新到自己的账户中.
      * @param int $zoneid 分区id
      * @param string $uid
      * @return string
      */
-    public static function PayOrders($zoneid, $uid)
-    {
+    public static function PayOrders($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . ( self::bUseShort() ? '-o' : '-orders');
     }
 
@@ -231,8 +234,7 @@ class MemKey_User
      * @param string $uid
      * @return string
      */
-    public static function stat_LotteryRecords($zoneid, $uid)
-    {
+    public static function stat_LotteryRecords($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . ( self::bUseShort() ? '-s-l' : '-stat-lotterys');
     }
 
@@ -245,8 +247,7 @@ class MemKey_User
      *   id:times,...s
      *  }
      */
-    public static function stat_Shopbuy_zset($zoneid, $uid)
-    {
+    public static function stat_Shopbuy_zset($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-s-sb' : '-stat-shopbuy');
     }
 
@@ -256,8 +257,7 @@ class MemKey_User
      * @param type $uid
      * @return type
      */
-    public static function stat_SecretShopBuy_zset($zoneid, $uid)
-    {
+    public static function stat_SecretShopBuy_zset($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-s-sb' : '-stat-shopbuy');
     }
 
@@ -267,8 +267,7 @@ class MemKey_User
      * @param type $uid
      * @return type
      */
-    public static function log_shopbuy_list($zoneid, $uid)
-    {
+    public static function log_shopbuy_list($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-l-sb' : "-log-shopbuy");
     }
 
@@ -278,8 +277,7 @@ class MemKey_User
      * @param type $uid
      * @return type
      */
-    public static function log_secretshopbuy_list($zoneid, $uid)
-    {
+    public static function log_secretshopbuy_list($zoneid, $uid) {
         return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-l-ssb' : "-log-secretshopbuy");
     }
 

+ 41 - 12
Gameserver/Amfphp/process/FightProc/PVPProc.php

@@ -36,25 +36,42 @@ class PVPProc {
         return Resp::ok($result);
     }
 
+    const maxLogCount = 49;
+
     /**
      * [6804] 挑战 - 记录挑战结果
      * @param req $req
      */
     static function LogChallengeInfo($req) {
-        // 参数: 对手uid, 对战结果, 胜利者的留言(失败忽略)
-        // 分胜负 if {
-        //     记录自己的主动挑战记录, 胜利
-        //     写入对手的挑战记录.
-        // } else {
-        //     记录自己的主动挑战记录, 失败.
-        //     写入对手的挑战记录, 
-        // }
+        // 参数: 对手uid,对手昵称,对手头像, 对战结果, 胜利者的留言(失败时无法留言"")
+        list($targetUID, $name, $headImg, $win, $msg) = $req->paras;
+        $key_mine = MemKey_User::OffensiveLog_zset($req->zoneid, $req->uid);
+        $key_target = MemKey_User::DefensiveLog_zset($req->zoneid, $targetUID);
+        $ts = now();                                                            # 记录时间戳
+        $req->mem->zadd($key_mine, array(#                                      # 组装被挑战对手信息
+            JsonUtil::encode(array(
+                'uid' => $targetUID,
+                'name' => $name,
+                'headImg' => $headImg,
+                'win' => $win,
+                'msg' => $msg,
+                'ts' => $ts
+            )) => $ts));
+        $req->mem->zremrangebyrank($key_mine, self::maxLogCount, -1);           # 保留50条数据
+        $req->mem->zadd($key_target, array(#                                    # 组装挑战者信息
+            JsonUtil::encode(array(
+                'uid' => $req->uid,
+                'name' => $req->userInfo->game->name,
+                'headImg' => $req->userInfo->game->img,
+                'win' => !$win,
+                'msg' => $msg,
+                'ts' => $ts
+            )) => $ts));
+        $req->mem->zremrangebyrank($key_target, self::maxLogCount, -1);         # 保留50条数据
         // 暂无发放奖励流程
         // 更新每日任务
-        // 回写自己的用户信息
-        // 回写对手的交互信息
         // 返回
-        // 
+        return Resp::ok();                                                      # 返回成功
     }
 
     /**
@@ -63,10 +80,22 @@ class PVPProc {
      */
     static function GetChagllengeLog($req) {
         // 参数:无
+        $key_off = MemKey_User::OffensiveLog_zset($req->zoneid, $req->uid);
+        $key_def = MemKey_User::DefensiveLog_zset($req->zoneid, $req->uid);
         // 拉取自己的挑战记录
-        // Ps. 挑战记录分为2个榜, 且按照时间戳记录,晚于指定时间戳的判定为未读消息,挑战记录最多记录99条
+        $offLog = $req->mem->zrange($key_off, 0, self::maxLogCount);
+        $defLog = $req->mem->zrange($key_def, 0, self::maxLogCount);
+        // Ps. 挑战记录分为2个榜, 且按照时间戳记录,晚于指定时间戳的判定为未读消息,挑战记录最多记录50条
+//        if (!CommUtil::isPropertyExists($req->userInfo->game->privateState, "lastCheckDefLog")) {
+        $req->userInfo->game->privateState->lastCheckDefLog = now();            # 记录时间戳
+//        }
+        UserProc::updateUserInfo();                                             # 回写数据
         // 记录拉取时间戳(在主界面有个未读消息条数显示, 需要靠最后拉取时间戳对比, 时间戳之后的消息是未读消息)
         // 回传数据记录
+        return Resp::ok(array(
+                    'offLog' => $offLog,
+                    'defLog' => $defLog
+        ));
     }
 
     //

+ 2 - 0
Gameserver/nbproject/private/private.xml

@@ -16,7 +16,9 @@
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/Resp.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/UserProc.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/CmdCode.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/FightProc/PVPProc.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/base/MemKey_GameRun.php</file>
+            <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/process/FightProc.php</file>
             <file>file:/E:/www/ylsj2019/Gameserver/Amfphp/model/User/PrivateStateModel.php</file>
         </group>
     </open-files>