From 789490b7d362160f7fca4580df6176498e1eb271 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 15 十一月 2024 15:19:13 +0800 Subject: [PATCH] 10302 【越南】【英语】【砍树】【tqxbqy】【btgotq】仙缘-服务端 --- ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 28 - ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py | 61 +++- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 38 ++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 7 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 38 ++ ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py | 9 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py | 6 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 56 +++- PySysDB/PySysDBPY.h | 12 + ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 10 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py | 18 + ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBuyCountGift.py | 47 +++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 10 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py | 3 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py | 49 +++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLoginNew.py | 97 +++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSignDay.py | 2 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py | 3 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 3 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 106 ++++++++ ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py | 8 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 7 PySysDB/PySysDBG.h | 9 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 21 + ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py | 9 30 files changed, 563 insertions(+), 104 deletions(-) diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h index 0d0fe41..c5c3980 100644 --- a/PySysDB/PySysDBG.h +++ b/PySysDB/PySysDBG.h @@ -1215,9 +1215,6 @@ BYTE ActNum; //活动分组编号, 活动类型 * 10 + 不同界面编号 char StartDate; //开启日期 char EndDate; //结束日期 - dict NotifyInfoStart; //全服提示信息 - 相对开始时间 - dict NotifyInfoEnd; //全服提示信息 - 相对结束时间 - list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key] BYTE IsDayReset; //是否每天重置 BYTE ResetType; //重置类型,0-0点重置;1-5点重置 }; @@ -1232,9 +1229,6 @@ BYTE ActNum; //活动分组编号, 活动类型 * 10 + 不同界面编号 char StartDate; //开启日期 char EndDate; //结束日期 - dict NotifyInfoStart; //全服提示信息 - 相对开始时间 - dict NotifyInfoEnd; //全服提示信息 - 相对结束时间 - list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key] BYTE IsDayReset; //是否每天重置 BYTE ResetType; //重置类型,0-0点重置;1-5点重置 }; @@ -1249,9 +1243,6 @@ BYTE ActNum; //活动分组编号, 活动类型 * 10 + 不同界面编号 char StartDate; //开启日期 char EndDate; //结束日期 - dict NotifyInfoStart; //全服提示信息 - 相对开始时间 - dict NotifyInfoEnd; //全服提示信息 - 相对结束时间 - list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key] }; //登录奖励时间表 diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h index 003bac0..d42e417 100644 --- a/PySysDB/PySysDBPY.h +++ b/PySysDB/PySysDBPY.h @@ -2704,6 +2704,9 @@ DWORD _CfgID; //配置ID char StartDate; //开启日期 char EndDate; //结束日期 + WORD RelateFuncID; //关联功能ID + BYTE FuncActDays; //功能活动天数 + BYTE FuncLoop; //功能是否循环 WORD LVLimit; //限制等级 BYTE IsDayReset; //是否每天重置 BYTE ResetType; //重置类型,0-0点重置;1-5点重置 @@ -2720,6 +2723,9 @@ DWORD _CfgID; //配置ID char StartDate; //开启日期 char EndDate; //结束日期 + WORD RelateFuncID; //关联功能ID + BYTE FuncActDays; //功能活动天数 + BYTE FuncLoop; //功能是否循环 WORD LVLimit; //限制等级 BYTE IsDayReset; //是否每天重置 BYTE ResetType; //重置类型,0-0点重置;1-5点重置 @@ -2745,9 +2751,14 @@ DWORD _CfgID; //配置ID char StartDate; //开启日期 char EndDate; //结束日期 + WORD RelateFuncID; //关联功能ID + BYTE FuncActDays; //功能活动天数 + BYTE FuncLoop; //功能是否循环 WORD LVLimit; //限制等级 list RepSignCostMoneyInfo; //补签消耗货币类型数量 BYTE TemplateID; //登录奖励模板编号 + WORD AwardExCTGID; //扩展奖励礼包充值ID + WORD ActZhanlingType; //关联活动战令类型 }; //登录活动奖励模板表新 @@ -2757,6 +2768,7 @@ BYTE _TemplateID; //模板ID BYTE DayNum; //第X天从1开始 list LoginAwardItemList; //奖励列表[[物品ID,个数,是否拍品], ...] + list LoginAwardItemListEx; //扩展奖励列表[[物品ID,个数,是否拍品], ...] }; //登录奖励时间表 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 2c3f608..491dae1 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -38104,6 +38104,8 @@ DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取 Count = 0 #(BYTE Count)// 奖励物品数 AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表 + CountEx = 0 #(BYTE CountEx)// 额外奖励物品数 + AwardItemListEx = list() #(vector<tagMCActLoginNewItem> AwardItemListEx)// 额外奖励物品列表 data = None def __init__(self): @@ -38118,12 +38120,19 @@ temAwardItemList = tagMCActLoginNewItem() _pos = temAwardItemList.ReadData(_lpData, _pos) self.AwardItemList.append(temAwardItemList) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemListEx = tagMCActLoginNewItem() + _pos = temAwardItemListEx.ReadData(_lpData, _pos) + self.AwardItemListEx.append(temAwardItemListEx) return _pos def Clear(self): self.DayNum = 0 self.Count = 0 self.AwardItemList = list() + self.CountEx = 0 + self.AwardItemListEx = list() return def GetLength(self): @@ -38132,6 +38141,9 @@ length += 1 for i in range(self.Count): length += self.AwardItemList[i].GetLength() + length += 1 + for i in range(self.CountEx): + length += self.AwardItemListEx[i].GetLength() return length @@ -38141,17 +38153,24 @@ data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer()) return data def OutputString(self): DumpString = ''' DayNum:%d, Count:%d, - AwardItemList:%s + AwardItemList:%s, + CountEx:%d, + AwardItemListEx:%s '''\ %( self.DayNum, self.Count, + "...", + self.CountEx, "..." ) return DumpString @@ -38165,6 +38184,7 @@ LimitLV = 0 #(WORD LimitLV)// 限制等级 RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型 RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值 + AwardExCTGID = 0 #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励 DayCount = 0 #(BYTE DayCount) AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表 data = None @@ -38184,6 +38204,7 @@ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos) self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.DayCount): temAwardDayList = tagMCActLoginNewDay() @@ -38202,6 +38223,7 @@ self.LimitLV = 0 self.RepSignMoneyType = 0 self.RepSignMoneyValue = 0 + self.AwardExCTGID = 0 self.DayCount = 0 self.AwardDayList = list() return @@ -38215,6 +38237,7 @@ length += 2 length += 1 length += 4 + length += 2 length += 1 for i in range(self.DayCount): length += self.AwardDayList[i].GetLength() @@ -38230,6 +38253,7 @@ data = CommFunc.WriteWORD(data, self.LimitLV) data = CommFunc.WriteBYTE(data, self.RepSignMoneyType) data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue) + data = CommFunc.WriteWORD(data, self.AwardExCTGID) data = CommFunc.WriteBYTE(data, self.DayCount) for i in range(self.DayCount): data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer()) @@ -38244,6 +38268,7 @@ LimitLV:%d, RepSignMoneyType:%d, RepSignMoneyValue:%d, + AwardExCTGID:%d, DayCount:%d, AwardDayList:%s '''\ @@ -38255,6 +38280,7 @@ self.LimitLV, self.RepSignMoneyType, self.RepSignMoneyValue, + self.AwardExCTGID, self.DayCount, "..." ) @@ -38274,7 +38300,8 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("ActNum", c_ubyte), # 活动编号 - ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取 + ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取 + ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取 ] def __init__(self): @@ -38293,6 +38320,7 @@ self.SubCmd = 0x70 self.ActNum = 0 self.LoginAward = 0 + self.LoginAwardEx = 0 return def GetLength(self): @@ -38306,13 +38334,15 @@ Cmd:%s, SubCmd:%s, ActNum:%d, - LoginAward:%d + LoginAward:%d, + LoginAwardEx:%d '''\ %( self.Cmd, self.SubCmd, self.ActNum, - self.LoginAward + self.LoginAward, + self.LoginAwardEx ) return DumpString diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py index 85cc3ce..ff7dc79 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py @@ -869,7 +869,7 @@ robPlayerID = mineItemData.RobPlayerID # 赶走抢夺者 if robPlayerID and robPlayerID == tagPlayerID: - __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex) + __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex, "out") # 帮助的发奖 if funcLineID == 0: @@ -926,7 +926,7 @@ return if workerCount <= 0: if not isPreview: - __DoCancelPull(playerID, areaPlayerID, itemIndex) + __DoCancelPull(playerID, areaPlayerID, itemIndex, "cancel") return GameWorld.DebugLog("请求福地拉物品! areaPlayerID=%s,itemIndex=%s,workerCount=%s,workerState=%s,workerTotal=%s,isPreview=%s" % (areaPlayerID, itemIndex, workerCount, workerState, workerTotal, isPreview), playerID) @@ -1019,7 +1019,7 @@ SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx) return -def __DoCancelPull(playerID, areaPlayerID, itemIndex): +def __DoCancelPull(playerID, areaPlayerID, itemIndex, reason=""): ## 取消拉取 mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex) @@ -1054,6 +1054,9 @@ __RefreshMineItemSpeed(mineItemData, True) SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx) + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) + if curPlayer: + MapServer_QueryPlayerResult(curPlayer, "MineAreaCancelPull", [areaPlayerID, reason]) return def __DoMineItemRefresh(areaPlayerID, areaPlayer=None, isSys=False, isSuper=False, isNotify=True, refreshIndexList=None, setPosition=None, setItemLV=None, setMineID=None): diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py index 1eb464e..716a2af 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py @@ -975,9 +975,6 @@ ("BYTE", "ActNum", 0), ("char", "StartDate", 0), ("char", "EndDate", 0), - ("dict", "NotifyInfoStart", 0), - ("dict", "NotifyInfoEnd", 0), - ("list", "NotifyInfoLoop", 0), ("BYTE", "IsDayReset", 0), ("BYTE", "ResetType", 0), ), @@ -989,9 +986,6 @@ ("BYTE", "ActNum", 0), ("char", "StartDate", 0), ("char", "EndDate", 0), - ("dict", "NotifyInfoStart", 0), - ("dict", "NotifyInfoEnd", 0), - ("list", "NotifyInfoLoop", 0), ("BYTE", "IsDayReset", 0), ("BYTE", "ResetType", 0), ), @@ -1003,9 +997,6 @@ ("BYTE", "ActNum", 0), ("char", "StartDate", 0), ("char", "EndDate", 0), - ("dict", "NotifyInfoStart", 0), - ("dict", "NotifyInfoEnd", 0), - ("list", "NotifyInfoLoop", 0), ), "ActLoginAward":( @@ -2613,11 +2604,8 @@ def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE def GetStartDate(self): return self.attrTuple[4] # 开启日期 char def GetEndDate(self): return self.attrTuple[5] # 结束日期 char - def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict - def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict - def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list - def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE - def GetResetType(self): return self.attrTuple[10] # 重置类型,0-0点重置;1-5点重置 BYTE + def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE + def GetResetType(self): return self.attrTuple[7] # 重置类型,0-0点重置;1-5点重置 BYTE # 任务活动时间表 class IPY_ActTask(): @@ -2632,11 +2620,8 @@ def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE def GetStartDate(self): return self.attrTuple[4] # 开启日期 char def GetEndDate(self): return self.attrTuple[5] # 结束日期 char - def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict - def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict - def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list - def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE - def GetResetType(self): return self.attrTuple[10] # 重置类型,0-0点重置;1-5点重置 BYTE + def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE + def GetResetType(self): return self.attrTuple[7] # 重置类型,0-0点重置;1-5点重置 BYTE # 登录活动奖励时间表新 class IPY_ActLoginNew(): @@ -2650,10 +2635,7 @@ def GetServerGroupIDList(self): return self.attrTuple[2] # 服务器ID列表 list def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE def GetStartDate(self): return self.attrTuple[4] # 开启日期 char - def GetEndDate(self): return self.attrTuple[5] # 结束日期 char - def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict - def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict - def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list + def GetEndDate(self): return self.attrTuple[5] # 结束日期 char # 登录奖励时间表 class IPY_ActLoginAward(): diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py index 0fca079..f97d5d3 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py @@ -1156,7 +1156,9 @@ CDBPlayerRefresh_TiandaoFruit, # 天道果 267 CDBPlayerRefresh_Tuijinbi, # 推金币 268 CDBPlayerRefresh_PayCoinDay, # 代币时效 269 -) = range(146, 270) +CDBPlayerRefresh_XianyuanScore, # 仙缘积分 270 +CDBPlayerRefresh_HuanjinggeScore, # 幻境阁积分 271 +) = range(146, 272) TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子) TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来) @@ -1192,6 +1194,9 @@ TYPE_Price_HorsePetTrainScore = 45 # 骑宠养成积分 TYPE_Price_GubaoTrainScore = 46 # 古宝养成积分 TYPE_Price_TiandaoFruit = 47 # 天道果 +TYPE_Price_Tuijinbi = 48 # 推金币 +TYPE_Price_XianyuanScore = 49 # 仙缘积分 +TYPE_Price_HuanjinggeScore = 50 # 幻境阁积分 TYPE_Price_PayCoinDay = 98 # 代币时效,每日过天重置 TYPE_Price_PayCoin = 99 # 代币 @@ -1201,6 +1206,7 @@ 16:"助战积分", 18:"荣誉", 19:"Boss积分", 23:"符印精华", 24:"符印碎片", 25:"寻宝积分", 26:"集市额度", 27:"丹精", 28:"魂尘", 29:"聚魂碎片", 30:"核心环", 31:"功能特权令", 32:"环保值", 33:"GM令", 34:"古神币", 35:"功德点", 39:"成就积分", 40:"万界积分", 43:"凭证积分", 44:"聚魂精华", 45:"骑宠养成积分", 46:"古宝养成积分", 47:"天道果", + 49:"仙缘积分", 50:"幻境阁积分", 98:"代币时效", 99:"代币" } @@ -1241,6 +1247,8 @@ TYPE_Price_HorsePetTrainScore:CDBPlayerRefresh_HorsePetTrainScore, TYPE_Price_GubaoTrainScore:CDBPlayerRefresh_GubaoTrainScore, TYPE_Price_TiandaoFruit:CDBPlayerRefresh_TiandaoFruit, + TYPE_Price_XianyuanScore:CDBPlayerRefresh_XianyuanScore, + TYPE_Price_HuanjinggeScore:CDBPlayerRefresh_HuanjinggeScore, TYPE_Price_PayCoinDay:CDBPlayerRefresh_PayCoinDay, } diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index 432d841..59a09fc 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py @@ -4189,6 +4189,7 @@ #登录活动新 Def_PDict_ActLoginNewID = "ActLoginNewID_%s" # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号) Def_PDict_ActLoginNewAward = "ActLoginNewAward_%s" # 登录活动奖励记录,按位记录登录天是否已领取,参数:(活动编号) +Def_PDict_ActLoginNewAwardEx = "ActLoginNewAwardEx_%s" # 登录活动额外奖励记录,按位记录登录天是否已领取,参数:(活动编号) #任务活动 Def_PDict_ActTaskID = "ActTaskID_%s" # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号) @@ -6208,7 +6209,25 @@ ActTaskType_HorseTrainItem3, # 消耗X个坐骑培养3道具 13 ActTaskType_PetTrainItem3, # 消耗X个灵宠培养3道具 14 ActTaskType_HorsePetActScore, # 获得X点骑宠养成积分 15 -) = range(1, 1 + 15) +ActTaskType_KillNPC, # 杀怪x次 16 +ActTaskType_TreasureJipin, # 极品寻宝达到x次 17 +ActTaskType_TreasureRune, # 符印寻宝达到x次 18 +ActTaskType_TreasureJueshi, # 绝世寻宝达到x次 19 +ActTaskType_TreasureGatherTheSoul, # 猎魔寻宝达到x次 20 +ActTaskType_GubaoLVUp, # 古宝升级X次 21 +ActTaskType_GubaoStarUp, # 古宝升星X次 22 +ActTaskType_Sign, # 签到X次 23 +ActTaskType_MoneyPray, # 灵石祈愿X次 24 +ActTaskType_ExpPray, # 修为祈愿X次 25 +ActTaskType_Arena, # 竞技场挑战X次 26 +ActTaskType_MineAreaEndSelf, # 福地完成采集自己道具X次 27 +ActTaskType_MineAreaEndOther, # 福地完成采集他人道具X次 28 +ActTaskType_FruitStoveEatTimes, # 服用丹药X次 29 +ActTaskType_SkyTower, # 天星塔X次 30 +ActTaskType_FMT, # 封魔坛X次 31 +ActTaskType_EquipPlus, # 装备强化X次 32 +ActTaskType_EquipWash, # 装备洗炼X次 33 +) = range(1, 1 + 33) # 套装枚举,普通套装,强化套装 (EquipSuitType_Normal, diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 2c3f608..491dae1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -38104,6 +38104,8 @@ DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取 Count = 0 #(BYTE Count)// 奖励物品数 AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表 + CountEx = 0 #(BYTE CountEx)// 额外奖励物品数 + AwardItemListEx = list() #(vector<tagMCActLoginNewItem> AwardItemListEx)// 额外奖励物品列表 data = None def __init__(self): @@ -38118,12 +38120,19 @@ temAwardItemList = tagMCActLoginNewItem() _pos = temAwardItemList.ReadData(_lpData, _pos) self.AwardItemList.append(temAwardItemList) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemListEx = tagMCActLoginNewItem() + _pos = temAwardItemListEx.ReadData(_lpData, _pos) + self.AwardItemListEx.append(temAwardItemListEx) return _pos def Clear(self): self.DayNum = 0 self.Count = 0 self.AwardItemList = list() + self.CountEx = 0 + self.AwardItemListEx = list() return def GetLength(self): @@ -38132,6 +38141,9 @@ length += 1 for i in range(self.Count): length += self.AwardItemList[i].GetLength() + length += 1 + for i in range(self.CountEx): + length += self.AwardItemListEx[i].GetLength() return length @@ -38141,17 +38153,24 @@ data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer()) return data def OutputString(self): DumpString = ''' DayNum:%d, Count:%d, - AwardItemList:%s + AwardItemList:%s, + CountEx:%d, + AwardItemListEx:%s '''\ %( self.DayNum, self.Count, + "...", + self.CountEx, "..." ) return DumpString @@ -38165,6 +38184,7 @@ LimitLV = 0 #(WORD LimitLV)// 限制等级 RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型 RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值 + AwardExCTGID = 0 #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励 DayCount = 0 #(BYTE DayCount) AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表 data = None @@ -38184,6 +38204,7 @@ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos) self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.DayCount): temAwardDayList = tagMCActLoginNewDay() @@ -38202,6 +38223,7 @@ self.LimitLV = 0 self.RepSignMoneyType = 0 self.RepSignMoneyValue = 0 + self.AwardExCTGID = 0 self.DayCount = 0 self.AwardDayList = list() return @@ -38215,6 +38237,7 @@ length += 2 length += 1 length += 4 + length += 2 length += 1 for i in range(self.DayCount): length += self.AwardDayList[i].GetLength() @@ -38230,6 +38253,7 @@ data = CommFunc.WriteWORD(data, self.LimitLV) data = CommFunc.WriteBYTE(data, self.RepSignMoneyType) data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue) + data = CommFunc.WriteWORD(data, self.AwardExCTGID) data = CommFunc.WriteBYTE(data, self.DayCount) for i in range(self.DayCount): data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer()) @@ -38244,6 +38268,7 @@ LimitLV:%d, RepSignMoneyType:%d, RepSignMoneyValue:%d, + AwardExCTGID:%d, DayCount:%d, AwardDayList:%s '''\ @@ -38255,6 +38280,7 @@ self.LimitLV, self.RepSignMoneyType, self.RepSignMoneyValue, + self.AwardExCTGID, self.DayCount, "..." ) @@ -38274,7 +38300,8 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("ActNum", c_ubyte), # 活动编号 - ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取 + ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取 + ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取 ] def __init__(self): @@ -38293,6 +38320,7 @@ self.SubCmd = 0x70 self.ActNum = 0 self.LoginAward = 0 + self.LoginAwardEx = 0 return def GetLength(self): @@ -38306,13 +38334,15 @@ Cmd:%s, SubCmd:%s, ActNum:%d, - LoginAward:%d + LoginAward:%d, + LoginAwardEx:%d '''\ %( self.Cmd, self.SubCmd, self.ActNum, - self.LoginAward + self.LoginAward, + self.LoginAwardEx ) return DumpString diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py index 2cef80f..5e24d61 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py @@ -29,6 +29,7 @@ import PlayerSuccess import IpyGameDataPY import PlayerActLogin +import PlayerActTask import GameWorld import ChConfig import ChEquip @@ -158,6 +159,7 @@ PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipPlus, 1) PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Plus, 1) PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Plus, 1) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_EquipPlus) return def __EquipMayaPlusChange(curPlayer, packType, curEquip, index, updPlusLV): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py index b13846d..881d5c1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py @@ -26,6 +26,7 @@ import PlayerActGarbageSorting import DataRecordPack import PlayerActLogin +import PlayerActTask import ShareDefine import ItemCommon import ChConfig @@ -299,6 +300,7 @@ PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_EquipWash, 1) PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_EquipWash) PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Wash, 1) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_EquipWash) return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py index 8fd96e8..e156504 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py @@ -32,6 +32,7 @@ import PlayerNewFairyCeremony import PlayerFeastTravel import PlayerActLogin +import PlayerActTask import PlayerWeekParty import EventShell #------------------------------------------------------------------------------ @@ -129,6 +130,7 @@ PlayerControl.GiveMoney(curPlayer, giveMoneyType, addMoney, ChConfig.Def_GiveMoney_Pray, addDataDict, False) PlayerControl.NotifyCode(curPlayer, 'MoneyPray_HowMuch', [addMoney, giveMoneyType]) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_MoneyPray, 1) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_MoneyPray) #经验祈愿 elif buyType == ChConfig.VIPPrivilege_ExpPray: @@ -164,6 +166,7 @@ if not isCostItem: #用物品不增加次数 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HasPrayCnt % buyType, curCnt + 1) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_ExpPray, 1) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_ExpPray) else: return EventShell.EventRespons_Pray(curPlayer, buyType) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py index 76843f7..9c24f4a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py @@ -33,6 +33,7 @@ if not msgList: GameWorld.DebugAnswer(curPlayer, "重置奖励: Zhanling 0 类型") GameWorld.DebugAnswer(curPlayer, "设置战令: Zhanling 类型 是否激活普通 高级") + GameWorld.DebugAnswer(curPlayer, "设置进度: Zhanling v 类型 进度值") return value = msgList[0] @@ -42,6 +43,14 @@ PlayerZhanling.ResetZhanling(curPlayer, zhanlingType, backValue) GameWorld.DebugAnswer(curPlayer, "重置战令(%s)!" % (zhanlingType)) + elif value == "v": + zhanlingType = msgList[1] if len(msgList) > 1 else 0 + value1 = msgList[2] if len(msgList) > 2 else 0 + retValue = PlayerZhanling.SetZhanlingValue(curPlayer, zhanlingType, value1) + if retValue == None: + GameWorld.DebugAnswer(curPlayer, "该战令不用设置进度值! %s" % (zhanlingType)) + return + GameWorld.DebugAnswer(curPlayer, "战令进度:Type=%s,V=%s" % (zhanlingType, retValue)) else: zhanlingType = value activiteC = msgList[1] if len(msgList) > 1 else 0 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py index 8bf2cdc..4c9ab35 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py @@ -744,6 +744,112 @@ endDateStr = "%d-%d-%d" % (endDateTime.year, endDateTime.month, endDateTime.day) return startDateStr, endDateStr +def GetActRelateFuncInfo(curPlayer, actName, actInfo, playerActID): + ## 获取活动关联玩家功能开启信息 + cfgID = actInfo.get(ShareDefine.ActKey_CfgID) + if not cfgID: + return + ipyData = IpyGameDataPY.GetIpyGameDataNotLog(actName, cfgID) + if not ipyData: + return + if not hasattr(ipyData, "GetRelateFuncID"): + return + relateFuncID = ipyData.GetRelateFuncID() + if not relateFuncID: + return + funcActDays = ipyData.GetFuncActDays() + funcLoop = ipyData.GetFuncLoop() + + playerID = curPlayer.GetPlayerID() + isInAct = False # 是否活动中 + actID = playerActID # 玩家实际的活动ID + if not actInfo.get(ShareDefine.ActKey_State, 0): + #DebugLog("关联功能非活动中默认不开活动! actName=%s,cfgID=%s" % (actName, cfgID), playerID) + return isInAct, actID + isOpen = GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, relateFuncID, True) + if not isOpen: + DebugLog("关联功能未开启默认不开活动! actName=%s,cfgID=%s,relateFuncID=%s" % (actName, cfgID, relateFuncID), playerID) + return isInAct, actID + + isDayRest = 0 if not hasattr(ipyData, "GetIsDayReset") else ipyData.GetIsDayReset() + actNum = actInfo.get(ShareDefine.ActKey_ActNum) + serverTime = GetCurrentTime() + newAct = False + + if isDayRest: + newAct = True + DebugLog("关联功能活动,每日重置的活动! actName=%s,cfgID=%s,relateFuncID=%s" % (actName, cfgID, relateFuncID), playerID) + + elif not playerActID: + newAct = True + DebugLog("关联功能活动,玩家首次开启活动! actName=%s,cfgID=%s,relateFuncID=%s" % (actName, cfgID, relateFuncID), playerID) + + # 有活动期限的 + elif funcActDays: + startDayDate, endDayDate = GetActRelateFuncDate(ipyData, playerActID) + if startDayDate <= serverTime < endDayDate: + isInAct = True + DebugLog("关联功能活动,正常活动中! actName=%s,cfgID=%s,%s~%s" % (actName, cfgID, startDayDate, endDayDate), playerID) + elif serverTime >= endDayDate: + if funcLoop: + newAct = True + DebugLog("关联功能活动,活动结束,重新开始循环新活动! actName=%s,cfgID=%s,%s~%s" % (actName, cfgID, startDayDate, endDayDate), playerID) + else: + DebugLog("关联功能活动,活动结束,不循环! actName=%s,cfgID=%s,%s~%s" % (actName, cfgID, startDayDate, endDayDate), playerID) + else: + DebugLog("关联功能活动,玩家活动ID超过当前时间,可能是调时间引起,重新开始循环新活动! actName=%s,cfgID=%s,%s~%s" % (actName, cfgID, startDayDate, endDayDate), playerID) + newAct = True + + # 永久的,默认活动中 + else: + isInAct = True + DebugLog("关联功能活动,永久开放的活动! actName=%s,cfgID=%s,relateFuncID=%s" % (actName, cfgID, relateFuncID), playerID) + + if newAct: + isInAct = True + resetType = 0 if not hasattr(ipyData, "GetResetType") else ipyData.GetResetType() # 重置类型,0-0点重置;1-5点重置 + startDateStr = "%d-%d-%d" % (serverTime.year, serverTime.month, serverTime.day) + if resetType == 1: + startDayDate = datetime.datetime.strptime("%s 05:00:00" % (startDateStr), ChConfig.TYPE_Time_Format) + else: + startDayDate = datetime.datetime.strptime("%s 00:00:00" % (startDateStr), ChConfig.TYPE_Time_Format) + actID = int(time.mktime(startDayDate.timetuple())) + + DebugLog("关联功能活动! actName=%s,cfgID=%s,actNum=%s,relateFuncID=%s,playerActID=%s,actID=%s,isInAct=%s" + % (actName, cfgID, actNum, relateFuncID, playerActID, actID, isInAct), playerID) + return isInAct, actID + +def GetActRelateFuncDate(ipyData, startTime, returnYmdStr=False): + funcActDays = ipyData.GetFuncActDays() + isDayRest = 0 if not hasattr(ipyData, "GetIsDayReset") else ipyData.GetIsDayReset() + resetType = 0 if not hasattr(ipyData, "GetResetType") else ipyData.GetResetType() # 重置类型,0-0点重置;1-5点重置 + if isDayRest: + funcActDays = 1 + + startDayDate = ChangeTimeNumToDatetime(startTime, ChConfig.TYPE_Time_Format) + if funcActDays: + startDayStr = str(startDayDate)[:10] + if resetType == 1: + endDayDate = datetime.datetime.strptime("%s 04:59:59" % (startDayStr), ChConfig.TYPE_Time_Format) + datetime.timedelta(days=funcActDays) + elif resetType == 2: + endDayDate = datetime.datetime.strptime("%s 23:59:59" % (startDayStr), ChConfig.TYPE_Time_Format) + datetime.timedelta(days=(funcActDays-1)) + else: + endDayDate = datetime.datetime.strptime("%s 23:59:59" % (startDayStr), ChConfig.TYPE_Time_Format) + datetime.timedelta(days=(funcActDays-1)) + else: + endDateStr = ipyData.GetEndDate() + if resetType == 1: + endDayDate = datetime.datetime.strptime("%s 04:59:59" % (endDateStr), ChConfig.TYPE_Time_Format) + elif resetType == 2: + endDayDate = datetime.datetime.strptime("%s 23:59:59" % (endDateStr), ChConfig.TYPE_Time_Format) + else: + endDayDate = datetime.datetime.strptime("%s 23:59:59" % (endDateStr), ChConfig.TYPE_Time_Format) + + if returnYmdStr: + startDateStr = "%d-%d-%d" % (startDayDate.year, startDayDate.month, startDayDate.day) + endDateStr = "%d-%d-%d" % (endDayDate.year, endDayDate.month, endDayDate.day) + return startDateStr, endDateStr + return startDayDate, endDayDate + ##获得服务器系统时间 # @param 无 # @return 返回值. 时间Data格式 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py index 0d87627..d73a552 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py @@ -35,6 +35,7 @@ import PlayerFeastTravel import PlayerWeekParty import PlayerActLogin +import PlayerActTask import EventReport import PlayerTeam import NPCHurtManager @@ -338,6 +339,7 @@ PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FMT, addCnt) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FMT, addCnt) PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FMT, addCnt) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_FMT, addCnt) return prizeItemList def OnPickUpItem(curPlayer, curItem, tick): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py index 7625b6d..e3212f3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SkyTower.py @@ -32,6 +32,7 @@ import PlayerActivity import PlayerBillboard import PlayerSuccess +import PlayerActTask import GameObj import GameWorldProcess @@ -203,8 +204,9 @@ elif fbStep > FB_State_Fighting: PlayerControl.PlayerLeaveFB(curPlayer) return - - + + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_SkyTower) + # 不做处理,有副本行为客户端发包选择挑战关卡 #EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_SkyTower, 0, ChConfig.CME_Log_Start) return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py index 9f1095a..23ad2c1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py @@ -2104,6 +2104,9 @@ ("DWORD", "CfgID", 1), ("char", "StartDate", 0), ("char", "EndDate", 0), + ("WORD", "RelateFuncID", 0), + ("BYTE", "FuncActDays", 0), + ("BYTE", "FuncLoop", 0), ("WORD", "LVLimit", 0), ("BYTE", "IsDayReset", 0), ("BYTE", "ResetType", 0), @@ -2117,6 +2120,9 @@ ("DWORD", "CfgID", 1), ("char", "StartDate", 0), ("char", "EndDate", 0), + ("WORD", "RelateFuncID", 0), + ("BYTE", "FuncActDays", 0), + ("BYTE", "FuncLoop", 0), ("WORD", "LVLimit", 0), ("BYTE", "IsDayReset", 0), ("BYTE", "ResetType", 0), @@ -2136,15 +2142,21 @@ ("DWORD", "CfgID", 1), ("char", "StartDate", 0), ("char", "EndDate", 0), + ("WORD", "RelateFuncID", 0), + ("BYTE", "FuncActDays", 0), + ("BYTE", "FuncLoop", 0), ("WORD", "LVLimit", 0), ("list", "RepSignCostMoneyInfo", 0), ("BYTE", "TemplateID", 0), + ("WORD", "AwardExCTGID", 0), + ("WORD", "ActZhanlingType", 0), ), "ActLoginNewAward":( ("BYTE", "TemplateID", 1), ("BYTE", "DayNum", 0), ("list", "LoginAwardItemList", 0), + ("list", "LoginAwardItemListEx", 0), ), "ActLoginAward":( @@ -5653,13 +5665,16 @@ def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD def GetStartDate(self): return self.attrTuple[1] # 开启日期 char def GetEndDate(self): return self.attrTuple[2] # 结束日期 char - def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD - def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE - def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置 BYTE - def GetCTGIDList(self): return self.attrTuple[6] # 充值ID列表 [ctgID, ...] list - def GetCTGCountAwardInfo(self): return self.attrTuple[7] # 累计充值次数额外奖励 dict - def GetCTGCountDayResetList(self): return self.attrTuple[8] # 每日重置累充次数列表 list - def GetActShopType(self): return self.attrTuple[9] # 商城类型 DWORD + def GetRelateFuncID(self): return self.attrTuple[3] # 关联功能ID WORD + def GetFuncActDays(self): return self.attrTuple[4] # 功能活动天数 BYTE + def GetFuncLoop(self): return self.attrTuple[5] # 功能是否循环 BYTE + def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD + def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE + def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置 BYTE + def GetCTGIDList(self): return self.attrTuple[9] # 充值ID列表 [ctgID, ...] list + def GetCTGCountAwardInfo(self): return self.attrTuple[10] # 累计充值次数额外奖励 dict + def GetCTGCountDayResetList(self): return self.attrTuple[11] # 每日重置累充次数列表 list + def GetActShopType(self): return self.attrTuple[12] # 商城类型 DWORD # 任务活动时间表 class IPY_ActTask(): @@ -5671,11 +5686,14 @@ def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD def GetStartDate(self): return self.attrTuple[1] # 开启日期 char def GetEndDate(self): return self.attrTuple[2] # 结束日期 char - def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD - def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE - def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置 BYTE - def GetTemplateID(self): return self.attrTuple[6] # 登录奖励模板编号 BYTE - def GetRoundMax(self): return self.attrTuple[7] # 任务最大轮次 BYTE + def GetRelateFuncID(self): return self.attrTuple[3] # 关联功能ID WORD + def GetFuncActDays(self): return self.attrTuple[4] # 功能活动天数 BYTE + def GetFuncLoop(self): return self.attrTuple[5] # 功能是否循环 BYTE + def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD + def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE + def GetResetType(self): return self.attrTuple[8] # 重置类型,0-0点重置;1-5点重置 BYTE + def GetTemplateID(self): return self.attrTuple[9] # 登录奖励模板编号 BYTE + def GetRoundMax(self): return self.attrTuple[10] # 任务最大轮次 BYTE # 任务活动模板表 class IPY_ActTaskTemp(): @@ -5700,9 +5718,14 @@ def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD def GetStartDate(self): return self.attrTuple[1] # 开启日期 char def GetEndDate(self): return self.attrTuple[2] # 结束日期 char - def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD - def GetRepSignCostMoneyInfo(self): return self.attrTuple[4] # 补签消耗货币类型数量 list - def GetTemplateID(self): return self.attrTuple[5] # 登录奖励模板编号 BYTE + def GetRelateFuncID(self): return self.attrTuple[3] # 关联功能ID WORD + def GetFuncActDays(self): return self.attrTuple[4] # 功能活动天数 BYTE + def GetFuncLoop(self): return self.attrTuple[5] # 功能是否循环 BYTE + def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD + def GetRepSignCostMoneyInfo(self): return self.attrTuple[7] # 补签消耗货币类型数量 list + def GetTemplateID(self): return self.attrTuple[8] # 登录奖励模板编号 BYTE + def GetAwardExCTGID(self): return self.attrTuple[9] # 扩展奖励礼包充值ID WORD + def GetActZhanlingType(self): return self.attrTuple[10] # 关联活动战令类型 WORD # 登录活动奖励模板表新 class IPY_ActLoginNewAward(): @@ -5713,7 +5736,8 @@ def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE def GetDayNum(self): return self.attrTuple[1] # 第X天从1开始 BYTE - def GetLoginAwardItemList(self): return self.attrTuple[2] # 奖励列表[[物品ID,个数,是否拍品], ...] list + def GetLoginAwardItemList(self): return self.attrTuple[2] # 奖励列表[[物品ID,个数,是否拍品], ...] list + def GetLoginAwardItemListEx(self): return self.attrTuple[3] # 扩展奖励列表[[物品ID,个数,是否拍品], ...] list # 登录奖励时间表 class IPY_ActLoginAward(): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index 25a3c84..8d1bc7d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -66,6 +66,7 @@ import NPCHurtManager import PlayerActLogin import PlayerActTask +import PlayerZhanling import FamilyRobBoss import IpyGameDataPY import PlayerGubao @@ -2579,6 +2580,7 @@ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_WorldBoss, 1) PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1) PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_WorldBoss, 1) + PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_Huanjingge, 1) PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_WorldBoss, 1) elif limitIndex == ShareDefine.Def_Boss_Func_Home: @@ -5191,6 +5193,7 @@ if GetNPCLV(curNPC) >= curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'): PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC) PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillNPC) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC) PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID]) if ChConfig.IsGameBoss(curNPC): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py index 74858fe..881353b 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py @@ -42,6 +42,9 @@ import PlayerFreeGoods import FunctionNPCCommon import PlayerGreatMaster +import PlayerActBuyCountGift +import PlayerActLoginNew +import PlayerActTask import IPY_GameWorld import ItemCommon import ItemControler @@ -168,6 +171,11 @@ GameWorld.DebugLog("notifyGameServerFuncIDList=%s" % notifyGameServerFuncIDList) msgInfo = str(notifyGameServerFuncIDList) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FuncOpen", msgInfo, len(msgInfo)) + + PlayerActTask.OnCheckRelateFuncAct(curPlayer, openFuncIDList) + PlayerActLoginNew.OnCheckRelateFuncAct(curPlayer, openFuncIDList) + PlayerActBuyCountGift.OnCheckRelateFuncAct(curPlayer, openFuncIDList) + return ## 功能是否可用 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBuyCountGift.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBuyCountGift.py index 198b048..b58183b 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBuyCountGift.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActBuyCountGift.py @@ -29,12 +29,17 @@ import GameWorld import ChConfig -def OnDay(curPlayer): +def OnDay(curPlayer, onEventType): + OnCheckRelateFuncAct(curPlayer) + if onEventType != ShareDefine.Def_OnEventType: + return for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BuyCountGift, {}).values(): if not actInfo.get(ShareDefine.ActKey_State): continue actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0) + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BuyCountGiftID % actNum): + continue ipyData = IpyGameDataPY.GetIpyGameData("ActBuyCountGift", cfgID) if not ipyData: continue @@ -56,10 +61,31 @@ actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) isReset = __CheckPlayerBuyCountGiftAction(curPlayer, actNum) # 活动中同步活动信息 - if not isReset and actInfo.get(ShareDefine.ActKey_State): + if not isReset and actInfo.get(ShareDefine.ActKey_State) and curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BuyCountGiftID % actNum): Sync_BuyCountGiftActionInfo(curPlayer, actNum) Sync_BuyCountGiftPlayerInfo(curPlayer, actNum) + return + +def OnCheckRelateFuncAct(curPlayer, openFuncIDList=None): + ## 检查关联功能ID开启的活动 + for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BuyCountGift, {}).values(): + if not actInfo.get(ShareDefine.ActKey_State): + continue + cfgID = actInfo.get(ShareDefine.ActKey_CfgID) + ipyData = IpyGameDataPY.GetIpyGameData("ActBuyCountGift", cfgID) + if not ipyData: + continue + if not hasattr(ipyData, "GetRelateFuncID"): + continue + relateFuncID = ipyData.GetRelateFuncID() + if not relateFuncID: + continue + if openFuncIDList and relateFuncID not in openFuncIDList: + continue + actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) + __CheckPlayerBuyCountGiftAction(curPlayer, actNum) + return def RefreshBuyCountGiftActionInfo(actNum): @@ -85,6 +111,12 @@ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BuyCountGiftID % actNum) # 玩家身上的活动ID + funcActInfo = GameWorld.GetActRelateFuncInfo(curPlayer, "ActBuyCountGift", actInfo, playerActID) + if funcActInfo: + isInAct, actID = funcActInfo + if not isInAct: + return + # 活动ID 相同的话不处理 if actID == playerActID: GameWorld.DebugLog("购买次数礼包活动ID不变,不处理! actNum=%s,cfgID=%s,actID=%s" % (actNum, cfgID, actID), curPlayer.GetPlayerID()) @@ -128,6 +160,8 @@ if not actInfo.get(ShareDefine.ActKey_State): GameWorld.DebugLog("购买次数礼包非活动中无法领取奖励! actNum=%s" % actNum, playerID) + return + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BuyCountGiftID % actNum): return cfgID = actInfo.get(ShareDefine.ActKey_CfgID) @@ -187,14 +221,19 @@ actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_BuyCountGift, actNum) if not actInfo.get(ShareDefine.ActKey_State): return - + playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BuyCountGiftID % actNum) + if not playerActID: + return cfgID = actInfo.get(ShareDefine.ActKey_CfgID) ipyData = IpyGameDataPY.GetIpyGameData("ActBuyCountGift", cfgID) if not ipyData: return CTGCountAwardInfo = ipyData.GetCTGCountAwardInfo() - startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) + if hasattr(ipyData, "GetRelateFuncID") and ipyData.GetRelateFuncID(): + startDateStr, endDateStr = GameWorld.GetActRelateFuncDate(ipyData, playerActID, True) + else: + startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) startDateSync = actInfo.get(ShareDefine.ActKey_StartDateSync, startDateStr) actInfo = ChPyNetSendPack.tagMCActBuyCountGiftInfo() actInfo.ActNum = actNum diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLoginNew.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLoginNew.py index 776da9b..98fcc39 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLoginNew.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLoginNew.py @@ -16,15 +16,18 @@ #------------------------------------------------------------------------------- import PyGameData +import PlayerCoin import ShareDefine import PlayerControl import IpyGameDataPY +import PlayerZhanling import ChPyNetSendPack import ItemControler import IPY_GameWorld import NetPackCommon import GameWorld import ChConfig +import time def OnPlayerLogin(curPlayer): @@ -32,10 +35,35 @@ actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) isReset = __CheckPlayerActLoginAction(curPlayer, actNum) # 活动中同步活动信息 - if not isReset and actInfo.get(ShareDefine.ActKey_State): + if not isReset and actInfo.get(ShareDefine.ActKey_State) and curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewID % actNum): Sync_ActLoginActionInfo(curPlayer, actNum) Sync_ActLoginPlayerInfo(curPlayer, actNum) + return + +def OnDay(curPlayer): + OnCheckRelateFuncAct(curPlayer) + return + +def OnCheckRelateFuncAct(curPlayer, openFuncIDList=None): + ## 检查关联功能ID开启的活动 + for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ActLoginNew, {}).values(): + if not actInfo.get(ShareDefine.ActKey_State): + continue + cfgID = actInfo.get(ShareDefine.ActKey_CfgID) + ipyData = IpyGameDataPY.GetIpyGameData("ActLoginNew", cfgID) + if not ipyData: + continue + if not hasattr(ipyData, "GetRelateFuncID"): + continue + relateFuncID = ipyData.GetRelateFuncID() + if not relateFuncID: + continue + if openFuncIDList and relateFuncID not in openFuncIDList: + continue + actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) + __CheckPlayerActLoginAction(curPlayer, actNum) + return def RefreshActLoginActionInfo(actNum): @@ -59,6 +87,12 @@ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewID % actNum) # 玩家身上的活动ID + funcActInfo = GameWorld.GetActRelateFuncInfo(curPlayer, "ActLoginNew", actInfo, playerActID) + if funcActInfo: + isInAct, actID = funcActInfo + if not isInAct: + return + # 活动ID 相同的话不处理 if actID == playerActID: GameWorld.DebugLog("新登录活动ID不变,不处理! actNum=%s,actID=%s" % (actNum, actID), curPlayer.GetPlayerID()) @@ -67,8 +101,16 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActLoginNewID % actNum, actID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActLoginNewAward % actNum, 0) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActLoginNewAwardEx % actNum, 0) if state: + cfgID = actInfo.get(ShareDefine.ActKey_CfgID) + ipyData = IpyGameDataPY.GetIpyGameData("ActLoginNew", cfgID) + if ipyData: + if ipyData.GetAwardExCTGID(): + PlayerCoin.DoResetCTGCountByIDList(curPlayer, "ActLoginNew", [ipyData.GetAwardExCTGID()]) + if ipyData.GetActZhanlingType(): + PlayerZhanling.ResetZhanling(curPlayer, ipyData.GetActZhanlingType()) Sync_ActLoginActionInfo(curPlayer, actNum) Sync_ActLoginPlayerInfo(curPlayer, actNum) return True @@ -76,6 +118,8 @@ def OnGetActLoginAward(curPlayer, dayNum, actNum): ## 领取活动奖励 + isAwardEx = dayNum / 1000 + dayNum = dayNum % 1000 actNum = GameWorld.ToIntDef(actNum) actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_ActLoginNew, actNum) @@ -87,7 +131,11 @@ GameWorld.DebugLog("非登录活动中! actNum=%s" % actNum) return - curDayNum = actInfo.get(ShareDefine.ActKey_DayIndex) + 1 + playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewID % actNum) + if not playerActID: + return + + curDayNum = GameWorld.GetDiff_Day(int(time.time()), playerActID) + 1 if curDayNum < dayNum: GameWorld.DebugLog("未到可领取的登录天,无法领取! actNum=%s,curDayNum=%s < %s" % (actNum, curDayNum, dayNum)) return @@ -111,9 +159,25 @@ if not findIpyData: GameWorld.DebugLog("找不到对应登录天奖励! actNum=%s,cfgID=%s,templateID=%s,dayNum=%s" % (actNum, cfgID, templateID, dayNum)) return - awardItemList = findIpyData.GetLoginAwardItemList() + + if isAwardEx: + awardExCTGID = ipyData.GetAwardExCTGID() + if not awardExCTGID: + GameWorld.DebugLog("该登录活动没有扩展奖励! actNum=%s,cfgID=%s" % (actNum, cfgID)) + return + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % awardExCTGID): + GameWorld.DebugLog("该登录活动扩展奖励礼包未购买,无法领取! actNum=%s,cfgID=%s,awardExCTGID=%s" % (actNum, cfgID, awardExCTGID)) + return + stateKey = ChConfig.Def_PDict_ActLoginNewAwardEx + awardItemList = findIpyData.GetLoginAwardItemListEx() + else: + stateKey = ChConfig.Def_PDict_ActLoginNewAward + awardItemList = findIpyData.GetLoginAwardItemList() - awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewAward % actNum) + if not awardItemList: + return + + awardRecord = curPlayer.NomalDictGetProperty(stateKey % actNum) if awardRecord & pow(2, dayNum): GameWorld.DebugLog("登录活动该天已领奖! actNum=%s,dayNum=%s,awardRecord=%s" % (actNum, dayNum, awardRecord)) return @@ -129,13 +193,13 @@ return if costMoneyType and costMoneyValue: - PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, "ActLoginNew", {"actNum":actNum, "dayNum":dayNum}) + PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, "ActLoginNew", {"actNum":actNum, "dayNum":dayNum, "isAwardEx":isAwardEx}) updAwardRecord = awardRecord | pow(2, dayNum) - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActLoginNewAward % actNum, updAwardRecord) + PlayerControl.NomalDictSetProperty(curPlayer, stateKey % actNum, updAwardRecord) Sync_ActLoginPlayerInfo(curPlayer, actNum) - GameWorld.DebugLog("领取登录活动奖励! actNum=%s,dayNum=%s,awardItemList=%s" % (actNum, dayNum, awardItemList)) + GameWorld.DebugLog("领取登录活动奖励! actNum=%s,dayNum=%s,isAwardEx=%s,awardItemList=%s,curDayNum=%s" % (actNum, dayNum, isAwardEx, awardItemList, curDayNum)) for itemID, itemCount, isAuctionItem in awardItemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], event=["ActLoginNew", False, {}]) @@ -147,6 +211,7 @@ clientPack = ChPyNetSendPack.tagMCActLoginPlayerInfoNew() clientPack.ActNum = actNum clientPack.LoginAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewAward % actNum) + clientPack.LoginAwardEx = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewAwardEx % actNum) NetPackCommon.SendFakePack(curPlayer, clientPack) return @@ -156,6 +221,9 @@ if not actInfo: return if not actInfo.get(ShareDefine.ActKey_State): + return + playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActLoginNewID % actNum) + if not playerActID: return cfgID = actInfo.get(ShareDefine.ActKey_CfgID) ipyData = IpyGameDataPY.GetIpyGameData("ActLoginNew", cfgID) @@ -167,7 +235,10 @@ if not dayIpyDataList: return - startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) + if hasattr(ipyData, "GetRelateFuncID") and ipyData.GetRelateFuncID(): + startDateStr, endDateStr = GameWorld.GetActRelateFuncDate(ipyData, playerActID, True) + else: + startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) actPack = ChPyNetSendPack.tagMCActLoginNew() actPack.Clear() actPack.ActNum = actNum @@ -176,6 +247,7 @@ actPack.LimitLV = ipyData.GetLVLimit() actPack.RepSignMoneyType = moneyType actPack.RepSignMoneyValue = moneyValue + actPack.AwardExCTGID = ipyData.GetAwardExCTGID() actPack.AwardDayList = [] for dayIpyData in dayIpyDataList: @@ -190,6 +262,15 @@ dayInfo.AwardItemList.append(itemInfo) dayInfo.Count = len(dayInfo.AwardItemList) + dayInfo.AwardItemListEx = [] + for itemID, itemCount, isAuctionItem in dayIpyData.GetLoginAwardItemListEx(): + itemInfo = ChPyNetSendPack.tagMCActLoginNewItem() + itemInfo.ItemID = itemID + itemInfo.ItemCount = itemCount + itemInfo.IsBind = isAuctionItem + dayInfo.AwardItemListEx.append(itemInfo) + dayInfo.CountEx = len(dayInfo.AwardItemListEx) + actPack.AwardDayList.append(dayInfo) actPack.DayCount = len(actPack.AwardDayList) NetPackCommon.SendFakePack(curPlayer, actPack) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py index 965e97c..c16ecfd 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py @@ -32,11 +32,36 @@ actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) isReset = __CheckPlayerActTaskAction(curPlayer, actNum) # 活动中同步活动信息 - if not isReset and actInfo.get(ShareDefine.ActKey_State): + if not isReset and actInfo.get(ShareDefine.ActKey_State) and curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum): Sync_ActTaskActionInfo(curPlayer, actNum) Sync_ActTaskPlayerValueInfo(curPlayer, actNum) Sync_ActTaskPlayerInfo(curPlayer, actNum) + return + +def OnDay(curPlayer): + OnCheckRelateFuncAct(curPlayer) + return + +def OnCheckRelateFuncAct(curPlayer, openFuncIDList=None): + ## 检查关联功能ID开启的活动 + for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ActTask, {}).values(): + if not actInfo.get(ShareDefine.ActKey_State): + continue + cfgID = actInfo.get(ShareDefine.ActKey_CfgID) + ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) + if not ipyData: + continue + if not hasattr(ipyData, "GetRelateFuncID"): + continue + relateFuncID = ipyData.GetRelateFuncID() + if not relateFuncID: + continue + if openFuncIDList and relateFuncID not in openFuncIDList: + continue + actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) + __CheckPlayerActTaskAction(curPlayer, actNum) + return def RefreshActTaskActionInfo(actNum): @@ -62,6 +87,12 @@ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum) # 玩家身上的活动ID lastTempID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskTempID % actNum) + funcActInfo = GameWorld.GetActRelateFuncInfo(curPlayer, "ActTask", actInfo, playerActID) + if funcActInfo: + isInAct, actID = funcActInfo + if not isInAct: + return + # 活动ID 相同的话不处理 if actID == playerActID: GameWorld.DebugLog("任务活动ID不变,不处理! actNum=%s,actID=%s" % (actNum, actID), playerID) @@ -121,7 +152,8 @@ actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) if not actInfo.get(ShareDefine.ActKey_State): continue - + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum): + continue cfgID = actInfo.get(ShareDefine.ActKey_CfgID) ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) if not ipyData: @@ -150,7 +182,7 @@ return -def AddActTaskValue(curPlayer, taskType, addValue): +def AddActTaskValue(curPlayer, taskType, addValue=1): ## 增加任务活动进度值 playerID = curPlayer.GetPlayerID() @@ -158,7 +190,8 @@ actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0) if not actInfo.get(ShareDefine.ActKey_State): continue - + if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum): + continue cfgID = actInfo.get(ShareDefine.ActKey_CfgID) ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) if not ipyData: @@ -350,6 +383,9 @@ return if not actInfo.get(ShareDefine.ActKey_State): return + playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskID % actNum) # 玩家身上的活动ID + if not playerActID: + return cfgID = actInfo.get(ShareDefine.ActKey_CfgID) ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) if not ipyData: @@ -359,7 +395,10 @@ if not taskIpyDataList: return - startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) + if hasattr(ipyData, "GetRelateFuncID") and ipyData.GetRelateFuncID(): + startDateStr, endDateStr = GameWorld.GetActRelateFuncDate(ipyData, playerActID, True) + else: + startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData) actPack = ChPyNetSendPack.tagMCActTaskInfo() actPack.Clear() actPack.ActNum = actNum diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py index 4b5cd00..565b682 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerArena.py @@ -27,6 +27,7 @@ import IPY_GameWorld import ItemControler import EventShell +import PlayerActTask import PlayerWeekParty import PlayerFeastTravel import PlayerActivity @@ -308,6 +309,7 @@ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_Arena, 1) PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Arena, 1) PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_Arena, 1) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_Arena) return def __DoUpdateArenaScore(curPlayer, cmdDict={}): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py index a460ca5..c1253b2 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py @@ -38,6 +38,7 @@ import IpyGameDataPY import PlayerPet import PlayerRefineStove +import PlayerActTask import PlayerSuccess import SkillShell @@ -265,6 +266,7 @@ PlayerControl.NomalDictSetProperty(curPlayer, eatCntKey, eatCnt) if funcIndex == ShareDefine.Def_AttrFruitFunc_Stove: PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_UseStoveBylv, hasUseCnt, [item.GetLV()]) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_FruitStoveEatTimes) # 算次数,不算个数 alchemyIpyData = IpyGameDataPY.GetIpyGameDataByCondition("Alchemy", {"AlchemItemID":itemID}, False, True) if alchemyIpyData: diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py index 71ab13f..5f78ef0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py @@ -541,7 +541,6 @@ PlayerVip.VipOnDay(curPlayer) PlayerCoin.OnDay(curPlayer) - PlayerActBuyCountGift.OnDay(curPlayer) #成就 PlayerSuccess.SuccOnDay(curPlayer) @@ -644,6 +643,12 @@ PlayerTongTianLing.OnDay(curPlayer, onEventType) #boss凭证 PlayerActBossTrial.PlayerOnDay(curPlayer, onEventType) + #任务活动 + PlayerActTask.OnDay(curPlayer) + #登录活动 + PlayerActLoginNew.OnDay(curPlayer) + #购买次数礼包 + PlayerActBuyCountGift.OnDay(curPlayer, onEventType) return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py index 16baf95..0968f60 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py @@ -32,6 +32,7 @@ import PlayerDienstgrad import PlayerGatherTheSoul import PlayerActGubao +import PlayerActTask import PlayerCoat GubaoEffType_FamilyWar = 48 # 参与仙盟联赛每X次+XXX属性 x次 @@ -266,6 +267,7 @@ Sync_GubaoInfo(curPlayer, [gubaoID]) PlayerActGubao.OnGubaoCost(curPlayer, needPieceInfo, realNeedItemList) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_GubaoStarUp) return def DoGubaoAddFreePoint(curPlayer, gubaoID=0): @@ -396,6 +398,7 @@ Sync_GubaoInfo(curPlayer, [gubaoID]) PlayerActGubao.OnGubaoCost(curPlayer, needPieceInfo, realNeedItemList) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_GubaoLVUp) return def GetGubaoTotalLVStar(curPlayer): diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py index 2f4013a..6722046 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py @@ -20,6 +20,7 @@ import IpyGameDataPY import IPY_GameWorld import ChPyNetSendPack +import PlayerActTask import NetPackCommon import ItemControler import ItemCommon @@ -184,7 +185,12 @@ if msgType == "MineAreaAwardGet": awardInfoList = dataMsg[0] __DoGiveMineAreaAward(curPlayer, awardInfoList) - + + ## 取消拉取 (包含主动 或 被动驱赶) + elif msgType == "MineAreaCancelPull": + areaPlayerID, reason = dataMsg + __OnMineAreaPullEnd(curPlayer, areaPlayerID, reason) + return def __DoGiveMineAreaAward(curPlayer, awardInfoList): @@ -206,6 +212,7 @@ GUIDList.append(GUID) GameWorld.DebugLog("结算福地奖励! areaPlayerID=%s,mineID=%s,itemLV=%s,itemID=%s,itemCount=%s,awardTime=%s,isToday=%s,workerCount=%s %s" % (areaPlayerID, mineID, itemLV, itemID, itemCount, GameWorld.ChangeTimeNumToStr(awardTime), isToday, workerCount, GUID), playerID) + __OnMineAreaPullEnd(curPlayer, areaPlayerID, "OK") if addEnergyUsed: energyUsed += addEnergyUsed @@ -223,6 +230,15 @@ SendToGameServer_MineArea(curPlayer, "MineAreaAwardGetOK", [GUIDList, awardItemList]) return +def __OnMineAreaPullEnd(curPlayer, areaPlayerID, reason): + ## 拉取结束额外处理, 包含拉完、取消、被驱赶等 + GameWorld.DebugLog("__OnMineAreaPullEnd: areaPlayerID=%s, reason=%s" % (areaPlayerID, reason)) + if curPlayer.GetPlayerID() == areaPlayerID: + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_MineAreaEndSelf) + else: + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_MineAreaEndOther) + return + def OnMineTreasureByCTGID(curPlayer, ctgID): ## 充值激活聚宝盆 treasureCTGIDList = IpyGameDataPY.GetFuncEvalCfg("MineAreaTreasure", 1) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSignDay.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSignDay.py index f748efc..254a911 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSignDay.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSignDay.py @@ -30,6 +30,7 @@ import ChPyNetSendPack import PlayerMagicWeapon import PlayerTongTianLing +import PlayerActTask import PlayerPet import PlayerControl import GameWorld @@ -182,6 +183,7 @@ PlayerControl.NotifyCode(curPlayer, "SignInText2", [ChConfig.Def_SkillID_PetSignDay, curEffect.GetEffectID(), curEffect.GetEffectValue(0)]) PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Sign, 1) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_Sign) return ## 签到总奖励天数 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py index d5326fc..785cee8 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py @@ -43,7 +43,7 @@ TreasureTypeList = ( TreasureType_Jipin, # 极品寻宝 1 TreasureType_Rune, # 符印寻宝 2 -TreasureType_Jueshi, # 绝世君宝 3 +TreasureType_Jueshi, # 绝世寻宝 3 TreasureType_GatherTheSoul, # 聚魂猎魔 4 TreasureType_Gubao, # 古宝寻宝 5 ) = range(1, 1 + 5) @@ -388,16 +388,19 @@ PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureRune, treasureCount) elif treasureType == TreasureType_Jipin: PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Treasure, treasureCount) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureJipin, treasureCount) elif treasureType == TreasureType_Jueshi: PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_JSTreasure, treasureCount) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_JSTreasure, treasureCount) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_JSTreasure, treasureCount) + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureJueshi, treasureCount) elif treasureType == TreasureType_GatherTheSoul: - pass + PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureGatherTheSoul, treasureCount) elif treasureType == TreasureType_Gubao: PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureGubao, treasureCount) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py index 4e4c966..7a0f828 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py @@ -16,6 +16,7 @@ #------------------------------------------------------------------------------- import GameWorld +import ShareDefine import NetPackCommon import IpyGameDataPY import PlayerControl @@ -31,15 +32,17 @@ # 战令类型 ZhanlingTypeList = ( -ZhanlingType_LV, -ZhanlingType_Realm, -ZhanlingType_SkyTower, -ZhanlingType_GubaoStar, -ZhanlingType_Login, -ZhanlingType_GatherTheSoulLV, -ZhanlingType_HorsePetTrain, -ZhanlingType_GubaoTrain, -) = range(1, 1 + 8) +ZhanlingType_LV, # 等级 1 +ZhanlingType_Realm, # 境界 2 +ZhanlingType_SkyTower, # 天星塔 3 +ZhanlingType_GubaoStar, # 古宝总星数 4 +ZhanlingType_Login, # 登录 5 +ZhanlingType_GatherTheSoulLV, # 聚魂 6 +ZhanlingType_HorsePetTrain, # 骑宠养成 7 +ZhanlingType_GubaoTrain, # 古宝养成 8 +ZhanlingType_Xianyuan, # 仙缘 9 +ZhanlingType_Huanjingge, # 幻境阁 10 +) = range(1, 1 + 10) def OnPlayerLogin(curPlayer): for zhanlingType in ZhanlingTypeList: @@ -96,6 +99,9 @@ updStateH = GameWorld.SetBitValue(stateH, zhanlingType, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updStateH) + if zhanlingType == ZhanlingType_Xianyuan: + backValue = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore) + PlayerControl.SetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore, 0) GameWorld.Log("重置战令: zhanlingType=%s,backValue=%s,state=(%s to %s) stateH=(%s to %s)" % (zhanlingType, backValue, state, updState, stateH, updStateH), curPlayer.GetPlayerID()) @@ -154,6 +160,25 @@ PlayerControl.SendMailByKey("ZhanlingRewardUnget", [playerID], itemList, paramList) return +def AddZhanlingValue(curPlayer, zhanlingType, addValue=1): + if zhanlingType not in [ZhanlingType_Huanjingge]: + return + curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType) + updValue = min(ChConfig.Def_UpperLimit_DWord, curValue + addValue) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, updValue) + GameWorld.DebugLog("增加战令进度: zhanlingType=%s,addValue=%s,curValue=%s,updValue=%s" + % (zhanlingType, addValue, curValue, updValue), curPlayer.GetPlayerID()) + SyncZhanlingInfo(curPlayer, zhanlingType, []) + return updValue + +def SetZhanlingValue(curPlayer, zhanlingType, value1): + if zhanlingType not in [ZhanlingType_Huanjingge]: + return + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, value1) + GameWorld.DebugLog("设置战令进度: zhanlingType=%s,value1=%s" % (zhanlingType, value1), curPlayer.GetPlayerID()) + SyncZhanlingInfo(curPlayer, zhanlingType, []) + return value1 + def GetZhanlingReward(curPlayer, zhanlingType, rewardID): ## 领取战令奖励 rewardID = GameWorld.ToIntDef(rewardID) @@ -184,6 +209,10 @@ curValue = PlayerActHorsePetTrain.GetActHorsePetTrainScore(curPlayer) elif zhanlingType == ZhanlingType_GubaoTrain: curValue = PlayerActGubao.GetActGubaoTrainScore(curPlayer) + elif zhanlingType == ZhanlingType_Xianyuan: + curValue = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore) + elif zhanlingType == ZhanlingType_Huanjingge: + curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType) else: return @@ -223,7 +252,7 @@ # 更新已领取成功标记 GameWorld.SetDictValueByBit(curPlayer, rewardKey, rewardIndex, 1, True, [zhanlingType]) - SyncZhanlingInfo(curPlayer, zhanlingType, ipyData) + SyncZhanlingInfo(curPlayer, zhanlingType, [ipyData]) GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,rewardType=%s,itemList=%s" % (zhanlingType, needValue, rewardType, itemList), playerID) # 给物品 @@ -232,17 +261,11 @@ return -def SyncZhanlingInfo(curPlayer, zhanlingType, ipyData=None): +def SyncZhanlingInfo(curPlayer, zhanlingType, ipyDataList=None): - ipyDataList = [] - if ipyData == None: + if ipyDataList == None: ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Zhanling", {"ZhanlingType":zhanlingType}, True) - else: - ipyDataList = [ipyData] - - if not ipyDataList: - return - + rewardList = [] for ipyData in ipyDataList: rewardIndex = ipyData.GetRewardIndex() diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py index 0fca079..f97d5d3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py @@ -1156,7 +1156,9 @@ CDBPlayerRefresh_TiandaoFruit, # 天道果 267 CDBPlayerRefresh_Tuijinbi, # 推金币 268 CDBPlayerRefresh_PayCoinDay, # 代币时效 269 -) = range(146, 270) +CDBPlayerRefresh_XianyuanScore, # 仙缘积分 270 +CDBPlayerRefresh_HuanjinggeScore, # 幻境阁积分 271 +) = range(146, 272) TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子) TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来) @@ -1192,6 +1194,9 @@ TYPE_Price_HorsePetTrainScore = 45 # 骑宠养成积分 TYPE_Price_GubaoTrainScore = 46 # 古宝养成积分 TYPE_Price_TiandaoFruit = 47 # 天道果 +TYPE_Price_Tuijinbi = 48 # 推金币 +TYPE_Price_XianyuanScore = 49 # 仙缘积分 +TYPE_Price_HuanjinggeScore = 50 # 幻境阁积分 TYPE_Price_PayCoinDay = 98 # 代币时效,每日过天重置 TYPE_Price_PayCoin = 99 # 代币 @@ -1201,6 +1206,7 @@ 16:"助战积分", 18:"荣誉", 19:"Boss积分", 23:"符印精华", 24:"符印碎片", 25:"寻宝积分", 26:"集市额度", 27:"丹精", 28:"魂尘", 29:"聚魂碎片", 30:"核心环", 31:"功能特权令", 32:"环保值", 33:"GM令", 34:"古神币", 35:"功德点", 39:"成就积分", 40:"万界积分", 43:"凭证积分", 44:"聚魂精华", 45:"骑宠养成积分", 46:"古宝养成积分", 47:"天道果", + 49:"仙缘积分", 50:"幻境阁积分", 98:"代币时效", 99:"代币" } @@ -1241,6 +1247,8 @@ TYPE_Price_HorsePetTrainScore:CDBPlayerRefresh_HorsePetTrainScore, TYPE_Price_GubaoTrainScore:CDBPlayerRefresh_GubaoTrainScore, TYPE_Price_TiandaoFruit:CDBPlayerRefresh_TiandaoFruit, + TYPE_Price_XianyuanScore:CDBPlayerRefresh_XianyuanScore, + TYPE_Price_HuanjinggeScore:CDBPlayerRefresh_HuanjinggeScore, TYPE_Price_PayCoinDay:CDBPlayerRefresh_PayCoinDay, } -- Gitblit v1.8.0