From 3432541b467d53ffe4ed3872c734e76638e30df8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 24 十月 2025 17:58:12 +0800
Subject: [PATCH] 302 【公会】BOSS讨伐-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 18
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 112 +--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 605 ++++++++--------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 15
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py | 33 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py | 33 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_FamilyTaofaCnt.py | 28 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 12
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Taofa.py | 160 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py | 550 ++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 33
13 files changed, 1,131 insertions(+), 479 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 112edb6..fa4e673 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -262,6 +262,18 @@
PacketSubCMD_1=0x16
PacketCallFunc_1=OnZhenbaogeOP
+;公会讨伐
+[PlayerFamilyTaofa]
+ScriptName = Player\PlayerFamilyTaofa.py
+Writer = hxp
+Releaser = hxp
+RegType = 0
+RegisterPackCount = 1
+
+PacketCMD_1=0xA6
+PacketSubCMD_1=0x13
+PacketCallFunc_1=OnFamilyTaofaOP
+
;宠物
[PlayerPet]
ScriptName = Player\PlayerPet.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index ce3d397..6af4046 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -675,6 +675,7 @@
Def_Effect_RecycleItemMoney = 277 #回收物品转化为货币; A值-直接给货币物品ID;B值-货币数量
Def_Effect_FamilyEmblem = 278 #激活仙盟徽章; A值-徽章ID;
Def_Effect_HeroSkin = 279 #激活武将皮肤; A值-武将ID;B值-皮肤索引
+Def_Effect_FamilyTaofaCnt = 280 #增加公会讨伐次数; A值-讨伐次数
#----以下未使用或代码依然存在的---
Def_Effect_ItemGiveGongXun = 1920 #使用道具给予功勋
Def_Effect_ItemGiveRuneJH = 1925 #使用道具给予符印精华
@@ -3424,29 +3425,25 @@
Def_Player_Dict_TrialTower_PassLV = "TrialTower_PassLV" # 试炼之塔通关层数
Def_Player_Dict_TrialTower_LastDayPassLV = "Tower_LastDayPassLV" # 试炼之塔昨日通关层数
-#仙盟打坐
-Def_Player_Dict_FamilySitExpRound = "FamilySitExpRound" # 已给经验轮次
-Def_Player_Dict_FamilySitTotalExp = "FamilySitTotalExp" # 获得的总经验
-Def_Player_Dict_FamilySitTotalExpPoint = "FamilySitTotalExpPoint" # 获得的总经验点
+#公会讨伐
+Def_Player_Dict_FamilyTaofaCnt = "FamilyTaofaCnt" # 已讨伐次数
+Def_Player_Dict_FamilyTaofaItemAddCnt = "FamilyTaofaItemAddCnt" # 道具增加讨伐次数
+Def_Player_Dict_FamilyTaofaBuZhenState = "FamilyTaofaBuZhenState" # 是否已布阵
+Def_Player_Dict_FamilyTaofaAnger = "FamilyTaofaAnger" # 当前怒气
+Def_Player_Dict_FamilyTaofaBoxTotalGetCnt = "FamilyTaofaBoxTotalGetCnt" # 累计已领取宝箱奖励数
+Def_Player_Dict_FamilyTaofaBoxUnGetCnt = "FamilyTaofaBoxUnGetCnt" # 当前未领取的宝箱奖励数
+Def_Player_Dict_FamilyTaofaBoxLastTime = "FamilyTaofaBoxLastTime" # 上一次统计未领取宝箱时间戳,超过该时间戳的宝箱才可以再增加未领取
+Def_Player_Dict_FamilyTaofaBoxContribCnt = "FamilyTaofaBoxContribCnt" # 累计贡献的宝箱奖励数
+Def_Player_Dict_FamilyTaofaBoxHurt = "FamilyTaofaBoxHurt" # 宝箱奖励计算累计伤害,求余亿部分
+Def_Player_Dict_FamilyTaofaBoxHurtEx = "FamilyTaofaBoxHurtEx" # 宝箱奖励计算累计伤害,整除亿部分
+Def_Player_Dict_FamilyTaofaBoxHurtHis = "FamilyTaofaBoxHurtHis" # 历史最高累计伤害,求余亿部分
+Def_Player_Dict_FamilyTaofaBoxHurtHisEx = "FamilyTaofaBoxHurtHisEx" # 历史最高累计伤害,整除亿部分
#虚拟背包物品数据
Def_PDict_VPackItem = "VPackItem_%s_%s" # 虚拟背包物品数据, 参数(背包类型, 位置索引)
#物品个数
Def_PDict_ItemCount = "ItemCount_%s" # 存储不放在背包的物品个数, 参数(物品ID)
-
-#一次性最大充值
-Def_Player_RechargeOnce_Coin = "RechargeOnce_Coin"
-
-#悬赏任务
-Def_Player_Dict_ArrestTaskStar = "ArrestTaskStar" # 悬赏任务星级
-Def_Player_Dict_ArrestTaskData = "ArrestTaskData_%s" # 悬赏任务数据,参数索引
-Def_Player_Dict_ArrestTaskAwardRecord = "ArrestTaskAwardRecord" # 悬赏任务积分奖励领取记录
-Def_Player_Dict_ArrestTaskFinishCnt = "ArrestTaskFinishCnt" # 悬赏任务今日完成个数
-
-#封魔坛
-Def_Player_Dict_FMTDouble = "FMTDouble" # 封魔坛是否双倍
-Def_Player_Dict_FMTOldDouble = "FMTOldDouble" # 封魔坛是否曾经可以双倍
#极品白拿
Def_PDict_FreeGoodsOpenTime = "FreeGoodsOpenTime" #极品白拿开启时间
@@ -4874,7 +4871,7 @@
Def_RewardType_Activity, # 活跃度奖励 0
Def_RewardType_DailyTask, # 每日任务奖励 1
Def_RewardType_LLMJLVUp, # 历练秘笈升级 2
-Def_RewardType_XMZZWinCnt, # 仙魔之争胜利场数奖励 3
+Def_RewardType_FamilyTaofaBox, # 公会讨伐领取宝箱奖励 3
Def_RewardType_FamilyDayAward, # 仙盟每日福利奖励 4
Def_RewardType_LVAward, # 玩家等级奖励5
Def_RewardType_XBXZ, # 仙宝寻主奖励6
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index b67825b..4d3eaf0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -8127,66 +8127,6 @@
#------------------------------------------------------
-# A6 15 传功操作 #tagCMChuangongOP
-
-class tagCMChuangongOP(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("OPType", c_ubyte), # 操作类型:1-邀请;2-回应;3-领奖;
- ("PlayerID", c_int), # 目标玩家ID;回应时为邀请方玩家ID
- ("OPData", c_ubyte), # 操作数据,可选:回应时为是否同意
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA6
- 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 = 0xA6
- self.SubCmd = 0x15
- self.OPType = 0
- self.PlayerID = 0
- self.OPData = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMChuangongOP)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A6 15 传功操作 //tagCMChuangongOP:
- Cmd:%s,
- SubCmd:%s,
- OPType:%d,
- PlayerID:%d,
- OPData:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.OPType,
- self.PlayerID,
- self.OPData
- )
- return DumpString
-
-
-m_NAtagCMChuangongOP=tagCMChuangongOP()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChuangongOP.Cmd,m_NAtagCMChuangongOP.SubCmd))] = m_NAtagCMChuangongOP
-
-
-#------------------------------------------------------
# A6 11 家族改名 #tagCMRenameFamily
class tagCMRenameFamily(Structure):
@@ -8433,6 +8373,58 @@
#------------------------------------------------------
+# A6 13 公会讨伐 #tagCSFamilyTaofaOP
+
+class tagCSFamilyTaofaOP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("OpType", c_ubyte), # 操作:0-斩杀攻击;1-布阵
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA6
+ self.SubCmd = 0x13
+ 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 = 0xA6
+ self.SubCmd = 0x13
+ self.OpType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCSFamilyTaofaOP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A6 13 公会讨伐 //tagCSFamilyTaofaOP:
+ Cmd:%s,
+ SubCmd:%s,
+ OpType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.OpType
+ )
+ return DumpString
+
+
+m_NAtagCSFamilyTaofaOP=tagCSFamilyTaofaOP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFamilyTaofaOP.Cmd,m_NAtagCSFamilyTaofaOP.SubCmd))] = m_NAtagCSFamilyTaofaOP
+
+
+#------------------------------------------------------
# A6 26 请求家族成员列表 #tagCMGetFamilyInfo
class tagCMGetFamilyInfo(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 7f5f0e1..af57e4b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -11200,194 +11200,6 @@
#------------------------------------------------------
-# A5 35 王者仙盟每日俸禄奖励状态 #tagMCChampionFamilyDailyReward
-
-class tagMCChampionFamilyDailyReward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GetState", c_ubyte), #是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x35
- 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 = 0xA5
- self.SubCmd = 0x35
- self.GetState = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCChampionFamilyDailyReward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 35 王者仙盟每日俸禄奖励状态 //tagMCChampionFamilyDailyReward:
- Cmd:%s,
- SubCmd:%s,
- GetState:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GetState
- )
- return DumpString
-
-
-m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
-
-
-#------------------------------------------------------
-# A5 10 传功奖励结果 #tagMCChuangongResult
-
-class tagMCChuangongItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int),
- ("ItemCount", c_ushort),
- ]
-
- def __init__(self):
- self.Clear()
- 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.ItemID = 0
- self.ItemCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCChuangongItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult:
- ItemID:%d,
- ItemCount:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount
- )
- return DumpString
-
-
-class tagMCChuangongResult(Structure):
- Head = tagHead()
- FromLV = 0 #(WORD FromLV)// 传功前等级
- ToLV = 0 #(WORD ToLV)// 传功后等级
- Exp = 0 #(DWORD Exp)// 获得经验求余亿部分
- ExpPoint = 0 #(DWORD ExpPoint)// 获得经验整除亿部分
- ItemCount = 0 #(BYTE ItemCount)
- AwardItemList = list() #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x10
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.ItemCount):
- temAwardItemList = tagMCChuangongItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA5
- self.Head.SubCmd = 0x10
- self.FromLV = 0
- self.ToLV = 0
- self.Exp = 0
- self.ExpPoint = 0
- self.ItemCount = 0
- self.AwardItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 2
- length += 2
- length += 4
- length += 4
- length += 1
- for i in range(self.ItemCount):
- length += self.AwardItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.FromLV)
- data = CommFunc.WriteWORD(data, self.ToLV)
- data = CommFunc.WriteDWORD(data, self.Exp)
- data = CommFunc.WriteDWORD(data, self.ExpPoint)
- data = CommFunc.WriteBYTE(data, self.ItemCount)
- for i in range(self.ItemCount):
- data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- FromLV:%d,
- ToLV:%d,
- Exp:%d,
- ExpPoint:%d,
- ItemCount:%d,
- AwardItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.FromLV,
- self.ToLV,
- self.Exp,
- self.ExpPoint,
- self.ItemCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCChuangongResult=tagMCChuangongResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult
-
-
-#------------------------------------------------------
# A5 02 捐献次数信息 #tagSCDonateCntInfo
class tagSCDonateCntInfo(Structure):
@@ -11646,74 +11458,6 @@
#------------------------------------------------------
-# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
-
-class tagMCFamilyBosFBPlayerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("HurtTotal", c_int), # 累计伤血,亿求余部分
- ("HurtTotalPoint", c_int), # 累计伤血,亿整除部分
- ("FightSeconds", c_int), # 已累计战斗时长,秒
- ("HurtAwardState", c_int), # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
- ("HurtAwardStateFamily", c_int), # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x07
- 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 = 0xA5
- self.SubCmd = 0x07
- self.HurtTotal = 0
- self.HurtTotalPoint = 0
- self.FightSeconds = 0
- self.HurtAwardState = 0
- self.HurtAwardStateFamily = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyBosFBPlayerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
- Cmd:%s,
- SubCmd:%s,
- HurtTotal:%d,
- HurtTotalPoint:%d,
- FightSeconds:%d,
- HurtAwardState:%d,
- HurtAwardStateFamily:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.HurtTotal,
- self.HurtTotalPoint,
- self.FightSeconds,
- self.HurtAwardState,
- self.HurtAwardStateFamily
- )
- return DumpString
-
-
-m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
-
-
-#------------------------------------------------------
# A5 21 家族变更 #tagMCFamilyChange
class tagMCFamilyChange(Structure):
@@ -11763,114 +11507,6 @@
m_NAtagMCFamilyChange=tagMCFamilyChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyChange.Cmd,m_NAtagMCFamilyChange.SubCmd))] = m_NAtagMCFamilyChange
-
-
-#------------------------------------------------------
-# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
-
-class tagMCFamilyDayAward(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("GetState", c_ubyte), #是否已领取
- ("MoneyDonateCount", c_ubyte), #今日货币捐献次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x06
- 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 = 0xA5
- self.SubCmd = 0x06
- self.GetState = 0
- self.MoneyDonateCount = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyDayAward)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward:
- Cmd:%s,
- SubCmd:%s,
- GetState:%d,
- MoneyDonateCount:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.GetState,
- self.MoneyDonateCount
- )
- return DumpString
-
-
-m_NAtagMCFamilyDayAward=tagMCFamilyDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyDayAward.Cmd,m_NAtagMCFamilyDayAward.SubCmd))] = m_NAtagMCFamilyDayAward
-
-
-#------------------------------------------------------
-# A5 03 当日祈福信息 #tagMCFamilyPrayInfo
-
-class tagMCFamilyPrayInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("PrayCntInfo", c_int), # 当日祈福次数信息, 按位存储祈福类型对应次数
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA5
- self.SubCmd = 0x03
- 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 = 0xA5
- self.SubCmd = 0x03
- self.PrayCntInfo = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCFamilyPrayInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A5 03 当日祈福信息 //tagMCFamilyPrayInfo:
- Cmd:%s,
- SubCmd:%s,
- PrayCntInfo:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.PrayCntInfo
- )
- return DumpString
-
-
-m_NAtagMCFamilyPrayInfo=tagMCFamilyPrayInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyPrayInfo.Cmd,m_NAtagMCFamilyPrayInfo.SubCmd))] = m_NAtagMCFamilyPrayInfo
#------------------------------------------------------
@@ -12072,22 +11708,205 @@
#------------------------------------------------------
-# A5 11 打坐信息 #tagMCFamilySitInfo
+# A5 04 公会讨伐攻击结果 #tagSCFamilyTaofaAtkRet
-class tagMCFamilySitInfo(Structure):
+class tagSCFamilyTaofaAtkItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ 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.ItemID = 0
+ self.Count = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCFamilyTaofaAtkItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+ ItemID:%d,
+ Count:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count
+ )
+ return DumpString
+
+
+class tagSCFamilyTaofaAtkHurt(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("IsSuper", c_ubyte), # 是否暴击
+ ("HurtValue", c_int), # 本次伤害,求余亿部分
+ ("HurtValueEx", c_int), # 本次伤害,整除亿部分
+ ]
+
+ def __init__(self):
+ self.Clear()
+ 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.IsSuper = 0
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCFamilyTaofaAtkHurt)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 04 公会讨伐攻击结果 //tagSCFamilyTaofaAtkRet:
+ IsSuper:%d,
+ HurtValue:%d,
+ HurtValueEx:%d
+ '''\
+ %(
+ self.IsSuper,
+ self.HurtValue,
+ self.HurtValueEx
+ )
+ return DumpString
+
+
+class tagSCFamilyTaofaAtkRet(Structure):
+ Head = tagHead()
+ AtkType = 0 #(BYTE AtkType)// 攻击类型:0-常规;1-怒气攻击
+ HurtCount = 0 #(BYTE HurtCount)
+ HurtList = list() #(vector<tagSCFamilyTaofaAtkHurt> HurtList)// 伤害次数列表,如怒气攻击有多次伤害
+ ItemCount = 0 #(BYTE ItemCount)
+ ItemList = list() #(vector<tagSCFamilyTaofaAtkItem> ItemList)// 奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AtkType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HurtCount):
+ temHurtList = tagSCFamilyTaofaAtkHurt()
+ _pos = temHurtList.ReadData(_lpData, _pos)
+ self.HurtList.append(temHurtList)
+ self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemCount):
+ temItemList = tagSCFamilyTaofaAtkItem()
+ _pos = temItemList.ReadData(_lpData, _pos)
+ self.ItemList.append(temItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA5
+ self.Head.SubCmd = 0x04
+ self.AtkType = 0
+ self.HurtCount = 0
+ self.HurtList = list()
+ self.ItemCount = 0
+ self.ItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ for i in range(self.HurtCount):
+ length += self.HurtList[i].GetLength()
+ length += 1
+ for i in range(self.ItemCount):
+ length += self.ItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AtkType)
+ data = CommFunc.WriteBYTE(data, self.HurtCount)
+ for i in range(self.HurtCount):
+ data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ItemCount)
+ for i in range(self.ItemCount):
+ data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AtkType:%d,
+ HurtCount:%d,
+ HurtList:%s,
+ ItemCount:%d,
+ ItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AtkType,
+ self.HurtCount,
+ "...",
+ self.ItemCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagSCFamilyTaofaAtkRet=tagSCFamilyTaofaAtkRet()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaAtkRet.Head.Cmd,m_NAtagSCFamilyTaofaAtkRet.Head.SubCmd))] = m_NAtagSCFamilyTaofaAtkRet
+
+
+#------------------------------------------------------
+# A5 03 公会讨伐信息 #tagSCFamilyTaofaInfo
+
+class tagSCFamilyTaofaInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ExpRound", c_ushort), # 已获得经验轮次
- ("Exp", c_int), # 获得经验求余亿部分
- ("ExpPoint", c_int), # 获得经验整除亿部分
+ ("BuZhenState", c_ubyte), # 是否已布阵
+ ("AtkCount", c_ushort), # 已斩杀次数,用于计算剩余次数=免费次数+道具增加次数-已斩杀次数
+ ("ItemAddCount", c_ushort), # 道具增加斩杀次数
+ ("Anger", c_ushort), # 当前怒气值
+ ("BoxUnGetCount", c_ushort), # 当前未领取的宝箱数,即可领取的
+ ("BoxHurt", c_int), # 宝箱奖励计算累计伤害,求余亿部分;个人今日累计伤害,换公会不会重置
+ ("BoxHurtEx", c_int), # 宝箱奖励计算累计伤害,整除亿部分
+ ("BoxHurtHis", c_int), # 宝箱奖励计算累计历史最高伤害,求余亿部分
+ ("BoxHurtHisEx", c_int), # 宝箱奖励计算累计历史最高伤害,整除亿部分
]
def __init__(self):
self.Clear()
self.Cmd = 0xA5
- self.SubCmd = 0x11
+ self.SubCmd = 0x03
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -12097,38 +11916,56 @@
def Clear(self):
self.Cmd = 0xA5
- self.SubCmd = 0x11
- self.ExpRound = 0
- self.Exp = 0
- self.ExpPoint = 0
+ self.SubCmd = 0x03
+ self.BuZhenState = 0
+ self.AtkCount = 0
+ self.ItemAddCount = 0
+ self.Anger = 0
+ self.BoxUnGetCount = 0
+ self.BoxHurt = 0
+ self.BoxHurtEx = 0
+ self.BoxHurtHis = 0
+ self.BoxHurtHisEx = 0
return
def GetLength(self):
- return sizeof(tagMCFamilySitInfo)
+ return sizeof(tagSCFamilyTaofaInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo:
+ DumpString = '''// A5 03 公会讨伐信息 //tagSCFamilyTaofaInfo:
Cmd:%s,
SubCmd:%s,
- ExpRound:%d,
- Exp:%d,
- ExpPoint:%d
+ BuZhenState:%d,
+ AtkCount:%d,
+ ItemAddCount:%d,
+ Anger:%d,
+ BoxUnGetCount:%d,
+ BoxHurt:%d,
+ BoxHurtEx:%d,
+ BoxHurtHis:%d,
+ BoxHurtHisEx:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.ExpRound,
- self.Exp,
- self.ExpPoint
+ self.BuZhenState,
+ self.AtkCount,
+ self.ItemAddCount,
+ self.Anger,
+ self.BoxUnGetCount,
+ self.BoxHurt,
+ self.BoxHurtEx,
+ self.BoxHurtHis,
+ self.BoxHurtHisEx
)
return DumpString
-m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
+m_NAtagSCFamilyTaofaInfo=tagSCFamilyTaofaInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCFamilyTaofaInfo.Cmd,m_NAtagSCFamilyTaofaInfo.SubCmd))] = m_NAtagSCFamilyTaofaInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py
index 7d2b5b7..5d66d8b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DB/StructData/DBFamily.py
@@ -75,10 +75,10 @@
@param dbData: 实例对应绑定的dbData
@return: 成功返回实例对象,失败返回None
'''
- dataToJson = False
- # 如果需要 dataToJson,可根据ActionType在这里处理
+ dataToJson = True
+ # 默认使用 dataToJson,如果不需要的可根据 ActionType 在这里处理
if dbData.ActionType in []:
- dataToJson = True
+ dataToJson = False
actionData = FamilyActionData(dbData, dataToJson)
self.__actionDataList.append(actionData)
return actionData
@@ -132,7 +132,28 @@
elif False:
aData = FamilyActionData()
return aData
-
+
+ def GetActionDataByValue1(self, value1, isAdd=False):
+ ## 获取Action根据Value1
+ # @return: None or findActionData
+ findActionData = None
+ for actionData in self.__actionDataList:
+ if actionData.GetValue1() == value1:
+ findActionData = actionData
+ break
+ if not findActionData and isAdd:
+ findActionData = self.AddAction()
+ findActionData.SetValue1(value1)
+ return findActionData
+
+ def DelActionDataByValue1(self, value1):
+ ## 删除Action根据Value1
+ for actionData in self.__actionDataList[::-1]:
+ if actionData.GetValue1() == value1:
+ self.__actionDataList.remove(actionData)
+ break
+ return
+
class FamilyActionMgr():
def __init__(self):
@@ -140,6 +161,8 @@
return
def GetFamilyAction(self, familyID, actionType):
+ if not familyID:
+ return FamilyAction()
if familyID not in self.__familyActionDict:
self.__familyActionDict[familyID] = {}
actionDict = self.__familyActionDict[familyID]
@@ -474,7 +497,7 @@
def FindFamily(self, familyID):
family = None
- if familyID in self.__familyIDDict:
+ if familyID and familyID in self.__familyIDDict:
family = self.__familyIDDict[familyID]
elif False:
family = Family()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Taofa.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Taofa.py
new file mode 100644
index 0000000..e4405c1
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Taofa.py
@@ -0,0 +1,160 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.Taofa
+#
+# @todo:公会讨伐
+# @author hxp
+# @date 2025-10-24
+# @version 1.0
+#
+# 详细描述: 公会讨伐
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-10-24 19:00"""
+#-------------------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import PlayerControl
+import PlayerFamilyZhenbaoge
+import PlayerFamilyTaofa
+import PlayerFamily
+import DBDataMgr
+import random
+import time
+
+def OnExec(curPlayer, msgList):
+
+ if not msgList:
+ GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr())
+ GameWorld.DebugAnswer(curPlayer, "重置公会讨伐: Taofa 0")
+ GameWorld.DebugAnswer(curPlayer, "设置布阵层级: Taofa z 层级 [剩余秒]")
+ GameWorld.DebugAnswer(curPlayer, "设置当前怒气: Taofa a 怒气")
+ GameWorld.DebugAnswer(curPlayer, "设置讨伐次数: Taofa c 已讨伐次数 物品次数")
+ GameWorld.DebugAnswer(curPlayer, "设置宝箱领取: Taofa b 已领取宝箱 未领取")
+ GameWorld.DebugAnswer(curPlayer, "设置宝箱时间: Taofa t 几秒前统计的")
+ GameWorld.DebugAnswer(curPlayer, "设置宝箱贡献: Taofa g 已贡献宝箱 [累计伤害 历史伤害]")
+ #GameWorld.DebugAnswer(curPlayer, "新增成员讨伐: Taofa m 人数 [每人攻击次数 怒气次数 伤害值A 到B]")
+ #GameWorld.DebugAnswer(curPlayer, "AB值没有填则按常规砍价价格计算")
+ GameWorld.DebugAnswer(curPlayer, "创建仙盟相关使用命令: CreateFamily")
+ return
+
+ familyID = curPlayer.GetFamilyID()
+ if not familyID:
+ GameWorld.DebugAnswer(curPlayer, "没有仙盟")
+ return
+ curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
+ if not curFamily:
+ return
+
+ value1 = msgList[0]
+ if value1 == 0:
+ PlayerFamilyTaofa.OnTaofaReset(curFamily)
+ PlayerFamilyTaofa.OnTaofaResetPlayer(curPlayer)
+ GameWorld.DebugAnswer(curPlayer, "重置公会讨伐OK")
+ return
+
+ if value1 == "z":
+ gLayer = msgList[1] if len(msgList) > 1 else 0
+ remainSeconds = msgList[2] if len(msgList) > 2 else 3600
+ gEndTime = int(time.time()) + remainSeconds
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, PlayerFamilyTaofa.ActionType)
+ gActionData = familyAction.GetActionDataByValue1(PlayerFamilyTaofa.ActionGlobalID, True)
+ PlayerFamilyTaofa.SetFABuzhenLayer(gActionData, gLayer)
+ PlayerFamilyTaofa.SetFABuzhenEndTime(gActionData, gEndTime)
+ PlayerFamily.SendFamilyAction(gActionData)
+ GameWorld.DebugAnswer(curPlayer, "布阵层:%s,到期:%s" % (gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)))
+ return
+
+ # 新增成员讨伐
+ if value1 == "m":
+ memCnt = msgList[1] if len(msgList) > 1 else 0
+ GameWorld.DebugAnswer(curPlayer, "成员讨伐:%s" % (memCnt))
+ return
+
+ elif value1 == "a":
+ anger = msgList[1] if len(msgList) > 1 else 0
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, anger)
+ GameWorld.DebugAnswer(curPlayer, "当前怒气: %s" % anger)
+
+ elif value1 == "c":
+ atkCnt = msgList[1] if len(msgList) > 1 else 0
+ itemAddCnt = msgList[2] if len(msgList) > 2 else 0
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaCnt, atkCnt)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt, itemAddCnt)
+ GameWorld.DebugAnswer(curPlayer, "已讨伐次数:%s, 物品增加次数:%s" % (atkCnt, itemAddCnt))
+
+ elif value1 == "b":
+ totalGetCnt = msgList[1] if len(msgList) > 1 else 0
+ unGetCnt = msgList[2] if len(msgList) > 2 else 0
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, totalGetCnt)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, unGetCnt)
+ GameWorld.DebugAnswer(curPlayer, "已领取宝箱:%s, 未领取:%s" % (totalGetCnt, unGetCnt))
+
+ elif value1 == "t":
+ befSeconds = msgList[1] if len(msgList) > 1 else 0
+ lastTime = int(time.time()) - befSeconds
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, lastTime)
+ GameWorld.DebugAnswer(curPlayer, "上次检查宝箱时间:%s" % (GameWorld.ChangeTimeNumToStr(lastTime)))
+
+ elif value1 == "g":
+ contribCnt = msgList[1] if len(msgList) > 1 else 0
+ boxHurtTotal = msgList[2] if len(msgList) > 2 else None
+ boxHurtTotalHis = msgList[3] if len(msgList) > 3 else None
+ if boxHurtTotal == None:
+ boxHurt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt)
+ boxHurtEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx)
+ boxHurtTotal = boxHurt + boxHurtEx * ChConfig.Def_PerPointValue
+ if boxHurtTotalHis == None:
+ boxHurtHis = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis)
+ boxHurtHisEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx)
+ boxHurtTotalHis = max(boxHurtTotal, boxHurtHis + boxHurtHisEx * ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt, contribCnt)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt, boxHurtTotal % ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx, boxHurtTotal / ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis, boxHurtTotalHis % ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx, boxHurtTotalHis / ChConfig.Def_PerPointValue)
+ GameWorld.DebugAnswer(curPlayer, "已贡献宝箱:%s,总伤害:%s,历史:%s" % (contribCnt, boxHurtTotal, boxHurtTotalHis))
+
+ PlayerFamilyTaofa.SyncTaofaInfo(curPlayer)
+ return
+
+ #添加假砍价
+ gActionData = PlayerFamilyZhenbaoge.GetZhenbaogeActionData(familyID, PlayerFamilyZhenbaoge.ActionGlobalID)
+ if not gActionData:
+ GameWorld.DebugAnswer(curPlayer, "请先重置珍宝阁")
+ return
+
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, PlayerFamilyZhenbaoge.ActionType)
+ actionCount = familyAction.Count()
+
+ fackCount = value1
+ randValue1 = msgList[1] if len(msgList) > 1 else 0
+ randValue2 = msgList[2] if len(msgList) > 2 else 0
+ syncActionDataList = [gActionData]
+ startFackID = 1000 + actionCount
+ FakeName = GameWorld.GbkToCode("假名字")
+ for fackID in range(startFackID, startFackID + fackCount):
+
+ playerID = fackID
+ playerName = "%s%s" % (FakeName, fackID)
+
+ if randValue1 and randValue2 and randValue1 <= randValue2:
+ cutPrice = random.randint(randValue1, randValue2)
+ else:
+ cutPrice = PlayerFamilyZhenbaoge.CalcCutPrice(curFamily, gActionData, playerID)
+
+ if not cutPrice:
+ continue
+
+ actionData = PlayerFamilyZhenbaoge.AddCutPrice(familyID, playerID, playerName, cutPrice, gActionData, False)
+ syncActionDataList.append(actionData)
+ nowPrice = PlayerFamilyZhenbaoge.GetFAPriceFinal(gActionData)
+ GameWorld.DebugAnswer(curPlayer, "砍价人次:%s,砍价:%s,现价:%s" % (fackID % 1000, cutPrice, nowPrice))
+
+ PlayerFamily.SendFamilyAction(syncActionDataList)
+ nowPrice = PlayerFamilyZhenbaoge.GetFAPriceFinal(gActionData)
+ GameWorld.DebugAnswer(curPlayer, "添加假砍价数:%s,总砍价数:%s,当前价格:%s" % (fackCount, familyAction.Count() - 1, nowPrice))
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index 0347383..e22230c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -460,13 +460,13 @@
return -1
curItemID = curItem.GetItemTypeID()
useCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ItemUseCntToday % curItemID)
- for itemIDList in IpyGameDataPY.GetFuncEvalCfg('ShareUseCntItem'):
- if curItemID not in itemIDList:
- continue
- for itemID in itemIDList:
- if itemID == curItemID:
- continue
- useCnt += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ItemUseCntToday % itemID)
+ #for itemIDList in IpyGameDataPY.GetFuncEvalCfg('ShareUseCntItem'):
+ # if curItemID not in itemIDList:
+ # continue
+ # for itemID in itemIDList:
+ # if itemID == curItemID:
+ # continue
+ # useCnt += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ItemUseCntToday % itemID)
canUseCnt = max(0, maxCnt - useCnt)
@@ -608,6 +608,7 @@
ChConfig.Def_Effect_AddRealmExpRate:"Item_AddRealmExpRate", # 增加聚灵效率
ChConfig.Def_Effect_TouchMission:"Item_TouchMission", # 触发任务接口
ChConfig.Def_Effect_HeroSkin:"Item_HeroSkin", # 武将皮肤
+ ChConfig.Def_Effect_FamilyTaofaCnt:"Item_FamilyTaofaCnt", # 增加公会讨伐次数
#ChConfig.Def_Effect_AddArenaBattleCount:"Item_AddArenaBattleCount", # 增加竞技场挑战次数
#ChConfig.Def_Effect_FamilyImpeach:"Item_FamilyImpeach", # 弹劾符
#ChConfig.Def_Effect_ClothesCoatSkin:"Item_ClothesCoatSkin", #激活时装皮肤
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_FamilyTaofaCnt.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_FamilyTaofaCnt.py
new file mode 100644
index 0000000..adaf99f
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_FamilyTaofaCnt.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package UseItem.Item_FamilyTaofaCnt
+#
+# @todo:增加公会讨伐次数
+# @author hxp
+# @date 2025-10-24
+# @version 1.0
+#
+# 详细描述: 增加公会讨伐次数
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-10-24 19:00"""
+#-------------------------------------------------------------------------------
+
+import PlayerFamilyTaofa
+import ItemCommon
+
+def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
+ ##批量使用物品
+ curEff = curRoleItem.GetEffectByIndex(0)
+ addCnt = curEff.GetEffectValue(0) * useCnt
+ PlayerFamilyTaofa.AddTaofaCntByItem(curPlayer, addCnt)
+ ItemCommon.DelItem(curPlayer, curRoleItem, useCnt)
+ return True, useCnt
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 72b8a12..c80f766 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -52,6 +52,7 @@
import PlayerCrossRealmPK
import PlayerCrossChampionship
import GameFuncComm
+import PlayerFamilyTaofa
import PlayerBossReborn
import PlayerWeekParty
import PlayerFeastWeekParty
@@ -3250,6 +3251,9 @@
# 历练秘笈升级
elif rewardType == ChConfig.Def_RewardType_LLMJLVUp:
PlayerLLMJ.OnLLMJLVUp(curPlayer)
+ # 公会讨伐领取宝箱奖励
+ elif rewardType == ChConfig.Def_RewardType_FamilyTaofaBox:
+ PlayerFamilyTaofa.GetTaofaBoxAward(curPlayer)
# 每日免费直购礼包
elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index 8cabe1c..cbff1bf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -24,6 +24,7 @@
import ChPyNetSendPack
import PlayerFamilyEmblem
import PlayerFamilyZhenbaoge
+import PlayerFamilyTaofa
import IPY_PlayerDefine
import IpyGameDataPY
import IPY_GameWorld
@@ -81,8 +82,8 @@
family = familyManager.GetAt(i)
familyID = family.GetID()
- #珍宝阁
PlayerFamilyZhenbaoge.OnDay(family)
+ PlayerFamilyTaofa.OnDay(family)
for index in xrange(family.GetCount()):
member = family.GetAt(index)
@@ -99,6 +100,7 @@
return
ResetDailyDonateCnt(curPlayer)
PlayerFamilyZhenbaoge.PlayerOnDay(curPlayer)
+ PlayerFamilyTaofa.PlayerOnDay(curPlayer)
return
def OnPlayerLogin(curPlayer, tick):
@@ -108,6 +110,7 @@
Sync_RequestAddFamilyInfo(curPlayer, False)
SyncDonateCntInfo(curPlayer)
PlayerFamilyZhenbaoge.OnPlayerLogin(curPlayer)
+ PlayerFamilyTaofa.OnPlayerLogin(curPlayer)
return
def OnPlayerLogout(curPlayer):
@@ -461,6 +464,7 @@
familyMgr = DBDataMgr.GetFamilyMgr()
familyMgr.DelPlayerReqJoinFamilyIDAll(curPlayer.GetPlayerID())
Sync_RequestAddFamilyInfo(curPlayer)
+ PlayerFamilyTaofa.OnPlayerEnterFamily(curPlayer)
return
def __OnLeaveFamily(curPlayer, isVoluntarily, tick):
@@ -495,6 +499,8 @@
delMoney = int(nowMoney * delMoneyPer / 100.0)
GameWorld.DebugLog(" 扣除货币: delMoneyType=%s,delMoneyPer=%s,nowMoney=%s,delMoney=%s" % (delMoneyType, delMoneyPer, nowMoney, delMoney))
PlayerControl.PayMoney(curPlayer, delMoneyType, delMoney, "LeaveFamily")
+
+ PlayerFamilyTaofa.OnPlayerLeaveFamily(curPlayer)
FBLogic.OnLeaveFamily(curPlayer, tick)
return
@@ -1219,6 +1225,7 @@
#XW_JZ_LeaveFamily <n color="0,190,255">{%S1%}</n><n color="255,255,0">退出了家族!</n> 25 - -
NotifyAllFamilyMemberMsg(familyID, "XW_JZ_LeaveFamily", [curPlayer.GetName()])
+ __DoPlayerLeaveFamilyByID(family, playerID, curPlayer)
MapServer_FamilyRefresh(curPlayer, 0, 1)
if family.GetCount() == 0:
@@ -1284,10 +1291,16 @@
#删除玩家
tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(tagMemberID)
+ __DoPlayerLeaveFamilyByID(family, tagPlayerID, tagPlayer)
if tagPlayer:
MapServer_FamilyRefresh(tagPlayer, 0)
Broadcast_FamilyChange(familyID, FamilyChangeType_MemLeave)
+ return
+
+def __DoPlayerLeaveFamilyByID(curFamily, leavePlayerID, tagPlayer=None):
+ ## 有玩家离开家族处理,主要针对家族层级的,玩家个人的在 __OnLeaveFamily 处理
+ PlayerFamilyTaofa.OnFamilyMemberLeave(curFamily, leavePlayerID, tagPlayer)
return
#// A6 11 家族改名 #tagCMRenameFamily
@@ -1604,7 +1617,8 @@
def SendFamilyActionInfo(curPlayer, familyID, actionType):
## 发送家族行为
# @param curPlayer: 为None时通知该仙盟所有成员
-
+ if not familyID:
+ return
familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
clientPack = ChPyNetSendPack.tagMCFamilyActionInfo()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py
new file mode 100644
index 0000000..b79fb12
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyTaofa.py
@@ -0,0 +1,550 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerFamilyTaofa
+#
+# @todo:公会讨伐
+# @author hxp
+# @date 2025-10-24
+# @version 1.0
+#
+# 详细描述: 公会讨伐
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-10-24 19:00"""
+#-------------------------------------------------------------------------------
+
+import ChConfig
+import ShareDefine
+import IpyGameDataPY
+import NetPackCommon
+import ChPyNetSendPack
+import PlayerViewCache
+import ItemControler
+import PlayerControl
+import PlayerFamily
+import GameWorld
+import DBDataMgr
+import ObjPool
+
+import time
+
+ActionType = ShareDefine.Def_ActionType_Taofa
+ActionGlobalID = 1 # 全局记录ID
+
+# 全局记录
+#Time 重置时间戳,前端可用于判断是否变更了不同的讨伐,如GM命令(变更后,前端可重置功能相关缓存数据),后端默认OnDay变更
+#Value1 ActionGlobalID
+def GetFABuzhenEndTime(gActionData): return gActionData.GetValue2() # 布阵层级到期时间戳
+def SetFABuzhenEndTime(gActionData, gEndTime): return gActionData.SetValue2(gEndTime)
+def GetFABuzhenLayer(gActionData): return gActionData.GetValue3() # 当前有效布阵层级
+def SetFABuzhenLayer(gActionData, gLayer): return gActionData.SetValue3(gLayer)
+
+# 成员记录
+#Time 最后一次更新时间,可能是布阵或攻击,可用于宝箱记录的排序
+def SetFAAtkTime(actionData, atkTime): return actionData.SetTime(atkTime) # 最后一次攻击时间戳
+def GetFAPlayerID(actionData): return actionData.GetValue1() # 成员ID
+def SetFAPlayerID(actionData, playerID): return actionData.SetValue1(playerID)
+def GetFABuzhenTime(actionData): return actionData.GetValue2() # 玩家布阵时间戳,为0时仅代表没有在该公会布阵,不代表玩家未布阵
+def SetFABuzhenTime(actionData, bzTime): return actionData.SetValue2(bzTime)
+def GetFAAtkCount(actionData): return actionData.GetValue3() # 到本公会后攻击次数
+def SetFAAtkCount(actionData, faAtkCnt): return actionData.SetValue3(faAtkCnt)
+def GetFAHurtTotal(actionData): return actionData.GetValue4() # 到本公会后累计伤害,求余亿部分,可用于战绩排序
+def SetFAHurtTotal(actionData, faHurtTotal): return actionData.SetValue4(faHurtTotal)
+def GetFAHurtTotalEx(actionData): return actionData.GetValue5() # 到本公会后累计伤害,整除亿部分
+def SetFAHurtTotalEx(actionData, faHurtTotalEx): return actionData.SetValue5(faHurtTotalEx)
+def GetFAContribBoxCnt(actionData): return actionData.GetValue6() # 到本公会后贡献宝箱数
+def SetFAContribBoxCnt(actionData, faContribBoxCnt): return actionData.SetValue6(faContribBoxCnt)
+AtkIndexs = (
+AtkIndex_AtkTime,
+AtkIndex_ContribBoxCnt,
+AtkIndex_HurtValue,
+AtkIndex_AtkType,
+) = range(4)
+#UserDict {"atkList":[[atkTime, 本次贡献箱子数, 本次总伤害, atkType], ...], ...}
+#atkList = actionData.GetUserDict().get("atkList", [])
+#actionData.GetUserDict().update({"atkList":atkList})
+
+AtkType_Normal = 0 # 常规斩杀
+AtkType_Anger = 1 # 怒气斩杀
+
+def OnDay(family):
+ OnTaofaReset(family)
+ return
+
+def PlayerOnDay(curPlayer):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx, 0)
+ SyncTaofaInfo(curPlayer)
+ return
+
+def OnPlayerLogin(curPlayer):
+ familyID = curPlayer.GetFamilyID()
+ curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
+ RefreshPlayerAwardBoxCnt(curFamily, curPlayer, unSyncIDList=[curPlayer.GetPlayerID()])
+ SyncTaofaInfo(curPlayer)
+ PlayerFamily.SendFamilyActionInfo(curPlayer, familyID, ActionType)
+ return
+
+def OnTaofaReset(family):
+ familyID = family.GetID()
+ actionMgr = DBDataMgr.GetFamilyActionMgr()
+ actionMgr.DelFamilyAction(familyID, ActionType)
+
+ familyAction = actionMgr.GetFamilyAction(familyID, ActionType)
+ gActionData = familyAction.AddAction()
+ SetFAPlayerID(gActionData, ActionGlobalID)
+ PlayerFamily.SendFamilyAction(gActionData)
+ return
+
+def OnTaofaResetPlayer(curPlayer):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx, 0)
+ SyncTaofaInfo(curPlayer)
+ return
+
+def OnFamilyMemberLeave(family, leavePlayerID, leavePlayer=None):
+ ## 公会成员删除,针对公会的处理
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(family.GetID(), ActionType)
+ actionData = familyAction.GetActionDataByValue1(leavePlayerID, False)
+ if not actionData:
+ return
+ memInfo = PlayerViewCache.GetPlayerBaseViewInfo(leavePlayerID, leavePlayer)
+ actionData.GetUserDict().update({"info":memInfo})
+ PlayerFamily.SendFamilyAction([actionData])
+ return
+
+def OnPlayerLeaveFamily(curPlayer):
+ ## 玩家退出了公会,针对玩家个人的处理
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
+ SyncTaofaInfo(curPlayer)
+ return
+
+def OnPlayerEnterFamily(curPlayer):
+ ## 玩家进入新公会
+ familyID = curPlayer.GetFamilyID()
+ PlayerFamily.SendFamilyActionInfo(curPlayer, familyID, ActionType)
+ return
+
+def RefreshFamilyBuZhenInfo(family):
+ ## 刷新公会公共布阵信息
+ familyID = family.GetID()
+ curTime = int(time.time())
+ bzDuration = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 4) * 60 # 有效时长秒
+ maxLayer = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 3)
+
+ gLayer = 0
+ gEndTime = 0
+ gActionData = None
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
+ for index in range(0, familyAction.Count()):
+ actionData = familyAction.At(index)
+ dataID = GetFAPlayerID(actionData)
+ if dataID == ActionGlobalID:
+ gActionData = actionData
+ continue
+ bzTime = GetFABuzhenTime(actionData)
+ if not bzTime:
+ continue
+ endTime = bzTime + bzDuration
+ if endTime <= curTime:
+ continue
+
+ if not maxLayer or gLayer < maxLayer:
+ gLayer += 1
+
+ if gEndTime < endTime:
+ gEndTime = endTime
+
+ GameWorld.DebugLog("刷新公会公共布阵信息: familyID=%s,gLayer=%s,gEndTime=%s" % (familyID, gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)))
+ if not gActionData:
+ gActionData = familyAction.AddAction()
+ SetFAPlayerID(gActionData, ActionGlobalID)
+
+ SetFABuzhenEndTime(gActionData, gEndTime)
+ SetFABuzhenLayer(gActionData, gLayer)
+ PlayerFamily.SendFamilyAction(gActionData)
+ return
+
+def RefreshPlayerAwardBoxCnt(family, curPlayer=None, unSyncIDList=[]):
+ ## 刷新玩家可领取的宝箱数
+ # @param curPlayer: None时刷新所有成员
+ if not family:
+ return
+
+ familyID = family.GetID()
+ memContribDict = {}
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
+ for index in range(0, familyAction.Count()):
+ actionData = familyAction.At(index)
+ memID = GetFAPlayerID(actionData)
+ if memID == ActionGlobalID:
+ continue
+ contribList = []
+ atkList = actionData.GetUserDict().get("atkList", [])
+ for atkInfo in atkList:
+ atkTime = atkInfo[AtkIndex_AtkTime]
+ contribBoxCnt = atkInfo[AtkIndex_ContribBoxCnt]
+ if contribBoxCnt > 0:
+ contribList.append([atkTime, contribBoxCnt])
+ if contribList:
+ memContribDict[memID] = contribList
+
+ awardBoxMax = IpyGameDataPY.GetFuncCfg("FamilyTaofaBox", 3)
+ GameWorld.DebugLog("刷新公会成员可领取的宝箱数: familyID=%s,memContribDict=%s" % (familyID, memContribDict))
+ if curPlayer:
+ member = family.FindMember(curPlayer.GetPlayerID())
+ if not member:
+ return
+ __doUpdPlayerAwardBoxCnt(curPlayer, member, memContribDict, awardBoxMax, unSyncIDList)
+ return
+
+ playerManager = GameWorld.GetPlayerManager()
+ for index in xrange(family.GetCount()):
+ member = family.GetAt(index)
+ playerID = member.GetPlayerID()
+ curPlayer = playerManager.FindPlayerByID(playerID)
+ if not curPlayer:
+ continue
+ __doUpdPlayerAwardBoxCnt(curPlayer, member, memContribDict, awardBoxMax, unSyncIDList)
+ return
+
+def __doUpdPlayerAwardBoxCnt(curPlayer, member, memContribDict, awardBoxMax, unSyncIDList):
+ playerID = curPlayer.GetPlayerID()
+ joinTime = member.GetJoinTime()
+ boxLastTime = max(curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime), joinTime) # 与加入时间取最大
+ boxTotalGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt) # 已领取宝箱数
+ boxUnGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt) # 未领取宝箱数
+ canAddBoxMax = awardBoxMax - boxTotalGetCnt - boxUnGetCnt # 还可领取的箱子数
+ if canAddBoxMax <= 0:
+ GameWorld.DebugLog(" 成员可领取宝箱已达上限不刷新: playerID=%s,boxLastTime=%s,boxTotalGetCnt(%s)+boxUnGetCnt(%s) >= %s"
+ % (playerID, boxLastTime, boxTotalGetCnt, boxUnGetCnt, awardBoxMax))
+ return
+
+ updBoxLastTime = boxLastTime
+ addUnGetBox = 0
+ for contribList in memContribDict.values():
+ if addUnGetBox >= canAddBoxMax:
+ break
+ for atkTime, contribBoxCnt in contribList:
+ if boxLastTime >= atkTime:
+ continue
+ updBoxLastTime = max(updBoxLastTime, atkTime)
+ addUnGetBox += contribBoxCnt
+ if addUnGetBox >= canAddBoxMax:
+ break
+
+ if addUnGetBox <= 0:
+ GameWorld.DebugLog(" 成员当前没有可领取的宝箱不刷新: playerID=%s,boxLastTime=%s,boxTotalGetCnt=%s,boxUnGetCnt=%s,awardBoxMax=%s,canAddBoxMax=%s"
+ % (playerID, boxLastTime, boxTotalGetCnt, boxUnGetCnt, awardBoxMax, canAddBoxMax))
+ return
+ updBoxUnGetCnt = boxUnGetCnt + addUnGetBox
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, updBoxUnGetCnt)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, updBoxLastTime)
+ GameWorld.DebugLog(" 成员可领取的宝箱数: playerID=%s,addUnGetBox=%s,updBoxUnGetCnt=%s,updBoxLastTime=%s,boxLastTime=%s,boxTotalGetCnt=%s,boxUnGetCnt=%s,awardBoxMax=%s,canAddBoxMax=%s"
+ % (playerID, addUnGetBox, updBoxUnGetCnt, updBoxLastTime, boxLastTime, boxTotalGetCnt, boxUnGetCnt, awardBoxMax, canAddBoxMax))
+ if not unSyncIDList or playerID not in unSyncIDList:
+ SyncTaofaInfo(curPlayer)
+ return
+
+def AddTaofaCntByItem(curPlayer, addCnt):
+ ## 物品增加副本次数
+ itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt, itemAddCnt + addCnt)
+ SyncTaofaInfo(curPlayer)
+ return
+
+#// A6 13 公会讨伐 #tagCSFamilyTaofaOP
+#
+#struct tagCSFamilyTaofaOP
+#{
+# tagHead Head;
+# BYTE OpType; // 操作:0-斩杀攻击;1-布阵
+#};
+def OnFamilyTaofaOP(index, clientData, tick):
+ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ opType = clientData.OpType
+ playerID = curPlayer.GetPlayerID()
+ familyID = curPlayer.GetFamilyID()
+ if not familyID:
+ GameWorld.DebugLog("没有仙盟无法操作!", playerID)
+ return
+ # 布阵
+ if opType == 1:
+ __doBuzhen(curPlayer)
+ # 斩杀
+ else:
+ __doZhanshaAtk(curPlayer)
+ return
+
+def GetFamilyBuzhenLayer(familyID):
+ ## 获取并刷新当前公会有效布阵层数
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
+ gActionData = familyAction.GetActionDataByValue1(ActionGlobalID, True)
+ gEndTime = GetFABuzhenEndTime(gActionData)
+ gLayer = GetFABuzhenLayer(gActionData)
+ if (gEndTime or gLayer) and int(time.time()) > gEndTime:
+ SetFABuzhenEndTime(gActionData, 0)
+ SetFABuzhenLayer(gActionData, 0)
+ #PlayerFamily.SendFamilyAction(gActionData) 失效不用同步,前端根据EndTime判断即可
+ gEndTime = 0
+ gLayer = 0
+ return gLayer, gActionData
+
+def __doBuzhen(curPlayer):
+ ## 布阵
+ playerID = curPlayer.GetPlayerID()
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState):
+ GameWorld.DebugLog("已布阵过!", playerID)
+ return
+ familyID = curPlayer.GetFamilyID()
+ curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
+ if not curFamily:
+ return
+ gLayer, gActionData = GetFamilyBuzhenLayer(familyID)
+ bzDuration = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 4) * 60 # 有效时长秒
+ maxLayer = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 3)
+ gEndTime = int(time.time()) + bzDuration # 直接覆盖更新
+ if not maxLayer or gLayer < maxLayer:
+ gLayer += 1
+
+ GameWorld.DebugLog("公会讨伐布阵: gLayer=%s,gEndTime=%s" % (gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)), playerID)
+ # 公共信息
+ SetFABuzhenEndTime(gActionData, gEndTime)
+ SetFABuzhenLayer(gActionData, gLayer)
+
+ # 成员信息
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
+ actionData = familyAction.GetActionDataByValue1(playerID, True)
+ SetFABuzhenTime(actionData, int(time.time()))
+
+ PlayerFamily.SendFamilyAction([gActionData, actionData])
+
+ # 个人记录
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState, 1)
+ SyncTaofaInfo(curPlayer)
+ return
+
+def __doZhanshaAtk(curPlayer):
+ ## 斩杀攻击
+ playerID = curPlayer.GetPlayerID()
+ familyID = curPlayer.GetFamilyID()
+ curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
+ if not curFamily:
+ return
+
+ atkCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaCnt)
+ itemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt)
+ freeCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 1)
+ canAtkCnt = freeCnt + itemAddCnt - atkCnt
+ if canAtkCnt <= 0:
+ GameWorld.DebugLog("公会讨伐没有斩杀次数: atkCnt=%s >= freeCnt(%s) + itemAddCnt(%s)" % (atkCnt, freeCnt, itemAddCnt), playerID)
+ return
+
+ atkTime = int(time.time())
+
+ # 计算属性
+ gLayer, _ = GetFamilyBuzhenLayer(familyID)
+ fightPower = PlayerControl.GetFightPower(curPlayer)
+ superRate = IpyGameDataPY.GetFuncCfg("FamilyTaofaBuzhen", 1)
+ superRatio = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 3) # 暴击伤害倍值
+ addSuperRatePerLayer, addDamPerLayer = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaBuzhen", 2)
+ damRatio = 1 # 伤害加成
+ if gLayer > 0:
+ superRate += gLayer * addSuperRatePerLayer
+ damRatio += gLayer * addDamPerLayer / 10000.0
+
+ commAddAnger, superAddAnger, maxAnger = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaAtk", 4)
+ anger = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaAnger)
+
+ GameWorld.DebugLog("---公会讨伐斩杀: fightPower=%s,gLayer=%s,superRate=%s,superRatio=%s,damRatio=%s,anger=%s/%s"
+ % (fightPower, gLayer, superRate, superRatio, damRatio, anger, maxAnger), playerID)
+
+ familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
+ actionData = familyAction.GetActionDataByValue1(playerID, True)
+ faAtkCnt = GetFAAtkCount(actionData)
+ faContribBoxCnt = GetFAContribBoxCnt(actionData)
+ faHurtTotal = GetFAHurtTotal(actionData) + GetFAHurtTotalEx(actionData) * ChConfig.Def_PerPointValue
+ GameWorld.DebugLog("faAtkCnt=%s,faHurtTotal=%s,faContribBoxCnt=%s" % (faAtkCnt, faHurtTotal, faContribBoxCnt), playerID)
+
+ boxContribCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt)
+ boxHurt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt)
+ boxHurtEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx)
+ boxHurtTotal = boxHurt + boxHurtEx * ChConfig.Def_PerPointValue
+ boxHurtHis = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis)
+ boxHurtHisEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx)
+ boxHurtTotalHis = boxHurtHis + boxHurtHisEx * ChConfig.Def_PerPointValue
+ GameWorld.DebugLog("boxContribCnt=%s,boxHurtTotal=%s,boxHurtTotalHis=%s" % (boxContribCnt, boxHurtTotal, boxHurtTotalHis), playerID)
+
+ atkType = AtkType_Normal
+ calcHurtCnt = 1 # 计算伤害次数
+ if anger >= maxAnger:
+ anger -= maxAnger
+ atkType = AtkType_Anger # 怒气攻击
+ calcHurtCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 5)
+
+ hurtTotal = 0 # 本次总伤害
+ hurtList = [] # 伤害列表 [伤害, 是否暴击]
+ for i in range(calcHurtCnt):
+ isSuper = GameWorld.CanHappen(superRate)
+ # 【最终伤害】= 战力*(1+布阵增伤)* 暴击伤害倍值
+ hurtValue = int(fightPower * (superRatio if isSuper else 1) * damRatio)
+ hurtTotal += hurtValue
+ if atkType == AtkType_Normal: # 仅常规斩杀加怒气
+ anger += (superAddAnger if isSuper else commAddAnger)
+ GameWorld.DebugLog("第%s次伤害: isSuper=%s,hurtValue=%s,hurtTotal=%s,anger=%s,atkType=%s" % (i + 1, isSuper, hurtValue, hurtTotal, anger, atkType), playerID)
+ hurtList.append([hurtValue, isSuper])
+
+ faAtkCnt += calcHurtCnt
+ faHurtTotal += hurtTotal
+ boxHurtTotal += hurtTotal
+ GameWorld.DebugLog("更新累计伤害: faAtkCnt=%s,faHurtTotal=%s,boxHurtTotal=%s" % (faAtkCnt, faHurtTotal, boxHurtTotal), playerID)
+
+ # 计算贡献盒子数
+ updContribBoxCnt = 0
+ boxAwardHurtList = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaBox", 1)
+ contribBoxMax = min(IpyGameDataPY.GetFuncCfg("FamilyTaofaBox", 2), 1000) # 可贡献的最大箱子数
+ for needHurt in boxAwardHurtList:
+ if boxHurtTotal < needHurt:
+ break
+ updContribBoxCnt += 1
+ finalAwardHurt = boxAwardHurtList[-1] # 最后一档最大伤害值
+ loopNeedHurt = (finalAwardHurt - boxAwardHurtList[-2]) if len(boxAwardHurtList) > 1 else finalAwardHurt # 最后一档所需伤害值
+ GameWorld.DebugLog("计算常规贡献宝箱: updContribBoxCnt=%s,boxHurtTotal=%s,finalAwardHurt=%s" % (updContribBoxCnt, boxHurtTotal, finalAwardHurt), playerID)
+ if boxHurtTotal > finalAwardHurt:
+ loopHurtTotal = boxHurtTotal - finalAwardHurt
+ loopContribBoxCnt = loopHurtTotal / loopNeedHurt
+ updContribBoxCnt = min(updContribBoxCnt + loopContribBoxCnt, contribBoxMax)
+ GameWorld.DebugLog("计算循环贡献宝箱: updContribBoxCnt=%s,loopHurtTotal=%s,loopNeedHurt=%s,loopContribBoxCnt=%s,contribBoxMax=%s"
+ % (updContribBoxCnt, loopHurtTotal, loopNeedHurt, loopContribBoxCnt, contribBoxMax), playerID)
+ addContribCnt = 0
+ if updContribBoxCnt > boxContribCnt:
+ addContribCnt = updContribBoxCnt - boxContribCnt
+ faContribBoxCnt += addContribCnt
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt, updContribBoxCnt)
+ GameWorld.DebugLog("更新增加贡献宝箱: addContribCnt=%s,updContribBoxCnt=%s,faContribBoxCnt=%s" % (addContribCnt, updContribBoxCnt, faContribBoxCnt), playerID)
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, anger)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt, boxHurtTotal % ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx, boxHurtTotal / ChConfig.Def_PerPointValue)
+ if boxHurtTotal > boxHurtTotalHis:
+ boxHurtTotalHis = boxHurtTotal
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis, boxHurtTotalHis % ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx, boxHurtTotalHis / ChConfig.Def_PerPointValue)
+
+ awardItemList = []
+ # 常规攻击: 给斩杀攻击奖励,加次数
+ if atkType == AtkType_Normal:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaCnt, atkCnt + 1)
+ atkItemAwardList = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaAtk", 2) # 每次斩杀获得个人奖励列表 [[物品ID,个数], ...]
+ awardItemList += atkItemAwardList
+ ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["FamilyTaofa", False, {}], isNotifyAward=False)
+
+ # 更新Action记录
+ SetFAAtkTime(actionData, atkTime)
+ SetFAAtkCount(actionData, faAtkCnt)
+ SetFAHurtTotal(actionData, faHurtTotal % ChConfig.Def_PerPointValue)
+ SetFAHurtTotalEx(actionData, faHurtTotal / ChConfig.Def_PerPointValue)
+ SetFAContribBoxCnt(actionData, faContribBoxCnt)
+ atkList = actionData.GetUserDict().get("atkList", [])
+ atkList.append([atkTime, addContribCnt, hurtTotal, atkType])
+ actionData.GetUserDict().update({"atkList":atkList})
+ PlayerFamily.SendFamilyAction([actionData])
+
+ # 同步: 攻击 -> 宝箱 -> 其他
+ SyncTaofaAtkRet(curPlayer, atkType, hurtList, awardItemList)
+ if addContribCnt:
+ RefreshPlayerAwardBoxCnt(curFamily, unSyncIDList=[playerID])
+ SyncTaofaInfo(curPlayer)
+ return
+
+def GetTaofaBoxAward(curPlayer):
+ boxUnGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt)
+ if not boxUnGetCnt:
+ GameWorld.DebugLog("当前没有可领取的讨伐宝箱!")
+ return
+ awardBoxMax = IpyGameDataPY.GetFuncCfg("FamilyTaofaBox", 3)
+ boxTotalGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt)
+ canGetBoxMax = max(awardBoxMax - boxTotalGetCnt, 0) # 还可领取的箱子数
+ GameWorld.DebugLog("领取宝箱奖励: boxUnGetCnt=%s,canGetBoxMax=%s,boxTotalGetCnt=%s,awardBoxMax=%s" % (boxUnGetCnt, canGetBoxMax, boxTotalGetCnt, awardBoxMax))
+ if boxUnGetCnt > canGetBoxMax:
+ boxUnGetCnt = canGetBoxMax
+ GameWorld.DebugLog("超过可领取上限,修正可领取宝箱数: boxUnGetCnt=%s" % (boxUnGetCnt))
+
+ awardItemDict = {}
+ boxAwardWeightList = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaBox", 4)
+ for _ in range(boxUnGetCnt):
+ awardItem = GameWorld.GetResultByWeightList(boxAwardWeightList)
+ if not awardItem:
+ continue
+ itemID, itemCount = awardItem
+ awardItemDict[itemID] = awardItemDict.get(itemID, 0) + itemCount
+ awardItemList = [[itemID, itemCount] for itemID, itemCount in awardItemDict.items()]
+
+ updTotalGetCnt = boxTotalGetCnt + boxUnGetCnt
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, updTotalGetCnt)
+ GameWorld.DebugLog("领取结果: updTotalGetCnt=%s,awardItemList=%s" % (updTotalGetCnt, awardItemList))
+ SyncTaofaInfo(curPlayer)
+ ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["FamilyTaofaBoxAward", False, {}])
+ return
+
+def SyncTaofaInfo(curPlayer):
+ clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCFamilyTaofaInfo)
+ clientPack.BuZhenState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBuZhenState)
+ clientPack.AtkCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaCnt)
+ clientPack.ItemAddCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt)
+ clientPack.Anger = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaAnger)
+ clientPack.BoxUnGetCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt)
+ clientPack.BoxHurt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt)
+ clientPack.BoxHurtEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx)
+ clientPack.BoxHurtHis = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis)
+ clientPack.BoxHurtHisEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx)
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
+
+def SyncTaofaAtkRet(curPlayer, atkType, hurtList, awardItemList):
+ atkHurtList = []
+ objPool = ObjPool.GetPoolMgr()
+ for totalHurt, isSuper in hurtList:
+ atkHurt = objPool.acquire(ChPyNetSendPack.tagSCFamilyTaofaAtkHurt)
+ atkHurt.IsSuper = isSuper
+ atkHurt.HurtValue = totalHurt % ChConfig.Def_PerPointValue
+ atkHurt.HurtValueEx = totalHurt / ChConfig.Def_PerPointValue
+ atkHurtList.append(atkHurt)
+
+ itemList = []
+ for itemID, itemCount in awardItemList:
+ item = objPool.acquire(ChPyNetSendPack.tagSCFamilyTaofaAtkItem)
+ item.ItemID = itemID
+ item.Count = itemCount
+ itemList.append(item)
+
+ clientPack = objPool.acquire(ChPyNetSendPack.tagSCFamilyTaofaAtkRet)
+ clientPack.AtkType = atkType
+ clientPack.HurtList = atkHurtList
+ clientPack.HurtCount = len(clientPack.HurtList)
+ clientPack.ItemList = itemList
+ clientPack.ItemCount = len(clientPack.ItemList)
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py
index a6c0330..6a8d932 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py
@@ -278,6 +278,39 @@
curCache.SetOffTime(GameWorld.ChangeTimeStrToNum(dbPlayer.LogoffTime) if dbPlayer.LogoffTime else 0)
return curCache
+def GetPlayerBaseViewInfo(playerID, curPlayer=None):
+ ## 获取玩家基础查看信息
+ baseInfo = {}
+ if not curPlayer:
+ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
+ if curPlayer:
+ baseInfo = {
+ "Name":curPlayer.GetPlayerName(),
+ "LV":curPlayer.GetLV(),
+ "Job":curPlayer.GetJob(),
+ "RealmLV":curPlayer.GetOfficialRank(),
+ "Face":curPlayer.GetFace(),
+ "FacePic":curPlayer.GetFacePic(),
+ "TitleID":PlayerControl.GetTitleID(curPlayer),
+ "ServerID":GameWorld.GetPlayerServerID(curPlayer),
+ "FightPower":PlayerControl.GetFightPower(curPlayer),
+ }
+ else:
+ viewCache = FindViewCache(playerID)
+ if viewCache:
+ baseInfo = {
+ "Name":viewCache.GetPlayerName(),
+ "LV":viewCache.GetLV(),
+ "Job":viewCache.GetJob(),
+ "RealmLV":viewCache.GetRealmLV(),
+ "Face":viewCache.GetFace(),
+ "FacePic":viewCache.GetFacePic(),
+ "TitleID":viewCache.GetTitleID(),
+ "ServerID":viewCache.GetServerID(),
+ "FightPower":viewCache.GetFightPowerTotal(),
+ }
+ return baseInfo
+
def GetRobotByViewCache(curCache):
## 根据缓存内容获取机器人数据
if not curCache:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 9083829..2091058 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -899,9 +899,9 @@
#通用信息记录类型
Def_UniversalGameRecTypeList = (
- Def_UniversalGameRecType_XMZZPKInfoRecord, # 仙魔之争信息记录0
+ Def_UniversalGameRecType_0, # 仙魔之争信息记录0
Def_UniversalGameRecType_1,
- Def_UniversalGameRecType_XMZZStageRecord, # 仙魔之争阶段记录2
+ Def_UniversalGameRecType_2, # 仙魔之争阶段记录2
Def_UniversalGameRecType_LVAwardRecord, #玩家等级奖励记录 3
Def_UniversalGameRecType_LimitFBOpenRecord,#限时副本开启时间记录4
Def_UniversalGameRecType_DujieHelpCntRecord, # 渡劫副本护法次数5
@@ -1003,7 +1003,8 @@
Def_ActionType_FamilyEmblem, #仙盟时效徽章信息 15
Def_ActionType_Zhenbaoge, #珍宝阁 16
Def_ActionType_TalkCache, #聊天缓存 17,最大条数配置决定
- ) = range(0, 18)
+ Def_ActionType_Taofa, #公会讨伐 18
+ ) = range(0, 1 + 18)
#家族某行为类型保存的条数
ActionTypeSaveCnt = {
--
Gitblit v1.8.0