From 438cebb23edcfb341eb076b6354fe5e1f50b10ec Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 20 八月 2024 19:32:10 +0800
Subject: [PATCH] 10229 【越南】【主干】【港台】【砍树】古神战场修改(功能队伍增加队员在线状态同步;相关玩家在线状态管理,支持跨服;优化查找玩家相关联队伍同步玩家所在队伍及已申请的队伍;修复队伍成员找不到缓存时报错;优化玩家缓存判断是否保存统一逻辑,防止过天可能被删除;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 67 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 0274bc3..bd75dcc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -9722,6 +9722,66 @@
 
 
 #------------------------------------------------------
+# B3 15 相关玩家在线状态变更同步 #tagGCRelatedPlayerOnlineState
+
+class  tagGCRelatedPlayerOnlineState(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("PlayerID", c_int),    # 相关玩家ID
+                  ("OfflineValue", c_int),    # 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线;
+                  ("IsCross", c_ubyte),    # 是否跨服同步的,如果是跨服则离线时间计算时要取跨服服务器时间
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB3
+        self.SubCmd = 0x15
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.Cmd = 0xB3
+        self.SubCmd = 0x15
+        self.PlayerID = 0
+        self.OfflineValue = 0
+        self.IsCross = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagGCRelatedPlayerOnlineState)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B3 15 相关玩家在线状态变更同步 //tagGCRelatedPlayerOnlineState:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                PlayerID:%d,
+                                OfflineValue:%d,
+                                IsCross:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.PlayerID,
+                                self.OfflineValue,
+                                self.IsCross
+                                )
+        return DumpString
+
+
+m_NAtagGCRelatedPlayerOnlineState=tagGCRelatedPlayerOnlineState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRelatedPlayerOnlineState.Cmd,m_NAtagGCRelatedPlayerOnlineState.SubCmd))] = m_NAtagGCRelatedPlayerOnlineState
+
+
+#------------------------------------------------------
 # B3 20 送礼物成功通知 #tagGCSendGiftsOKList
 
 class  tagGCSendGiftsOK(Structure):
@@ -13127,6 +13187,7 @@
     RealmLV = 0    #(WORD RealmLV)// 玩家境界
     FightPower = 0    #(DWORD FightPower)// 战力,求余亿
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力,整除亿
+    OfflineValue = 0    #(DWORD OfflineValue)// 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线;
     Value1 = 0    #(DWORD Value1)//值1
     Value2 = 0    #(DWORD Value2)//值2
     data = None
@@ -13146,6 +13207,7 @@
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.OfflineValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
@@ -13160,6 +13222,7 @@
         self.RealmLV = 0
         self.FightPower = 0
         self.FightPowerEx = 0
+        self.OfflineValue = 0
         self.Value1 = 0
         self.Value2 = 0
         return
@@ -13173,6 +13236,7 @@
         length += 2
         length += 1
         length += 2
+        length += 4
         length += 4
         length += 4
         length += 4
@@ -13191,6 +13255,7 @@
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+        data = CommFunc.WriteDWORD(data, self.OfflineValue)
         data = CommFunc.WriteDWORD(data, self.Value1)
         data = CommFunc.WriteDWORD(data, self.Value2)
         return data
@@ -13206,6 +13271,7 @@
                                 RealmLV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
+                                OfflineValue:%d,
                                 Value1:%d,
                                 Value2:%d
                                 '''\
@@ -13219,6 +13285,7 @@
                                 self.RealmLV,
                                 self.FightPower,
                                 self.FightPowerEx,
+                                self.OfflineValue,
                                 self.Value1,
                                 self.Value2
                                 )

--
Gitblit v1.8.0