66 【公会】基础主体-服务端(徽章旗帜、旗号;捐献;公会加经验、加贡献度;搜索支持公会编号;)
| | |
| | | dict ExpMaterial; //翅膀代数对应精炼值
|
| | | };
|
| | |
|
| | | //仙盟科技表
|
| | |
|
| | | struct tagFamilyTech
|
| | | {
|
| | | DWORD _TechID; //科技ID*1000+等级
|
| | | BYTE AttrType; //属性类型
|
| | | DWORD AttrValue; //属性值
|
| | | DWORD Contribution; //需要贡献度
|
| | | DWORD PowerEx; //额外战力
|
| | | };
|
| | |
|
| | | //NPC掉落表
|
| | |
|
| | | struct tagNPCDropItem
|
| | |
| | | DWORD _NPCID; //ID
|
| | | WORD PerPlayerMoneyAward; // 首杀全服玩家奖励灵石额度/人
|
| | | list PersonFirstKillAward; // 个人首次击杀奖励 [[物品ID,个数,是否拍品], ...]
|
| | | };
|
| | |
|
| | | //仙盟活跃表
|
| | |
|
| | | struct tagFamilyActivity
|
| | | {
|
| | | DWORD _ID; //ID
|
| | | WORD UnLockFuncID; //解锁功能ID
|
| | | BYTE TotalActivityTime; //总次数
|
| | | WORD SingleTimes; //增加活跃需要次数
|
| | | WORD SingleActiveValue; //每轮增加活跃积分
|
| | | };
|
| | |
|
| | | //仙盟红包表
|
| | |
| | | DWORD CustomFamilyID; //定制仙盟ID
|
| | | };
|
| | |
|
| | | //仙盟捐献表
|
| | | struct FamilyDonate
|
| | | {
|
| | | BYTE _DonateType; //捐献类型
|
| | | BYTE DailyCnt; //每日次数
|
| | | BYTE MoneyType; //消耗货币类型
|
| | | DWORD MoneyValue; //消耗货币值
|
| | | list AwardItemList; //获得奖励列表[[物品ID,个数], ...]
|
| | | };
|
| | |
|
| | | //仙盟珍宝阁砍价表
|
| | | struct FamilyZhenbaogeCut
|
| | | {
|
| | |
| | | PacketSubCMD_6=0x12
|
| | | PacketCallFunc_6=OnFamilyMoneyDonate
|
| | |
|
| | | PacketCMD_7=0xA6
|
| | | PacketSubCMD_7=0x13
|
| | | PacketCallFunc_7=OnFamilyAffairOP
|
| | | PacketCMD_7=
|
| | | PacketSubCMD_7=
|
| | | PacketCallFunc_7=
|
| | |
|
| | | PacketCMD_8=0xA6
|
| | | PacketSubCMD_8=0x20
|
| | |
| | | PacketCMD_2=0xA6
|
| | | PacketSubCMD_2=0x10
|
| | | PacketCallFunc_2=OnFamilyStoreExchange
|
| | |
|
| | | ;家族科技
|
| | | [PlayerFamilyTech]
|
| | | ScriptName = Player\PlayerFamilyTech.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 1
|
| | |
|
| | | PacketCMD_1=0xA6
|
| | | PacketSubCMD_1=0x07
|
| | | PacketCallFunc_1=OnPlayerFamilyTechLVUP
|
| | |
|
| | | ;家族阵法
|
| | | [PlayerFamilyZhenfa]
|
| | |
| | | Def_ItemID_GoldMoney = 20 # 直接给仙玉
|
| | | Def_ItemID_SilverMoney = 22 # 直接给铜钱
|
| | | Def_ItemID_FamilyContribution = 26 # 直接给战盟贡献点
|
| | | Def_ItemID_FamilyActive = 28 # 直接给战盟活跃点
|
| | | Def_ItemID_SP = 29 # 直接给sp
|
| | | Def_ItemID_GoldPaper = 30 # 直接给绑玉/灵石
|
| | | Def_ItemID_RealmPoint = 24 # 直接给修行点
|
| | |
| | | Def_ItemID_FamilyFlagWarPoint = 540 # 直接给万界积分
|
| | | Def_ItemID_TongTianPoint = 720 # 直接给通天令经验点
|
| | | Def_ItemID_SuccessScore = 590 # 直接给成就积分
|
| | | Def_TransformItemIDList = [Def_ItemID_FamilyContribution, Def_ItemID_FamilyActive, Def_ItemID_SP, Def_ItemID_GoldPaper, |
| | | Def_TransformItemIDList = [Def_ItemID_FamilyContribution, Def_ItemID_SP, Def_ItemID_GoldPaper, |
| | | Def_ItemID_RealmPoint, Def_ItemID_SilverMoney, Def_ItemID_BossReborn, Def_ItemID_Ysog,
|
| | | Def_ItemID_SoulDust, Def_ItemID_SoulSplinters, Def_ItemID_SoulCore, Def_ItemID_Honor, Def_ItemID_GoldMoney,
|
| | | Def_ItemID_FuncSysPrivilege, Def_ItemID_FCPartyPoint, Def_ItemID_BTGMPoint, Def_ItemID_GuShenMoney,
|
| | |
| | | Def_Effect_GivePlayerMoneyGold = 203 #给人物金钱 仙玉道具效果ID
|
| | | Def_Effect_AddDienstgrad = 204 #使用物品获得称号
|
| | | Def_Effect_UseItemGiveZhenQi = 205 #使用道具给予真气
|
| | | Def_Effect_ItemGiveFamilyActivity = 208 #使用道具给予仙盟活跃令
|
| | | Def_Effect_ItemGiveFamilyContribution = 209 #使用道具给予仙盟贡献
|
| | | Def_Effect_ItemAddExp = 213 #给经验道具
|
| | | Def_Effect_ItemAddLV = 214 #直接升级道具
|
| | |
| | |
|
| | | Def_PlayerKey_CrossRegisterMap = "CrossRegisterMap" #跨服注册活动地图, dataMapID
|
| | |
|
| | | Def_Player_Dict_FamilyTechLV = "FamilyTechLV_%s" #家族科技等级, 参数(科技ID)
|
| | | Def_Player_Dict_RouteServerInitOK = "RouteServerInitOK_33" #RouteServer初始化成功(仅登陆一次)
|
| | | Def_Player_Dict_Wallow_LV = "GameWallowLV_34" #防沉迷等级
|
| | | Def_Player_Dict_Wallow_OfflineTime = "GameWallowOfflineTime_35" #防沉迷离线累积时间
|
| | |
| | | Def_Player_Dict_UpdatePlayerName = "UpdatePlayerName_199" # 改名锁
|
| | | Def_Player_Dict_UpdateFamilyNameItemIndex = "UpdateFamilyNameItemIndex" # 改名物品在背包的位置
|
| | | Def_Player_Dict_UpdateFamilyName = "UpdateFamilyName" # 改名锁
|
| | | Def_Player_Dict_FamilyDayAward = "FamilyDayAward" # 仙盟每日奖励领奖记录
|
| | | Def_Player_Dict_FamilyDonateRecord = "FamilyDonateRecord" # 仙盟今日捐献记录,按位存储每种类型今日已捐献次数
|
| | | Def_Player_Dict_FamilyEmblemID = "FamilyEmblemID" # 仙盟徽章ID
|
| | | Def_Player_Dict_FamilyZhenbaogeCut = "FamilyZhenbaogeCut" #珍宝阁今日是否已砍过价
|
| | | Def_Player_Dict_FamilyZhenbaogeBuy = "FamilyZhenbaogeBuy" #珍宝阁今日是否已购买过
|
| | |
|
| | | # 仙盟事务
|
| | | Def_Player_Dict_FamilyAffairRefreshFree = "FamilyAffairRefreshFree" # 今日已免费刷新事务次数
|
| | | Def_Player_Dict_FamilyAffairInfo = "FamilyAffairStar_%s" # 事务信息,星级*10+状态(0-无;1-进行中;2-已完成);参数(事务编号ID)
|
| | | Def_Player_Dict_FamilyAffairStartTime = "FamilyAffairStartTime_%s" # 事务开始时间戳,参数(事务编号ID)
|
| | | Def_Player_Dict_FamilyDonateCnt = "FamilyDonateCnt_%s" # 仙盟今日捐献次数,参数(捐献类型)
|
| | |
|
| | | Def_Player_Dict_DelPackIndex = "DelPackIndex215" # 装备回购不重排,只记录最旧的一个物品
|
| | |
|
| | |
| | | Def_PDict_FirstChargeRecord = "FirstChargeRecord_%s" # 首充领取记录,按位记录首充第x天是否已领取,参数(首充ID)
|
| | | Def_PDict_FirstChargeTime = "FirstChargeTime_%s" # 首充充值时间戳,参数(首充ID)
|
| | | Def_PDict_IsReBorn = "Def_PDict_IsReBorn" # 是否回城复活
|
| | | Def_PDict_FamilyWarDailyReward = "FamilyWarDailyReward" # 王者仙盟每日俸禄领取状态
|
| | | Def_PDict_Family_Contribution = "FamilyContribution" #战盟贡献度
|
| | | Def_PDict_HasChange_FamilyActiveToContribution = "HasChangeContribution" #战盟活跃度已转化过贡献度
|
| | | Def_PDict_KillPlayerAddActive = "KillPlayerAddActiveByDay" # 杀人每日获得活跃度
|
| | | Def_PDict_LoginDayCnt = "PLoginDayCnt" # 累计登陆天数
|
| | | Def_PDict_LoginDayAward = "PLoginDayAward" # 累计登陆领取情况
|
| | | Def_PDict_CollNpcIDCollTime = "NPCIDCollTime_%s" # 采集NPCID对应每日对应采集次数,%sNPCID
|
| | |
| | | Def_PDict_DailyActionDayBuyTimes = "DADayBuyTimes_%s" # 每日活动今日购买次数 参数每日活动ID
|
| | | Def_PDict_DailyActionDayItemTimes = "DADayItemTimes_%s" # 每日活动今日物品增加次数 参数每日活动ID
|
| | | Def_PDict_DailyActionWeekTimes = "DailyActionWeekTimes_%s" # 每日活动本周完成次数 参数每日活动ID
|
| | | #仙盟活跃
|
| | | Def_PDict_FamilyActivityFinishCnt = "FamilyActivityFinishCnt%s" # 已完成次数
|
| | | Def_PDict_FamilyActivityAwardRecord = "FamilyActivityAwardRecord" # 活跃度奖励领取记录,按二进制位标识
|
| | |
|
| | | # 投资理财
|
| | | Def_PDict_InvestTime = "InvestTime_%s" # 投资时的时间,参数为投资类型
|
| | |
| | | # 游戏功能奖励定义
|
| | | (
|
| | | Def_RewardType_Activity, # 活跃度奖励 0
|
| | | Def_RewardType_FamilyActivity, # 仙盟活跃度奖励 1
|
| | | Def_RewardType_1, # 1
|
| | | Def_RewardType_ChampionFamilyDailyReward, # 仙盟联赛冠军仙盟每日俸禄奖励 2
|
| | | Def_RewardType_XMZZWinCnt, # 仙魔之争胜利场数奖励 3
|
| | | Def_RewardType_FamilyDayAward, # 仙盟每日福利奖励 4
|
| | |
| | | # A6 24 修改家族徽章 #tagCMChangeFamilyEmblem
|
| | |
|
| | | class tagCMChangeFamilyEmblem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EmblemID", c_ubyte), # 更换的徽章ID
|
| | | ]
|
| | | Head = tagHead()
|
| | | EmblemID = 0 #(BYTE EmblemID)// 更换的徽章ID
|
| | | EmblemWord = "" #(char EmblemWord[3])// 徽章文字
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA6
|
| | | self.SubCmd = 0x24
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x24
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA6
|
| | | self.SubCmd = 0x24
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x24
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMChangeFamilyEmblem)
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 3
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.EmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.EmblemWord)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A6 24 修改家族徽章 //tagCMChangeFamilyEmblem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EmblemID:%d
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | EmblemID:%d,
|
| | | EmblemWord:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EmblemID
|
| | | self.Head.OutputString(),
|
| | | self.EmblemID,
|
| | | self.EmblemWord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMChangeFamilyEmblem=tagCMChangeFamilyEmblem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeFamilyEmblem.Cmd,m_NAtagCMChangeFamilyEmblem.SubCmd))] = m_NAtagCMChangeFamilyEmblem
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeFamilyEmblem.Head.Cmd,m_NAtagCMChangeFamilyEmblem.Head.SubCmd))] = m_NAtagCMChangeFamilyEmblem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | Head = tagHead()
|
| | | Name = "" #(char Name[33])
|
| | | EmblemID = 0 #(WORD EmblemID)//选择徽章ID,解锁仙盟等级为1级的均为可选ID
|
| | | EmblemWord = "" #(char EmblemWord[3])//徽章文字
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.EmblemID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.SubCmd = 0x04
|
| | | self.Name = ""
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 33
|
| | | length += 2
|
| | | length += 3
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 33, self.Name)
|
| | | data = CommFunc.WriteWORD(data, self.EmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.EmblemWord)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Name:%s,
|
| | | EmblemID:%d
|
| | | EmblemID:%d,
|
| | | EmblemWord:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Name,
|
| | | self.EmblemID
|
| | | self.EmblemID,
|
| | | self.EmblemWord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
| | |
|
| | | m_NAtagCMDeleteFamilyMember=tagCMDeleteFamilyMember()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDeleteFamilyMember.Cmd,m_NAtagCMDeleteFamilyMember.SubCmd))] = m_NAtagCMDeleteFamilyMember
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange
|
| | |
|
| | | class tagCMFamilyActivityExchange(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//材料所在背包索引的数量
|
| | | IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
|
| | | ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x06
|
| | | 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):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.IndexList.append(value)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ItemIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA6
|
| | | self.Head.SubCmd = 0x06
|
| | | self.Count = 0
|
| | | self.IndexList = list()
|
| | | self.ItemIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2 * self.Count
|
| | | length += 4 * self.Count
|
| | |
|
| | | 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.WriteWORD(data, self.IndexList[i])
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | IndexList:%s,
|
| | | ItemIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "...",
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyActivityExchange=tagCMFamilyActivityExchange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyActivityExchange.Head.Cmd,m_NAtagCMFamilyActivityExchange.Head.SubCmd))] = m_NAtagCMFamilyActivityExchange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 13 家族事务操作 #tagCMFamilyAffairOP
|
| | |
|
| | | class tagCMFamilyAffairOP(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("OPType", c_ubyte), # 操作类型:1-刷新事务;2-开始事务;3-领取事务奖励;
|
| | | ("AffairID", c_ushort), # 事务ID,可选
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA6
|
| | | self.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA6
|
| | | self.SubCmd = 0x13
|
| | | self.OPType = 0
|
| | | self.AffairID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFamilyAffairOP)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A6 13 家族事务操作 //tagCMFamilyAffairOP:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | OPType:%d,
|
| | | AffairID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.OPType,
|
| | | self.AffairID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyAffairOP=tagCMFamilyAffairOP()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyAffairOP.Cmd,m_NAtagCMFamilyAffairOP.SubCmd))] = m_NAtagCMFamilyAffairOP
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMSendFamilyRedPacket=tagCMSendFamilyRedPacket()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendFamilyRedPacket.Head.Cmd,m_NAtagCMSendFamilyRedPacket.Head.SubCmd))] = m_NAtagCMSendFamilyRedPacket
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 07 自身家族科技等级提升 #tagCMFamilyTechLVUP
|
| | |
|
| | | class tagCMFamilyTechLVUP(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TechID", c_int), # 科技ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA6
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xA6
|
| | | self.SubCmd = 0x07
|
| | | self.TechID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMFamilyTechLVUP)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A6 07 自身家族科技等级提升 //tagCMFamilyTechLVUP:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TechID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TechID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMFamilyTechLVUP=tagCMFamilyTechLVUP()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyTechLVUP.Cmd,m_NAtagCMFamilyTechLVUP.SubCmd))] = m_NAtagCMFamilyTechLVUP
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 16 仙盟活跃信息通知 #tagMCFamilyActivityInfo
|
| | |
|
| | | class tagMCFamilyActionCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ActionID", c_ubyte), # ID
|
| | | ("FinishCnt", c_ushort), # 已完成次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ActionID = 0
|
| | | self.FinishCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyActionCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 16 仙盟活跃信息通知 //tagMCFamilyActivityInfo:
|
| | | ActionID:%d,
|
| | | FinishCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActionID,
|
| | | self.FinishCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFamilyActivityInfo(Structure):
|
| | | Head = tagHead()
|
| | | AwardRecord = 0 #(DWORD AwardRecord)// 领奖情况记录
|
| | | Count = 0 #(BYTE Count)// 个数
|
| | | InfoList = list() #(vector<tagMCFamilyActionCnt> InfoList)// 活动信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x16
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temInfoList = tagMCFamilyActionCnt()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x16
|
| | | self.AwardRecord = 0
|
| | | self.Count = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AwardRecord:%d,
|
| | | Count:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AwardRecord,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyActivityInfo=tagMCFamilyActivityInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityInfo.Head.Cmd,m_NAtagMCFamilyActivityInfo.Head.SubCmd))] = m_NAtagMCFamilyActivityInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 54 法器信息 #tagMCFaQiInfo
|
| | |
|
| | | class tagMCFaQiInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 02 捐献次数信息 #tagSCDonateCntInfo
|
| | |
|
| | | class tagSCDonateCntInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DonateCntList = list() #(vector<BYTE> DonateCntList)// 今日已捐献次数列表 [捐献类型1次数, ...]
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x02
|
| | | 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):
|
| | | value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
|
| | | self.DonateCntList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x02
|
| | | self.Count = 0
|
| | | self.DonateCntList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1 * self.Count
|
| | |
|
| | | 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.WriteBYTE(data, self.DonateCntList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DonateCntList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCDonateCntInfo=tagSCDonateCntInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDonateCntInfo.Head.Cmd,m_NAtagSCDonateCntInfo.Head.SubCmd))] = m_NAtagSCDonateCntInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 13 家族行为信息 #tagMCFamilyActionInfo
|
| | |
|
| | | class tagMCFamilyAction(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFamilyActionInfo=tagMCFamilyActionInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActionInfo.Head.Cmd,m_NAtagMCFamilyActionInfo.Head.SubCmd))] = m_NAtagMCFamilyActionInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
|
| | |
|
| | | class tagMCFamilyActivityExchangeResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Point", c_int), # 活跃令
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x02
|
| | | 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 = 0x02
|
| | | self.Point = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyActivityExchangeResult)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Point:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Point
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 08 家族事务信息 #tagMCFamilyAffairInfo
|
| | |
|
| | | class tagMCFamilyAffair(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("AffairID", c_ushort), # 事务ID
|
| | | ("Star", c_ubyte), # 星级
|
| | | ("State", c_ubyte), # 状态:0-无;1-进行中;2-已完成
|
| | | ("RemainDuration", c_ushort), # 剩余时长,秒,有剩余时间代表进行中
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.AffairID = 0
|
| | | self.Star = 0
|
| | | self.State = 0
|
| | | self.RemainDuration = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyAffair)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 08 家族事务信息 //tagMCFamilyAffairInfo:
|
| | | AffairID:%d,
|
| | | Star:%d,
|
| | | State:%d,
|
| | | RemainDuration:%d
|
| | | '''\
|
| | | %(
|
| | | self.AffairID,
|
| | | self.Star,
|
| | | self.State,
|
| | | self.RemainDuration
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFamilyAffairInfo(Structure):
|
| | | Head = tagHead()
|
| | | RefreshFreeCount = 0 #(BYTE RefreshFreeCount)// 今日已免费刷新次数
|
| | | Count = 0 #(BYTE Count)
|
| | | AffairInfoList = list() #(vector<tagMCFamilyAffair> AffairInfoList)// 事务列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RefreshFreeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAffairInfoList = tagMCFamilyAffair()
|
| | | _pos = temAffairInfoList.ReadData(_lpData, _pos)
|
| | | self.AffairInfoList.append(temAffairInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x08
|
| | | self.RefreshFreeCount = 0
|
| | | self.Count = 0
|
| | | self.AffairInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AffairInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RefreshFreeCount)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AffairInfoList[i].GetLength(), self.AffairInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RefreshFreeCount:%d,
|
| | | Count:%d,
|
| | | AffairInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RefreshFreeCount,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyAffairInfo=tagMCFamilyAffairInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyAffairInfo.Head.Cmd,m_NAtagMCFamilyAffairInfo.Head.SubCmd))] = m_NAtagMCFamilyAffairInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | JoinLVMin = 0 #(WORD JoinLVMin)//限制最低可加入的玩家等级
|
| | | ServerID = 0 #(DWORD ServerID)//区服ID
|
| | | EmblemID = 0 #(DWORD EmblemID)//徽章ID
|
| | | EmblemWord = "" #(char EmblemWord[3])//徽章文字
|
| | | FightPower = 0 #(DWORD FightPower)//总战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//总战力,整除亿部分
|
| | | MemberCount = 0 #(BYTE MemberCount)//成员人数
|
| | |
| | | self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | self.JoinLVMin = 0
|
| | | self.ServerID = 0
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ""
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.MemberCount = 0
|
| | |
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 3
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | |
| | | data = CommFunc.WriteWORD(data, self.JoinLVMin)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.EmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.EmblemWord)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | |
| | | JoinLVMin:%d,
|
| | | ServerID:%d,
|
| | | EmblemID:%d,
|
| | | EmblemWord:%s,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | MemberCount:%d
|
| | |
| | | self.JoinLVMin,
|
| | | self.ServerID,
|
| | | self.EmblemID,
|
| | | self.EmblemWord,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.MemberCount
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 04 玩家战盟科技等级 #tagMCPlayerTechInfo
|
| | |
|
| | | class tagMCPlayerTech(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TechID", c_ushort), # 科技ID
|
| | | ("TechLV", c_ushort), # 特技等级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TechID = 0
|
| | | self.TechLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPlayerTech)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 04 玩家战盟科技等级 //tagMCPlayerTechInfo:
|
| | | TechID:%d,
|
| | | TechLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.TechID,
|
| | | self.TechLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCPlayerTechInfo(Structure):
|
| | | Head = tagHead()
|
| | | TechCnt = 0 #(BYTE TechCnt)// 科技个数
|
| | | TechInfoList = list() #(vector<tagMCPlayerTech> TechInfoList)// 科技信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TechCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TechCnt):
|
| | | temTechInfoList = tagMCPlayerTech()
|
| | | _pos = temTechInfoList.ReadData(_lpData, _pos)
|
| | | self.TechInfoList.append(temTechInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x04
|
| | | self.TechCnt = 0
|
| | | self.TechInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.TechCnt):
|
| | | length += self.TechInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TechCnt)
|
| | | for i in range(self.TechCnt):
|
| | | data = CommFunc.WriteString(data, self.TechInfoList[i].GetLength(), self.TechInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TechCnt:%d,
|
| | | TechInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TechCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCPlayerTechInfo=tagMCPlayerTechInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerTechInfo.Head.Cmd,m_NAtagMCPlayerTechInfo.Head.SubCmd))] = m_NAtagMCPlayerTechInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 20 玩家家族信息 #tagMCRoleFamilyInfo
|
| | |
|
| | | class tagMCRoleFamilyMember(Structure):
|
| | |
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//战力,整除亿部分
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | ContribTotal = 0 #(DWORD ContribTotal)//总贡献度
|
| | | ContribWeek = 0 #(DWORD ContribWeek)//周贡献度
|
| | | ContribDay = 0 #(DWORD ContribDay)//日贡献度
|
| | | DonateCntTotal = 0 #(DWORD DonateCntTotal)//总捐献次数
|
| | | DonateCntDay = 0 #(BYTE DonateCntDay)//日捐献次数
|
| | | OffTime = 0 #(DWORD OffTime)// 0-在线; >0-/离线时间戳
|
| | | data = None
|
| | |
|
| | |
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ContribTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ContribWeek,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ContribDay,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.DonateCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.DonateCntDay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OffTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | |
| | | self.FightPowerEx = 0
|
| | | self.ServerID = 0
|
| | | self.ContribTotal = 0
|
| | | self.ContribWeek = 0
|
| | | self.ContribDay = 0
|
| | | self.DonateCntTotal = 0
|
| | | self.DonateCntDay = 0
|
| | | self.OffTime = 0
|
| | | return
|
| | |
|
| | |
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.ContribTotal)
|
| | | data = CommFunc.WriteDWORD(data, self.ContribWeek)
|
| | | data = CommFunc.WriteDWORD(data, self.ContribDay)
|
| | | data = CommFunc.WriteDWORD(data, self.DonateCntTotal)
|
| | | data = CommFunc.WriteBYTE(data, self.DonateCntDay)
|
| | | data = CommFunc.WriteDWORD(data, self.OffTime)
|
| | | return data
|
| | |
|
| | |
| | | FightPowerEx:%d,
|
| | | ServerID:%d,
|
| | | ContribTotal:%d,
|
| | | ContribWeek:%d,
|
| | | ContribDay:%d,
|
| | | DonateCntTotal:%d,
|
| | | DonateCntDay:%d,
|
| | | OffTime:%d
|
| | | '''\
|
| | | %(
|
| | |
| | | self.FightPowerEx,
|
| | | self.ServerID,
|
| | | self.ContribTotal,
|
| | | self.ContribWeek,
|
| | | self.ContribDay,
|
| | | self.DonateCntTotal,
|
| | | self.DonateCntDay,
|
| | | self.OffTime
|
| | | )
|
| | | return DumpString
|
| | |
| | | JoinLVMin = 0 #(WORD JoinLVMin)//限制最低可加入的玩家等级
|
| | | ServerID = 0 #(DWORD ServerID)//区服ID,创建时以族长的区服ID赋值
|
| | | EmblemID = 0 #(DWORD EmblemID)//徽章ID
|
| | | EmblemWord = "" #(char EmblemWord[3])//徽章文字
|
| | | FightPower = 0 #(DWORD FightPower)//总战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//总战力,整除亿部分
|
| | | BroadcastLen = 0 #(WORD BroadcastLen)//公告
|
| | |
| | | self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BroadcastLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | |
| | | self.JoinLVMin = 0
|
| | | self.ServerID = 0
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ""
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.BroadcastLen = 0
|
| | |
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 3
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | |
| | | data = CommFunc.WriteWORD(data, self.JoinLVMin)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.EmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.EmblemWord)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteWORD(data, self.BroadcastLen)
|
| | |
| | | JoinLVMin:%d,
|
| | | ServerID:%d,
|
| | | EmblemID:%d,
|
| | | EmblemWord:%s,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | BroadcastLen:%d,
|
| | |
| | | self.JoinLVMin,
|
| | | self.ServerID,
|
| | | self.EmblemID,
|
| | | self.EmblemWord,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.BroadcastLen,
|
| | |
| | | FamilyID = 0 #(DWORD FamilyID)
|
| | | FamilyName = "" #(char FamilyName[33])
|
| | | FamilyEmblemID = 0 #(DWORD FamilyEmblemID)//仙盟徽章ID
|
| | | FamilyEmblemWord = "" #(char FamilyEmblemWord[3])//徽章文字
|
| | | PlusDataSize = 0 #(DWORD PlusDataSize)
|
| | | PlusData = "" #(String PlusData)//扩展记录
|
| | | data = None
|
| | |
| | | self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyEmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
|
| | | return _pos
|
| | |
| | | self.FamilyID = 0
|
| | | self.FamilyName = ""
|
| | | self.FamilyEmblemID = 0
|
| | | self.FamilyEmblemWord = ""
|
| | | self.PlusDataSize = 0
|
| | | self.PlusData = ""
|
| | | return
|
| | |
| | | length += 4
|
| | | length += 33
|
| | | length += 4
|
| | | length += 3
|
| | | length += 4
|
| | | length += len(self.PlusData)
|
| | |
|
| | |
| | | data = CommFunc.WriteDWORD(data, self.FamilyID)
|
| | | data = CommFunc.WriteString(data, 33, self.FamilyName)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyEmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.FamilyEmblemWord)
|
| | | data = CommFunc.WriteDWORD(data, self.PlusDataSize)
|
| | | data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
|
| | | return data
|
| | |
| | | FamilyID:%d,
|
| | | FamilyName:%s,
|
| | | FamilyEmblemID:%d,
|
| | | FamilyEmblemWord:%s,
|
| | | PlusDataSize:%d,
|
| | | PlusData:%s
|
| | | '''\
|
| | |
| | | self.FamilyID,
|
| | | self.FamilyName,
|
| | | self.FamilyEmblemID,
|
| | | self.FamilyEmblemWord,
|
| | | self.PlusDataSize,
|
| | | self.PlusData
|
| | | )
|
| | |
| | | ('FightPower', ctypes.c_ulong),
|
| | | ('FightPowerEx', ctypes.c_ulong),
|
| | | ('EmblemID', ctypes.c_ushort),
|
| | | ('EmblemWord', ctypes.c_char * 3),
|
| | | ('ADOResult', ctypes.c_ulong),
|
| | | ]
|
| | |
|
| | |
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ''
|
| | |
|
| | | def readData(self, buf, pos = 0, length = 0):
|
| | | if not pos <= length:
|
| | |
| | | self.FightPower, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FightPowerEx, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.EmblemID, pos = CommFunc.ReadWORD(buf, pos)
|
| | | self.EmblemWord, pos = CommFunc.ReadString(buf, pos, 3)
|
| | | return self.getLength()
|
| | |
|
| | | def getBuffer(self):
|
| | |
| | | buf = CommFunc.WriteDWORD(buf, self.FightPower)
|
| | | buf = CommFunc.WriteDWORD(buf, self.FightPowerEx)
|
| | | buf = CommFunc.WriteWORD(buf, self.EmblemID)
|
| | | buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 3, self.EmblemWord)
|
| | | return buf
|
| | |
|
| | | def getLength(self):
|
| | |
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ushort)
|
| | | length += sizeof(ctypes.c_char) * 3
|
| | | return length
|
| | |
|
| | | def outputString(self):
|
| | |
| | | FightPower = %s,
|
| | | FightPowerEx = %s,
|
| | | EmblemID = %s,
|
| | | EmblemWord = %s,
|
| | | ADOResult = %s,
|
| | | '''%(
|
| | | self.ID,
|
| | |
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.EmblemID,
|
| | | self.EmblemWord,
|
| | | self.ADOResult,
|
| | | )
|
| | | return output
|
| | |
| | | self.Name = Str
|
| | | else:
|
| | | self.Name = Str[:33]
|
| | | |
| | | def SetEmblemWord(self,Str):
|
| | | if len(Str)<=3:
|
| | | self.EmblemWord = Str
|
| | | else:
|
| | | self.EmblemWord = Str[:3]
|
| | |
|
| | |
|
| | | # 家族成员表 #tagDBFamilyMem
|
| | |
| | | ('OffTime', ctypes.c_ulong),
|
| | | ('FmLV', ctypes.c_ubyte),
|
| | | ('ContribTotal', ctypes.c_ulong),
|
| | | ('ContribWeek', ctypes.c_ulong),
|
| | | ('ContribDay', ctypes.c_ulong),
|
| | | ('DonateCntTotal', ctypes.c_ulong),
|
| | | ('DonateCntDay', ctypes.c_ubyte),
|
| | | ('ADOResult', ctypes.c_ulong),
|
| | | ]
|
| | |
|
| | |
| | | self.OffTime, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FmLV, pos = CommFunc.ReadBYTE(buf, pos)
|
| | | self.ContribTotal, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.ContribWeek, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.ContribDay, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.DonateCntTotal, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.DonateCntDay, pos = CommFunc.ReadBYTE(buf, pos)
|
| | | return self.getLength()
|
| | |
|
| | |
|
| | |
| | | OffTime = %s,
|
| | | FmLV = %s,
|
| | | ContribTotal = %s,
|
| | | ContribWeek = %s,
|
| | | ContribDay = %s,
|
| | | DonateCntTotal = %s,
|
| | | DonateCntDay = %s,
|
| | | ADOResult = %s,
|
| | | '''%(
|
| | | self.PlayerID,
|
| | |
| | | self.OffTime,
|
| | | self.FmLV,
|
| | | self.ContribTotal,
|
| | | self.ContribWeek,
|
| | | self.ContribDay,
|
| | | self.DonateCntTotal,
|
| | | self.DonateCntDay,
|
| | | self.ADOResult,
|
| | | )
|
| | | return output
|
| | |
| | | ('FamilyID', ctypes.c_ulong),
|
| | | ('FamilyName', ctypes.c_char * 33),
|
| | | ('FamilyEmblemID', ctypes.c_ushort),
|
| | | ('FamilyEmblemWord', ctypes.c_char * 3),
|
| | | ('TitleID', ctypes.c_ulong),
|
| | | ('FightPower', ctypes.c_ulong),
|
| | | ('FightPowerEx', ctypes.c_ulong),
|
| | |
| | | self.FamilyID = 0
|
| | | self.FamilyName = ''
|
| | | self.FamilyEmblemID = 0
|
| | | self.FamilyEmblemWord = ''
|
| | | self.TitleID = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | |
| | | self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FamilyName, pos = CommFunc.ReadString(buf, pos, 33)
|
| | | self.FamilyEmblemID, pos = CommFunc.ReadWORD(buf, pos)
|
| | | self.FamilyEmblemWord, pos = CommFunc.ReadString(buf, pos, 3)
|
| | | self.TitleID, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FightPower, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FightPowerEx, pos = CommFunc.ReadDWORD(buf, pos)
|
| | |
| | | buf = CommFunc.WriteDWORD(buf, self.FamilyID)
|
| | | buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.FamilyName)
|
| | | buf = CommFunc.WriteWORD(buf, self.FamilyEmblemID)
|
| | | buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 3, self.FamilyEmblemWord)
|
| | | buf = CommFunc.WriteDWORD(buf, self.TitleID)
|
| | | buf = CommFunc.WriteDWORD(buf, self.FightPower)
|
| | | buf = CommFunc.WriteDWORD(buf, self.FightPowerEx)
|
| | |
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_char) * 33
|
| | | length += sizeof(ctypes.c_ushort)
|
| | | length += sizeof(ctypes.c_char) * 3
|
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ulong)
|
| | |
| | | FamilyID = %s,
|
| | | FamilyName = %s,
|
| | | FamilyEmblemID = %s,
|
| | | FamilyEmblemWord = %s,
|
| | | TitleID = %s,
|
| | | FightPower = %s,
|
| | | FightPowerEx = %s,
|
| | |
| | | self.FamilyID,
|
| | | self.FamilyName,
|
| | | self.FamilyEmblemID,
|
| | | self.FamilyEmblemWord,
|
| | | self.TitleID,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | |
| | | else:
|
| | | self.FamilyName = Str[:33]
|
| | |
|
| | | def SetFamilyEmblemWord(self,Str):
|
| | | if len(Str)<=3:
|
| | | self.FamilyEmblemWord = Str
|
| | | else:
|
| | | self.FamilyEmblemWord = Str[:3]
|
| | | |
| | |
|
| | | # 邮件个人邮件表 #tagDBMailPersonal
|
| | | class tagDBMailPersonal(Structure):
|
| | |
| | | def SetFmLV(self, fmLV): self.__dbData.FmLV = fmLV
|
| | | def GetContribTotal(self): return self.__dbData.ContribTotal
|
| | | def SetContribTotal(self, contribTotal): self.__dbData.ContribTotal = contribTotal
|
| | | def GetContribWeek(self): return self.__dbData.ContribWeek
|
| | | def SetContribWeek(self, contribWeek): self.__dbData.ContribWeek = contribWeek
|
| | | def GetContribDay(self): return self.__dbData.ContribDay
|
| | | def SetContribDay(self, contribDay): self.__dbData.ContribDay = contribDay
|
| | | def GetDonateCntTotal(self): return self.__dbData.DonateCntTotal
|
| | | def SetDonateCntTotal(self, donateCntTotal): self.__dbData.DonateCntTotal = donateCntTotal
|
| | | def GetDonateCntDay(self): return self.__dbData.DonateCntDay
|
| | | def SetDonateCntDay(self, donateCntDay): self.__dbData.DonateCntDay = donateCntDay
|
| | | def GetBuffer(self): return self.__dbData.getBuffer()
|
| | |
|
| | | def RefreshMemberByID(self, playerID):
|
| | |
| | | return
|
| | | def GetEmblemID(self): return self.__dbData.EmblemID
|
| | | def SetEmblemID(self, emblemID): self.__dbData.EmblemID = emblemID
|
| | | def GetEmblemWord(self): return self.__dbData.EmblemWord
|
| | | def SetEmblemWord(self, emblemWord): self.__dbData.EmblemWord = emblemWord
|
| | | def GetBuffer(self): return self.__dbData.getBuffer()
|
| | |
|
| | | ## ------------------------------------------------
|
| | |
| | | def SetFamilyName(self, familyName): self.__dbData.FamilyName = familyName
|
| | | def GetFamilyEmblemID(self): return self.__dbData.FamilyEmblemID
|
| | | def SetFamilyEmblemID(self, familyEmblemID): self.__dbData.FamilyEmblemID = familyEmblemID
|
| | | def GetFamilyEmblemWord(self): return self.__dbData.FamilyEmblemWord
|
| | | def SetFamilyEmblemWord(self, familyEmblemWord): self.__dbData.FamilyEmblemWord = familyEmblemWord
|
| | | def GetTitleID(self): return self.__dbData.TitleID
|
| | | def SetTitleID(self, titleID): self.__dbData.TitleID = titleID
|
| | | def GetFightPower(self): return self.__dbData.FightPower
|
| | |
| | | SendEventPack("UseCurrency_%s" % moneyType, dataDict, curPlayer)
|
| | |
|
| | | #战盟贡献
|
| | | elif moneyType == ShareDefine.TYPE_Price_Family_Contribution:
|
| | | SendEventPack("UseFamilyContribution", dataDict, curPlayer)
|
| | | #elif moneyType == ShareDefine.TYPE_Price_Family_Contribution:
|
| | | # SendEventPack("UseFamilyContribution", dataDict, curPlayer)
|
| | |
|
| | | return
|
| | |
|
| | |
| | | #发送封包
|
| | | SendEventPack("OneTimeCoinGiveGold", dataDict, curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | ## 增加玩家家族活跃度
|
| | | # @param curPlayer: 玩家实例
|
| | | # @param addValue: 增加值
|
| | | # @param curValue: 增加后值
|
| | | # @param reason:增加原因
|
| | | # @return |
| | | def DR_AddPlayerFamilyActiveValue(curPlayer, addValue, curValue, reason):
|
| | | return
|
| | |
|
| | | dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), |
| | | 'AccID':curPlayer.GetAccID(),
|
| | | 'addValue':addValue, 'FamilyActiveValue':curValue, 'Reason':reason}
|
| | | #发送封包
|
| | | SendEventPack("AddPlayerFamilyActiveValue", dataDict, curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | ## 宠物加点
|
| | | # @param curPlayer: 玩家实例
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "仙盟ID:%s,ServerID:%s" % (familyID, family.GetServerID()))
|
| | | GameWorld.DebugAnswer(curPlayer, "LV:%s,Exp:%s" % (family.GetLV(), family.GetExp()))
|
| | | GameWorld.DebugAnswer(curPlayer, "审核:%s,等级条件:%s,申请数:%s" % (family.GetJoinReview(), family.GetJoinLVMin(), len(family.GetReqJoinPlayerInfo())))
|
| | | GameWorld.DebugAnswer(curPlayer, "徽章:%s" % (family.GetEmblemID()))
|
| | | GameWorld.DebugAnswer(curPlayer, "徽章:%s,%s" % (family.GetEmblemID(), GameWorld.CodeToGbk(family.GetEmblemWord())))
|
| | | GameWorld.DebugAnswer(curPlayer, "总战力:%s,人数:%s" % (family.GetFightPowerTotal(), family.GetCount()))
|
| | | GameWorld.DebugAnswer(curPlayer, "盟主:%s" % (family.GetLeaderID()))
|
| | | for index in range(family.GetCount()):
|
| | |
| | | memberCnt = gmList[4] if len(gmList) > 4 else random.randint(1, 10)
|
| | |
|
| | | FakeFamilyName = GameWorld.GbkToCode("神秘军团")
|
| | | FakeEmblemWord = GameWorld.GbkToCode("神")
|
| | |
|
| | | fackFamilyID = ShareDefine.FackFamilyIDStart
|
| | | fackMemID = ShareDefine.FackPlayerIDStart
|
| | |
| | | fackFamily.SetLV(familyLV)
|
| | | fackFamily.SetFightPowerTotal(familyFightPower)
|
| | | fackFamily.SetEmblemID(1)
|
| | | fackFamily.SetEmblemWord(FakeEmblemWord)
|
| | | fackFamily.SetJoinReview(1) # 设置需要审核
|
| | | fackFamily.SetJoinLVMin(random.randint(0, 1000))
|
| | |
|
| New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.Family
|
| | | #
|
| | | # @todo:仙盟
|
| | | # @author hxp
|
| | | # @date 2025-10-10
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 仙盟
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-10-10 21:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import IpyGameDataPY
|
| | | import PlayerFamilyEmblem
|
| | | import PlayerFamily
|
| | | import DBDataMgr
|
| | |
|
| | | def OnExec(curPlayer, msgList):
|
| | | |
| | | if not msgList:
|
| | | GameWorld.DebugAnswer(curPlayer, "设置等级: Family lv 等级 经验")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置徽章: Family e 徽章ID [剩余时间秒]")
|
| | | GameWorld.DebugAnswer(curPlayer, "创建仙盟相关使用命令: CreateFamily")
|
| | | return
|
| | | |
| | | familyID = curPlayer.GetFamilyID()
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | curFamily = familyMgr.FindFamily(familyID) if familyID else None
|
| | | if not curFamily:
|
| | | GameWorld.DebugAnswer(curPlayer, "玩家未加入仙盟!")
|
| | | return
|
| | | |
| | | value = msgList[0]
|
| | | |
| | | if value == "lv":
|
| | | lv = msgList[1] if len(msgList) > 1 else 1
|
| | | exp = msgList[2] if len(msgList) > 2 else 0
|
| | | if not IpyGameDataPY.GetIpyGameData("Family", lv):
|
| | | GameWorld.DebugAnswer(curPlayer, "仙盟等级不存在: %s" % (lv))
|
| | | return
|
| | | curFamily.SetLV(lv)
|
| | | curFamily.SetExp(exp)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置仙盟等级:%s, exp=%s" % (lv, exp))
|
| | | |
| | | elif value == "e":
|
| | | emblemID = msgList[1] if len(msgList) > 1 else 0
|
| | | setExpireTimes = msgList[2] if len(msgList) > 2 else None
|
| | | emblemActionObj = PlayerFamilyEmblem.AddFamilyEmblem(curFamily.GetID(), emblemID, setExpireTimes)
|
| | | if not emblemActionObj:
|
| | | GameWorld.DebugAnswer(curPlayer, "该徽章ID无法添加")
|
| | | return
|
| | | endTime = PlayerFamilyEmblem.GetActionEmblemEndTime(emblemActionObj)
|
| | | GameWorld.DebugAnswer(curPlayer, "添加徽章(%s)到期:%s" % (emblemID, GameWorld.ChangeTimeNumToStr(endTime)))
|
| | | return |
| | | |
| | | PlayerFamily.Sync_FamilyInfo(curPlayer)
|
| | | return
|
| | |
| | |
|
| | | import DBDataMgr
|
| | | import GameWorld
|
| | | import PlayerFamily
|
| | | import IpyGameDataPY
|
| | | import IPY_GameWorld
|
| | | import PlayerEventCounter
|
| | |
| | | #GameWorldActionControl.Dispose_OperationActionState()
|
| | | #GameWorldActionControl.Dispose_DailyActionState()
|
| | | #GameWorldActionControl.Dispose_FBStateTime()
|
| | | PlayerFamily.OnMinute()
|
| | | PlayerOnline.OnMinute()
|
| | | BattleObj.OnMinute()
|
| | | ObjPool.OnMinute()
|
| | |
| | | ("dict", "ExpMaterial", 0),
|
| | | ),
|
| | |
|
| | | "FamilyTech":(
|
| | | ("DWORD", "TechID", 1),
|
| | | ("BYTE", "AttrType", 0),
|
| | | ("DWORD", "AttrValue", 0),
|
| | | ("DWORD", "Contribution", 0),
|
| | | ("DWORD", "PowerEx", 0),
|
| | | ),
|
| | |
|
| | | "NPCDropItem":(
|
| | | ("DWORD", "NPCID", 1),
|
| | | ("WORD", "MaxWorldLV", 0),
|
| | |
| | | ("DWORD", "NPCID", 1),
|
| | | ("WORD", "PerPlayerMoneyAward", 0),
|
| | | ("list", "PersonFirstKillAward", 0),
|
| | | ),
|
| | |
|
| | | "FamilyActivity":(
|
| | | ("DWORD", "ID", 1),
|
| | | ("WORD", "UnLockFuncID", 0),
|
| | | ("BYTE", "TotalActivityTime", 0),
|
| | | ("WORD", "SingleTimes", 0),
|
| | | ("WORD", "SingleActiveValue", 0),
|
| | | ),
|
| | |
|
| | | "FamilyRedPack":(
|
| | |
| | | ("BYTE", "UnlockFamilyLV", 0),
|
| | | ("DWORD", "ExpireMinutes", 0),
|
| | | ("DWORD", "CustomFamilyID", 0),
|
| | | ),
|
| | |
|
| | | "FamilyDonate":(
|
| | | ("BYTE", "DonateType", 1),
|
| | | ("BYTE", "DailyCnt", 0),
|
| | | ("BYTE", "MoneyType", 0),
|
| | | ("DWORD", "MoneyValue", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ),
|
| | |
|
| | | "FamilyZhenbaogeCut":(
|
| | |
| | | def GetRandExpMax(self): return self.attrTuple[2] # 最大随机精炼值 DWORD
|
| | | def GetExpMaterial(self): return self.attrTuple[3] # 翅膀代数对应精炼值 dict |
| | | |
| | | # 仙盟科技表 |
| | | class IPY_FamilyTech(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetTechID(self): return self.attrTuple[0] # 科技ID*1000+等级 DWORD
|
| | | def GetAttrType(self): return self.attrTuple[1] # 属性类型 BYTE
|
| | | def GetAttrValue(self): return self.attrTuple[2] # 属性值 DWORD
|
| | | def GetContribution(self): return self.attrTuple[3] # 需要贡献度 DWORD
|
| | | def GetPowerEx(self): return self.attrTuple[4] # 额外战力 DWORD |
| | | |
| | | # NPC掉落表 |
| | | class IPY_NPCDropItem(): |
| | | |
| | |
| | | def GetNPCID(self): return self.attrTuple[0] # ID DWORD
|
| | | def GetPerPlayerMoneyAward(self): return self.attrTuple[1] # 首杀全服玩家奖励灵石额度/人 WORD
|
| | | def GetPersonFirstKillAward(self): return self.attrTuple[2] # 个人首次击杀奖励 [[物品ID,个数,是否拍品], ...] list |
| | | |
| | | # 仙盟活跃表 |
| | | class IPY_FamilyActivity(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetID(self): return self.attrTuple[0] # ID DWORD
|
| | | def GetUnLockFuncID(self): return self.attrTuple[1] # 解锁功能ID WORD
|
| | | def GetTotalActivityTime(self): return self.attrTuple[2] # 总次数 BYTE
|
| | | def GetSingleTimes(self): return self.attrTuple[3] # 增加活跃需要次数 WORD
|
| | | def GetSingleActiveValue(self): return self.attrTuple[4] # 每轮增加活跃积分 WORD |
| | | |
| | | # 仙盟红包表 |
| | | class IPY_FamilyRedPack(): |
| | |
| | | def GetExpireMinutes(self): return self.attrTuple[2] # 有效时长,分钟 DWORD
|
| | | def GetCustomFamilyID(self): return self.attrTuple[3] # 定制仙盟ID DWORD |
| | | |
| | | # 仙盟捐献表 |
| | | class IPY_FamilyDonate(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetDonateType(self): return self.attrTuple[0] # 捐献类型 BYTE
|
| | | def GetDailyCnt(self): return self.attrTuple[1] # 每日次数 BYTE
|
| | | def GetMoneyType(self): return self.attrTuple[2] # 消耗货币类型 BYTE
|
| | | def GetMoneyValue(self): return self.attrTuple[3] # 消耗货币值 DWORD
|
| | | def GetAwardItemList(self): return self.attrTuple[4] # 获得奖励列表[[物品ID,个数], ...] list |
| | | |
| | | # 仙盟珍宝阁砍价表 |
| | | class IPY_FamilyZhenbaogeCut(): |
| | | |
| | |
| | | def GetAwardID(self): return self.attrTuple[0] # 奖励ID 1~n BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[1] # 物品奖励[[物品ID,个数,是否拍品], ...] list |
| | | |
| | | # 战令表 |
| | | # 战令表/基金 |
| | | class IPY_Zhanling(): |
| | | |
| | | def __init__(self): |
| | |
| | | self.__LoadFileData("EquipSuitAttr", onlyCheck)
|
| | | self.__LoadFileData("WingRefineAttr", onlyCheck)
|
| | | self.__LoadFileData("WingRefineExp", onlyCheck)
|
| | | self.__LoadFileData("FamilyTech", onlyCheck)
|
| | | self.__LoadFileData("NPCDropItem", onlyCheck)
|
| | | self.__LoadFileData("RuneTower", onlyCheck)
|
| | | self.__LoadFileData("ChinMap", onlyCheck)
|
| | |
| | | self.__LoadFileData("ActivityPlaceReward", onlyCheck)
|
| | | self.__LoadFileData("BOSSInfo", onlyCheck)
|
| | | self.__LoadFileData("BOSSFirstKill", onlyCheck)
|
| | | self.__LoadFileData("FamilyActivity", onlyCheck)
|
| | | self.__LoadFileData("FamilyRedPack", onlyCheck)
|
| | | self.__LoadFileData("ActFeastRedPacketSucc", onlyCheck)
|
| | | self.__LoadFileData("NPCShow", onlyCheck)
|
| | |
| | | self.__LoadFileData("EquipPlusEvolve", onlyCheck)
|
| | | self.__LoadFileData("Family", onlyCheck)
|
| | | self.__LoadFileData("FamilyEmblem", onlyCheck)
|
| | | self.__LoadFileData("FamilyDonate", onlyCheck)
|
| | | self.__LoadFileData("FamilyZhenbaogeCut", onlyCheck)
|
| | | self.__LoadFileData("FamilyZhenbaogeItem", onlyCheck)
|
| | | self.__LoadFileData("FamilyZhenfa", onlyCheck)
|
| | |
| | | self.CheckLoadData("WingRefineExp") |
| | | return self.ipyWingRefineExpCache[index]
|
| | | |
| | | def GetFamilyTechCount(self): |
| | | self.CheckLoadData("FamilyTech") |
| | | return self.ipyFamilyTechLen
|
| | | def GetFamilyTechByIndex(self, index): |
| | | self.CheckLoadData("FamilyTech") |
| | | return self.ipyFamilyTechCache[index]
|
| | | |
| | | def GetNPCDropItemCount(self): |
| | | self.CheckLoadData("NPCDropItem") |
| | | return self.ipyNPCDropItemLen
|
| | |
| | | def GetBOSSFirstKillByIndex(self, index): |
| | | self.CheckLoadData("BOSSFirstKill") |
| | | return self.ipyBOSSFirstKillCache[index]
|
| | | |
| | | def GetFamilyActivityCount(self): |
| | | self.CheckLoadData("FamilyActivity") |
| | | return self.ipyFamilyActivityLen
|
| | | def GetFamilyActivityByIndex(self, index): |
| | | self.CheckLoadData("FamilyActivity") |
| | | return self.ipyFamilyActivityCache[index]
|
| | | |
| | | def GetFamilyRedPackCount(self): |
| | | self.CheckLoadData("FamilyRedPack") |
| | |
| | | self.CheckLoadData("FamilyEmblem") |
| | | return self.ipyFamilyEmblemCache[index]
|
| | | |
| | | def GetFamilyDonateCount(self): |
| | | self.CheckLoadData("FamilyDonate") |
| | | return self.ipyFamilyDonateLen
|
| | | def GetFamilyDonateByIndex(self, index): |
| | | self.CheckLoadData("FamilyDonate") |
| | | return self.ipyFamilyDonateCache[index]
|
| | | |
| | | def GetFamilyZhenbaogeCutCount(self): |
| | | self.CheckLoadData("FamilyZhenbaogeCut") |
| | | return self.ipyFamilyZhenbaogeCutLen
|
| | |
| | | return True
|
| | | if itemID not in ChConfig.Def_TransformItemIDList:
|
| | | return False
|
| | | if itemID == ChConfig.Def_ItemID_FamilyContribution:
|
| | | PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, itemCount, True, ShareDefine.Def_AddFAVReason_UseItem, True)
|
| | | elif itemID == ChConfig.Def_ItemID_SilverMoney:
|
| | | if itemID == ChConfig.Def_ItemID_SilverMoney:
|
| | | PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, itemCount)
|
| | | elif itemID == ChConfig.Def_ItemID_FamilyActive:
|
| | | PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, itemCount)
|
| | | elif itemID == ChConfig.Def_ItemID_SP:
|
| | | PlayerControl.PlayerAddZhenQi(curPlayer, itemCount)
|
| | | elif itemID == ChConfig.Def_ItemID_GoldPaper:
|
| | |
| | | for moneyType, giveMoney in giveMoneyDict.items():
|
| | |
|
| | | giveTotalMoney = giveMoney * successCnt
|
| | | if moneyType == ShareDefine.TYPE_Price_Family_Contribution:
|
| | | PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, giveTotalMoney, True, ShareDefine.Def_AddFAVReason_UseItem, True)
|
| | | else:
|
| | | addDataDict = {"UseCount":successCnt, ChConfig.Def_Give_Reason_SonKey:itemID}
|
| | | PlayerControl.GiveMoney(curPlayer, moneyType, giveTotalMoney, ChConfig.Def_GiveMoney_UseItem, addDataDict)
|
| | | addDataDict = {"UseCount":successCnt, ChConfig.Def_Give_Reason_SonKey:itemID}
|
| | | PlayerControl.GiveMoney(curPlayer, moneyType, giveTotalMoney, ChConfig.Def_GiveMoney_UseItem, addDataDict)
|
| | |
|
| | | return True, successCnt
|
| | |
|
| | |
| | | return ShareDefine.TYPE_Price_Rune
|
| | | elif curEffID == ChConfig.Def_Effect_ItemGiveRuneSplinters:
|
| | | return ShareDefine.TYPE_Price_RuneSplinters
|
| | | elif curEffID == ChConfig.Def_Effect_ItemGiveFamilyActivity:
|
| | | return ShareDefine.TYPE_Price_FamilyActivity
|
| | | elif curEffID == ChConfig.Def_Effect_ItemGiveFamilyContribution:
|
| | | return ShareDefine.TYPE_Price_Family_Contribution
|
| | | elif curEffID == ChConfig.Def_Effect_ItemGiveRealmPoint:
|
| | | return ShareDefine.TYPE_Price_RealmPoint
|
| | | elif curEffID == ChConfig.Def_Effect_ItemGiveSoulDust:
|
| | |
| | | elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
|
| | | PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
|
| | | # 仙盟每日福利奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_FamilyDayAward:
|
| | | PlayerFamily.GetFamilyDayAward(curPlayer)
|
| | | #elif rewardType == ChConfig.Def_RewardType_FamilyDayAward:
|
| | | # PlayerFamily.GetFamilyDayAward(curPlayer)
|
| | | # 玩家等级奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_LVAward:
|
| | | PlayerLVAward.GetPlayerLVAward(curPlayer, dataEx)
|
| | |
| | | GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_GiveMoney, msgInfo, [serverGroupID])
|
| | | return True
|
| | |
|
| | | if priceType == ShareDefine.TYPE_Price_FamilyExp:
|
| | | return PlayerFamily.AddFamilyExp(curPlayer, value)
|
| | | |
| | | befMoney = GetMoney(curPlayer, priceType)
|
| | | if priceType == IPY_GameWorld.TYPE_Price_Gold_Money:
|
| | | updPlayerGold = GetMoneyReal(curPlayer, priceType) + value
|
| | |
| | |
|
| | | PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_GetMoney, value, [priceType])
|
| | |
|
| | | if priceType == ShareDefine.TYPE_Price_FamilyCoin:
|
| | | PlayerFamily.AddFamilyContrib(curPlayer, value) # 公会币同步增加公会贡献
|
| | | |
| | | if priceType not in [IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper, ShareDefine.TYPE_Price_PayCoin] \
|
| | | and giveType == ChConfig.Def_GiveMoney_Unknown:
|
| | | #GameWorld.DebugLog("该货币没有指定来源类型不记录!priceType=%s,giveType=%s" % (priceType, giveType))
|
| | |
| | |
|
| | | # 血瓶恢复效果
|
| | | def GetHPCureEnhance(curPlayer): return 0
|
| | |
|
| | | # 仙盟徽章ID
|
| | | def GetFamilyEmblemID(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyEmblemID)
|
| | | def SetFamilyEmblemID(curPlayer, emblemID): NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyEmblemID, emblemID)
|
| | |
|
| | | # 仙盟职位,使用 GetReceivedSalary,因为FamilyMemberLV没有入库
|
| | | def GetFamilyMemberLV(curPlayer): return curPlayer.GetReceivedSalary()
|
| | |
| | | import NetPackCommon
|
| | | import PlayerViewCache
|
| | | import ChPyNetSendPack
|
| | | import PlayerFamilyTech
|
| | | import PlayerFamilyEmblem
|
| | | import PlayerFamilyZhenfa
|
| | | #import PlayerFamilyZhenfa
|
| | | import PlayerFamilyZhenbaoge
|
| | | import IPY_PlayerDefine
|
| | | import IpyGameDataPY
|
| | | import IPY_GameWorld
|
| | | import ItemControler
|
| | | import GameFuncComm
|
| | | import ItemCommon
|
| | | import DBDataMgr
|
| | | import DirtyList
|
| | | import ObjPool
|
| | |
|
| | | import random
|
| | | import time
|
| | |
| | | FamilyChangeType_MemFmlvChange, # 成员职位变更 7
|
| | | FamilyChangeType_MemLogin, # 成员上线 8
|
| | | FamilyChangeType_MemLogout, # 成员离线9
|
| | | ) = range(10)
|
| | | FamilyChangeType_FamilyLVExp, # 仙盟等级经验变更 10
|
| | | FamilyChangeType_MemContrib, # 成员贡献变更 11
|
| | | FamilyChangeType_OnDay, # 过天 12
|
| | | ) = range(13)
|
| | |
|
| | | #仙盟权限
|
| | | (
|
| | |
| | | familyManager = DBDataMgr.GetFamilyMgr()
|
| | | for i in range(0, familyManager.GetCount()):
|
| | | family = familyManager.GetAt(i)
|
| | | familyID = family.GetID()
|
| | | |
| | | #珍宝阁
|
| | | PlayerFamilyZhenbaoge.OnDay(family)
|
| | | |
| | | for index in xrange(family.GetCount()):
|
| | | member = family.GetAt(index)
|
| | | # 重置成员日信息
|
| | | member.SetContribDay(0)
|
| | | member.SetDonateCntDay(0)
|
| | | |
| | | Broadcast_FamilyChange(familyID, FamilyChangeType_OnDay)
|
| | |
|
| | | return
|
| | |
|
| | | def PlayerOnDay(curPlayer):
|
| | | if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Family):
|
| | | return
|
| | | #每日福利奖励
|
| | | Sync_FamilyDayRewardState(curPlayer)
|
| | | __FamilyAffair_Refresh(curPlayer, True)
|
| | | |
| | | ResetDailyDonateCnt(curPlayer)
|
| | | PlayerFamilyZhenbaoge.PlayerOnDay(curPlayer)
|
| | | return
|
| | |
|
| | |
| | | return
|
| | | PlayerLoginRefreshFamily(curPlayer, tick)
|
| | | Sync_RequestAddFamilyInfo(curPlayer, False)
|
| | | Sync_FamilyDayRewardState(curPlayer)
|
| | | PlayerFamilyTech.Sync_PlayerFamilyTechLV(curPlayer)
|
| | | __FamilyAffair_CheckReset(curPlayer)
|
| | | PlayerFamilyZhenfa.OnPlayerLogin(curPlayer)
|
| | | SyncDonateCntInfo(curPlayer)
|
| | | #PlayerFamilyZhenfa.OnPlayerLogin(curPlayer)
|
| | | PlayerFamilyZhenbaoge.OnPlayerLogin(curPlayer)
|
| | | return
|
| | |
|
| | |
| | |
|
| | | def OnWeekEx(curPlayer):
|
| | | #重置
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyActivityAwardRecord, 0)
|
| | | for actionid in ShareDefine.FamilyActiveIDList:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyActivityFinishCnt%actionid, 0)
|
| | | return
|
| | |
|
| | | def PlayerLoginRefreshFamily(curPlayer, tick):
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def OnMinute():
|
| | | #战力刷新在DBFamily.OnMinute
|
| | | PlayerFamilyEmblem.CheckExpireEmblem()
|
| | | return
|
| | |
|
| | | #// A6 04 创建家族 #tagCMCreateFamily
|
| | | #
|
| | | #struct tagCMCreateFamily
|
| | |
| | | # tagHead Head;
|
| | | # char Name[33];
|
| | | # WORD EmblemID; //选择徽章ID,解锁仙盟等级为1级的均为可选ID
|
| | | # char EmblemWord[3]; //徽章文字
|
| | | #};
|
| | | def OnCreateFamily(index, clientPack, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | inputName = clientPack.Name
|
| | | emblemID = clientPack.EmblemID
|
| | | emblemWord = clientPack.EmblemWord
|
| | |
|
| | | if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Family):
|
| | | return
|
| | |
| | | emblemID = random.choice(emblemIDList) # 从默认徽章中随机选择一个
|
| | | GameWorld.Log("创建仙盟: familyID=%s,playerID=%s,emblemID=%s" % (newFamilyID, playerID, emblemID))
|
| | | curFamily.SetEmblemID(emblemID)
|
| | | curFamily.SetEmblemWord(emblemWord)
|
| | |
|
| | | #-设置家族成员属性
|
| | | DoPlayerJionFamily(curFamily, playerID, curPlayer, IPY_PlayerDefine.fmlLeader)
|
| | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | refreshFmLV = 0
|
| | | refreshFamilyLV = 0
|
| | | refreshEmblemID = 0
|
| | | refreshFamilyName = ""
|
| | | if refreshFamilyID:
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | |
| | | if curFamily:
|
| | | refreshFamilyLV = curFamily.GetLV()
|
| | | refreshFamilyName = curFamily.GetName()
|
| | | refreshEmblemID = curFamily.GetEmblemID()
|
| | | member = curFamily.FindMember(playerID)
|
| | | if member:
|
| | | refreshFmLV = member.GetFmLV()
|
| | |
| | | curPlayer.SetFamilyName(refreshFamilyName)
|
| | | curPlayer.Notify_FamilyNameRefresh() #//04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
|
| | |
|
| | | if PlayerControl.GetFamilyEmblemID(curPlayer) != refreshEmblemID:
|
| | | PlayerControl.SetFamilyEmblemID(curPlayer, refreshEmblemID)
|
| | | |
| | | if lastFmLV != refreshFmLV:
|
| | | PlayerControl.SetFamilyMemberLV(curPlayer, refreshFmLV)
|
| | |
|
| | |
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | familyMgr.DelPlayerReqJoinFamilyIDAll(curPlayer.GetPlayerID())
|
| | | Sync_RequestAddFamilyInfo(curPlayer)
|
| | | __FamilyAffair_CheckReset(curPlayer)
|
| | | PlayerFamilyTech.Sync_PlayerFamilyTechLV(curPlayer)
|
| | | return
|
| | |
|
| | | def __OnLeaveFamily(curPlayer, tick):
|
| | |
| | | clientPack.JoinLVMin = curFamily.GetJoinLVMin()
|
| | | clientPack.ServerID = curFamily.GetServerID()
|
| | | clientPack.EmblemID = curFamily.GetEmblemID()
|
| | | clientPack.EmblemWord = curFamily.GetEmblemWord()
|
| | | clientPack.FightPower = curFamily.GetFightPower()
|
| | | clientPack.FightPowerEx = curFamily.GetFightPowerEx()
|
| | | clientPack.Broadcast = curFamily.GetBroadcast()
|
| | |
| | | memInfo.FmLV = member.GetFmLV()
|
| | | memInfo.ServerID = member.GetServerID()
|
| | | memInfo.ContribTotal = member.GetContribTotal()
|
| | | memInfo.ContribWeek = member.GetContribWeek()
|
| | | memInfo.ContribDay = member.GetContribDay()
|
| | | memInfo.DonateCntTotal = member.GetDonateCntTotal()
|
| | | memInfo.DonateCntDay = member.GetDonateCntDay()
|
| | | memInfo.OffTime = member.GetOffTime()
|
| | | clientPack.MemberList.append(memInfo)
|
| | | clientPack.MemberCount = len(clientPack.MemberList)
|
| | |
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE EmblemID; // 更换的徽章ID
|
| | | # char EmblemWord[3]; // 徽章文字
|
| | | #};
|
| | | def OnChangeFamilyEmblem(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | changeEmblemID = clientData.EmblemID
|
| | | PlayerFamilyEmblem.OnChangeFamilyEmblem(curPlayer, changeEmblemID)
|
| | | emblemWord = clientData.EmblemWord
|
| | | PlayerFamilyEmblem.OnChangeFamilyEmblem(curPlayer, changeEmblemID, emblemWord)
|
| | | return
|
| | |
|
| | | #// A6 25 修改家族成员职位 #tagCMChangeFamilyMemLV
|
| | |
| | | family = familyMgr.GetAt(index)
|
| | | if not family:
|
| | | continue
|
| | | if msg and msg not in family.GetName():
|
| | | continue
|
| | | if msg:
|
| | | if msg in family.GetName() or msg == str(family.GetID()):
|
| | | pass
|
| | | else:
|
| | | continue
|
| | | familyView = ChPyNetSendPack.tagMCFamilyView()
|
| | | familyView.FamilyID = family.GetID()
|
| | | familyView.FamilyName = family.GetName()
|
| | |
| | | familyView.JoinLVMin = family.GetJoinLVMin()
|
| | | familyView.ServerID = family.GetServerID()
|
| | | familyView.EmblemID = family.GetEmblemID()
|
| | | familyView.EmblemWord = family.GetEmblemWord()
|
| | | familyView.FightPower = family.GetFightPower()
|
| | | familyView.FightPowerEx = family.GetFightPowerEx()
|
| | | familyView.MemberCount = family.GetCount()
|
| | |
| | | # BYTE DonateType; // 捐献类型
|
| | | #};
|
| | | def OnFamilyMoneyDonate(index, clientData, tick):
|
| | | #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | #DonateType = clientData.DonateType
|
| | | #playerID = curPlayer.GetPlayerID()
|
| | | # 先屏蔽,等功能定了再改
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | donateType = clientData.DonateType
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | if familyID <= 0:
|
| | | return
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | curFamily = familyMgr.FindFamily(familyID)
|
| | | if not curFamily:
|
| | | return
|
| | | curMember = curFamily.FindMember(playerID)
|
| | | if not curMember:
|
| | | return
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("FamilyDonate", donateType)
|
| | | if not ipyData:
|
| | | return
|
| | | dailyCntMax = ipyData.GetDailyCnt()
|
| | | donateCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDonateCnt % donateType)
|
| | | if donateCnt >= dailyCntMax:
|
| | | GameWorld.DebugLog("今日捐献次数已达上限! donateType=%s,donateCnt=%s >= %s" % (donateType, donateCnt, dailyCntMax), playerID)
|
| | | return
|
| | | |
| | | moneyType = ipyData.GetMoneyType()
|
| | | moneyValue = ipyData.GetMoneyValue()
|
| | | if not moneyType or not moneyValue:
|
| | | return
|
| | | if not PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, "FamilyMoneyDonate"):
|
| | | return
|
| | | |
| | | awardItemList = ipyData.GetAwardItemList()
|
| | | donateCnt += 1
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyDonateCnt % donateType, donateCnt)
|
| | | SyncDonateCntInfo(curPlayer)
|
| | | # 增加成员捐献次数记录
|
| | | memDonateCntDay = curMember.GetDonateCntDay() + 1
|
| | | memDonateCntTotal = min(curMember.GetDonateCntTotal() + 1, ChConfig.Def_UpperLimit_DWord)
|
| | | curMember.SetDonateCntDay(memDonateCntDay)
|
| | | curMember.SetDonateCntTotal(memDonateCntTotal)
|
| | | GameWorld.DebugLog("家族捐献: donateType=%s,donateCnt=%s,%s,memDonateCntDay=%s,memDonateCntDay=%s" |
| | | % (donateType, donateCnt, awardItemList, memDonateCntDay, memDonateCntTotal), playerID)
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList)
|
| | | return
|
| | |
|
| | | def ResetDailyDonateCnt(curPlayer):
|
| | | isReset = False
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetFamilyDonateCount()):
|
| | | ipyData = ipyDataMgr.GetFamilyDonateByIndex(index)
|
| | | donateType = ipyData.GetDonateType()
|
| | | donateCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDonateCnt % donateType)
|
| | | if donateCnt:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyDonateCnt % donateType, 0)
|
| | | isReset = True
|
| | | if isReset:
|
| | | SyncDonateCntInfo(curPlayer)
|
| | | return
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | def AddPlayerFamilyActiveValue(curPlayer, addValue, sendPackGameServer = False, reason = 0, isSysMsg=False):
|
| | | # 多个地方用到,先保留,之后删除统一修改
|
| | | def SyncDonateCntInfo(curPlayer):
|
| | | donateCntList = []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetFamilyDonateCount()):
|
| | | ipyData = ipyDataMgr.GetFamilyDonateByIndex(index)
|
| | | donateType = ipyData.GetDonateType()
|
| | | donateCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDonateCnt % donateType)
|
| | | donateCntList.append(donateCnt)
|
| | | if not donateCntList:
|
| | | return
|
| | | clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCDonateCntInfo)
|
| | | clientPack.DonateCntList = donateCntList
|
| | | clientPack.Count = len(clientPack.DonateCntList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def AddFamilyExp(curPlayer, addExp):
|
| | | ## 增加玩家家族经验
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | if familyID <= 0:
|
| | | return
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | curFamily = familyMgr.FindFamily(familyID)
|
| | | if not curFamily:
|
| | | return
|
| | | curLV = curFamily.GetLV()
|
| | | curExp = curFamily.GetExp()
|
| | | |
| | | updLV = curLV
|
| | | updExp = curExp + addExp
|
| | | GameWorld.DebugLog("增加仙盟经验: curLV=%s,curExp=%s,addExp=%s,updExp=%s" % (curLV, curExp, addExp, updExp), playerID)
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("Family", curLV)
|
| | | lvUPExp = ipyData.GetNeedExp()
|
| | | while lvUPExp and updExp >= lvUPExp:
|
| | | ipyData = IpyGameDataPY.GetIpyGameDataNotLog("Family", updLV + 1)
|
| | | if not ipyData:
|
| | | break
|
| | | updLV += 1
|
| | | updExp -= lvUPExp
|
| | | lvUPExp = ipyData.GetNeedExp()
|
| | | GameWorld.DebugLog(" 仙盟升级: updLV=%s,updExp=%s,lvUPExp=%s" % (updLV, updExp, lvUPExp), playerID)
|
| | | |
| | | curFamily.SetLV(updLV)
|
| | | curFamily.SetExp(updExp)
|
| | | |
| | | Sync_FamilyInfo(curPlayer)
|
| | | Broadcast_FamilyChange(familyID, FamilyChangeType_FamilyLVExp, excludeIDList=[playerID])
|
| | | return True
|
| | | def SendPack_GameServer_AddFamilyDetail(curPlayer, addFamilyHornor = 0, addFamilyMoney = 0, addFamilyActiveValue = 0, resion=0):
|
| | | return
|
| | | def SendPack_GameServer_AddFamilyDetailEx(curPlayer, addPlayerActiveValue, addFamilyMoney = 0, addFamilyHornor = 0, resion=0):
|
| | |
|
| | | def AddFamilyContrib(curPlayer, addContribValue):
|
| | | ## 增加玩家累计家族贡献
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | if familyID <= 0:
|
| | | return
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | curFamily = familyMgr.FindFamily(familyID)
|
| | | if not curFamily:
|
| | | return
|
| | | curMember = curFamily.FindMember(playerID)
|
| | | if not curMember:
|
| | | return
|
| | | |
| | | contribDay = curMember.GetContribDay() + addContribValue
|
| | | contribTotal = min(curMember.GetContribTotal() + addContribValue, ChConfig.Def_UpperLimit_DWord)
|
| | | curMember.SetContribDay(contribDay)
|
| | | curMember.SetContribTotal(contribTotal)
|
| | | GameWorld.DebugLog("增加成员贡献: familyID=%s,addContribValue=%s,contribDay=%s,contribTotal=%s" % (familyID, addContribValue, contribDay, contribTotal), playerID)
|
| | | |
| | | Sync_FamilyInfo(curPlayer)
|
| | | Broadcast_FamilyChange(familyID, FamilyChangeType_MemContrib, excludeIDList=[playerID])
|
| | | return
|
| | |
|
| | | ## ------------------------------------------------------------------------------------------------
|
| | |
| | | Broadcast_FamilyPack(familyID, clientPack)
|
| | | return
|
| | |
|
| | | def GetFamilyDayAward(curPlayer):
|
| | | ##领取仙盟每日奖励 2小时脱机挂时间
|
| | | return
|
| | |
|
| | | def Sync_FamilyDayRewardState(curPlayer):
|
| | | clientPack = ChPyNetSendPack.tagMCFamilyDayAward()
|
| | | clientPack.GetState = 0
|
| | | clientPack.MoneyDonateCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDonateRecord)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def AddFamilyActivity(curPlayer, actionid, addCnt=1):
|
| | | return
|
| | |
|
| | |
|
| | | ##--------------------------------------- 仙盟事务 --------------------------------------------------
|
| | | AffairState_None = 0 # 无
|
| | | AffairState_Underway = 1 # 进行中
|
| | | AffairState_Finish = 2 # 已完成
|
| | |
|
| | | #// A6 13 家族事务操作 #tagCMFamilyAffairOP
|
| | | #
|
| | | #struct tagCMFamilyAffairOP
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE OPType; // 操作类型:1-刷新事务;2-开始事务;3-领取事务奖励;
|
| | | # WORD AffairID; // 事务ID,可选
|
| | | #};
|
| | | def OnFamilyAffairOP(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | opType = clientData.OPType
|
| | | affairID = clientData.AffairID
|
| | | |
| | | if opType == 1:
|
| | | __FamilyAffair_Refresh(curPlayer)
|
| | | elif opType == 2:
|
| | | __FamilyAffair_Start(curPlayer, affairID)
|
| | | elif opType == 3:
|
| | | __FamilyAffair_GetAward(curPlayer, affairID) |
| | | return
|
| | |
|
| | | def __FamilyAffair_CheckReset(curPlayer):
|
| | | ## 检查任务重置,登录,进入仙盟触发
|
| | | info = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyAffairInfo % 1)
|
| | | if not info:
|
| | | # 任务1还没分配,默认强制重置
|
| | | __FamilyAffair_Refresh(curPlayer, True)
|
| | | else:
|
| | | SyncFamilyAffairInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def __FamilyAffair_Refresh(curPlayer, isReset=False):
|
| | | ## 刷新事务
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | moneyType, moneyValue = 0, 0 |
| | | dayRefreshFreeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyAffairRefreshFree)
|
| | | if not isReset:
|
| | | freeCountMax = IpyGameDataPY.GetFuncCfg("FamilyAffair", 2)
|
| | | if freeCountMax and dayRefreshFreeCount >= freeCountMax:
|
| | | moneyType, moneyValue = IpyGameDataPY.GetFuncEvalCfg("FamilyAffair", 3)
|
| | | if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyValue):
|
| | | return
|
| | | |
| | | sendMailAffairList = []
|
| | | refreshAffairIDList = []
|
| | | affairCountMax = IpyGameDataPY.GetFuncCfg("FamilyAffair", 1)
|
| | | affairStarDict = IpyGameDataPY.GetFuncEvalCfg("FamilyAffair", 4)
|
| | | maxStar = 0
|
| | | starWeightList = []
|
| | | for starStr, starInfo in affairStarDict.items():
|
| | | star = int(starStr)
|
| | | if star > maxStar:
|
| | | maxStar = star
|
| | | starWeightList.append([starInfo[0], star])
|
| | | |
| | | for affairID in range(1, affairCountMax + 1):
|
| | | star, state = __GetAffairInfo(curPlayer, affairID)
|
| | | if isReset:
|
| | | # 重置时还在进行中的直接发奖励
|
| | | if state == AffairState_Underway:
|
| | | sendMailAffairList.append([affairID, star])
|
| | | refreshAffairIDList.append(affairID)
|
| | | else:
|
| | | # 非重置只处理没有状态非最高星的
|
| | | if state == AffairState_None and star < maxStar:
|
| | | refreshAffairIDList.append(affairID)
|
| | | |
| | | GameWorld.DebugLog("刷新事务: isReset=%s,moneyType=%s,moneyValue=%s,dayRefreshFreeCount=%s" |
| | | % (isReset, moneyType, moneyValue, dayRefreshFreeCount), playerID)
|
| | | GameWorld.DebugLog(" sendMailAffairList=%s" % sendMailAffairList, playerID)
|
| | | |
| | | for mailInfo in sendMailAffairList:
|
| | | affairID, star = mailInfo
|
| | | if str(star) not in affairStarDict:
|
| | | continue
|
| | | paramList = [affairID, star]
|
| | | addItemList = affairStarDict[str(star)][2]
|
| | | PlayerControl.SendMailByKey("FamilyAffairAward", [playerID], addItemList, paramList)
|
| | | |
| | | if isReset:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyAffairRefreshFree, 0)
|
| | | for affairID in range(1, affairCountMax + 1):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyAffairInfo % affairID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyAffairStartTime % affairID, 0)
|
| | | else:
|
| | | if moneyType and moneyValue:
|
| | | PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, "FamilyAffair")
|
| | | else:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyAffairRefreshFree, dayRefreshFreeCount + 1)
|
| | | |
| | | GameWorld.DebugLog(" starWeightList=%s" % starWeightList, playerID)
|
| | | GameWorld.DebugLog(" refreshAffairIDList=%s" % refreshAffairIDList, playerID)
|
| | | for affairID in refreshAffairIDList:
|
| | | star = GameWorld.GetResultByWeightList(starWeightList, 1)
|
| | | __SetAffairInfo(curPlayer, affairID, star, AffairState_None)
|
| | | GameWorld.DebugLog(" 随机事务:affairID=%s,star=%s" % (affairID, star), playerID)
|
| | | |
| | | SyncFamilyAffairInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def __FamilyAffair_Start(curPlayer, affairID):
|
| | | ## 开始事务
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | star, state = __GetAffairInfo(curPlayer, affairID)
|
| | | if not star:
|
| | | return
|
| | | if state != AffairState_None:
|
| | | GameWorld.DebugLog("仙盟事务已经进行中或已完成,无法开始: affairID=%s,star=%s,state=%s" % (affairID, star, state), playerID)
|
| | | return
|
| | | startTime = int(time.time())
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyAffairStartTime % affairID, startTime)
|
| | | __SetAffairInfo(curPlayer, affairID, star, AffairState_Underway)
|
| | | GameWorld.DebugLog("仙盟事务开始: affairID=%s,star=%s,startTime=%s" % (affairID, star, startTime), playerID)
|
| | | SyncFamilyAffairInfo(curPlayer, affairID)
|
| | | return
|
| | |
|
| | | def __FamilyAffair_GetAward(curPlayer, affairID):
|
| | | ## 领取事务奖励
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | curTime = int(time.time())
|
| | | affairStarDict = IpyGameDataPY.GetFuncEvalCfg("FamilyAffair", 4)
|
| | | star, state = __GetAffairInfo(curPlayer, affairID)
|
| | | if state != AffairState_Underway:
|
| | | GameWorld.DebugLog("仙盟事务状态非进行中无法领取: affairID=%s,star=%s,state=%s" % (affairID, star, state), playerID)
|
| | | SyncFamilyAffairInfo(curPlayer, affairID)
|
| | | return
|
| | | startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyAffairStartTime % affairID)
|
| | | remainDuration = __GetAffairRemainDuration(curPlayer, affairID, star, curTime, affairStarDict)
|
| | | if remainDuration != 0:
|
| | | GameWorld.DebugLog("仙盟事务当前剩余时长未完成: affairID=%s,remainDuration=%s,startTime=%s" |
| | | % (affairID, remainDuration, startTime), playerID)
|
| | | SyncFamilyAffairInfo(curPlayer, affairID)
|
| | | return
|
| | | if str(star) not in affairStarDict:
|
| | | return
|
| | | addItemList = affairStarDict[str(star)][2]
|
| | | if not ItemCommon.GiveAwardItem(curPlayer, addItemList):
|
| | | return
|
| | | __SetAffairInfo(curPlayer, affairID, star, AffairState_Finish)
|
| | | GameWorld.DebugLog("仙盟事务领奖: affairID=%s,star=%s" % (affairID, star), playerID)
|
| | | SyncFamilyAffairInfo(curPlayer, affairID)
|
| | | return
|
| | |
|
| | | def __GetAffairInfo(curPlayer, affairID):
|
| | | affairInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyAffairInfo % affairID)
|
| | | star, state = affairInfo / 10, affairInfo % 10
|
| | | return star, state
|
| | | def __SetAffairInfo(curPlayer, affairID, star, state):
|
| | | info = star * 10 + state
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyAffairInfo % affairID, info)
|
| | | return
|
| | | def __GetAffairRemainDuration(curPlayer, affairID, star, curTime, affairStarDict):
|
| | | ## -1-未开始;>=0-剩余时长
|
| | | startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyAffairStartTime % affairID)
|
| | | if not startTime:
|
| | | return -1
|
| | | starInfo = affairStarDict.get(str(star), [])
|
| | | needDuration = starInfo[1] if len(starInfo) > 1 else 0
|
| | | # 可扩展减时长属性
|
| | | speedPer = 0#PlayerControl.GetAffairSpeedPer(curPlayer)
|
| | | if speedPer:
|
| | | needDuration = int(needDuration * max(10000 - speedPer, 0) / 10000.0)
|
| | | #GameWorld.DebugLog("事务加速: needDuration=%s,speedPer=%s" % (needDuration, speedPer), curPlayer.GetPlayerID())
|
| | | |
| | | remainDuration = max(needDuration - (curTime - startTime), 0)
|
| | | return remainDuration
|
| | |
|
| | | def SyncFamilyAffairInfo(curPlayer, affairID=None):
|
| | | if affairID == None:
|
| | | affairIDList = []
|
| | | affairCountMax = IpyGameDataPY.GetFuncCfg("FamilyAffair", 1)
|
| | | for affairID in range(1, affairCountMax + 1):
|
| | | affairIDList.append(affairID)
|
| | | else:
|
| | | affairIDList = [affairID]
|
| | | |
| | | curTime = int(time.time())
|
| | | affairStarDict = IpyGameDataPY.GetFuncEvalCfg("FamilyAffair", 4)
|
| | | affairInfoList = []
|
| | | for affairID in affairIDList:
|
| | | star, state = __GetAffairInfo(curPlayer, affairID)
|
| | | remainDuration = __GetAffairRemainDuration(curPlayer, affairID, star, curTime, affairStarDict)
|
| | | affairInfo = ChPyNetSendPack.tagMCFamilyAffair()
|
| | | affairInfo.AffairID = affairID
|
| | | affairInfo.Star = star
|
| | | affairInfo.State = state
|
| | | affairInfo.RemainDuration = max(0, remainDuration)
|
| | | affairInfoList.append(affairInfo)
|
| | | |
| | | if not affairInfoList:
|
| | | return
|
| | | clientPack = ChPyNetSendPack.tagMCFamilyAffairInfo()
|
| | | clientPack.Clear()
|
| | | clientPack.RefreshFreeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyAffairRefreshFree)
|
| | | clientPack.AffairInfoList = affairInfoList
|
| | | clientPack.Count = len(clientPack.AffairInfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
| | | updEmblemID = random.choice(defaultEmblemIDList) if defaultEmblemIDList else 0
|
| | | GameWorld.Log("仙盟佩戴徽章过期恢复随机默认徽章! familyID=%s,emblemID=%s,endTime=%s,updEmblemID=%s" % (familyID, emblemID, endTime, updEmblemID))
|
| | | family.SetEmblemID(updEmblemID)
|
| | | family.Broadcast_FamilyChange()
|
| | | PlayerFamily.Broadcast_FamilyChange(familyID, PlayerFamily.FamilyChangeType_EChange)
|
| | | return
|
| | |
|
| | | def GetFamilyEmblemActionData(familyID, emblemID):
|
| | |
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
|
| | | for index in range(familyAction.Count()):
|
| | | familyActionObj = familyAction.At(index)
|
| | | if emblemID == familyActionObj.GetValue1():
|
| | | if emblemID == GetActionEmblemID(familyActionObj):
|
| | | return familyActionObj
|
| | | return
|
| | |
|
| | |
| | | actionType = ShareDefine.Def_ActionType_FamilyEmblem
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
|
| | | emblemActionObj = familyAction.AddAction()
|
| | | emblemActionObj.SetTime(curTime)
|
| | | emblemActionObj.SetFamilyId(familyID)
|
| | | emblemActionObj.SetActionType(actionType)
|
| | |
|
| | | if not emblemActionObj:
|
| | | return
|
| | |
| | | SetActionEmblemEndTime(emblemActionObj, updEndTime)
|
| | |
|
| | | # ֪ͨ
|
| | | #PlayerFamilyAction.SendFamilyAction(emblemActionObj)
|
| | | PlayerFamily.SendFamilyAction(emblemActionObj)
|
| | | return emblemActionObj
|
| | |
|
| | | def OnChangeFamilyEmblem(curPlayer, emblemID):
|
| | | def OnChangeFamilyEmblem(curPlayer, emblemID, emblemWord=""):
|
| | | ## 修改仙盟徽章
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | familyManager = PlayerFamily.GetFamilyMgr()
|
| | | curFamily = familyManager.FindFamily(familyID)
|
| | | if familyID <= 0:
|
| | | return
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | curFamily = familyMgr.FindFamily(familyID)
|
| | | if not curFamily:
|
| | | return
|
| | | familyID = curFamily.GetID()
|
| | | |
| | | if curFamily.GetLeaderID() != playerID:
|
| | | GameWorld.DebugLog("只有盟主可以修改徽章!", playerID)
|
| | | return
|
| | |
| | | GameWorld.Log("该徽章已过期! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
|
| | | return
|
| | |
|
| | | GameWorld.DebugLog("更换仙盟徽章! familyID=%s,emblemID=%s" % (familyID, emblemID), playerID)
|
| | | GameWorld.DebugLog("更换仙盟徽章! familyID=%s,emblemID=%s,emblemWord=%s" % (familyID, emblemID, GameWorld.CodeToGbk(emblemWord)), playerID)
|
| | | curFamily.SetEmblemID(emblemID)
|
| | | #PlayerFamily.SendPack_MapServer_PlayerFamilyRefresh(curFamily)
|
| | | curFamily.Broadcast_FamilyChange()
|
| | | return
|
| | | if emblemWord:
|
| | | curFamily.SetEmblemWord(emblemWord)
|
| | | PlayerFamily.Sync_FamilyInfo(curPlayer)
|
| | | PlayerFamily.Broadcast_FamilyChange(familyID, PlayerFamily.FamilyChangeType_EChange, excludeIDList=[playerID])
|
| | | return True
|
| | |
| | | if not curCache:
|
| | | return
|
| | |
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | family = DBDataMgr.GetFamilyMgr().FindFamily(familyID) if familyID else None
|
| | | |
| | | tick = GameWorld.GetGameWorld().GetTick()
|
| | | curPlayer.SetDict(Key_UpdViewCacheTick, tick)
|
| | | #GameWorld.DebugLog("更新玩家查看缓存数据! isOffline=%s" % isOffline, playerID)
|
| | |
| | | curCache.SetFace(curPlayer.GetFace())
|
| | | curCache.SetFacePic(curPlayer.GetFacePic())
|
| | | curCache.SetModelMark(curPlayer.GetModelMark())
|
| | | curCache.SetFamilyID(curPlayer.GetFamilyID())
|
| | | curCache.SetFamilyName(curPlayer.GetFamilyName())
|
| | | curCache.SetFamilyEmblemID(PlayerControl.GetFamilyEmblemID(curPlayer))
|
| | | curCache.SetFamilyID(familyID)
|
| | | curCache.SetFamilyName(family.GetName() if family else "")
|
| | | curCache.SetFamilyEmblemID(family.GetEmblemID() if family else 0)
|
| | | curCache.SetFamilyEmblemWord(family.GetEmblemWord() if family else 0)
|
| | | curCache.SetTitleID(PlayerControl.GetTitleID(curPlayer))
|
| | | curCache.SetFightPowerTotal(PlayerControl.GetFightPower(curPlayer))
|
| | | curCache.SetServerID(GameWorld.GetPlayerServerID(curPlayer))
|
| | |
| | | curCache.SetFacePic(dbPlayer.FacePic)
|
| | | curCache.SetModelMark(dbPlayer.ModelMark)
|
| | | curCache.SetFamilyID(familyID)
|
| | | family = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
|
| | | family = DBDataMgr.GetFamilyMgr().FindFamily(familyID) if familyID else None
|
| | | curCache.SetFamilyName(family.GetName() if family else "")
|
| | | curCache.SetFamilyEmblemID(family.GetEmblemID() if family else 0)
|
| | | curCache.SetFamilyEmblemWord(family.GetEmblemWord() if family else 0)
|
| | | #curCache.SetTitleID(PlayerControl.GetTitleID(curPlayer))
|
| | | curCache.SetFightPowerTotal(dbPlayer.FightPowerEx * ChConfig.Def_PerPointValue + dbPlayer.FightPower)
|
| | | curCache.SetServerID(GameWorld.GetAccIDServerID(dbPlayer.AccID))
|
| | |
| | | clientPack.FamilyID = curCache.GetFamilyID()
|
| | | clientPack.FamilyName = curCache.GetFamilyName()
|
| | | clientPack.FamilyEmblemID = curCache.GetFamilyEmblemID()
|
| | | clientPack.FamilyEmblemWord = curCache.GetFamilyEmblemWord()
|
| | | clientPack.PlusData = curCache.GetPlusData()
|
| | | clientPack.PlusDataSize = len(clientPack.PlusData)
|
| | | return clientPack
|
| | |
| | | ('FamilyID', ctypes.c_ulong),
|
| | | ('FamilyName', ctypes.c_char * 33),
|
| | | ('FamilyEmblemID', ctypes.c_ushort),
|
| | | ('FamilyEmblemWord', ctypes.c_char * 3),
|
| | | ('TitleID', ctypes.c_ulong),
|
| | | ('FightPower', ctypes.c_ulong),
|
| | | ('FightPowerEx', ctypes.c_ulong),
|
| | |
| | | self.FamilyID = 0
|
| | | self.FamilyName = ''
|
| | | self.FamilyEmblemID = 0
|
| | | self.FamilyEmblemWord = ''
|
| | | self.TitleID = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | |
| | | self.FamilyID, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FamilyName, pos = CommFunc.ReadString(buf, pos, 33)
|
| | | self.FamilyEmblemID, pos = CommFunc.ReadWORD(buf, pos)
|
| | | self.FamilyEmblemWord, pos = CommFunc.ReadString(buf, pos, 3)
|
| | | self.TitleID, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FightPower, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FightPowerEx, pos = CommFunc.ReadDWORD(buf, pos)
|
| | |
| | | buf = CommFunc.WriteDWORD(buf, self.FamilyID)
|
| | | buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 33, self.FamilyName)
|
| | | buf = CommFunc.WriteWORD(buf, self.FamilyEmblemID)
|
| | | buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 3, self.FamilyEmblemWord)
|
| | | buf = CommFunc.WriteDWORD(buf, self.TitleID)
|
| | | buf = CommFunc.WriteDWORD(buf, self.FightPower)
|
| | | buf = CommFunc.WriteDWORD(buf, self.FightPowerEx)
|
| | |
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_char) * 33
|
| | | length += sizeof(ctypes.c_ushort)
|
| | | length += sizeof(ctypes.c_char) * 3
|
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ulong)
|
| | |
| | | rec[u'FamilyID'] = self.FamilyID
|
| | | rec[u'FamilyName'] = fix_incomingText(self.FamilyName)
|
| | | rec[u'FamilyEmblemID'] = self.FamilyEmblemID
|
| | | rec[u'FamilyEmblemWord'] = fix_incomingText(self.FamilyEmblemWord)
|
| | | rec[u'TitleID'] = self.TitleID
|
| | | rec[u'FightPower'] = self.FightPower
|
| | | rec[u'FightPowerEx'] = self.FightPowerEx
|
| | |
| | | self.FamilyID = rec.get(u'FamilyID', 0)
|
| | | self.FamilyName = fix_outgoingText(rec.get(u'FamilyName', u''))
|
| | | self.FamilyEmblemID = rec.get(u'FamilyEmblemID', 0)
|
| | | self.FamilyEmblemWord = fix_outgoingText(rec.get(u'FamilyEmblemWord', u''))
|
| | | self.TitleID = rec.get(u'TitleID', 0)
|
| | | self.FightPower = rec.get(u'FightPower', 0)
|
| | | self.FightPowerEx = rec.get(u'FightPowerEx', 0)
|
| | |
| | | FamilyID = %s,
|
| | | FamilyName = %s,
|
| | | FamilyEmblemID = %s,
|
| | | FamilyEmblemWord = %s,
|
| | | TitleID = %s,
|
| | | FightPower = %s,
|
| | | FightPowerEx = %s,
|
| | |
| | | self.FamilyID,
|
| | | self.FamilyName,
|
| | | self.FamilyEmblemID,
|
| | | self.FamilyEmblemWord,
|
| | | self.TitleID,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | |
| | | return output
|
| | |
|
| | | def dumpString(self):
|
| | | output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%(
|
| | | output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%(
|
| | | self.PlayerID,
|
| | | self.AccID,
|
| | | self.PlayerName,
|
| | |
| | | self.FamilyID,
|
| | | self.FamilyName,
|
| | | self.FamilyEmblemID,
|
| | | self.FamilyEmblemWord,
|
| | | self.TitleID,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | |
| | | self.FamilyName = Str
|
| | | else:
|
| | | self.FamilyName = Str[:33]
|
| | | |
| | | def SetFamilyEmblemWord(self,Str):
|
| | | if len(Str)<=3:
|
| | | self.FamilyEmblemWord = Str
|
| | | else:
|
| | | self.FamilyEmblemWord = Str[:3]
|
| | |
|
| | |
|
| | | # 排行榜表 #tagDBBillboard
|
| | |
| | | ('FightPower', ctypes.c_ulong),
|
| | | ('FightPowerEx', ctypes.c_ulong),
|
| | | ('EmblemID', ctypes.c_ushort),
|
| | | ('EmblemWord', ctypes.c_char * 3),
|
| | | ('ADOResult', ctypes.c_ulong),
|
| | | ]
|
| | |
|
| | |
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.EmblemID = 0
|
| | | self.EmblemWord = ''
|
| | |
|
| | | def readData(self, buf, pos = 0, length = 0):
|
| | | if not pos <= length:
|
| | |
| | | self.FightPower, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FightPowerEx, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.EmblemID, pos = CommFunc.ReadWORD(buf, pos)
|
| | | self.EmblemWord, pos = CommFunc.ReadString(buf, pos, 3)
|
| | | return self.getLength()
|
| | |
|
| | | def getBuffer(self):
|
| | |
| | | buf = CommFunc.WriteDWORD(buf, self.FightPower)
|
| | | buf = CommFunc.WriteDWORD(buf, self.FightPowerEx)
|
| | | buf = CommFunc.WriteWORD(buf, self.EmblemID)
|
| | | buf = CommFunc.WriteString(buf, sizeof(ctypes.c_char) * 3, self.EmblemWord)
|
| | | return buf
|
| | |
|
| | | def getLength(self):
|
| | |
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ulong)
|
| | | length += sizeof(ctypes.c_ushort)
|
| | | length += sizeof(ctypes.c_char) * 3
|
| | | return length
|
| | |
|
| | | def getRecord(self):
|
| | |
| | | rec[u'FightPower'] = self.FightPower
|
| | | rec[u'FightPowerEx'] = self.FightPowerEx
|
| | | rec[u'EmblemID'] = self.EmblemID
|
| | | rec[u'EmblemWord'] = fix_incomingText(self.EmblemWord)
|
| | | return rec
|
| | |
|
| | | def readRecord(self, rec):
|
| | |
| | | self.FightPower = rec.get(u'FightPower', 0)
|
| | | self.FightPowerEx = rec.get(u'FightPowerEx', 0)
|
| | | self.EmblemID = rec.get(u'EmblemID', 0)
|
| | | self.EmblemWord = fix_outgoingText(rec.get(u'EmblemWord', u''))
|
| | |
|
| | | def adoLoad(self, collection):
|
| | | '''使用KEY查找并读取'''
|
| | |
| | | FightPower = %s,
|
| | | FightPowerEx = %s,
|
| | | EmblemID = %s,
|
| | | EmblemWord = %s,
|
| | | ADOResult = %s,
|
| | | '''%(
|
| | | self.ID,
|
| | |
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.EmblemID,
|
| | | self.EmblemWord,
|
| | | self.ADOResult,
|
| | | )
|
| | | return output
|
| | |
|
| | | def dumpString(self):
|
| | | output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%(
|
| | | output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%(
|
| | | self.ID,
|
| | | self.Name,
|
| | | self.LeaderID,
|
| | |
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.EmblemID,
|
| | | self.EmblemWord,
|
| | | )
|
| | | return output
|
| | |
|
| | |
| | | self.Name = Str
|
| | | else:
|
| | | self.Name = Str[:33]
|
| | | |
| | | def SetEmblemWord(self,Str):
|
| | | if len(Str)<=3:
|
| | | self.EmblemWord = Str
|
| | | else:
|
| | | self.EmblemWord = Str[:3]
|
| | |
|
| | |
|
| | | # 家族成员表 #tagDBFamilyMem
|
| | |
| | | ('OffTime', ctypes.c_ulong),
|
| | | ('FmLV', ctypes.c_ubyte),
|
| | | ('ContribTotal', ctypes.c_ulong),
|
| | | ('ContribWeek', ctypes.c_ulong),
|
| | | ('ContribDay', ctypes.c_ulong),
|
| | | ('DonateCntTotal', ctypes.c_ulong),
|
| | | ('DonateCntDay', ctypes.c_ubyte),
|
| | | ('ADOResult', ctypes.c_ulong),
|
| | | ]
|
| | |
|
| | |
| | | self.OffTime, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.FmLV, pos = CommFunc.ReadBYTE(buf, pos)
|
| | | self.ContribTotal, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.ContribWeek, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.ContribDay, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.DonateCntTotal, pos = CommFunc.ReadDWORD(buf, pos)
|
| | | self.DonateCntDay, pos = CommFunc.ReadBYTE(buf, pos)
|
| | | return self.getLength()
|
| | |
|
| | |
|
| | |
| | | rec[u'OffTime'] = self.OffTime
|
| | | rec[u'FmLV'] = self.FmLV
|
| | | rec[u'ContribTotal'] = self.ContribTotal
|
| | | rec[u'ContribWeek'] = self.ContribWeek
|
| | | rec[u'ContribDay'] = self.ContribDay
|
| | | rec[u'DonateCntTotal'] = self.DonateCntTotal
|
| | | rec[u'DonateCntDay'] = self.DonateCntDay
|
| | | return rec
|
| | |
|
| | | def readRecord(self, rec):
|
| | |
| | | self.OffTime = rec.get(u'OffTime', 0)
|
| | | self.FmLV = rec.get(u'FmLV', 0)
|
| | | self.ContribTotal = rec.get(u'ContribTotal', 0)
|
| | | self.ContribWeek = rec.get(u'ContribWeek', 0)
|
| | | self.ContribDay = rec.get(u'ContribDay', 0)
|
| | | self.DonateCntTotal = rec.get(u'DonateCntTotal', 0)
|
| | | self.DonateCntDay = rec.get(u'DonateCntDay', 0)
|
| | |
|
| | | def adoLoad(self, collection):
|
| | | '''使用KEY查找并读取'''
|
| | |
| | | OffTime = %s,
|
| | | FmLV = %s,
|
| | | ContribTotal = %s,
|
| | | ContribWeek = %s,
|
| | | ContribDay = %s,
|
| | | DonateCntTotal = %s,
|
| | | DonateCntDay = %s,
|
| | | ADOResult = %s,
|
| | | '''%(
|
| | | self.PlayerID,
|
| | |
| | | self.OffTime,
|
| | | self.FmLV,
|
| | | self.ContribTotal,
|
| | | self.ContribWeek,
|
| | | self.ContribDay,
|
| | | self.DonateCntTotal,
|
| | | self.DonateCntDay,
|
| | | self.ADOResult,
|
| | | )
|
| | | return output
|
| | |
|
| | | def dumpString(self):
|
| | | output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%(
|
| | | output = '''%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s\t%1s'''%(
|
| | | self.PlayerID,
|
| | | self.FamilyID,
|
| | | self.JoinTime,
|
| | |
| | | self.OffTime,
|
| | | self.FmLV,
|
| | | self.ContribTotal,
|
| | | self.ContribWeek,
|
| | | self.ContribDay,
|
| | | self.DonateCntTotal,
|
| | | self.DonateCntDay,
|
| | | )
|
| | | return output
|
| | |
|
| | |
| | | Def_Notify_WorldKey_FamilyKillHorsePetRobBossCnt = 'FamilyKillHorsePetRobBossCnt' # 仙盟击杀骑宠boss数统计
|
| | | Def_Notify_WorldKey_HorsePetRobBossPlayerCount = 'HorsePetRobBossPlayerCount' # 骑宠争夺活动有效参考人数
|
| | |
|
| | | Def_Notify_WorldKey_FamilyActivityDayState = "FamilyActivityDayState" #战盟相关活动今日开启状态, 按位存储代表今日是否开启过
|
| | |
|
| | | Def_Notify_WorldKey_RedPacketOutput = 'RedPacketOutput' # 红包产出信息
|
| | | Def_Notify_WorldKey_HurtLog = 'HurtLog' # 战斗伤害日志
|
| | |
|
| | |
| | | CDBPlayerRefresh_RuneSplinters, # 符印碎片 170
|
| | | CDBPlayerRefresh_RealmPoint, # 境界修炼点
|
| | | CDBPlayerRefresh_Ysog, # 魔精
|
| | | CDBPlayerRefresh_FamilyActivity, # 仙盟活跃令
|
| | | CDBPlayerRefresh_FamilyCoin, # 仙盟公会币
|
| | | CDBPlayerRefresh_ParryRateDef, # 抗格挡
|
| | | CDBPlayerRefresh_PKState, # 战斗状态 175
|
| | | CDBPlayerRefresh_BossState, # boss״̬
|
| | |
| | | ) = range(146, 287)
|
| | |
|
| | | TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
|
| | | TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
|
| | | TYPE_Price_FamilyExp = 6 # 战盟经验
|
| | | TYPE_Price_FamilyStoreScore = 10 # 战盟仓库积分
|
| | | TYPE_Price_RealmPoint = 13 # 境界修炼点
|
| | | TYPE_Price_Ysog = 14 # 魔精
|
| | | TYPE_Price_FamilyActivity = 15 # 仙盟活跃令
|
| | | TYPE_Price_FamilyCoin = 15 # 仙盟公会贡献币
|
| | | TYPE_Price_FBHelpPoint = 16 # 副本助战积分, 废弃
|
| | | TYPE_Price_Honor = 18 # 荣誉
|
| | | TYPE_Price_BossActScore = 19 # boss活动积分,bt版用
|
| | |
| | |
|
| | | #key可用于遍历所有货币,value仅GM相关会用到
|
| | | MoneyNameDict = {
|
| | | 1:"金币", 41:"战锤", 42:"将星玉髓", 51:"招募积分", 52:"淘金令", 53:"挑战券",
|
| | | 1:"金币", 15:"公会贡献币", 41:"战锤", 42:"将星玉髓", 51:"招募积分", 52:"淘金令", 53:"挑战券",
|
| | | 98:"代币时效", 99:"代币"
|
| | | }
|
| | | #MoneyNameDict = {
|
| | |
| | |
|
| | | # 自定义积分及通知字典 {货币类型:通知客户端刷新类型, ...} , 如果不通知的话刷新类型则配置 None
|
| | | TYPE_Price_CurrencyDict = {
|
| | | TYPE_Price_Family_Contribution:CDBPlayerRefresh_FamilyContribution,
|
| | | TYPE_Price_FamilyStoreScore:CDBPlayerRefresh_FamilyStoreScore,
|
| | | TYPE_Price_Rune:CDBPlayerRefresh_Rune,
|
| | | TYPE_Price_RuneSplinters:CDBPlayerRefresh_RuneSplinters,
|
| | |
| | | TYPE_Price_BourseMoney:None,
|
| | | TYPE_Price_RealmPoint:CDBPlayerRefresh_RealmPoint,
|
| | | TYPE_Price_Ysog:CDBPlayerRefresh_Ysog,
|
| | | TYPE_Price_FamilyActivity:CDBPlayerRefresh_FamilyActivity,
|
| | | TYPE_Price_FamilyCoin:CDBPlayerRefresh_FamilyCoin,
|
| | | TYPE_Price_Danjing:CDBPlayerRefresh_Danjing,
|
| | | TYPE_Price_SoulDust:CDBPlayerRefresh_SoulDust,
|
| | | TYPE_Price_SoulSplinters:CDBPlayerRefresh_SoulSplinters,
|
| | |
| | | SuccType_XXX97, # 废弃97
|
| | | SuccType_XXX98, # 废弃98
|
| | | SuccType_XXX99, # 废弃99
|
| | | SuccType_FamilyTechLV, # 仙盟X技能X级100
|
| | | SuccType_100, # 100
|
| | | SuccType_XXX101, # 废弃101
|
| | | SuccType_XXX102, # 废弃102
|
| | | SuccType_XXX103, # 废弃103
|
| | |
| | | SuccType_Pray,SuccType_PetClassLV,
|
| | | SuccType_QueenRelics,SuccType_XMZZConWin,
|
| | | SuccType_Collect,SuccType_DogzBattle,
|
| | | SuccType_UseItem,SuccType_FamilyTechLV,
|
| | | SuccType_GetSpecialItem,SuccType_GetMagicWeapon,SuccType_XBXZ,
|
| | | SuccType_FeastRedPack_KillSpecificNPC,SuccType_FeastRedPack_KillBoss,
|
| | | SuccType_FeastRedPack_EnterMap, SuccType_FeastRedPack_FBSweep,
|
| | |
| | | EntFBAskRet_Other, # xx 其他限制
|
| | | EntFBAskRet_Max,
|
| | | ) = range(18)
|
| | |
|
| | |
|
| | | #增加仙盟活跃的活动类型
|
| | | FamilyActiveIDList = (
|
| | | FamilyActive_Task, #仙盟任务
|
| | | FamilyActive_Party, #仙盟宴会
|
| | | FamilyActive_BOSS, #仙盟BOSS
|
| | | FamilyActive_War, #仙盟联赛
|
| | | FamilyActive_HelpDujie, #同盟护法
|
| | | FamilyActive_SWRH, #守卫人皇
|
| | | ) = range(1,6+1)
|
| | |
|
| | |
|
| | | # BOSS 功能标识区分 对应KillBossCntLimit,主要根据击杀类型不同区分
|
| | | (
|