From d7293ef9af151c66c4c24aca807b2d2e1b3ee2b9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 四月 2019 19:36:58 +0800
Subject: [PATCH] 6628 【2.0】【后端】查看玩家装备和查看玩家战力功能(增加py表)
---
ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py | 329 +++++++++++++++++++++++++++++++++++++++++++++++
ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py | 42 ++++++
2 files changed, 371 insertions(+), 0 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py
index a5c8d44..e45663f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyDataManager.py
@@ -42,6 +42,40 @@
GameWorld.Log("LoadPyGameData!!id = %s %s"%(id(pyGameDataMgr), len(gameBuffer)))
return pyGameDataMgr.LoadGameData(gameBuffer, pos)
+#玩家缓存管理,该类只做数据缓存存取,不写功能逻辑,防止重读脚本时功能逻辑脚本不生效
+class PlayerViewCachePyManager(object):
+
+ def __init__(self):
+ self.playerViewCachePyDict = {} # 玩家缓存 {playerID:tagPlayerViewCachePy, ...}
+ return
+
+ # 保存数据 存数据库和realtimebackup
+ def GetSaveData(self):
+ savaData = ""
+ cntData = ""
+ cnt = 0
+
+ for dbData in self.playerViewCachePyDict.values():
+ cnt += 1
+ savaData += dbData.getBuffer()
+
+ GameWorld.Log("Save PlayerViewCachePy count :%s" % cnt)
+ return CommFunc.WriteDWORD(cntData, cnt) + savaData
+
+ # 从数据库载入数据
+ def LoadPyGameData(self, datas, pos, dataslen):
+ cnt, pos = CommFunc.ReadDWORD(datas, pos)
+ GameWorld.Log("Load PlayerViewCachePy count :%s" % cnt)
+
+ for _ in xrange(cnt):
+ dbData = PyGameDataStruct.tagPlayerViewCachePy()
+ dbData.clear()
+ pos += dbData.readData(datas, pos, dataslen)
+
+ self.playerViewCachePyDict[dbData.PlayerID] = dbData
+
+ return pos
+
#拍卖记录管理,该类只做数据缓存存取,不写功能逻辑,防止重读脚本时功能逻辑脚本不生效
class AuctionRecordManager(object):
@@ -170,6 +204,7 @@
class PyGameDataManager(object):
def __init__(self):
+ self.PlayerViewCachePyManager = PlayerViewCachePyManager()
self.AuctionAttentionManager = AuctionAttentionManager()
self.AuctionRecordManager = AuctionRecordManager()
self.AuctionItemManager = AuctionItemManager()
@@ -190,6 +225,7 @@
def GetSaveData(self):
buff = ""
+ buff += self.PlayerViewCachePyManager.GetSaveData()
buff += self.AuctionAttentionManager.GetSaveData()
buff += self.AuctionRecordManager.GetSaveData()
buff += self.AuctionItemManager.GetSaveData()
@@ -209,6 +245,7 @@
return buff
def LoadGameData(self, gameBuffer, pos):
+ pos = self.PlayerViewCachePyManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
pos = self.AuctionAttentionManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
pos = self.AuctionRecordManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
pos = self.AuctionItemManager.LoadPyGameData(gameBuffer, pos, len(gameBuffer))
@@ -235,6 +272,11 @@
PyGameData.g_pyGameDataManager = pyGameDataMgr
return pyGameDataMgr
+def GetPlayerViewCachePyManager():
+ # 拍卖记录表
+ pyGameDataMgr = GetPyGameDataManager()
+ return pyGameDataMgr.PlayerViewCachePyManager
+
def GetAuctionItemManager():
## 拍卖物品缓存数据管理
pyGameDataMgr = GetPyGameDataManager()
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
index 3b6241c..383f78c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/PyGameDataStruct.py
@@ -15,6 +15,335 @@
from ctypes import (Structure, memset, memmove, sizeof, addressof, create_string_buffer, string_at)
import CommFunc
+# 玩家数据查看缓存表Py #tagPlayerViewCachePy
+class tagPlayerViewCachePy(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ('PlayerID', ctypes.c_ulong),
+ ('GeTuiIDSize', ctypes.c_ubyte),
+ ('GeTuiID', ctypes.c_char_p),
+ ('LV', ctypes.c_ushort),
+ ('OffTime', ctypes.c_ulong),
+ ('PropDataSize', ctypes.c_ushort),
+ ('PropData', ctypes.c_char_p),
+ ('PlusDataSize', ctypes.c_ushort),
+ ('PlusData', ctypes.c_char_p),
+ ('ItemDataSize1', ctypes.c_ushort),
+ ('ItemData1', ctypes.c_char_p),
+ ('ItemDataSize2', ctypes.c_ushort),
+ ('ItemData2', ctypes.c_char_p),
+ ('ItemDataSize3', ctypes.c_ushort),
+ ('ItemData3', ctypes.c_char_p),
+ ('ItemDataSize4', ctypes.c_ushort),
+ ('ItemData4', ctypes.c_char_p),
+ ('ItemDataSize5', ctypes.c_ushort),
+ ('ItemData5', ctypes.c_char_p),
+ ('ItemDataSize6', ctypes.c_ushort),
+ ('ItemData6', ctypes.c_char_p),
+ ('ItemDataSize7', ctypes.c_ushort),
+ ('ItemData7', ctypes.c_char_p),
+ ('ItemDataSize8', ctypes.c_ushort),
+ ('ItemData8', ctypes.c_char_p),
+ ('ItemDataSize9', ctypes.c_ushort),
+ ('ItemData9', ctypes.c_char_p),
+ ('ItemDataSize10', ctypes.c_ushort),
+ ('ItemData10', ctypes.c_char_p),
+ ('ItemDataSize11', ctypes.c_ushort),
+ ('ItemData11', ctypes.c_char_p),
+ ('ItemDataSize12', ctypes.c_ushort),
+ ('ItemData12', ctypes.c_char_p),
+ ('ItemDataSize13', ctypes.c_ushort),
+ ('ItemData13', ctypes.c_char_p),
+ ('ItemDataSize14', ctypes.c_ushort),
+ ('ItemData14', ctypes.c_char_p),
+ ('ItemDataSize15', ctypes.c_ushort),
+ ('ItemData15', ctypes.c_char_p),
+ ('ADOResult', ctypes.c_ulong),
+ ]
+
+ def __init__(self):
+ Structure.__init__(self)
+ self.clear()
+
+ def clear(self):
+ self.PlayerID = 0
+ self.GeTuiIDSize = 0
+ self.GeTuiID = ''
+ self.LV = 0
+ self.OffTime = 0
+ self.PropDataSize = 0
+ self.PropData = ''
+ self.PlusDataSize = 0
+ self.PlusData = ''
+ self.ItemDataSize1 = 0
+ self.ItemData1 = ''
+ self.ItemDataSize2 = 0
+ self.ItemData2 = ''
+ self.ItemDataSize3 = 0
+ self.ItemData3 = ''
+ self.ItemDataSize4 = 0
+ self.ItemData4 = ''
+ self.ItemDataSize5 = 0
+ self.ItemData5 = ''
+ self.ItemDataSize6 = 0
+ self.ItemData6 = ''
+ self.ItemDataSize7 = 0
+ self.ItemData7 = ''
+ self.ItemDataSize8 = 0
+ self.ItemData8 = ''
+ self.ItemDataSize9 = 0
+ self.ItemData9 = ''
+ self.ItemDataSize10 = 0
+ self.ItemData10 = ''
+ self.ItemDataSize11 = 0
+ self.ItemData11 = ''
+ self.ItemDataSize12 = 0
+ self.ItemData12 = ''
+ self.ItemDataSize13 = 0
+ self.ItemData13 = ''
+ self.ItemDataSize14 = 0
+ self.ItemData14 = ''
+ self.ItemDataSize15 = 0
+ self.ItemData15 = ''
+
+ def readData(self, buf, pos = 0, length = 0):
+ if not pos <= length:
+ return -1
+ if len(buf) < pos + self.getLength():
+ return -1
+ self.clear()
+ self.PlayerID, pos = CommFunc.ReadDWORD(buf, pos)
+ self.GeTuiIDSize, pos = CommFunc.ReadBYTE(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.GeTuiIDSize)
+ self.GeTuiID = ctypes.c_char_p(tmp)
+ self.LV, pos = CommFunc.ReadWORD(buf, pos)
+ self.OffTime, pos = CommFunc.ReadDWORD(buf, pos)
+ self.PropDataSize, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.PropDataSize)
+ self.PropData = ctypes.c_char_p(tmp)
+ self.PlusDataSize, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.PlusDataSize)
+ self.PlusData = ctypes.c_char_p(tmp)
+ self.ItemDataSize1, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize1)
+ self.ItemData1 = ctypes.c_char_p(tmp)
+ self.ItemDataSize2, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize2)
+ self.ItemData2 = ctypes.c_char_p(tmp)
+ self.ItemDataSize3, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize3)
+ self.ItemData3 = ctypes.c_char_p(tmp)
+ self.ItemDataSize4, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize4)
+ self.ItemData4 = ctypes.c_char_p(tmp)
+ self.ItemDataSize5, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize5)
+ self.ItemData5 = ctypes.c_char_p(tmp)
+ self.ItemDataSize6, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize6)
+ self.ItemData6 = ctypes.c_char_p(tmp)
+ self.ItemDataSize7, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize7)
+ self.ItemData7 = ctypes.c_char_p(tmp)
+ self.ItemDataSize8, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize8)
+ self.ItemData8 = ctypes.c_char_p(tmp)
+ self.ItemDataSize9, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize9)
+ self.ItemData9 = ctypes.c_char_p(tmp)
+ self.ItemDataSize10, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize10)
+ self.ItemData10 = ctypes.c_char_p(tmp)
+ self.ItemDataSize11, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize11)
+ self.ItemData11 = ctypes.c_char_p(tmp)
+ self.ItemDataSize12, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize12)
+ self.ItemData12 = ctypes.c_char_p(tmp)
+ self.ItemDataSize13, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize13)
+ self.ItemData13 = ctypes.c_char_p(tmp)
+ self.ItemDataSize14, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize14)
+ self.ItemData14 = ctypes.c_char_p(tmp)
+ self.ItemDataSize15, pos = CommFunc.ReadWORD(buf, pos)
+ tmp, pos = CommFunc.ReadString(buf, pos, self.ItemDataSize15)
+ self.ItemData15 = ctypes.c_char_p(tmp)
+ return self.getLength()
+
+ def getBuffer(self):
+ buf = ''
+ buf = CommFunc.WriteDWORD(buf, self.PlayerID)
+ buf = CommFunc.WriteBYTE(buf, self.GeTuiIDSize)
+ buf = CommFunc.WriteString(buf, self.GeTuiIDSize, self.GeTuiID)
+ buf = CommFunc.WriteWORD(buf, self.LV)
+ buf = CommFunc.WriteDWORD(buf, self.OffTime)
+ buf = CommFunc.WriteWORD(buf, self.PropDataSize)
+ buf = CommFunc.WriteString(buf, self.PropDataSize, self.PropData)
+ buf = CommFunc.WriteWORD(buf, self.PlusDataSize)
+ buf = CommFunc.WriteString(buf, self.PlusDataSize, self.PlusData)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize1)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize1, self.ItemData1)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize2)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize2, self.ItemData2)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize3)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize3, self.ItemData3)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize4)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize4, self.ItemData4)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize5)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize5, self.ItemData5)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize6)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize6, self.ItemData6)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize7)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize7, self.ItemData7)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize8)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize8, self.ItemData8)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize9)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize9, self.ItemData9)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize10)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize10, self.ItemData10)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize11)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize11, self.ItemData11)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize12)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize12, self.ItemData12)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize13)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize13, self.ItemData13)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize14)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize14, self.ItemData14)
+ buf = CommFunc.WriteWORD(buf, self.ItemDataSize15)
+ buf = CommFunc.WriteString(buf, self.ItemDataSize15, self.ItemData15)
+ return buf
+
+ def getLength(self):
+ length = 0
+ length += sizeof(ctypes.c_ulong)
+ length += sizeof(ctypes.c_ubyte)
+ length += self.GeTuiIDSize
+ length += sizeof(ctypes.c_ushort)
+ length += sizeof(ctypes.c_ulong)
+ length += sizeof(ctypes.c_ushort)
+ length += self.PropDataSize
+ length += sizeof(ctypes.c_ushort)
+ length += self.PlusDataSize
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize1
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize2
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize3
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize4
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize5
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize6
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize7
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize8
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize9
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize10
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize11
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize12
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize13
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize14
+ length += sizeof(ctypes.c_ushort)
+ length += self.ItemDataSize15
+ return length
+
+ def outputString(self):
+ output = '''// 玩家数据查看缓存表Py #tagPlayerViewCachePy:
+ PlayerID = %s,
+ GeTuiIDSize = %s,
+ GeTuiID = %s,
+ LV = %s,
+ OffTime = %s,
+ PropDataSize = %s,
+ PropData = %s,
+ PlusDataSize = %s,
+ PlusData = %s,
+ ItemDataSize1 = %s,
+ ItemData1 = %s,
+ ItemDataSize2 = %s,
+ ItemData2 = %s,
+ ItemDataSize3 = %s,
+ ItemData3 = %s,
+ ItemDataSize4 = %s,
+ ItemData4 = %s,
+ ItemDataSize5 = %s,
+ ItemData5 = %s,
+ ItemDataSize6 = %s,
+ ItemData6 = %s,
+ ItemDataSize7 = %s,
+ ItemData7 = %s,
+ ItemDataSize8 = %s,
+ ItemData8 = %s,
+ ItemDataSize9 = %s,
+ ItemData9 = %s,
+ ItemDataSize10 = %s,
+ ItemData10 = %s,
+ ItemDataSize11 = %s,
+ ItemData11 = %s,
+ ItemDataSize12 = %s,
+ ItemData12 = %s,
+ ItemDataSize13 = %s,
+ ItemData13 = %s,
+ ItemDataSize14 = %s,
+ ItemData14 = %s,
+ ItemDataSize15 = %s,
+ ItemData15 = %s,
+ ADOResult = %s,
+ '''%(
+ self.PlayerID,
+ self.GeTuiIDSize,
+ self.GeTuiID,
+ self.LV,
+ self.OffTime,
+ self.PropDataSize,
+ self.PropData,
+ self.PlusDataSize,
+ self.PlusData,
+ self.ItemDataSize1,
+ self.ItemData1,
+ self.ItemDataSize2,
+ self.ItemData2,
+ self.ItemDataSize3,
+ self.ItemData3,
+ self.ItemDataSize4,
+ self.ItemData4,
+ self.ItemDataSize5,
+ self.ItemData5,
+ self.ItemDataSize6,
+ self.ItemData6,
+ self.ItemDataSize7,
+ self.ItemData7,
+ self.ItemDataSize8,
+ self.ItemData8,
+ self.ItemDataSize9,
+ self.ItemData9,
+ self.ItemDataSize10,
+ self.ItemData10,
+ self.ItemDataSize11,
+ self.ItemData11,
+ self.ItemDataSize12,
+ self.ItemData12,
+ self.ItemDataSize13,
+ self.ItemData13,
+ self.ItemDataSize14,
+ self.ItemData14,
+ self.ItemDataSize15,
+ self.ItemData15,
+ self.ADOResult,
+ )
+ return output
+
+
# 拍卖关注表 #tagDBAuctionAttention
class tagDBAuctionAttention(Structure):
_pack_ = 1
--
Gitblit v1.8.0