From 5d53c14bcda58a13dbbefcd7b344baa22ba9ae76 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 14 九月 2018 16:02:30 +0800
Subject: [PATCH] fix:3580 【后端】【1.1.0】【1.0.15】封魔坛鼓舞修改为N次仙玉鼓舞,去除铜钱鼓舞
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 94 ++++++++++++++++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 4
PySysDB/PySysDBPY.h | 2
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 94 ++++++++++++++++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 36 +++++---
6 files changed, 173 insertions(+), 59 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index b63cbb2..1b38695 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -923,7 +923,7 @@
DWORD _DataMapID; //地图ID
BYTE _InspireType; //鼓舞类型
WORD InspireMaxLV; //鼓舞等级限制
- DWORD MoneyCount; //单次消耗金钱数量
+ char MoneyCount; //单次消耗金钱数量
};
//符印合成表
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 9ba4a46..79008bf 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -11558,19 +11558,15 @@
#------------------------------------------------------
#A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
-class tagMCFBEncourageInfo(Structure):
+class tagMCFBEncourageCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Cnt1", c_ubyte), # 当前铜钱鼓舞次数
- ("Cnt2", c_ubyte), # 当前仙玉鼓舞次数
+ ("MoneyType", c_ubyte), # 金钱类型
+ ("EncourageCnt", c_ubyte), # 当前鼓舞次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -11579,36 +11575,92 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
- self.Cnt1 = 0
- self.Cnt2 = 0
+ self.MoneyType = 0
+ self.EncourageCnt = 0
return
def GetLength(self):
- return sizeof(tagMCFBEncourageInfo)
+ return sizeof(tagMCFBEncourageCnt)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''//A3 0A 副本鼓舞信息通知 //tagMCFBEncourageInfo:
- Cmd:%s,
- SubCmd:%s,
- Cnt1:%d,
- Cnt2:%d
+ MoneyType:%d,
+ EncourageCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.Cnt1,
- self.Cnt2
+ self.MoneyType,
+ self.EncourageCnt
+ )
+ return DumpString
+
+
+class tagMCFBEncourageInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)//
+ InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x0A
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCFBEncourageCnt()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x0A
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
)
return DumpString
m_NAtagMCFBEncourageInfo=tagMCFBEncourageInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Cmd,m_NAtagMCFBEncourageInfo.SubCmd))] = m_NAtagMCFBEncourageInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Head.Cmd,m_NAtagMCFBEncourageInfo.Head.SubCmd))] = m_NAtagMCFBEncourageInfo
#------------------------------------------------------
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
index b600d6f..cab5caa 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
@@ -196,7 +196,7 @@
ipyData = IpyGameDataPY.IPY_Data().GetQuestionBankByIndex(questionID-1)
answerList = eval(ipyData.GetAnswer())
ChContent = PlayerTalk.ChangeVoiceChat(content)
- ChContent = ChContent.decode(GameWorld.GetCharacterEncoding()).encode(ShareDefine.Def_Game_Character_Encoding)
+ ChContent = GameWorld.CodeToGBK(ChContent)
ChContent = ChContent.strip()
isRight = ChContent in answerList
# if curPlayer.GetMapID() != ChConfig.Def_FBMapID_FamilyParty:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 9ba4a46..79008bf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -11558,19 +11558,15 @@
#------------------------------------------------------
#A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
-class tagMCFBEncourageInfo(Structure):
+class tagMCFBEncourageCnt(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Cnt1", c_ubyte), # 当前铜钱鼓舞次数
- ("Cnt2", c_ubyte), # 当前仙玉鼓舞次数
+ ("MoneyType", c_ubyte), # 金钱类型
+ ("EncourageCnt", c_ubyte), # 当前鼓舞次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -11579,36 +11575,92 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x0A
- self.Cnt1 = 0
- self.Cnt2 = 0
+ self.MoneyType = 0
+ self.EncourageCnt = 0
return
def GetLength(self):
- return sizeof(tagMCFBEncourageInfo)
+ return sizeof(tagMCFBEncourageCnt)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''//A3 0A 副本鼓舞信息通知 //tagMCFBEncourageInfo:
- Cmd:%s,
- SubCmd:%s,
- Cnt1:%d,
- Cnt2:%d
+ MoneyType:%d,
+ EncourageCnt:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.Cnt1,
- self.Cnt2
+ self.MoneyType,
+ self.EncourageCnt
+ )
+ return DumpString
+
+
+class tagMCFBEncourageInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)//
+ InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x0A
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCFBEncourageCnt()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x0A
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
)
return DumpString
m_NAtagMCFBEncourageInfo=tagMCFBEncourageInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Cmd,m_NAtagMCFBEncourageInfo.SubCmd))] = m_NAtagMCFBEncourageInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Head.Cmd,m_NAtagMCFBEncourageInfo.Head.SubCmd))] = m_NAtagMCFBEncourageInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index c20332f..a41384c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -1858,7 +1858,7 @@
## 副本行为 - 鼓舞buff
# @param curPlayer 玩家
# @param key 副本玩家字典key
-# @param encourageType 1-铜钱 2-消耗绑玉或仙玉
+# @param encourageType 金钱类型
# @param tick 当前时间
# @param isMaxlv 是否直接满级
# @return None
@@ -1875,21 +1875,20 @@
encourageLV = gameFB.GetPlayerGameFBDictByKey(curPlayerID, key)
encourageCntKey = 'FbEncourageCnt_%s' % encourageType
encourageCnt = gameFB.GetPlayerGameFBDictByKey(curPlayerID, encourageCntKey)
- if encourageLV >= 10:
+ maxLV = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 2, {}).get(curMapID, 0)
+ if encourageLV >= maxLV:
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_93643")
return
if encourageCnt >= maxCnt:
- if encourageType == 1:
+ if encourageType == IPY_GameWorld.TYPE_Price_Silver_Money:
PlayerControl.NotifyCode(curPlayer, "Xjmj_CopperInspireFull")
else:
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_93643")
return
- encourageCost = ipyData.GetMoneyCount()
- if encourageType == 1:
- costMoneyList = [[IPY_GameWorld.TYPE_Price_Silver_Money, encourageCost]]
- else:
- costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, encourageCost)
+ encourageCost = eval(ipyData.GetMoneyCount())
+
+ costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, encourageType, encourageCost)
if not costMoneyList:
return
@@ -1910,7 +1909,8 @@
gameFB.SetPlayerGameFBDict(curPlayerID, key, encourageLV+1)
gameFB.SetPlayerGameFBDict(curPlayerID, encourageCntKey, encourageCnt+1)
#GameWorld.Log("FbEncourageBuff encourage nextLV=%s success" % encourageLV)
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_628920", [(encourageLV+1)*10])
+ addHurtNum = IpyGameDataPY.GetFuncEvalCfg('FBEncourageBuff', 3, {}).get(curMapID, 0)
+ PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_628920", [(encourageLV+1)*addHurtNum])
SendFBEncourageInfo(curPlayer, encourageLV+1)
#成就
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FBEncourage, 1, [curMapID])
@@ -1964,15 +1964,25 @@
# @return None
def SendFBEncourageInfo(curPlayer, lv):
#//A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
+ curMapID = curPlayer.GetMapID()
+ curMapID = GetRecordMapID(curMapID)
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('FbEncourage', {'DataMapID':curMapID}, True)
+ if not ipyDataList:
+ return
encourageInfo = ChPyNetSendPack.tagMCFBEncourageInfo()
encourageInfo.Clear()
- #encourageInfo.LV = lv
+ encourageInfo.InfoList = []
encourageCntKey = 'FbEncourageCnt_%s'
gameFB = GameWorld.GetGameFB()
curPlayerID = curPlayer.GetID()
- encourageInfo.Cnt1 = gameFB.GetPlayerGameFBDictByKey(curPlayerID, encourageCntKey%1)
- encourageInfo.Cnt2 = gameFB.GetPlayerGameFBDictByKey(curPlayerID, encourageCntKey%2)
- NetPackCommon.SendFakePack(curPlayer, encourageInfo)
+ for ipyData in ipyDataList:
+ inspireType = ipyData.GetInspireType()
+ packData = ChPyNetSendPack.tagMCFBEncourageCnt()
+ packData.MoneyType = inspireType
+ packData.EncourageCnt = gameFB.GetPlayerGameFBDictByKey(curPlayerID, encourageCntKey % inspireType)
+ encourageInfo.InfoList.append(packData)
+ encourageInfo.Cnt = len(encourageInfo.InfoList)
+ NetPackCommon.SendFakePack(curPlayer, encourageInfo)
return
## 获取玩家所在副本区域福利倍值
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 713d30a..28dc4ff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -750,7 +750,7 @@
("DWORD", "DataMapID", 1),
("BYTE", "InspireType", 1),
("WORD", "InspireMaxLV", 0),
- ("DWORD", "MoneyCount", 0),
+ ("char", "MoneyCount", 0),
),
"RuneCompound":(
@@ -2466,7 +2466,7 @@
self.DataMapID = 0
self.InspireType = 0
self.InspireMaxLV = 0
- self.MoneyCount = 0
+ self.MoneyCount = ""
return
def GetDataMapID(self): return self.DataMapID # 地图ID
--
Gitblit v1.8.0