| | |
| | | list PersonFirstKillAward; // 个人首次击杀奖励 [[物品ID,个数,是否拍品], ...]
|
| | | };
|
| | |
|
| | | //仙盟红包表
|
| | |
|
| | | struct tagFamilyRedPack
|
| | | {
|
| | | WORD _ID; //ID
|
| | | WORD GetType; //获得途径
|
| | | WORD MoneyNum; //红包额度
|
| | | BYTE MoneyType; //金钱类型
|
| | | BYTE PacketCnt; //红包个数
|
| | | };
|
| | |
|
| | | //节日红包每日成就表
|
| | |
|
| | | struct tagActFeastRedPacketSucc
|
| | | {
|
| | | BYTE _FeastDay; //节日第几天
|
| | | list FeastSuccIDList; //节日成就ID列表
|
| | | };
|
| | |
|
| | | //NPC秀表
|
| | |
|
| | | struct tagNPCShow
|
| | |
| | | PacketSubCMD_1=0x2E
|
| | | PacketCallFunc_1=OnWingJingLian
|
| | |
|
| | | ;仙盟红包
|
| | | [PlayerFamilyRedPacket]
|
| | | ScriptName = Player\PlayerFamilyRedPacket.py
|
| | | Writer = xdh
|
| | | Releaser = xdh
|
| | | RegType = 0
|
| | | RegisterPackCount = 2
|
| | |
|
| | | PacketCMD_1=0xA6
|
| | | PacketSubCMD_1=0x08
|
| | | PacketCallFunc_1=OnSendFamilyRedPacket
|
| | |
|
| | | PacketCMD_2=0xAB
|
| | | PacketSubCMD_2=0x12
|
| | | PacketCallFunc_2=OnGrabFamilyRedPacket
|
| | |
|
| | | ;新定义攻击
|
| | | [NewAttack]
|
| | | ScriptName = Skill\SkillShell.py
|
| | |
| | | Def_PDict_NPCKillCount = "NPCKillCount_%s" # NPC已击杀次数, 参数(NPCID) CCBBAA, AA存储公共装备次数,BB存储公共ID次数,CC存储私有次数
|
| | | Def_PDict_NPCAttackCount = "NPCAttackCount_%s" # NPC已攻击次数, 参数(NPCID)
|
| | |
|
| | | Def_PDict_RedPacketInviteGet = "RedPacketInviteGet" # 红包邀请领取
|
| | | Def_PDict_RedPacketGetState = "RedPacketGetState" # 红包领取状态
|
| | | Def_PDict_RedPacketGrabCnt = "RedPacketGrabCnt" # 抢红包次数
|
| | |
|
| | | Def_PDict_ItemUseCntToday = "ItemUseCntToday_%s" # 物品今日使用次数, 参数为物品ID
|
| | |
|
| | | Def_PDict_GodWeaponLV = "GodWeaponLV_%s" # 神器等级, 参数神器索引
|
| | |
| | | Def_PDict_Boss_KillCntItemAddCnt = "Boss_KillCntItemAddCnt_%s" # 物品增加的当日可杀世界boss次数<%s-索引>
|
| | | Def_PDict_Boss_KillCntBuyCnt = "Boss_KillCntBuyCnt_%s" # 当日可杀世界boss次数的购买次数<%s-索引>
|
| | |
|
| | | #仙盟红包
|
| | | Def_PDict_FamilyRedPacketGoldLimit = "FmlRedPacketGoldLimit" # 仙盟钻石红包已发额度
|
| | | Def_PDict_FamilyRedPacketCache = "FamilyRedPacketCache%s" # 仙盟红包待发放记录参数索引
|
| | | Def_PDict_OSRedPacketGrabMoney = "OSRedPacketGrabMoney" # 开服红包已抢数量
|
| | | Def_PDict_OSRedPacketCanGrabCnt = "OSRedPacketCanGrabCnt" # 开服红包可抢次数
|
| | | Def_PDict_OSRedPacketStartTime = "OSRedPacketStartTime" #开服红包开始倒计时时间
|
| | | Def_PDict_ServerRedPacketGrabCnt = "ServerRedPacketGrabCnt" # 今日已抢全服红包次数
|
| | |
|
| | | #节日红包
|
| | | Def_PDict_FeastRedPacketActID = "FeastRedPacketActID" # 玩家身上的节日红包活动ID,唯一标识,取活动开始日期time值
|
| | | Def_PDict_FeastRedPacketGrabMoney = "FeastRedPacketGrabMoney" # 节日红包已抢数量
|
| | | Def_PDict_FeastRedPacketCanGrabCnt = "FeastRedPacketCanGrabCnt" # 节日红包可抢次数
|
| | |
|
| | | #境界
|
| | | Def_PDict_RealmTaskAwardState = "RealmTaskAwardState" #境界渡劫条件领奖状态,按二进制位存储是否已领取
|
| | | Def_PDict_RealmTaskValue = "RealmTaskValue_%s" #境界渡劫任务需要记录值,参数(任务ID)
|
| | |
| | | Def_Cost_Transport, # 传送 25
|
| | | Def_Cost_Treasure, # 寻宝
|
| | | Def_Cost_FamilyBroadcast, # 家族公告
|
| | | Def_Cost_FamilyRedPacket, # 发家族钻石红包
|
| | | Def_Cost_28, # 发家族钻石红包
|
| | | Def_Cost_EnterFB, # 进入副本
|
| | | Def_Cost_GameServer, # GameServer 30
|
| | | Def_Cost_FreeGoods, # 极品白拿
|
| | |
| | | Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
|
| | |
|
| | | # 消费返利不处理的消费类型列表
|
| | | CostRebate_DisableType = [Def_Cost_BourseBuy, Def_Cost_BourseCharge, Def_Cost_FreeGoods, Def_Cost_FamilyRedPacket,
|
| | | CostRebate_DisableType = [Def_Cost_BourseBuy, Def_Cost_BourseCharge, Def_Cost_FreeGoods,
|
| | | Def_Cost_Unknown, "GMSetMoney", "Warehouse", Def_Cost_AuctionBid]
|
| | |
|
| | | # 可在跨服中消费的类型列表
|
| | | MergeServerCanCostType = [Def_Cost_UseSpeaker, Def_Cost_Revive]
|
| | | #内部仙玉不能用的消费类型列表
|
| | | UnUseInner_CostType = [Def_Cost_BourseBuy, Def_Cost_FamilyRedPacket, Def_Cost_AuctionBid]
|
| | | UnUseInner_CostType = [Def_Cost_BourseBuy, Def_Cost_AuctionBid]
|
| | | # 消费类型对应信息字典{消费类型:[eventName, 中文说明reason_name, 发送给9377的数据是否分消费子类], }
|
| | | # 由于9377那边数据建议所有消费点总和最好不超过500个,故这里对部分发送给对方的数据进行归组为不分子类,或直接归属于商城分组
|
| | | # .使用原价购买的物品统一归属为商城组,消费对应为AutoBuy的也归属于商城分组
|
| | |
| | | Def_Cost_Rename:"Rename",
|
| | | Def_Cost_SkillLvUp:"SkillLvUp",
|
| | | Def_Cost_FamilyBroadcast:"FamilyBroadcast",
|
| | | Def_Cost_FamilyRedPacket:"FamilyRedPacket",
|
| | | Def_Cost_FreeGoods:"FreeGoods",
|
| | | Def_Cost_DogzEquipPlus:"DogzEquipPlus",
|
| | | Def_Cost_RuneHole:"RuneHole",
|
| | |
| | | Def_GiveMoney_Bourse, # 交易所 10
|
| | | Def_GiveMoney_GoldInvest, # 绑钻投资
|
| | | Def_GiveMoney_12, # 资源找回
|
| | | Def_GiveMoney_RedPacket, # 红包
|
| | | Def_GiveMoney_13, # 红包
|
| | | Def_GiveMoney_RefineGift, # 炼制奖励
|
| | | Def_GiveMoney_Mail, # 邮件(补偿) 15
|
| | | Def_GiveMoney_RuneDecompose, # 符印
|
| | |
| | | Def_GiveMoney_Pickup:"Pickup",
|
| | | Def_GiveMoney_Bourse:"Bourse",
|
| | | Def_GiveMoney_GoldInvest:"GoldInvest",
|
| | | Def_GiveMoney_RedPacket:"RedPacket",
|
| | | Def_GiveMoney_RefineGift:"RefineGift",
|
| | | Def_GiveMoney_Mail:"Mail",
|
| | | Def_GiveMoney_RuneDecompose:"RuneDecompose",
|
| | |
| | | VIPPrivilege_20, #20 暮光神庙购买次数
|
| | | VIPPrivilege_21, #21 仙界秘境 - 副本总表统一处理
|
| | | VIPPrivilege_22, #22 宗门试炼购买次数
|
| | | VIPPrivilege_FamilyGoldPack, #23 仙盟钻石红包
|
| | | VIPPrivilege_23, #23 仙盟钻石红包
|
| | | VIPPrivilege_BoursePwd, #24 集市上架使用密码
|
| | | VIPPrivilege_25, #25 封魔坛购买次数 - 副本总表统一处理
|
| | | VIPPrivilege_26, #26 VIP被动技能孔——VIP4专属被动技能孔
|
| | |
| | | Def_RewardType_CritGodBoxCTG, #暴击神兵奖励 47
|
| | | Def_RewardType_GameNotice, #玩法前瞻奖励 48
|
| | | Def_RewardType_EnterGroup, #加群奖励49
|
| | | Def_RewardType_ShediaoRedpacket, #射雕红包奖励 50
|
| | | Def_RewardType_50, #射雕红包奖励 50
|
| | | Def_RewardType_ShediaoEquip, #射雕装备奖励 51
|
| | | Def_RewardType_CAAllRecharge, #跨服全民充值奖励 52
|
| | | Def_RewardType_CrossYaomoBossHurt, #跨服妖魔boss伤害奖励 53
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 08 发家族红包 #tagCMSendFamilyRedPacket
|
| | |
|
| | | class tagCMSendFamilyRedPacket(Structure):
|
| | | Head = tagHead()
|
| | | RedPacketID = 0 #(DWORD RedPacketID)// 红包ID,没有发0
|
| | | PacketCnt = 0 #(WORD PacketCnt)// 红包数量
|
| | | MoneyNum = 0 #(WORD MoneyNum)//金钱数量
|
| | | Wish = "" #(char Wish[33])//祝福语
|
| | | IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PacketCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x08
|
| | | self.RedPacketID = 0
|
| | | self.PacketCnt = 0
|
| | | self.MoneyNum = 0
|
| | | self.Wish = ""
|
| | | self.IsAnonymous = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | length += 2
|
| | | length += 33
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteWORD(data, self.PacketCnt)
|
| | | data = CommFunc.WriteWORD(data, self.MoneyNum)
|
| | | data = CommFunc.WriteString(data, 33, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAnonymous)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RedPacketID:%d,
|
| | | PacketCnt:%d,
|
| | | MoneyNum:%d,
|
| | | Wish:%s,
|
| | | IsAnonymous:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RedPacketID,
|
| | | self.PacketCnt,
|
| | | self.MoneyNum,
|
| | | self.Wish,
|
| | | self.IsAnonymous
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMSendFamilyRedPacket=tagCMSendFamilyRedPacket()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendFamilyRedPacket.Head.Cmd,m_NAtagCMSendFamilyRedPacket.Head.SubCmd))] = m_NAtagCMSendFamilyRedPacket
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 20 搜索家族列表 #tagCMViewFamilyPage
|
| | |
|
| | | class tagCMViewFamilyPage(Structure):
|
| | |
| | |
|
| | | m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 12 抢红包 #tagCMGrabFamilyRedPacket
|
| | |
|
| | | class tagCMGrabFamilyRedPacket(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("RedPaketID", c_int), # 红包ID
|
| | | ("GetWay", c_ubyte), #获得途径
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x12
|
| | | 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 = 0xAB
|
| | | self.SubCmd = 0x12
|
| | | self.RedPaketID = 0
|
| | | self.GetWay = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGrabFamilyRedPacket)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 12 抢红包 //tagCMGrabFamilyRedPacket:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | RedPaketID:%d,
|
| | | GetWay:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.RedPaketID,
|
| | | self.GetWay
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGrabFamilyRedPacket=tagCMGrabFamilyRedPacket()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGrabFamilyRedPacket.Cmd,m_NAtagCMGrabFamilyRedPacket.SubCmd))] = m_NAtagCMGrabFamilyRedPacket
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 B9 通知玩家今日抢红包次数 #tagMCGrabRedPacketCnt
|
| | |
|
| | | class tagMCGrabRedPacketCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Cnt", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0xB9
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0xB9
|
| | | self.Cnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGrabRedPacketCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 B9 通知玩家今日抢红包次数 //tagMCGrabRedPacketCnt:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Cnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Cnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGrabRedPacketCnt=tagMCGrabRedPacketCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGrabRedPacketCnt.Cmd,m_NAtagMCGrabRedPacketCnt.SubCmd))] = m_NAtagMCGrabRedPacketCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C7 古宝信息 #tagMCGubaoInfo
|
| | |
|
| | | class tagMCGubao(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 05 家族红包抢的信息 #tagGCFamilyRedPacketGrabInfo
|
| | |
|
| | | class tagFGrabRedPacketInfo(Structure):
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//名字
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.PlayeJob = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MoneyNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNum)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | PlayeJob:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MoneyNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.PlayeJob,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MoneyNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFamilyRedPacketGrabInfo(Structure):
|
| | | Head = tagHead()
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
|
| | | Count = 0 #(BYTE Count)//数量
|
| | | GrabInfo = list() #(vector<tagFGrabRedPacketInfo> GrabInfo)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temGrabInfo = tagFGrabRedPacketInfo()
|
| | | _pos = temGrabInfo.ReadData(_lpData, _pos)
|
| | | self.GrabInfo.append(temGrabInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x05
|
| | | self.RedPacketID = 0
|
| | | self.Count = 0
|
| | | self.GrabInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.GrabInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.GrabInfo[i].GetLength(), self.GrabInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RedPacketID:%d,
|
| | | Count:%d,
|
| | | GrabInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RedPacketID,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyRedPacketGrabInfo=tagGCFamilyRedPacketGrabInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketGrabInfo.Head.Cmd,m_NAtagGCFamilyRedPacketGrabInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketGrabInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 04 家族红包总信息 #tagGCFamilyRedPacketInfo
|
| | |
|
| | | class tagFRedPacketInfo(Structure):
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//红包唯一ID
|
| | | PlayerID = 0 #(DWORD PlayerID)//玩家ID
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//玩家名字
|
| | | Time = 0 #(DWORD Time)//时间
|
| | | PlayeJob = 0 #(BYTE PlayeJob)//玩家职业
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MoneyType = 0 #(BYTE MoneyType)//金钱类型
|
| | | MoneyNum = 0 #(DWORD MoneyNum)//金钱数量
|
| | | GetWay = 0 #(BYTE GetWay)//获得途径
|
| | | PacketCnt = 0 #(BYTE PacketCnt)//可抢个数
|
| | | State = 0 #(BYTE State)//0未发,1未领取,2已领取,3全部领完
|
| | | WishLen = 0 #(BYTE WishLen)
|
| | | Wish = "" #(String Wish)//祝福语
|
| | | IsAnonymous = 0 #(BYTE IsAnonymous)//是否匿名
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WishLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Wish,_pos = CommFunc.ReadString(_lpData, _pos,self.WishLen)
|
| | | self.IsAnonymous,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RedPacketID = 0
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.Time = 0
|
| | | self.PlayeJob = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyNum = 0
|
| | | self.GetWay = 0
|
| | | self.PacketCnt = 0
|
| | | self.State = 0
|
| | | self.WishLen = 0
|
| | | self.Wish = ""
|
| | | self.IsAnonymous = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.Wish)
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.Time)
|
| | | data = CommFunc.WriteBYTE(data, self.PlayeJob)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNum)
|
| | | data = CommFunc.WriteBYTE(data, self.GetWay)
|
| | | data = CommFunc.WriteBYTE(data, self.PacketCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.State)
|
| | | data = CommFunc.WriteBYTE(data, self.WishLen)
|
| | | data = CommFunc.WriteString(data, self.WishLen, self.Wish)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAnonymous)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RedPacketID:%d,
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | Time:%d,
|
| | | PlayeJob:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MoneyType:%d,
|
| | | MoneyNum:%d,
|
| | | GetWay:%d,
|
| | | PacketCnt:%d,
|
| | | State:%d,
|
| | | WishLen:%d,
|
| | | Wish:%s,
|
| | | IsAnonymous:%d
|
| | | '''\
|
| | | %(
|
| | | self.RedPacketID,
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.Time,
|
| | | self.PlayeJob,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MoneyType,
|
| | | self.MoneyNum,
|
| | | self.GetWay,
|
| | | self.PacketCnt,
|
| | | self.State,
|
| | | self.WishLen,
|
| | | self.Wish,
|
| | | self.IsAnonymous
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFamilyRedPacketInfo(Structure):
|
| | | Head = tagHead()
|
| | | IsAll = 0 #(BYTE IsAll)//是否全部红包
|
| | | Count = 0 #(BYTE Count)//红包数量
|
| | | RedPacketInfo = list() #(vector<tagFRedPacketInfo> RedPacketInfo)//size = Count
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temRedPacketInfo = tagFRedPacketInfo()
|
| | | _pos = temRedPacketInfo.ReadData(_lpData, _pos)
|
| | | self.RedPacketInfo.append(temRedPacketInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA4
|
| | | self.Head.SubCmd = 0x04
|
| | | self.IsAll = 0
|
| | | self.Count = 0
|
| | | self.RedPacketInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.RedPacketInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsAll)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.RedPacketInfo[i].GetLength(), self.RedPacketInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | IsAll:%d,
|
| | | Count:%d,
|
| | | RedPacketInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.IsAll,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFamilyRedPacketInfo=tagGCFamilyRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyRedPacketInfo.Head.Cmd,m_NAtagGCFamilyRedPacketInfo.Head.SubCmd))] = m_NAtagGCFamilyRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A4 06 家族仓库物品信息 #tagGCFamilyStoreItemInfo
|
| | |
|
| | | class tagGCFamilyStoreItem(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFamilyPrayInfo=tagMCFamilyPrayInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyPrayInfo.Cmd,m_NAtagMCFamilyPrayInfo.SubCmd))] = m_NAtagMCFamilyPrayInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 05 通知家族钻石红包已用额度 #tagMCFamilyRedPacketGoldLimit
|
| | |
|
| | | class tagMCFamilyRedPacketGoldLimit(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HasSendGold", c_int), # 已用额度
|
| | | ("ServerGrabCnt", c_int), # 全服红包已抢次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0x05
|
| | | self.HasSendGold = 0
|
| | | self.ServerGrabCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyRedPacketGoldLimit)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 05 通知家族钻石红包已用额度 //tagMCFamilyRedPacketGoldLimit:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HasSendGold:%d,
|
| | | ServerGrabCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HasSendGold,
|
| | | self.ServerGrabCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagGCRealmFBHelpInfo=tagGCRealmFBHelpInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRealmFBHelpInfo.Head.Cmd,m_NAtagGCRealmFBHelpInfo.Head.SubCmd))] = m_NAtagGCRealmFBHelpInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 A7 通知可抢的红包信息 #tagGCGrabRedPacketInfo
|
| | |
|
| | | class tagGCGrabRedPacketInfo(Structure):
|
| | | Head = tagHead()
|
| | | RedPacketCnt = 0 #(DWORD RedPacketCnt)//可抢红包个数
|
| | | StrLen = 0 #(WORD StrLen)//字符串长度
|
| | | OwnerName = "" #(String OwnerName)//红包主人名字
|
| | | RedPacketID = 0 #(DWORD RedPacketID)//可抢红包ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA7
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RedPacketCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
|
| | | self.RedPacketID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA7
|
| | | self.RedPacketCnt = 0
|
| | | self.StrLen = 0
|
| | | self.OwnerName = ""
|
| | | self.RedPacketID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.OwnerName)
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketCnt)
|
| | | data = CommFunc.WriteWORD(data, self.StrLen)
|
| | | data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
|
| | | data = CommFunc.WriteDWORD(data, self.RedPacketID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RedPacketCnt:%d,
|
| | | StrLen:%d,
|
| | | OwnerName:%s,
|
| | | RedPacketID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RedPacketCnt,
|
| | | self.StrLen,
|
| | | self.OwnerName,
|
| | | self.RedPacketID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCGrabRedPacketInfo=tagGCGrabRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketInfo.Head.Cmd,m_NAtagGCGrabRedPacketInfo.Head.SubCmd))] = m_NAtagGCGrabRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 A6 通知抢红包结果 #tagGCGrabRedPacketResult
|
| | |
|
| | | class tagGCGrabRedPacketResult(Structure):
|
| | | Head = tagHead()
|
| | | StrLen = 0 #(WORD StrLen)//字符串长度
|
| | | OwnerName = "" #(String OwnerName)//红包主人名字
|
| | | TotalMoney = 0 #(DWORD TotalMoney)//红包总额
|
| | | DataSize = 0 #(DWORD DataSize)
|
| | | GrabInfo = "" #(String GrabInfo)//抢红包具体结果
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA6
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.StrLen)
|
| | | self.TotalMoney,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GrabInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0xA6
|
| | | self.StrLen = 0
|
| | | self.OwnerName = ""
|
| | | self.TotalMoney = 0
|
| | | self.DataSize = 0
|
| | | self.GrabInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += len(self.OwnerName)
|
| | | length += 4
|
| | | length += 4
|
| | | length += len(self.GrabInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.StrLen)
|
| | | data = CommFunc.WriteString(data, self.StrLen, self.OwnerName)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalMoney)
|
| | | data = CommFunc.WriteDWORD(data, self.DataSize)
|
| | | data = CommFunc.WriteString(data, self.DataSize, self.GrabInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StrLen:%d,
|
| | | OwnerName:%s,
|
| | | TotalMoney:%d,
|
| | | DataSize:%d,
|
| | | GrabInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StrLen,
|
| | | self.OwnerName,
|
| | | self.TotalMoney,
|
| | | self.DataSize,
|
| | | self.GrabInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCGrabRedPacketResult=tagGCGrabRedPacketResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGrabRedPacketResult.Head.Cmd,m_NAtagGCGrabRedPacketResult.Head.SubCmd))] = m_NAtagGCGrabRedPacketResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 25 节日红包信息 #tagMCFeastRedPackInfo
|
| | |
|
| | | class tagMCFeastRedPackInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MoneyNum", c_int), # 累积抢到多少钱
|
| | | ("GrabCnt", c_ushort), # 已抢红包次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x25
|
| | | 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 = 0xAB
|
| | | self.SubCmd = 0x25
|
| | | self.MoneyNum = 0
|
| | | self.GrabCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastRedPackInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MoneyNum:%d,
|
| | | GrabCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MoneyNum,
|
| | | self.GrabCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 17 开服活动奖励状态 #tagMCOpenServerCampaignAwardList
|
| | |
|
| | | class tagMCOpenServerCampaignAward(Structure):
|
| | |
| | |
|
| | | m_NAtagMCOpenServerCampaignAwardList=tagMCOpenServerCampaignAwardList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerCampaignAwardList.Head.Cmd,m_NAtagMCOpenServerCampaignAwardList.Head.SubCmd))] = m_NAtagMCOpenServerCampaignAwardList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 24 开服红包信息 #tagMCOpenServerRedPacketInfo
|
| | |
|
| | | class tagMCOpenServerRedPacketInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MoneyNum", c_int), # 累积抢到多少钱
|
| | | ("GrabCnt", c_ushort), # 已抢红包次数
|
| | | ("StartTime", c_int), # 开始倒计时时间
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x24
|
| | | 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 = 0xAB
|
| | | self.SubCmd = 0x24
|
| | | self.MoneyNum = 0
|
| | | self.GrabCnt = 0
|
| | | self.StartTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCOpenServerRedPacketInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 24 开服红包信息 //tagMCOpenServerRedPacketInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | MoneyNum:%d,
|
| | | GrabCnt:%d,
|
| | | StartTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.MoneyNum,
|
| | | self.GrabCnt,
|
| | | self.StartTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCOpenServerRedPacketInfo=tagMCOpenServerRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerRedPacketInfo.Cmd,m_NAtagMCOpenServerRedPacketInfo.SubCmd))] = m_NAtagMCOpenServerRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
|
| | |
|
| | | class tagGCFeastRedPacketDay(Structure):
|
| | | RedPacketCount = 0 #(BYTE RedPacketCount)
|
| | | RedPacketIDList = list() #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RedPacketCount):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.RedPacketIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.RedPacketCount = 0
|
| | | self.RedPacketIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.RedPacketCount
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.RedPacketCount)
|
| | | for i in range(self.RedPacketCount):
|
| | | data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | RedPacketCount:%d,
|
| | | RedPacketIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.RedPacketCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCFeastRedPacketInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
|
| | | RedPacketDays = 0 #(BYTE RedPacketDays)
|
| | | RedPacketDayList = list() #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x11
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RedPacketDays):
|
| | | temRedPacketDayList = tagGCFeastRedPacketDay()
|
| | | _pos = temRedPacketDayList.ReadData(_lpData, _pos)
|
| | | self.RedPacketDayList.append(temRedPacketDayList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x11
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | self.RedPacketDays = 0
|
| | | self.RedPacketDayList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.RedPacketDays):
|
| | | length += self.RedPacketDayList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.RedPacketDays)
|
| | | for i in range(self.RedPacketDays):
|
| | | data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d,
|
| | | RedPacketDays:%d,
|
| | | RedPacketDayList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType,
|
| | | self.RedPacketDays,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
|
| | |
|
| | | class tagGCMultiExpRateTime(Structure):
|
| | |
| | |
|
| | | m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 05 红包删除 #tagGCRedPacketDel
|
| | |
|
| | | class tagGCRedPacketDel(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(DWORD Cnt)// 个数
|
| | | DelRedPacketID = list() #(vector<DWORD> DelRedPacketID)// 红包ID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.DelRedPacketID.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x05
|
| | | self.Cnt = 0
|
| | | self.DelRedPacketID = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4 * self.Cnt
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteDWORD(data, self.DelRedPacketID[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | DelRedPacketID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCRedPacketDel=tagGCRedPacketDel()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRedPacketDel.Head.Cmd,m_NAtagGCRedPacketDel.Head.SubCmd))] = m_NAtagGCRedPacketDel
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | import GameWorldProcess
|
| | | import CrossRealmPlayer
|
| | | import DataRecordPack
|
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | | import ReadChConfig
|
| | | import ShareDefine
|
| | | import PyGameData
|
| | | import FBCommon
|
| | | import GameMap
|
| | | import GameObj
|
| | |
|
| | | import random
|
| | |
| | |
|
| | | #注册玩家离开副本时间
|
| | | gameFBMgr.SetPlayerLogoffTick(0)
|
| | | |
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_EnterMap, 1, [gameMapID])
|
| | |
|
| | | if gameFBMgr.HaveFBPlayer(curPlayerID):
|
| | | #已经注册了这个玩家, 不清除已注册的玩家的字典信息
|
| | |
| | | ("list", "PersonFirstKillAward", 0),
|
| | | ),
|
| | |
|
| | | "FamilyRedPack":(
|
| | | ("WORD", "ID", 1),
|
| | | ("WORD", "GetType", 0),
|
| | | ("WORD", "MoneyNum", 0),
|
| | | ("BYTE", "MoneyType", 0),
|
| | | ("BYTE", "PacketCnt", 0),
|
| | | ),
|
| | |
|
| | | "ActFeastRedPacketSucc":(
|
| | | ("BYTE", "FeastDay", 1),
|
| | | ("list", "FeastSuccIDList", 0),
|
| | | ),
|
| | |
|
| | | "NPCShow":(
|
| | | ("DWORD", "NPCID", 1),
|
| | | ("DWORD", "MapID", 1),
|
| | |
| | | def GetPerPlayerMoneyAward(self): return self.attrTuple[1] # 首杀全服玩家奖励灵石额度/人 WORD
|
| | | def GetPersonFirstKillAward(self): return self.attrTuple[2] # 个人首次击杀奖励 [[物品ID,个数,是否拍品], ...] list |
| | | |
| | | # 仙盟红包表 |
| | | class IPY_FamilyRedPack(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetID(self): return self.attrTuple[0] # ID WORD
|
| | | def GetGetType(self): return self.attrTuple[1] # 获得途径 WORD
|
| | | def GetMoneyNum(self): return self.attrTuple[2] # 红包额度 WORD
|
| | | def GetMoneyType(self): return self.attrTuple[3] # 金钱类型 BYTE
|
| | | def GetPacketCnt(self): return self.attrTuple[4] # 红包个数 BYTE |
| | | |
| | | # 节日红包每日成就表 |
| | | class IPY_ActFeastRedPacketSucc(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetFeastDay(self): return self.attrTuple[0] # 节日第几天 BYTE
|
| | | def GetFeastSuccIDList(self): return self.attrTuple[1] # 节日成就ID列表 list |
| | | |
| | | # NPC秀表 |
| | | class IPY_NPCShow(): |
| | | |
| | |
| | | self.__LoadFileData("DailyLivenessReward", onlyCheck)
|
| | | self.__LoadFileData("BOSSInfo", onlyCheck)
|
| | | self.__LoadFileData("BOSSFirstKill", onlyCheck)
|
| | | self.__LoadFileData("FamilyRedPack", onlyCheck)
|
| | | self.__LoadFileData("ActFeastRedPacketSucc", onlyCheck)
|
| | | self.__LoadFileData("NPCShow", onlyCheck)
|
| | | self.__LoadFileData("MapRefreshNPC", onlyCheck)
|
| | | self.__LoadFileData("RuneCompound", onlyCheck)
|
| | |
| | | def GetBOSSFirstKillByIndex(self, index): |
| | | self.CheckLoadData("BOSSFirstKill") |
| | | return self.ipyBOSSFirstKillCache[index]
|
| | | |
| | | def GetFamilyRedPackCount(self): |
| | | self.CheckLoadData("FamilyRedPack") |
| | | return self.ipyFamilyRedPackLen
|
| | | def GetFamilyRedPackByIndex(self, index): |
| | | self.CheckLoadData("FamilyRedPack") |
| | | return self.ipyFamilyRedPackCache[index]
|
| | | |
| | | def GetActFeastRedPacketSuccCount(self): |
| | | self.CheckLoadData("ActFeastRedPacketSucc") |
| | | return self.ipyActFeastRedPacketSuccLen
|
| | | def GetActFeastRedPacketSuccByIndex(self, index): |
| | | self.CheckLoadData("ActFeastRedPacketSucc") |
| | | return self.ipyActFeastRedPacketSuccCache[index]
|
| | | |
| | | def GetNPCShowCount(self): |
| | | self.CheckLoadData("NPCShow") |
| | |
| | | else:
|
| | | if GetNPCLV(curNPC) >= curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
|
| | | PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
|
| | | #PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
|
| | |
|
| | | if ChConfig.IsGameBoss(curNPC):
|
| | |
| | | import PlayerActLogin
|
| | | import PlayerTreasure
|
| | | import PlayerRune
|
| | | import PlayerFamilyRedPacket
|
| | | import IpyGameDataPY
|
| | | import EventReport
|
| | | import OpenServerCampaign
|
| | |
| | | import PlayerSpringSale
|
| | | import GY_Query_BossFirstKill
|
| | | import PlayerCrossYaomoBoss
|
| | | import PlayerFeastRedPacket
|
| | | import PlayerLuckyCloudBuy
|
| | | import PlayerLuckyTreasure
|
| | | import Item_ResetAttrPoint
|
| | |
| | | ChItem.Sync_ItemDayUseCnt(curPlayer)
|
| | | # 符印登录通知
|
| | | PlayerRune.PlayerRuneLogin(curPlayer)
|
| | | # 仙盟红包登录通知
|
| | | PlayerFamilyRedPacket.OnPlayerLogin(curPlayer)
|
| | | PlayerFeastRedPacket.DoPlayerOnLogin(curPlayer)
|
| | | # 商店物品购买次数登录通知
|
| | | FunctionNPCCommon.ShopItemOnLogin(curPlayer)
|
| | | # 通知设置的被动功法
|
| | |
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import PlayerBillboard
|
| | | import PlayerFamilyRedPacket
|
| | | import ItemCommon
|
| | |
|
| | | (
|
| | |
| | | def DoGiveOSCBillAward(curPlayer, awardResultList):
|
| | | ## 给排行奖励
|
| | | return
|
| | | # campTypeList, isEndMail, queryResultList = awardResultList
|
| | | # if len(campTypeList) != len(queryResultList):
|
| | | # return
|
| | | # |
| | | # job = str(curPlayer.GetJob())
|
| | | # for i, campaignType in enumerate(campTypeList):
|
| | | # billAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSC_BillAwardRecord)
|
| | | # if billAwardRecord & pow(2, campaignType):
|
| | | # GameWorld.DebugLog(" 已经领取过该排行活动奖励, campaignType=%s" % (campaignType), curPlayer.GetPlayerID())
|
| | | # continue
|
| | | # |
| | | # order = queryResultList[i]
|
| | | # billAwardInfo = None
|
| | | # billRankAwardIpyList = IpyGameDataPY.GetIpyGameDataList("OSCBillRankAward", campaignType)
|
| | | # if not billRankAwardIpyList:
|
| | | # continue
|
| | | # for billRankIpyData in billRankAwardIpyList:
|
| | | # if (billRankIpyData.GetRankA() <= order <= billRankIpyData.GetRankB()) \
|
| | | # or (not billRankIpyData.GetRankB() and billRankIpyData.GetRankA() == order):
|
| | | # billAwardInfo = billRankIpyData.GetRankAward()
|
| | | # break
|
| | | # |
| | | # if not billAwardInfo:
|
| | | # GameWorld.DebugLog(" 玩家名次没有奖励!campaignType=%s,order=%s" % (campaignType, order), curPlayer.GetPlayerID())
|
| | | # continue
|
| | | # |
| | | # billAwardDict = billAwardInfo
|
| | | # if job not in billAwardDict:
|
| | | # GameWorld.ErrLog("没有配置该职业对应的开服活动榜单奖励!campaignType=%s,job=%s" % (campaignType, job))
|
| | | # continue
|
| | | # awardItemList = billAwardDict[job]
|
| | | # |
| | | # updBillAwardRecord = billAwardRecord|pow(2, campaignType)
|
| | | # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSC_BillAwardRecord, updBillAwardRecord)
|
| | | # GameWorld.DebugLog(" 发放活动榜单奖励,campaignType=%s,order=%s,awardItemList=%s,updBillAwardRecord=%s" |
| | | # % (campaignType, order, awardItemList, updBillAwardRecord), curPlayer.GetPlayerID())
|
| | | # |
| | | # drDict = {"CampaignType":campaignType, "Order":order}
|
| | | # mailTypeKey = "OSCBillAward%s" % campaignType
|
| | | # mailParamList = [order]
|
| | | # __DoGiveOSCAwardItem(curPlayer, awardItemList, drDict, isEndMail, mailTypeKey, mailParamList)
|
| | | # #红包奖励
|
| | | # redPacketIDDict = IpyGameDataPY.GetFuncEvalCfg('OSCRankRedpackAward', 1, {})
|
| | | # redPacketID = GameWorld.GetDictValueByRangeKey(redPacketIDDict, order, 0)
|
| | | # if redPacketID:
|
| | | # PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
|
| | | # #if not isEndMail:
|
| | | # Sync_OpenServerCampaignAward(curPlayer, campaignType)
|
| | | # return
|
| | |
|
| | | def __DoGiveOSCAwardItem(curPlayer, giveItemList, drDict, isEndMail, mailTypeKey, mailParamList):
|
| | | ## 给开服活动奖励 [[itemID, itemCount], ...], 默认绑定
|
| | |
| | | import PlayerActManyDayRecharge
|
| | | import PlayerActSingleRecharge
|
| | | import PlayerActRechargePrize
|
| | | import PlayerFamilyRedPacket
|
| | | import CrossActCTGBillboard
|
| | | import CrossActAllRecharge
|
| | | import PlayerActGrowupBuy
|
| | | import OpenServerCampaign
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import PlayerGoldInvest
|
| | |
| | | #跨服全民充值
|
| | | CrossActAllRecharge.AddCTGRMB(curPlayer, orderCoin)
|
| | | PlayerActManyDayRecharge.AddManyDayRechargeValue(curPlayer, orderCoin) # 多日连充
|
| | | #红包, 需要真实充值
|
| | | PlayerFamilyRedPacket.OnPlayerRecharge(curPlayer, orderCoin)
|
| | |
|
| | | # 只算充仙玉的
|
| | | if coinType == ChConfig.CoinType_Gold:
|
| | |
| | | PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, coinType)
|
| | | PlayerActSingleRecharge.UpdSingleRechargeValue(curPlayer, orderCoin, coinType) # 单笔累充
|
| | | PlayerActTurntable.OnPlayerRecharge(curPlayer, orderCoin, coinType) # 转盘
|
| | | #开服活动
|
| | | #OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_CTGExp, addVIPExp)
|
| | | #投资
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayWinCount, todayWinCount)
|
| | | GameWorld.Log(" 增加今日已获胜次数: todayWinCount=%s" % todayWinCount, playerID)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_CrossPK, 1)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_CrossPK, 1)
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_CrossPK, 1)
|
| | | PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossPK, 1)
|
| | | else:
|
| | |
| | | import PlayerGoldInvest
|
| | | import PlayerCrossRealmPK
|
| | | import PlayerCrossChampionship
|
| | | import PlayerPet
|
| | | import PlayerFamilyRedPacket
|
| | | import OpenServerCampaign
|
| | | import PlayerCostRebate
|
| | | import CrossActCTGBillboard
|
| | |
| | | import PlayerFlashGiftbag
|
| | | import PlayerDailyGiftbag
|
| | | import PlayerOfflineSupport
|
| | | import PlayerFeastRedPacket
|
| | | import PlayerLuckyCloudBuy
|
| | | import PlayerLuckyTreasure
|
| | | import PlayerTongTianLing
|
| | |
| | | #清空每日事件奖励
|
| | | curPlayer.SetDayProcessGameEventCount(0)
|
| | |
|
| | | #重置宠物每天的训练次数
|
| | | #PlayerPet.DoLogic_PetInfo_OnDay(curPlayer)
|
| | | |
| | | #OnDay时清除每日签到的信息
|
| | | PlayerSignDay.SignDayOnDay(curPlayer)
|
| | | # 累计登陆礼包登陆次数刷新
|
| | |
| | |
|
| | | # 商店物品购买兑换OnDay
|
| | | FunctionNPCCommon.ShopItemOnDay(curPlayer, onEventType)
|
| | | |
| | | # 仙盟红包OnDay
|
| | | PlayerFamilyRedPacket.RedPacketOnDay(curPlayer, onEventType)
|
| | | #许愿池
|
| | | PlayerWishingWell.OnDay(curPlayer)
|
| | | #通天令
|
| | |
| | |
|
| | | elif actionName == ShareDefine.OperationActionName_FeastWeekParty:
|
| | | PlayerFeastWeekParty.RefreshOperationAction_FeastWeekParty()
|
| | | |
| | | elif actionName == ShareDefine.OperationActionName_FeastRedPacket:
|
| | | PlayerFeastRedPacket.RefreshOperationAction_FeastRedPacket()
|
| | |
|
| | | elif actionName == ShareDefine.OperationActionName_LuckyTreasure:
|
| | | PlayerLuckyTreasure.RefreshLuckyTreasureAction()
|
| | |
| | | GameWorld.DebugLog("该副本当前无法扫荡!mapID=%s, lineID=%s" % (mapID, lineID))
|
| | | return
|
| | |
|
| | | #PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_FBSweep, 1, [mapID])
|
| | | |
| | | #需先扣除门票, 再增加次数, 否则可能导致扣除的数量错误
|
| | | #FBCommon.DelFBEnterTicket(curPlayer, mapID, lineID, cnt)
|
| | |
|
| | |
| | | import NetPackCommon
|
| | | import DataRecordPack
|
| | | import ChPyNetSendPack
|
| | | import PlayerFamilyRedPacket
|
| | | import ItemControler
|
| | | import PlayerControl
|
| | | import IPY_GameWorld
|
| | |
| | | # 登录卡,投资当天可领奖,完成设置为1
|
| | | if investType == ChConfig.InvestType_Login:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_InvestProgress % (investType, 0), 1)
|
| | | |
| | | # 投资红包
|
| | | redPacketID = IpyGameDataPY.GetFuncEvalCfg("InvestRedPackAward", 1, {}).get(investType, 0)
|
| | | if redPacketID:
|
| | | PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, redPacketID)
|
| | |
|
| | | # 额外奖励物品
|
| | | awardItemDict = IpyGameDataPY.GetFuncEvalCfg("InvestCost", 5, {})
|
| | |
| | | import IPY_GameWorld
|
| | | import PlayerControl
|
| | | import ItemControler
|
| | | import PlayerFamilyRedPacket
|
| | | import IpyGameDataPY
|
| | | import PyGameData
|
| | | import EventReport
|
| | |
|
| | | import datetime
|
| | | import time
|
| | | import math
|
| | | import PlayerFeastRedPacket
|
| | | import DataRecordPack
|
| | |
|
| | |
|
| | |
| | | def UptateSuccessProgress(curPlayer, successType, newCnt, condition=[]):
|
| | | if successType not in ShareDefine.SuccessTypeList:
|
| | | return
|
| | | if successType in ShareDefine.FeastRedPackSuccessTypeList:
|
| | | if not PlayerFeastRedPacket.GetFeastRedPacketState():
|
| | | return
|
| | | #if successType in ShareDefine.FeastRedPackSuccessTypeList:
|
| | | # if not PlayerFeastRedPacket.GetFeastRedPacketState():
|
| | | # return
|
| | | succInfoList = GetSuccDataMng().GetSuccDataByType(successType)
|
| | | if not succInfoList:
|
| | | GameWorld.DebugLog(" 找不到成就数据successType=%s" % successType)
|
| | |
| | | succID = succDataObj.succID
|
| | | cond = succDataObj.condition
|
| | |
|
| | | if successType in ShareDefine.FeastRedPackSuccessTypeList:
|
| | | todayFeastSuccIDList = PlayerFeastRedPacket.GetTodayFeastSuccIDList()
|
| | | if not todayFeastSuccIDList or succID not in todayFeastSuccIDList:
|
| | | #GameWorld.DebugLog(" 非今日节日红包成就,不增加进度! succID=%s,todayFeastSuccIDList=%s" % (succID, todayFeastSuccIDList))
|
| | | return
|
| | | #if successType in ShareDefine.FeastRedPackSuccessTypeList:
|
| | | # todayFeastSuccIDList = PlayerFeastRedPacket.GetTodayFeastSuccIDList()
|
| | | # if not todayFeastSuccIDList or succID not in todayFeastSuccIDList:
|
| | | # #GameWorld.DebugLog(" 非今日节日红包成就,不增加进度! succID=%s,todayFeastSuccIDList=%s" % (succID, todayFeastSuccIDList))
|
| | | # return
|
| | | isUnDownCheck = successType in ShareDefine.UnDownCheckSuccessTypeList
|
| | | isContain = successType in ShareDefine.ContainSuccessTypeList
|
| | | # 已完成的不再检查
|
| | |
| | | if GameWorld.IsCrossServer():
|
| | | return
|
| | |
|
| | | if successType in ShareDefine.FeastRedPackSuccessTypeList:
|
| | | if not PlayerFeastRedPacket.GetFeastRedPacketState():
|
| | | #GameWorld.DebugLog("非节日红包活动时间,不增加成就!successType=%s" % successType)
|
| | | return
|
| | | #if successType in ShareDefine.FeastRedPackSuccessTypeList:
|
| | | # if not PlayerFeastRedPacket.GetFeastRedPacketState():
|
| | | # #GameWorld.DebugLog("非节日红包活动时间,不增加成就!successType=%s" % successType)
|
| | | # return
|
| | |
|
| | | playerID = curPlayer.GetID()
|
| | | if delayCalc and successType not in ShareDefine.NeedResetSuccessTypeList:
|
| | |
| | | if succData.attrDict:
|
| | | RefreshSuccessAttr(curPlayer)
|
| | | #发红包
|
| | | if succData.redPacketID:
|
| | | PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, succData.redPacketID, PlayerFamilyRedPacket.State_NoGot, succID)
|
| | | #if succData.redPacketID:
|
| | | # PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, succData.redPacketID, PlayerFamilyRedPacket.State_NoGot, succID)
|
| | | GameWorld.DebugLog(" OK! awardItemDict=%s moneyDict=%s" % (itemDict, succData.moneyDict))
|
| | | ItemControler.NotifyGiveAwardInfo(curPlayer, giveItemList, "SuccessAward", exp=succData.exp, moneyInfo=succData.moneyDict)
|
| | | return itemDict
|
| | |
| | | Def_Notify_WorldKey_FamilyKillHorsePetRobBossCnt = 'FamilyKillHorsePetRobBossCnt' # 仙盟击杀骑宠boss数统计
|
| | | Def_Notify_WorldKey_HorsePetRobBossPlayerCount = 'HorsePetRobBossPlayerCount' # 骑宠争夺活动有效参考人数
|
| | |
|
| | | Def_Notify_WorldKey_RedPacketOutput = 'RedPacketOutput' # 红包产出信息
|
| | | Def_Notify_WorldKey_HurtLog = 'HurtLog' # 战斗伤害日志
|
| | |
|
| | | Def_Notify_WorldKey_AssistBoss = "AssistBoss" # 协助boss
|
| | |
| | | OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
|
| | | OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
|
| | | OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
|
| | | OperationActionName_FeastRedPacket = "ActFeastRedPacket" # 节日红包活动
|
| | | OperationActionName_CollectWords = "ActCollectWords" # 集字活动
|
| | | OperationActionName_LuckyTreasure = "ActLuckyTreasure" # 幸运鉴宝活动
|
| | | OperationActionName_RechargePrize = "ActRechargePrize" # 充值返利活动(节日活动)
|
| | |
| | | OperationActionName_Yunshi = "ActYunshi" # 运势活动
|
| | | OperationActionName_Lunhuidian = "ActLunhuidian" # 轮回殿活动
|
| | | #节日活动类型列表 - 该类型无视开服天,日期到了就开启
|
| | | FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
|
| | | FeastOperationActionNameList = [OperationActionName_FeastWeekParty,
|
| | | OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
|
| | | OperationActionName_FeastLogin,
|
| | | OperationActionName_FeastWish, OperationActionName_FeastTravel,
|
| | |
| | | Def_UniversalGameRecType_CrossBattleChampionGroup, # 跨服战场冠军赛分组信息 38
|
| | | Def_UniversalGameRecType_CrossYaomoBossHurtInfo, # 跨服妖魔boss伤血信息 39
|
| | | Def_UniversalGameRecType_40,
|
| | | Def_UniversalGameRecType_RedPacketRecord, # 红包产出结果记录41
|
| | | Def_UniversalGameRecType_41, # 红包产出结果记录41
|
| | | Def_UniversalGameRecType_42,
|
| | | Def_UniversalGameRecType_43,
|
| | | Def_UniversalGameRecType_44,
|
| | |
| | | Def_UniversalGameRecType_54,
|
| | | Def_UniversalGameRecType_55,
|
| | | Def_UniversalGameRecType_56,
|
| | | Def_UniversalGameRecType_GrabRedAllRecord, # 抢红包总记录57
|
| | | Def_UniversalGameRecType_GrabRedNewRecord, # 抢红包可抢信息记录58
|
| | | Def_UniversalGameRecType_GrabRedOldRecord, # 抢红包已抢完信息记录59
|
| | | Def_UniversalGameRecType_57, # 抢红包总记录57
|
| | | Def_UniversalGameRecType_58, # 抢红包可抢信息记录58
|
| | | Def_UniversalGameRecType_59, # 抢红包已抢完信息记录59
|
| | | Def_UniversalGameRecType_60,
|
| | | Def_UniversalGameRecType_61,
|
| | | Def_UniversalGameRecType_62,
|
| | | Def_UniversalGameRecType_63,
|
| | | Def_UniversalGameRecType_FamilyRedPacketAllRecord, # 仙盟红包总记录64
|
| | | Def_UniversalGameRecType_FamilyRedPacketGrabRecord, # 仙盟红包已抢信息记录65
|
| | | Def_UniversalGameRecType_64, # 仙盟红包总记录64
|
| | | Def_UniversalGameRecType_65, # 仙盟红包已抢信息记录65
|
| | | Def_UniversalGameRecType_DujieHelpAllRecord, # 渡劫副本护法总记录66
|
| | | Def_UniversalGameRecType_DujieHelpRecord, # 渡劫副本护法详细记录67
|
| | | Def_UniversalGameRecType_FamilyWarBattle, # 仙盟联赛对战表68
|
| | |
| | | SuccType_Collect, #采集X物品X次131
|
| | | SuccType_InlayGatherSoul, #镶嵌X枚X品质聚魂(不包含核心)132
|
| | | SuccType_GatherSoulLvUp, #累计聚魂总等级XX(不包含核心)133
|
| | | SuccType_FeastRedPack_TalkWorld, #节日红包 - 世界频道发言 x次 134
|
| | | SuccType_FeastRedPack_Pray, # 节日红包 - 祈祷x次 135
|
| | | SuccType_FeastRedPack_KillSpecificNPC, # 节日红包 - 击杀特定NPC x次 136
|
| | | SuccType_FeastRedPack_KillBoss, # 节日红包 - 指定类型boss x次 137
|
| | | SuccType_FeastRedPack_EnterMap, # 节日红包 - 进入指定地图 x次 138
|
| | | SuccType_FeastRedPack_TaskCRun, # 节日红包 - 完成x次日常环任务成就 139
|
| | | SuccType_FeastRedPack_Dice, # 节日红包 - 天机摇骰子x次 140
|
| | | SuccType_FeastRedPack_CrossPK, # 节日红包 - 跨服PK x次 141
|
| | | SuccType_FeastRedPack_FBSweep, # 节日红包 - 副本扫荡 x次 142
|
| | | SuccType_134, #节日红包 - 世界频道发言 x次 134
|
| | | SuccType_135, # 节日红包 - 祈祷x次 135
|
| | | SuccType_136, # 节日红包 - 击杀特定NPC x次 136
|
| | | SuccType_137, # 节日红包 - 指定类型boss x次 137
|
| | | SuccType_138, # 节日红包 - 进入指定地图 x次 138
|
| | | SuccType_139, # 节日红包 - 完成x次日常环任务成就 139
|
| | | SuccType_140, # 节日红包 - 天机摇骰子x次 140
|
| | | SuccType_141, # 节日红包 - 跨服PK x次 141
|
| | | SuccType_142, # 节日红包 - 副本扫荡 x次 142
|
| | | SuccType_PassSkyTower, #通关天星塔 143
|
| | | SuccType_Battlefield_Join, # 古神战场 - 参与 x次 144
|
| | | SuccType_Battlefield_CallOpen, # 古神战场 - 召集开启 x次 145
|
| | |
| | | SuccType_MineAreaRobCnt, #采集他人福地x次数 183
|
| | | ) = range(1, 184)
|
| | |
|
| | | # 节日红包成就类型
|
| | | FeastRedPackSuccessTypeList = range(SuccType_FeastRedPack_TalkWorld, SuccType_FeastRedPack_FBSweep + 1)
|
| | |
|
| | | # 连续天规则的成就类型
|
| | | ContinueSuccessTypeList = []
|
| | |
|
| | |
| | | SuccType_QueenRelics,SuccType_XMZZConWin,
|
| | | SuccType_Collect,SuccType_DogzBattle,
|
| | | SuccType_GetSpecialItem,SuccType_GetMagicWeapon,SuccType_XBXZ,
|
| | | SuccType_FeastRedPack_KillSpecificNPC,SuccType_FeastRedPack_KillBoss,
|
| | | SuccType_FeastRedPack_EnterMap, SuccType_FeastRedPack_FBSweep,
|
| | | ]
|
| | |
|
| | | # 部分参数不向下适配检查的成就类型,此配置的类型不能在 UnDownCheckSuccessTypeList 里 {类型:[不向下适配的参数索引, ...], ...}
|
| | |
| | | Def_Boss_Func_Home, # BOSS之家
|
| | | Def_Boss_Func_Dogz, # 神兽功能BOSS
|
| | | ) = range(3)
|
| | |
|
| | | # 红包类型定义
|
| | | RedPackType_GoldPacket = 0 # 主动发钻石红包
|
| | | RedPackType_OpenServer = 5 # 开服红包
|
| | | RedPackType_FeastSysBig = 31 # 节日系统大红包
|
| | | RedPackType_FeastSysSmall = 32 # 节日系统小红包
|
| | | RedPackType_FeastSucc = 33 # 节日成就红包
|
| | | RedPackType_Server = 36 # 全服红包
|
| | |
|
| | | # 红包类型分类定义
|
| | | RedPackWayType_Family = "1" # 仙盟红包
|
| | | RedPackWayType_Server = "2" # 全服红包
|
| | | RedPackWayType_Feast = "3" # 节日红包
|