From c35e176a3b05f745600c6e60f168313d2b9e7b30 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 17 九月 2025 12:00:19 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(司马懿技能;增加按层级结算持续buff效果5003;增加非按攻击力计算伤害支持;技能伤害增加可限制最大攻击力百分比上限配置;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py | 40 +++++++++++++++++++++++++++++----------- 1 files changed, 29 insertions(+), 11 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py index c068b95..1ff3d57 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py @@ -25,6 +25,7 @@ import GameFuncComm import ShareDefine import ChConfig +import FBCommon def GetTaskIDList(taskGroup): ## 获取某个任务分组所有任务ID列表 @@ -144,18 +145,36 @@ if taskType == ChConfig.TaskType_LV: taskValue = curPlayer.GetLV() - elif taskType == ChConfig.TaskType_FBPass: - if len(conds) != 2: + elif taskType == ChConfig.TaskType_MainLevel: + if not conds: return 0 - mapID, lineID = conds - passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID) - taskValue = 1 if passLineID >= lineID else 0 + mapID = ChConfig.Def_FBMapID_Main + lineID = conds[0] + taskValue = 1 if FBCommon.IsFBPass(curPlayer, mapID, lineID) else 0 elif taskType == ChConfig.TaskType_TreeLV: taskValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV) elif taskType == ChConfig.TaskType_RealmLV: taskValue = curPlayer.GetOfficialRank() + + elif taskType == ChConfig.TaskType_EquipColor: + if not conds: + return 0 + needColor = conds[0] + equipCnt = 0 + equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) + for equipPlace in ChConfig.Def_MainEquipPlaces: + equipIndex = equipPlace - 1 + if equipIndex < 0 or equipIndex >= equipPack.GetCount(): + continue + curEquip = equipPack.GetAt(equipIndex) + if not curEquip or curEquip.IsEmpty(): + continue + itemColor = curEquip.GetItemColor() + if itemColor >= needColor: + equipCnt += 1 + taskValue = equipCnt return taskValue @@ -279,21 +298,20 @@ if curState != ChConfig.TaskState_CanGet: GameWorld.DebugLog("任务未完成无法领奖: taskID=%s,curValue=%s/%s,curState=%s" % (taskID, curValue, needValue, curState), playerID) return - if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList): - return + #if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList): + # return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskIDLast % taskGroup, taskID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskID % taskGroup, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskValue % taskGroup, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TaskState % taskGroup, 0) - for itemID, itemCount, isAuctionItem in awardItemList: - ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) - + ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["Task", False, {}]) + if not __giveNewTask(curPlayer, taskGroup): SyncTaskInfo(curPlayer, [taskGroup]) - GameFuncComm.DoFuncOpenLogic(curPlayer, [taskID]) + GameFuncComm.DoFuncOpenLogic(curPlayer) return def SyncTaskInfo(curPlayer, taskGroupList=None): -- Gitblit v1.8.0