9455 【越南】【后端】通天令
# Conflicts:
# ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
| | |
| | | DWORD MagicWeaponExp; //法宝升级经验
|
| | | };
|
| | |
|
| | | //通天令等级表
|
| | |
|
| | | struct tagTongTianLV
|
| | | {
|
| | | WORD _TTLV; //通天令等级
|
| | | WORD LVUPPoint; //升级所需积分(0不可升级)
|
| | | list CommAwardItemList; //常规奖励物品列表 [[物品ID,个数,是否拍品], ...]
|
| | | list XianAwardItemList; //仙品奖励物品列表 [[物品ID,个数,是否拍品], ...]
|
| | | list NotifyItemIDList; //需要广播的物品ID列表
|
| | | };
|
| | |
|
| | | //通天令任务表
|
| | |
|
| | | struct tagTongTianTask
|
| | | {
|
| | | WORD _TTTaskID; //通天任务ID(确定后不可修改)
|
| | | BYTE TTTaskType; //通天任务类型
|
| | | BYTE IsDailyTask; //是否每日任务
|
| | | DWORD FinishNeedValue; //任务完成所需值
|
| | | DWORD TaskPoint; //任务积分点奖励
|
| | | };
|
| | |
|
| | | //法宝表
|
| | |
|
| | | struct tagTreasure
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 56 通天令信息 #tagMCTongTianLingInfo
|
| | |
|
| | | class tagMCTongTianLingInfo(Structure):
|
| | | Head = tagHead()
|
| | | TTLBuyState = 0 #(BYTE TTLBuyState)//通天令是否已购买
|
| | | TTLLV = 0 #(BYTE TTLLV)//通天令等级,从0开始
|
| | | CurPoint = 0 #(DWORD CurPoint)//通天令当前等级经验积分点
|
| | | AwardStateCount = 0 #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录 0-30, 31-61, ...
|
| | | CommAwardStateList = list() #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
|
| | | XianAwardStateList = list() #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x56
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CommAwardStateList.append(value)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.XianAwardStateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x56
|
| | | self.TTLBuyState = 0
|
| | | self.TTLLV = 0
|
| | | self.CurPoint = 0
|
| | | self.AwardStateCount = 0
|
| | | self.CommAwardStateList = list()
|
| | | self.XianAwardStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.AwardStateCount
|
| | | length += 4 * self.AwardStateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TTLBuyState)
|
| | | data = CommFunc.WriteBYTE(data, self.TTLLV)
|
| | | data = CommFunc.WriteDWORD(data, self.CurPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardStateCount)
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TTLBuyState:%d,
|
| | | TTLLV:%d,
|
| | | CurPoint:%d,
|
| | | AwardStateCount:%d,
|
| | | CommAwardStateList:%s,
|
| | | XianAwardStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TTLBuyState,
|
| | | self.TTLLV,
|
| | | self.CurPoint,
|
| | | self.AwardStateCount,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
|
| | |
|
| | | class tagMCTongTianLingTaskAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | AwardStateCount = 0 #(BYTE AwardStateCount)
|
| | | TaskAwardStateList = list() #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录 0-30, 31-61, ...
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x58
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TaskAwardStateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x58
|
| | | self.AwardStateCount = 0
|
| | | self.TaskAwardStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.AwardStateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.AwardStateCount)
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AwardStateCount:%d,
|
| | | TaskAwardStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AwardStateCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
|
| | |
|
| | | class tagMCTongTianLingTaskValue(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TaskType", c_ubyte), #成就类型
|
| | | ("IsDaily", c_ubyte), #是否每日任务
|
| | | ("TaskValue", 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.TaskType = 0
|
| | | self.IsDaily = 0
|
| | | self.TaskValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTongTianLingTaskValue)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
|
| | | TaskType:%d,
|
| | | IsDaily:%d,
|
| | | TaskValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.TaskType,
|
| | | self.IsDaily,
|
| | | self.TaskValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTongTianLingTaskValueInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//信息个数
|
| | | TaskValueList = list() #(vector<tagMCTongTianLingTaskValue> TaskValueList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x57
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temTaskValueList = tagMCTongTianLingTaskValue()
|
| | | _pos = temTaskValueList.ReadData(_lpData, _pos)
|
| | | self.TaskValueList.append(temTaskValueList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x57
|
| | | self.Count = 0
|
| | | self.TaskValueList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.TaskValueList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | TaskValueList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 01 坐骑培养信息 #tagTrainHorseData
|
| | |
|
| | | class tagTrainHorseData(Structure):
|
| | |
| | | PacketSubCMD_1=0x42
|
| | | PacketCallFunc_1=OnGetSuccessAward
|
| | |
|
| | | ;通天令
|
| | | [PlayerTongTianLing]
|
| | | ScriptName = Player\PlayerTongTianLing
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 4
|
| | |
|
| | | PacketCMD_1=0xA5
|
| | | PacketSubCMD_1=0x43
|
| | | PacketCallFunc_1=OnGetTongTianTaskAward
|
| | |
|
| | | PacketCMD_2=0xA5
|
| | | PacketSubCMD_2=0x44
|
| | | PacketCallFunc_2=OnGetTongTianLVAward
|
| | |
|
| | | PacketCMD_3=0xA5
|
| | | PacketSubCMD_3=0x45
|
| | | PacketCallFunc_3=OnExchangeTongTianLVPoint
|
| | |
|
| | | PacketCMD_4=0xA5
|
| | | PacketSubCMD_4=0x46
|
| | | PacketCallFunc_4=OnBuyTongTianLing
|
| | |
|
| | | ;大师天赋
|
| | | [PlayerGreatMaster]
|
| | | ScriptName = Player\PlayerGreatMaster.py
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 56 通天令信息 #tagMCTongTianLingInfo
|
| | |
|
| | | class tagMCTongTianLingInfo(Structure):
|
| | | Head = tagHead()
|
| | | TTLBuyState = 0 #(BYTE TTLBuyState)//通天令是否已购买
|
| | | TTLLV = 0 #(BYTE TTLLV)//通天令等级,从0开始
|
| | | CurPoint = 0 #(DWORD CurPoint)//通天令当前等级经验积分点
|
| | | AwardStateCount = 0 #(BYTE AwardStateCount)//等级领奖记录值数,每个值存31个记录 0-30, 31-61, ...
|
| | | CommAwardStateList = list() #(vector<DWORD> CommAwardStateList)//常规奖励领奖记录,按等级二进制位存储是否领奖
|
| | | XianAwardStateList = list() #(vector<DWORD> XianAwardStateList)//仙品奖励领奖记录,按等级二进制位存储是否领奖
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x56
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TTLBuyState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TTLLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CommAwardStateList.append(value)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.XianAwardStateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x56
|
| | | self.TTLBuyState = 0
|
| | | self.TTLLV = 0
|
| | | self.CurPoint = 0
|
| | | self.AwardStateCount = 0
|
| | | self.CommAwardStateList = list()
|
| | | self.XianAwardStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.AwardStateCount
|
| | | length += 4 * self.AwardStateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TTLBuyState)
|
| | | data = CommFunc.WriteBYTE(data, self.TTLLV)
|
| | | data = CommFunc.WriteDWORD(data, self.CurPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardStateCount)
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.CommAwardStateList[i])
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.XianAwardStateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TTLBuyState:%d,
|
| | | TTLLV:%d,
|
| | | CurPoint:%d,
|
| | | AwardStateCount:%d,
|
| | | CommAwardStateList:%s,
|
| | | XianAwardStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TTLBuyState,
|
| | | self.TTLLV,
|
| | | self.CurPoint,
|
| | | self.AwardStateCount,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingInfo=tagMCTongTianLingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingInfo.Head.Cmd,m_NAtagMCTongTianLingInfo.Head.SubCmd))] = m_NAtagMCTongTianLingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 58 通天令任务奖励信息 #tagMCTongTianLingTaskAwardInfo
|
| | |
|
| | | class tagMCTongTianLingTaskAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | AwardStateCount = 0 #(BYTE AwardStateCount)
|
| | | TaskAwardStateList = list() #(vector<DWORD> TaskAwardStateList)//任务领奖记录值个数,按任务ID二进制位存储是否已领取,每个值存31个记录 0-30, 31-61, ...
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x58
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AwardStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardStateCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.TaskAwardStateList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x58
|
| | | self.AwardStateCount = 0
|
| | | self.TaskAwardStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.AwardStateCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.AwardStateCount)
|
| | | for i in range(self.AwardStateCount):
|
| | | data = CommFunc.WriteDWORD(data, self.TaskAwardStateList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AwardStateCount:%d,
|
| | | TaskAwardStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AwardStateCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingTaskAwardInfo=tagMCTongTianLingTaskAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskAwardInfo.Head.Cmd,m_NAtagMCTongTianLingTaskAwardInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 57 通天令任务进度信息 #tagMCTongTianLingTaskValueInfo
|
| | |
|
| | | class tagMCTongTianLingTaskValue(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TaskType", c_ubyte), #成就类型
|
| | | ("IsDaily", c_ubyte), #是否每日任务
|
| | | ("TaskValue", 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.TaskType = 0
|
| | | self.IsDaily = 0
|
| | | self.TaskValue = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTongTianLingTaskValue)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 57 通天令任务进度信息 //tagMCTongTianLingTaskValueInfo:
|
| | | TaskType:%d,
|
| | | IsDaily:%d,
|
| | | TaskValue:%d
|
| | | '''\
|
| | | %(
|
| | | self.TaskType,
|
| | | self.IsDaily,
|
| | | self.TaskValue
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTongTianLingTaskValueInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//信息个数
|
| | | TaskValueList = list() #(vector<tagMCTongTianLingTaskValue> TaskValueList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x57
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temTaskValueList = tagMCTongTianLingTaskValue()
|
| | | _pos = temTaskValueList.ReadData(_lpData, _pos)
|
| | | self.TaskValueList.append(temTaskValueList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x57
|
| | | self.Count = 0
|
| | | self.TaskValueList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.TaskValueList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | TaskValueList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTongTianLingTaskValueInfo=tagMCTongTianLingTaskValueInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTongTianLingTaskValueInfo.Head.Cmd,m_NAtagMCTongTianLingTaskValueInfo.Head.SubCmd))] = m_NAtagMCTongTianLingTaskValueInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 01 坐骑培养信息 #tagTrainHorseData
|
| | |
|
| | | class tagTrainHorseData(Structure):
|
| | |
| | | import NetPackCommon
|
| | | import PlayerWeekParty
|
| | | import PlayerActGarbageSorting
|
| | | import PlayerTongTianLing
|
| | | #-------------------------------------------------------------------------------------------
|
| | |
|
| | | #===============================================================================
|
| | |
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_EquipPlus)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Plus, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Plus, 1)
|
| | | return
|
| | |
|
| | | def __EquipMayaPlusChange(curPlayer, packType, curEquip, index, updPlusLV):
|
| | |
| | | import IPY_GameWorld
|
| | | import DataRecordPack
|
| | | import PlayerAuctionHouse
|
| | | import PlayerTongTianLing
|
| | | import PlayerWeekParty
|
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | |
| | | curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitEquipStarUp, result)
|
| | | DataRecordPack.SendEventPack("EquipStarUp", drDict, curPlayer)
|
| | |
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Star, 1)
|
| | | |
| | | if not isOK:
|
| | | return
|
| | |
|
| | |
| | | import PlayerControl
|
| | | import PlayerSuccess
|
| | | import IPY_GameWorld
|
| | | import PlayerTongTianLing
|
| | | import PlayerActGarbageSorting
|
| | | import DataRecordPack
|
| | | import PlayerActLogin
|
| | |
| | | RefreshEquipWashAttr(curPlayer, classLV)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipWash, 1)
|
| | | PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_EquipWash)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Wash, 1)
|
| | | return
|
| | |
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.TTL
|
| | | #
|
| | | # @todo:通天令
|
| | | # @author hxp
|
| | | # @date 2022-01-17
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 通天令
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2022-01-17 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import PlayerControl
|
| | | import PlayerTongTianLing
|
| | | import IpyGameDataPY
|
| | | import ChConfig
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #逻辑实现
|
| | | ## GM命令执行入口
|
| | | # @param curPlayer 当前玩家
|
| | | # @param paramList 参数列表
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, paramList):
|
| | | |
| | | if not paramList:
|
| | | GameWorld.DebugAnswer(curPlayer, "重置通天所有: TTL 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置通天等级: TTL 0 1")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置通天任务: TTL 0 2")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置通天等级: TTL 1 等级 经验 是否激活通天令")
|
| | | GameWorld.DebugAnswer(curPlayer, "增加通天任务: TTL 2 任务类型 增加进度值")
|
| | | return
|
| | | |
| | | value = paramList[0]
|
| | | if not value:
|
| | | value1 = paramList[1] if len(paramList) > 1 else 0
|
| | | if value1 == 1:
|
| | | resetTTLV(curPlayer)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置通天等级OK!")
|
| | | elif value1 == 2:
|
| | | resetTTTask(curPlayer)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置通天任务OK!")
|
| | | else:
|
| | | resetTTLV(curPlayer)
|
| | | resetTTTask(curPlayer)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置通天所有OK!")
|
| | | |
| | | return
|
| | | |
| | | if value == 1:
|
| | | ttLV, ttState = PlayerTongTianLing.GetTongTianLingLVInfo(curPlayer)
|
| | | ttLV = paramList[1] if len(paramList) > 1 else ttLV
|
| | | setPoint = paramList[2] if len(paramList) > 2 else 0
|
| | | setState = paramList[3] if len(paramList) > 3 else ttState
|
| | | |
| | | ttLV = min(ttLV, IpyGameDataPY.IPY_Data().GetTongTianLVCount() - 1)
|
| | | ttState = 1 if setState else 0
|
| | | PlayerTongTianLing.SetTongTianLingLVInfo(curPlayer, ttLV, ttState)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, setPoint)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置通天等级: LV=%s,expPoint=%s,state=%s" % (ttLV, setPoint, ttState))
|
| | | PlayerTongTianLing.SyncTongTianLVInfo(curPlayer)
|
| | | |
| | | elif value == 2:
|
| | | ttTaskType = paramList[1] if len(paramList) > 1 else 0
|
| | | addValue = paramList[2] if len(paramList) > 2 else 0
|
| | | GameWorld.DebugAnswer(curPlayer, "增加通天任务进度: taskType=%s,addVlue=%s" % (ttTaskType, addValue))
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ttTaskType, addValue)
|
| | | |
| | | return
|
| | |
|
| | | def resetTTTask(curPlayer):
|
| | | |
| | | for i in xrange(10):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord % i, 0)
|
| | | |
| | | syncTaskInfoList = []
|
| | | for ttTaskType in ChConfig.TTLTaskTypeList:
|
| | | for isDailyTask in [0, 1]:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
|
| | | if not curValue:
|
| | | continue
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), 0)
|
| | | syncTaskInfoList.append([ttTaskType, isDailyTask])
|
| | | PlayerTongTianLing.SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
|
| | | PlayerTongTianLing.SyncTongTianTaskAward(curPlayer)
|
| | | return
|
| | |
|
| | | def resetTTLV(curPlayer):
|
| | | for i in xrange(10):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord % i, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord % i, 0)
|
| | | PlayerTongTianLing.SetTongTianLingLVInfo(curPlayer, 0, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, 0)
|
| | | PlayerTongTianLing.SyncTongTianLVInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
|
| | |
| | | import EventReport
|
| | | import SkillCommon
|
| | | import PlayerWeekParty
|
| | | import PlayerTongTianLing
|
| | |
|
| | | import random
|
| | | import time
|
| | |
| | | GameWorld.GetGameWorld().SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, 0)
|
| | | EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_ElderBattlefield, 0, ChConfig.CME_Log_Start)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_ElderBattlefield, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_ElderBattlefield, 1)
|
| | | else:
|
| | | rebornBuffLV = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_RebornBuffLV)
|
| | | __DoAddRebornBuff(curPlayer, rebornBuffLV, tick)
|
| | |
| | | import IPY_GameWorld
|
| | | import PlayerControl
|
| | | import GameWorld
|
| | | import PlayerTongTianLing
|
| | | import NPCCustomRefresh
|
| | | import IpyGameDataPY
|
| | | import PlayerFamily
|
| | |
| | | PyGameData.g_familyBossPlayer[familyID] = familyPlayerList
|
| | | GameWorld.DebugLog("仙盟参与玩家: %s" % PyGameData.g_familyBossPlayer)
|
| | | EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyBossMap, openCount, ChConfig.CME_Log_Start)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_FamilyBoss, 1)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | import SkillCommon
|
| | | import BuffSkill
|
| | | import PlayerFamily
|
| | | import PlayerTongTianLing
|
| | |
|
| | | Map_FamilyInvadeFB_FamilyID = "FamilyPartyFB_FamilyID" # 对应的家族id
|
| | | Map_FamilyInvadeFB_KillNPCCnt = "FamilyInvadeFB_KillNPCCnt" # 已击杀数量
|
| | |
| | | FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_FamilyInvade)
|
| | | EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyInvade, 0, ChConfig.CME_Log_Start)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_SWRH, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_SWRH, 1)
|
| | | if familyID in PyGameData.g_swrhPlayerIDDict:
|
| | | if playerID not in PyGameData.g_swrhPlayerIDDict[familyID]:
|
| | | PyGameData.g_swrhPlayerIDDict[familyID].append(playerID)
|
| | |
| | | import PlayerTalk
|
| | | import PlayerActivity
|
| | | import PlayerWeekParty
|
| | | import PlayerTongTianLing
|
| | |
|
| | | #---战盟副本---
|
| | | FBPlayerDict_TagPlayerID = 'XMYH_TagPlayerID%s' # 邀请传功目标玩家ID
|
| | |
| | | PlayerControl.PlayerControl(curPlayer).AddExp(addExp, ShareDefine.Def_ViewExpType_SysEx)
|
| | | PlayerControl.FamilyNotify(curPlayer.GetFamilyID(), 'Party_Answer', [curPlayer.GetName(), rightItemID])
|
| | | curAnswerCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, curAnswerCnt + 1) |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyAnswerCnt, curAnswerCnt + 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_FamilyPartyAnswerRight, 1)
|
| | |
|
| | | if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_FamilyParty:
|
| | | DoFBHelp(curPlayer, 0)
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartySitState, 1)
|
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyChuanGong)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FamilyChuanGong, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_ChuanGong, 1)
|
| | | DoFBHelp(curPlayer, 0)
|
| | |
|
| | | #帮助传功奖励
|
| | |
| | | import NPCCommon
|
| | | import GameObj
|
| | | import EventShell
|
| | | import PlayerTongTianLing
|
| | |
|
| | | FBPlayerDict_EncourageLV = 'FBPlayerDict_EncourageLV' # 鼓舞等级
|
| | | FBDict_IsOver = 'FBDict_IsOver' #是否已结算, 结算时的tick
|
| | |
| | | FBCommon.SetHadDelTicket(curPlayer)
|
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_HorsePetBoss, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_HorsePetBoss, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_HorsePetBoss, 1)
|
| | | EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_HorsePetBoss, 0, ChConfig.CME_Log_Start)
|
| | | EventShell.EventRespons_HorsePetBoss(curPlayer)
|
| | | if fbStep == FB_Step_Open:
|
| | |
| | | import PyGameData
|
| | | import GameWorld
|
| | | import ChConfig
|
| | | import PlayerTongTianLing
|
| | |
|
| | | (
|
| | | Def_Time_MapPrepare, # 准备时间, 秒
|
| | |
| | | FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_Love)
|
| | | PyGameData.g_fbPickUpItemDict.pop(playerID, 0)
|
| | | gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnterState, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_LoveFB, 1)
|
| | |
|
| | | if fbStep == FB_Step_Open:
|
| | | FBCommon.SetFBStep(FB_Step_MapPrepare, tick)
|
| | |
| | | ("DWORD", "MagicWeaponExp", 0),
|
| | | ),
|
| | |
|
| | | "TongTianLV":(
|
| | | ("WORD", "TTLV", 1),
|
| | | ("WORD", "LVUPPoint", 0),
|
| | | ("list", "CommAwardItemList", 0),
|
| | | ("list", "XianAwardItemList", 0),
|
| | | ("list", "NotifyItemIDList", 0),
|
| | | ),
|
| | |
|
| | | "TongTianTask":(
|
| | | ("WORD", "TTTaskID", 1),
|
| | | ("BYTE", "TTTaskType", 0),
|
| | | ("BYTE", "IsDailyTask", 0),
|
| | | ("DWORD", "FinishNeedValue", 0),
|
| | | ("DWORD", "TaskPoint", 0),
|
| | | ),
|
| | |
|
| | | "Treasure":(
|
| | | ("DWORD", "ID", 1),
|
| | | ("BYTE", "TreasureType", 0),
|
| | |
| | | def GetRedPacketID(self): return self.RedPacketID # 红包ID
|
| | | def GetMagicWeaponID(self): return self.MagicWeaponID # 法宝ID
|
| | | def GetMagicWeaponExp(self): return self.MagicWeaponExp # 法宝升级经验 |
| | | |
| | | # 通天令等级表 |
| | | class IPY_TongTianLV(): |
| | | |
| | | def __init__(self): |
| | | self.TTLV = 0
|
| | | self.LVUPPoint = 0
|
| | | self.CommAwardItemList = []
|
| | | self.XianAwardItemList = []
|
| | | self.NotifyItemIDList = [] |
| | | return |
| | | |
| | | def GetTTLV(self): return self.TTLV # 通天令等级
|
| | | def GetLVUPPoint(self): return self.LVUPPoint # 升级所需积分(0不可升级)
|
| | | def GetCommAwardItemList(self): return self.CommAwardItemList # 常规奖励物品列表 [[物品ID,个数,是否拍品], ...]
|
| | | def GetXianAwardItemList(self): return self.XianAwardItemList # 仙品奖励物品列表 [[物品ID,个数,是否拍品], ...]
|
| | | def GetNotifyItemIDList(self): return self.NotifyItemIDList # 需要广播的物品ID列表 |
| | | |
| | | # 通天令任务表 |
| | | class IPY_TongTianTask(): |
| | | |
| | | def __init__(self): |
| | | self.TTTaskID = 0
|
| | | self.TTTaskType = 0
|
| | | self.IsDailyTask = 0
|
| | | self.FinishNeedValue = 0
|
| | | self.TaskPoint = 0 |
| | | return |
| | | |
| | | def GetTTTaskID(self): return self.TTTaskID # 通天任务ID(确定后不可修改)
|
| | | def GetTTTaskType(self): return self.TTTaskType # 通天任务类型
|
| | | def GetIsDailyTask(self): return self.IsDailyTask # 是否每日任务
|
| | | def GetFinishNeedValue(self): return self.FinishNeedValue # 任务完成所需值
|
| | | def GetTaskPoint(self): return self.TaskPoint # 任务积分点奖励 |
| | | |
| | | # 法宝表 |
| | | class IPY_Treasure(): |
| | |
| | | self.ipyEquipGSParamLen = len(self.ipyEquipGSParamCache)
|
| | | self.ipySuccessCache = self.__LoadFileData("Success", IPY_Success)
|
| | | self.ipySuccessLen = len(self.ipySuccessCache)
|
| | | self.ipyTongTianLVCache = self.__LoadFileData("TongTianLV", IPY_TongTianLV)
|
| | | self.ipyTongTianLVLen = len(self.ipyTongTianLVCache)
|
| | | self.ipyTongTianTaskCache = self.__LoadFileData("TongTianTask", IPY_TongTianTask)
|
| | | self.ipyTongTianTaskLen = len(self.ipyTongTianTaskCache)
|
| | | self.ipyTreasureCache = self.__LoadFileData("Treasure", IPY_Treasure)
|
| | | self.ipyTreasureLen = len(self.ipyTreasureCache)
|
| | | self.ipyTreasureUpCache = self.__LoadFileData("TreasureUp", IPY_TreasureUp)
|
| | |
| | | def GetEquipGSParamByIndex(self, index): return self.ipyEquipGSParamCache[index]
|
| | | def GetSuccessCount(self): return self.ipySuccessLen
|
| | | def GetSuccessByIndex(self, index): return self.ipySuccessCache[index]
|
| | | def GetTongTianLVCount(self): return self.ipyTongTianLVLen
|
| | | def GetTongTianLVByIndex(self, index): return self.ipyTongTianLVCache[index]
|
| | | def GetTongTianTaskCount(self): return self.ipyTongTianTaskLen
|
| | | def GetTongTianTaskByIndex(self, index): return self.ipyTongTianTaskCache[index]
|
| | | def GetTreasureCount(self): return self.ipyTreasureLen
|
| | | def GetTreasureByIndex(self, index): return self.ipyTreasureCache[index]
|
| | | def GetTreasureUpCount(self): return self.ipyTreasureUpLen
|
| | |
| | | import PlayerNewFairyCeremony
|
| | | import GameLogic_CrossGrassland
|
| | | import PlayerActGarbageSorting
|
| | | import PlayerTongTianLing
|
| | | import CrossPlayerData
|
| | | import PlayerFeastWish
|
| | | import PlayerFeastTravel
|
| | |
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_WorldBoss, 1)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1)
|
| | |
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_WorldBoss, 1)
|
| | | |
| | | elif limitIndex == ShareDefine.Def_Boss_Func_Home:
|
| | | #BOSS之家
|
| | | # BOSS之家BOSS击杀成就
|
| | |
| | |
|
| | | if mapID in [ChConfig.Def_FBMapID_CrossPenglai, ChConfig.Def_FBMapID_CrossDemonLand]:
|
| | | PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_CrossBoss)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossBoss, 1)
|
| | | else:
|
| | | PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss)
|
| | |
|
| | |
| | | import CrossActCTGBillboard
|
| | | import PlayerFuncSysPrivilege
|
| | | import PlayerActTurntable
|
| | | import PlayerTongTianLing
|
| | | import CrossRealmPlayer
|
| | | import ChNetSendPack
|
| | | import FamilyRobBoss
|
| | |
| | | SkillShell.NotifyElementSkillInfo(curPlayer)
|
| | | #Boss首杀
|
| | | GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
|
| | | #通天令
|
| | | PlayerTongTianLing.OnPlayerLogin(curPlayer)
|
| | | #创角奖励
|
| | | Sync_CreateRoleAwardInfo(curPlayer)
|
| | | #功能系统特权
|
| | |
| | | import FormulaControl
|
| | | import PlayerBossReborn
|
| | | import PlayerActGarbageSorting
|
| | | import PlayerTongTianLing
|
| | |
|
| | | #关联类型
|
| | | (
|
| | |
| | | __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, curTotalPoint + addValue)
|
| | | __AddCanCostActivityPoint(curPlayer, addValue, isLVUp)
|
| | | PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_Activity, addValue)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Activity, addValue)
|
| | | PlayerControl.NotifyCode(curPlayer, "GetActivity", [addValue])
|
| | | SyncDailyActivityInfo(curPlayer)
|
| | | EventShell.EventRespons_AddActivityValue(curPlayer)
|
| | |
| | | import PlayerActivity
|
| | | import ChPyNetSendPack
|
| | | import CrossRealmPlayer
|
| | | import PlayerTongTianLing
|
| | | import FunctionNPCCommon
|
| | | import PlayerActGarbageSorting
|
| | | import DataRecordPack
|
| | |
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_CrossPK, 1)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_CrossPK, 1)
|
| | | PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_CrossPK)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossPK, 1)
|
| | | else:
|
| | | GameWorld.Log(" 不同天的PK结算不增加今日PK次数! ", playerID)
|
| | |
|
| | |
| | | import PlayerActivity
|
| | | import PlayerSuccess
|
| | | import ItemCommon
|
| | | import PlayerTongTianLing
|
| | |
|
| | |
|
| | | ## OnLogin
|
| | |
| | | if not __DoDicelogic(curPlayer):
|
| | | return
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_Dice, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Dice, 1)
|
| | |
|
| | | elif diceType == 1:
|
| | | if not diceResult:
|
| | |
| | | import PlayerLuckyCloudBuy
|
| | | import PlayerLuckyTreasure
|
| | | import PlayerAuctionHouse
|
| | | import PlayerTongTianLing
|
| | | import PlayerRefineStove
|
| | | import PlayerFlashSale
|
| | | import PlayerWishingWell
|
| | |
| | | PlayerArena.OnDayEx(curPlayer)
|
| | | #协助
|
| | | PlayerAssist.DoPlayerOnDay(curPlayer)
|
| | | #通天令
|
| | | PlayerTongTianLing.OnDay(curPlayer)
|
| | | #特殊时间点过天的,一般是游戏功能,此时立即同步一次跨服玩家数据
|
| | | CrossPlayerData.SendMergePlayerDataNow(curPlayer)
|
| | |
|
| | |
| | | import DataRecordPack
|
| | | import ChPyNetSendPack
|
| | | import PlayerMagicWeapon
|
| | | import PlayerTongTianLing
|
| | | import PlayerPet
|
| | | import PlayerControl
|
| | | import GameWorld
|
| | |
| | | curEffect = signDayAttrSkill.GetEffect(0)
|
| | | PlayerControl.NotifyCode(curPlayer, "SignInText2", [ChConfig.Def_SkillID_PetSignDay, curEffect.GetEffectID(), curEffect.GetEffectValue(0)])
|
| | |
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Sign, 1)
|
| | | return
|
| | |
|
| | | ## 签到总奖励天数
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Player.PlayerTongTianLing
|
| | | #
|
| | | # @todo:通天令
|
| | | # @author hxp
|
| | | # @date 2022-01-17
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 通天令
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2022-01-17 19:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import ItemControler
|
| | | import ChConfig
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | SyncTongTianLVInfo(curPlayer)
|
| | | SyncTongTianTaskInfo(curPlayer)
|
| | | SyncTongTianTaskAward(curPlayer)
|
| | | return
|
| | |
|
| | | def OnDay(curPlayer):
|
| | | |
| | | resetTaskTypeList, resetTaskIDList = [], []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetTongTianTaskCount()):
|
| | | ipyData = ipyDataMgr.GetTongTianTaskByIndex(index)
|
| | | if not ipyData.GetIsDailyTask():
|
| | | continue
|
| | | ttTaskID = ipyData.GetTTTaskID()
|
| | | ttTaskType = ipyData.GetTTTaskType()
|
| | | resetTaskTypeList.append(ttTaskType)
|
| | | |
| | | if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID):
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID, 0)
|
| | | resetTaskIDList.append(ttTaskID)
|
| | | |
| | | isDailyTask = 1 # 只处理每日重置的任务
|
| | | syncTaskInfoList = []
|
| | | for ttTaskType in resetTaskTypeList:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
|
| | | if not curValue:
|
| | | continue
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), 0)
|
| | | syncTaskInfoList.append([ttTaskType, isDailyTask])
|
| | | |
| | | if syncTaskInfoList:
|
| | | #GameWorld.DebugLog("重置通天任务进度: syncTaskInfoList=%s" % syncTaskInfoList)
|
| | | SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
|
| | | |
| | | if resetTaskIDList:
|
| | | #GameWorld.DebugLog("重置通天任务奖励: resetTaskIDList=%s" % resetTaskIDList)
|
| | | SyncTongTianTaskAward(curPlayer)
|
| | | |
| | | return
|
| | |
|
| | | def GetTongTianLingLVInfo(curPlayer):
|
| | | ## 获取通天令等级状态信息
|
| | | # @return: 通天令等级, 是否激活通天令
|
| | | lvInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVInfo)
|
| | | ttLV, ttState = lvInfo / 10, lvInfo % 10
|
| | | return ttLV, ttState
|
| | |
|
| | | def SetTongTianLingLVInfo(curPlayer, ttLV, ttState):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVInfo, ttLV * 10 + ttState)
|
| | | return
|
| | |
|
| | | def AddTongTianTaskValue(curPlayer, ttTaskType, addValue):
|
| | | ## 增加通天令任务进度
|
| | | |
| | | taskIpyList = IpyGameDataPY.GetIpyGameDataByCondition("TongTianTask", {"TTTaskType":ttTaskType}, True, False)
|
| | | if not taskIpyList:
|
| | | return
|
| | | |
| | | addValueDict = {}
|
| | | for ipyData in taskIpyList:
|
| | | taskID = ipyData.GetTTTaskID()
|
| | | if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, taskID):
|
| | | # 已领奖的不再处理
|
| | | continue
|
| | | isDailyTask = ipyData.GetIsDailyTask()
|
| | | finishNeedValue = ipyData.GetFinishNeedValue()
|
| | | maxValue = addValueDict.get((ttTaskType, isDailyTask), 0)
|
| | | if finishNeedValue > maxValue:
|
| | | addValueDict[(ttTaskType, isDailyTask)] = finishNeedValue
|
| | | |
| | | syncTaskInfoList = []
|
| | | for key, finishNeedValue in addValueDict.items():
|
| | | ttTaskType, isDailyTask = key
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
|
| | | if curValue >= finishNeedValue:
|
| | | continue
|
| | | updValue = min(curValue + addValue, finishNeedValue)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask), updValue)
|
| | | #GameWorld.DebugLog("更新通天令任务进度: ttTaskType=%s,isDailyTask=%s,curValue=%s,addValue=%s,updValue=%s" |
| | | # % (ttTaskType, isDailyTask, curValue, addValue, updValue), curPlayer.GetPlayerID())
|
| | | syncTaskInfoList.append([ttTaskType, isDailyTask])
|
| | | |
| | | if syncTaskInfoList:
|
| | | SyncTongTianTaskInfo(curPlayer, syncTaskInfoList)
|
| | | |
| | | return
|
| | |
|
| | | def AddTongTianPoint(curPlayer, addPoint):
|
| | | ## 增加通天令经验点
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
|
| | | ttPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVPoint)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("TongTianLV", ttLV)
|
| | | if not ipyData:
|
| | | return
|
| | | lvUPPoint = ipyData.GetLVUPPoint()
|
| | | if not lvUPPoint:
|
| | | GameWorld.DebugLog("通天令已满级!", playerID)
|
| | | return
|
| | | updLV = ttLV
|
| | | updPoint = ttPoint + addPoint
|
| | | GameWorld.DebugLog("增加通天令经验: ttLV=%s,ttPoint=%s,addPoint=%s,updPoint=%s,lvUPPoint=%s" |
| | | % (ttLV, ttPoint, addPoint, updPoint, lvUPPoint), playerID)
|
| | | doCount = 0
|
| | | while lvUPPoint and updPoint >= lvUPPoint and doCount < 50:
|
| | | doCount += 1
|
| | | updPoint -= lvUPPoint
|
| | | updLV += 1
|
| | | nextLVIPYData = IpyGameDataPY.GetIpyGameDataNotLog("TongTianLV", updLV)
|
| | | lvUPPoint = nextLVIPYData.GetLVUPPoint() if nextLVIPYData else 0
|
| | | GameWorld.DebugLog(" 通天令升级: updLV=%s,updPoint=%s,nextLVUPPoint=%s" % (updLV, updPoint, lvUPPoint), playerID)
|
| | | |
| | | SetTongTianLingLVInfo(curPlayer, updLV, ttState)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TTL_LVPoint, updPoint)
|
| | | SyncTongTianLVInfo(curPlayer)
|
| | | return updLV, updPoint
|
| | |
|
| | | #// A5 43 通天令领取任务奖励 #tagCMGetTongTianTaskAward
|
| | | #
|
| | | #struct tagCMGetTongTianTaskAward
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE TaskID; // 任务ID
|
| | | #};
|
| | | def OnGetTongTianTaskAward(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | ttTaskID = clientData.TaskID
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("TongTianTask", ttTaskID)
|
| | | if not ipyData:
|
| | | return
|
| | | |
| | | if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID):
|
| | | GameWorld.DebugLog("通天任务已领奖! ttTaskID=%s" % ttTaskID, playerID)
|
| | | return
|
| | | |
| | | ttTaskType = ipyData.GetTTTaskType()
|
| | | isDailyTask = ipyData.GetIsDailyTask()
|
| | | finishNeedValue = ipyData.GetFinishNeedValue()
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
|
| | | if curValue < finishNeedValue:
|
| | | GameWorld.DebugLog("通天任务进度未完成,无法领奖! ttTaskID=%s,ttTaskType=%s,isDailyTask=%s,curValue=%s < %s" |
| | | % (ttTaskID, ttTaskType, isDailyTask, curValue, finishNeedValue), playerID)
|
| | | return
|
| | | |
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_TaskAwardRecord, ttTaskID, 1)
|
| | | AddTongTianPoint(curPlayer, ipyData.GetTaskPoint())
|
| | | return
|
| | |
|
| | | #// A5 44 通天令领取等级奖励 #tagCMGetTongTianLVAward
|
| | | #
|
| | | #struct tagCMGetTongTianLVAward
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE TTLV; // 领取对应等级奖励,发255为一键领取所有等级奖励,包含仙品奖励
|
| | | # BYTE IsXian; // 是否领取仙品奖励,仅指定等级奖励有效
|
| | | #};
|
| | | def OnGetTongTianLVAward(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | getTTLVLV = clientData.TTLV
|
| | | isXian = clientData.IsXian
|
| | | |
| | | ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
|
| | | if getTTLVLV == 255:
|
| | | awardLVList = range(0, ttLV + 1)
|
| | | isXian = 1 # 一键领取的默认包含仙品奖励
|
| | | else:
|
| | | awardLVList = [getTTLVLV]
|
| | | |
| | | GameWorld.DebugLog("领取通天令奖励: getTTLVLV=%s,isXian=%s,awardLVList=%s" % (getTTLVLV, isXian, awardLVList), playerID)
|
| | | |
| | | notifyItemIDList = []
|
| | | itemList = []
|
| | | for awardTTLV in awardLVList:
|
| | | if awardTTLV > ttLV:
|
| | | GameWorld.DebugLog(" 通天等级不足,无法领奖! awardTTLV=%s < %s" % (awardTTLV, ttLV), playerID)
|
| | | break
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("TongTianLV", awardTTLV)
|
| | | if not ipyData:
|
| | | continue
|
| | | commAwardItemList = ipyData.GetCommAwardItemList()
|
| | | xianAwardItemList = ipyData.GetXianAwardItemList()
|
| | | notifyItemIDList.extend(ipyData.GetNotifyItemIDList())
|
| | | |
| | | if commAwardItemList and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord, awardTTLV):
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_CommAwardRecord, awardTTLV, 1)
|
| | | itemList.extend(commAwardItemList)
|
| | | GameWorld.DebugLog(" 常规奖励: awardTTLV=%s,commAwardItemList=%s" % (awardTTLV, commAwardItemList), playerID)
|
| | | #elif commAwardItemList:
|
| | | # GameWorld.DebugLog(" 已领取过该奖励: awardTTLV=%s" % (awardTTLV), playerID)
|
| | | |
| | | getXian = (isXian and xianAwardItemList)
|
| | | if getXian and ttState and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord, awardTTLV):
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TTL_XianAwardRecord, awardTTLV, 1)
|
| | | itemList.extend(xianAwardItemList)
|
| | | GameWorld.DebugLog(" 仙品奖励: awardTTLV=%s,xianAwardItemList=%s" % (awardTTLV, xianAwardItemList), playerID)
|
| | | #elif getXian:
|
| | | # GameWorld.DebugLog(" 仙品通天令未激活或已领奖: awardTTLV=%s,ttState=%s" % (awardTTLV, ttState), playerID)
|
| | | |
| | | GameWorld.DebugLog(" 最终奖励: itemList=%s" % itemList, playerID)
|
| | | if not itemList:
|
| | | return
|
| | | |
| | | giveItemDict = {}
|
| | | for itemID, itemCount, isBind in itemList:
|
| | | key = (itemID, isBind)
|
| | | giveItemDict[key] = giveItemDict.get(key, 0) + itemCount
|
| | | |
| | | awardItemList = []
|
| | | for key, itemCount in giveItemDict.items():
|
| | | itemID, isBind = key
|
| | | awardItemList.append([itemID, itemCount, isBind])
|
| | | if itemID in notifyItemIDList:
|
| | | PlayerControl.NotifyCode(curPlayer, "TongTianLingLVAward", [curPlayer.GetPlayerName(), itemID, itemCount])
|
| | | |
| | | GameWorld.DebugLog(" 汇总奖励: awardItemList=%s" % awardItemList, playerID)
|
| | | dataDict = {"awardLVList":awardLVList, "isXian":isXian}
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["TongTianLing", False, dataDict])
|
| | | SyncTongTianLVInfo(curPlayer)
|
| | | return
|
| | |
|
| | | #// A5 45 兑换通天令等级经验积分点 #tagCMExchangeTongTianLVPoint
|
| | | #
|
| | | #struct tagCMExchangeTongTianLVPoint
|
| | | #{
|
| | | # tagHead Head;
|
| | | # DWORD ExchangePoint; // 兑换点数
|
| | | #};
|
| | | def OnExchangeTongTianLVPoint(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | exchangePoint = clientData.ExchangePoint
|
| | | exchangeCostInfo = IpyGameDataPY.GetFuncEvalCfg("TongTianLing", 1)
|
| | | if len(exchangeCostInfo) != 2:
|
| | | return
|
| | | costMoneyType, costMoneyValue = exchangeCostInfo
|
| | | if not costMoneyType or not costMoneyValue:
|
| | | return
|
| | | |
| | | ttLV = GetTongTianLingLVInfo(curPlayer)[0]
|
| | | ttPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVPoint)
|
| | | canBuyPointMax = 0
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ttLV, ipyDataMgr.GetTongTianLVCount()):
|
| | | ipyData = ipyDataMgr.GetTongTianLVByIndex(index)
|
| | | canBuyPointMax += ipyData.GetLVUPPoint()
|
| | | canBuyPointMax -= ttPoint
|
| | | |
| | | exchangePoint = min(exchangePoint, canBuyPointMax)
|
| | | costMoneyTotal = costMoneyValue * exchangePoint
|
| | | GameWorld.DebugLog("兑换通天令等级经验: ttLV=%s,ttPoint=%s,exchangePoint=%s,canBuyPointMax=%s,costMoneyType=%s,costMoneyTotal=%s" |
| | | % (ttLV, ttPoint, exchangePoint, canBuyPointMax, costMoneyType, costMoneyTotal), playerID)
|
| | | |
| | | if not PlayerControl.HaveMoney(curPlayer, costMoneyType, costMoneyTotal):
|
| | | return
|
| | | |
| | | updInfo = AddTongTianPoint(curPlayer, exchangePoint)
|
| | | updLV, updPoint = updInfo if updInfo else (ttLV, ttPoint)
|
| | | |
| | | infoDict = {ChConfig.Def_Cost_Reason_SonKey:"ExchangeTongTianLVPoint", "exchangePoint":exchangePoint, |
| | | "ttLV":ttLV, "ttPoint":ttPoint, "updLV":updLV, "updPoint":updPoint}
|
| | | PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyTotal, ChConfig.Def_Cost_TongTianLing, infoDict)
|
| | | return
|
| | |
|
| | | #// A5 46 购买通天令 #tagCMBuyTongTianLing
|
| | | #
|
| | | #struct tagCMBuyTongTianLing
|
| | | #{
|
| | | # tagHead Head;
|
| | | #};
|
| | | def OnBuyTongTianLing(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
|
| | | if ttState:
|
| | | GameWorld.DebugLog("通天令已经购买过了!", playerID)
|
| | | return
|
| | | |
| | | costMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("TongTianLing", 2)
|
| | | if len(costMoneyInfo) != 2:
|
| | | return
|
| | | costMoneyType, costMoneyValue = costMoneyInfo
|
| | | if not costMoneyType or not costMoneyValue:
|
| | | return
|
| | | |
| | | infoDict = {ChConfig.Def_Cost_Reason_SonKey:"BuyTongTianLing", "ttLV":ttLV}
|
| | | if not PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, ChConfig.Def_Cost_TongTianLing, infoDict):
|
| | | return
|
| | | |
| | | ttState = 1
|
| | | SetTongTianLingLVInfo(curPlayer, ttLV, ttState)
|
| | | GameWorld.DebugLog("购买激活通天令!", playerID)
|
| | | PlayerControl.NotifyCode(curPlayer, "TongTianLingActive")
|
| | | return
|
| | |
|
| | | def SyncTongTianLVInfo(curPlayer):
|
| | | ## 等级信息
|
| | | ttLV, ttState = GetTongTianLingLVInfo(curPlayer)
|
| | | clientPack = ChPyNetSendPack.tagMCTongTianLingInfo()
|
| | | clientPack.TTLBuyState = ttState
|
| | | clientPack.TTLLV = ttLV
|
| | | clientPack.CurPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_LVPoint)
|
| | | clientPack.CommAwardStateList = []
|
| | | clientPack.XianAwardStateList = []
|
| | | for i in xrange(2):
|
| | | clientPack.CommAwardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_CommAwardRecord % i))
|
| | | clientPack.XianAwardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_XianAwardRecord % i))
|
| | | clientPack.AwardStateCount = len(clientPack.CommAwardStateList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def SyncTongTianTaskInfo(curPlayer, syncTaskInfoList=None):
|
| | | ## 任务进度信息
|
| | | syncAppoint = True
|
| | | if syncTaskInfoList == None:
|
| | | syncAppoint = False
|
| | | syncTaskInfoList = []
|
| | | for ttTaskType in ChConfig.TTLTaskTypeList:
|
| | | syncTaskInfoList.append([ttTaskType, 0])
|
| | | syncTaskInfoList.append([ttTaskType, 1])
|
| | | |
| | | clientPack = ChPyNetSendPack.tagMCTongTianLingTaskValueInfo()
|
| | | clientPack.TaskValueList = []
|
| | | for ttTaskType, isDailyTask in syncTaskInfoList:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskValue % (ttTaskType, isDailyTask))
|
| | | if not curValue and not syncAppoint:
|
| | | continue
|
| | | task = ChPyNetSendPack.tagMCTongTianLingTaskValue()
|
| | | task.TaskType = ttTaskType
|
| | | task.IsDaily = isDailyTask
|
| | | task.TaskValue = curValue
|
| | | clientPack.TaskValueList.append(task)
|
| | | clientPack.Count = len(clientPack.TaskValueList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def SyncTongTianTaskAward(curPlayer):
|
| | | ## 任务奖励信息
|
| | | clientPack = ChPyNetSendPack.tagMCTongTianLingTaskAwardInfo()
|
| | | clientPack.TaskAwardStateList = []
|
| | | for i in xrange(9):
|
| | | clientPack.TaskAwardStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TTL_TaskAwardRecord % i))
|
| | | clientPack.AwardStateCount = len(clientPack.TaskAwardStateList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | |
|