From 8748bbbb0bcf027f0e77cc203aa60b2d68ddcebc Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期四, 06 六月 2019 10:26:29 +0800 Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 132 +++++++++++++++++++++++--------------------- 1 files changed, 69 insertions(+), 63 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py index 81a9ade..69bc421 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py @@ -56,6 +56,7 @@ import PlayerFlashSale import PlayerWing import ChEquip +import PlayerYinji #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -591,7 +592,7 @@ return FBLogic.OnCollecting(curPlayer, tick) npcID = curNPC.GetNPCID() - collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID) + collectNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CollectNPC", npcID) if collectNPCIpyData: DoCollectingLostHP(curPlayer, collectNPCIpyData, tick, False) return @@ -613,7 +614,7 @@ curPlayer.SetDict(ChConfig.Def_PlayerKey_CollectLostHPTick, tick) lostValue = int(GameObj.GetMaxHP(curPlayer) * lostHPPer / 100.0) * lostTime skillTypeID, buffOwner = 0, None - SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick) + SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick, skillAffect=False) GameWorld.DebugLog("采集掉血: npcID=%s,lostHPPer=%s,lostTime=%s,lostValue=%s" % (collectNPCIpyData.GetNPCID(), lostHPPer, lostTime, lostValue)) return @@ -672,14 +673,14 @@ # @remarks 刷新以单位时间(分钟)消耗耐久的物品 def ProcessRefreshTimeItem(curPlayer, tick): reFlash = False - + #2分钟遍历一次,时效道具时间到不消失, if tick - curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_EquipTime) \ - < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_TimeItem] : + < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_TimeItem]: return reFlash #耐久减少值/分钟 reFlash = ProcessTimeEquip(curPlayer, tick) - + return reFlash @@ -840,31 +841,34 @@ # @return None # @remarks 玩家自动回复XP值 def ProcessAddXP(curPlayer, tick): - #开放等级增加多少XP值, 最大XP值 - openLV, addXPValue, maxXPValue = ReadChConfig.GetEvalChConfig('PlayerXP') - #还没到开放等级 - if openLV > curPlayer.GetLV(): - return - lastTick = curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_AddXPTick) - if not CommonCheckTick(curPlayer, tick, ChConfig.TYPE_Player_Tick_AddXPTick): - #首次登陆,将当前的XP值记录到字典中 - if lastTick <= 0: - curPlayer.SetDict(ChConfig.Def_PlayerKey_RecordXPValue, curPlayer.GetXP()) - return - - #从字典中获取当前的XP值 - curXPValue = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue) - #当前XP值已经是最大值了,不做处理 - if curXPValue == maxXPValue: - return - xpRestorePer = PlayerControl.GetXPRestorePer(curPlayer) - addXPValue = int(addXPValue * xpRestorePer/float(ChConfig.Def_MaxRateValue)) - nextXPValue = min(curXPValue + addXPValue, maxXPValue) - curPlayer.SetDict(ChConfig.Def_PlayerKey_RecordXPValue, nextXPValue) - #已经达到最大的XP值了,通知客户端 - if nextXPValue == maxXPValue: - #这里进行设置的时候,将会通知客户端 - curPlayer.SetXP(nextXPValue) + return + #=========================================================================== + # #开放等级增加多少XP值, 最大XP值 + # openLV, addXPValue, maxXPValue = ReadChConfig.GetEvalChConfig('PlayerXP') + # #还没到开放等级 + # if openLV > curPlayer.GetLV(): + # return + # lastTick = curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_AddXPTick) + # if not CommonCheckTick(curPlayer, tick, ChConfig.TYPE_Player_Tick_AddXPTick): + # #首次登陆,将当前的XP值记录到字典中 + # if lastTick <= 0: + # curPlayer.SetDict(ChConfig.Def_PlayerKey_RecordXPValue, curPlayer.GetXP()) + # return + # + # #从字典中获取当前的XP值 + # curXPValue = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue) + # #当前XP值已经是最大值了,不做处理 + # if curXPValue == maxXPValue: + # return + # xpRestorePer = PlayerControl.GetXPRestorePer(curPlayer) + # addXPValue = int(addXPValue * xpRestorePer/float(ChConfig.Def_MaxRateValue)) + # nextXPValue = min(curXPValue + addXPValue, maxXPValue) + # curPlayer.SetDict(ChConfig.Def_PlayerKey_RecordXPValue, nextXPValue) + # #已经达到最大的XP值了,通知客户端 + # if nextXPValue == maxXPValue: + # #这里进行设置的时候,将会通知客户端 + # curPlayer.SetXP(nextXPValue) + #=========================================================================== #--------------------------------------------------------------------- @@ -1070,38 +1074,38 @@ # @return 布尔值 # @remarks 处理耐久计算方式为:现实时间刷新方式的物品 def ProcessTimeEquip(curPlayer, tick): - return -#境界装备修改,暂屏蔽,待优化 -# itemManager = curPlayer.GetItemManager() -# hasItemClear = False -# -# curPack = itemManager.GetPack(IPY_GameWorld.rptEquip) -# for i in range(0, curPack.GetCount()): -# curItem = curPack.GetAt(i) -# -# #异常物品 -# if not ItemCommon.CheckItemCanUse(curItem): -# continue -# -# if curItem.GetEndureReduceType() not in [ChConfig.Def_EquipReduceType_RTimeItem, -# ChConfig.Def_EquipReduceType_Time]: -# continue -# -# #处理现实时间物品逻辑 -# if __DoLogic_ProcessTimeEquip(curPlayer, curItem, i): -# hasItemClear = True -# -# -# if hasItemClear: -# #装备重刷属性 -# PlayerWing.CalcWingAttr(curPlayer) -# ChEquip.RefreshPlayerEquipAttribute(curPlayer) -# -# -# # 进行更新时效道具刷新时间 -# curPlayer.SetDict(ChConfig.Def_PlayerKey_EquipTime, tick) -# -# return hasItemClear + itemManager = curPlayer.GetItemManager() + hasItemClear = False + + classLV = 0 # 只处理非境界装备的时效物品 + curPack = itemManager.GetPack(IPY_GameWorld.rptEquip) + for equipPlace in ChConfig.EquipPlace_LingQi: + ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace) + if not ipyData: + continue + index = ipyData.GetGridIndex() + curItem = curPack.GetAt(index) + + #异常物品 + if not ItemCommon.CheckItemCanUse(curItem): + continue + + if curItem.GetEndureReduceType() not in [ChConfig.Def_EquipReduceType_RTimeItem, + ChConfig.Def_EquipReduceType_Time]: + continue + + #处理现实时间物品逻辑 + if __DoLogic_ProcessTimeEquip(curPlayer, curItem, index): + hasItemClear = True + + if hasItemClear: + #装备重刷属性 + ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) + + # 进行更新时效道具刷新时间 + curPlayer.SetDict(ChConfig.Def_PlayerKey_EquipTime, tick) + return hasItemClear + #--------------------------------------------------------------------- ## 装备有效时间到了需要脱下,有效时间物品改成不消失,但是无使用效果 可出售和续费 def __DoLogic_ProcessTimeEquip(curPlayer, curItem, equipIndex): @@ -1118,7 +1122,7 @@ # 没有空位,玩家主动取下,计算属性时无效化 # 过期属性时效需刷属性 return True - + result = ItemControler.PlayerItemControler(curPlayer).UnEquipItem(equipIndex, spaceIndex) if not result: # 过期属性时效需刷属性 @@ -1235,6 +1239,8 @@ #回血回魔状态处理 ProcessHPMPState(curPlayer, tick) + PlayerYinji.ProcessPlayerYinji(curPlayer, tick) + #刷新组队状态 #ProcessTeamState(curPlayer, tick) -- Gitblit v1.8.0