From 770dde0336b63cb2ab948d03ce3a0e1a4e2d1b82 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 22 九月 2018 02:56:52 +0800 Subject: [PATCH] 3724 【开发】掉落归属异常日志优化(仅boss时才输出) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 54 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 35 insertions(+), 19 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py index a9219ee..07322d1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -308,34 +308,38 @@ return #--------------------------------------------------------------------- -def SendMailBatch(mailTypeKey, batchPlayerIDList, batchAddItemList=[], batchParamList=[], batchGold=[], batchGoldPaper=[], batchSilver=[]): +def SendMailBatch(mailTypeKey, batchPlayerIDList, batchAddItemList=[], batchParamList=[], batchGold=[], batchGoldPaper=[], batchSilver=[], batchDetail=[]): '''批量发送邮件, 用于瞬间需要发送多封(大量)邮件的,比如一些公共副本活动等结算时 @param mailTypeKey: 邮件模板key @param batchPlayerIDList: [playerIDList, playerIDList, ...] @param batchAddItemList: [addItemList, addItemList, ...] @param batchParamList: [paramList, paramList, ...] @param batchGold: [batchGold, batchGold, ...] - @param batchGold: [batchGoldPaper, batchGoldPaper, ...] - @param batchGold: [batchSilver, batchSilver, ...] + @param batchGoldPaper: [batchGoldPaper, batchGoldPaper, ...] + @param batchSilver: [batchSilver, batchSilver, ...] + @param batchDetail: [记录邮件流向用, ...] ''' - msgInfo = str([mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList, batchGold, batchGoldPaper, batchSilver]) + msgInfo = str([mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList, batchGold, batchGoldPaper, batchSilver, batchDetail]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMailBatch", msgInfo, len(msgInfo)) GameWorld.Log("SendMailBatch %s, batchPlayerIDList=%s, batchAddItemList=%s, batchParamList=%s, batchGold=%s, batchGoldPaper=%s, batchSilver=%s" % (mailTypeKey, batchPlayerIDList, batchAddItemList, batchParamList, batchGold, batchGoldPaper, batchSilver)) return -def SendMailByKey(mailTypeKey, playerIDList, addItemList, paramList=[], gold=0, goldPaper=0, silver=0): +def SendMailByKey(mailTypeKey, playerIDList, addItemList, paramList=[], gold=0, goldPaper=0, silver=0, detail=""): + ''' + @param detail: 记录邮件流向用 + ''' if not mailTypeKey: mailTypeKey = ShareDefine.DefaultLackSpaceMailType content = "<MailTemplate>%s</MailTemplate>%s" % (mailTypeKey, json.dumps(paramList, ensure_ascii=False)) - SendMail("", content, 30, playerIDList, addItemList, gold, goldPaper, silver) + SendMail("", content, 30, playerIDList, addItemList, gold, goldPaper, silver, detail) return ## 功能发放物品补偿/奖励邮件 # @param addItemList [(itemID, itemCnt, isBind), {或物品信息字典}, ...] # @return -def SendMail(title, content, getDays, playerIDList, addItemList, gold=0, goldPaper=0, silver=0): +def SendMail(title, content, getDays, playerIDList, addItemList, gold=0, goldPaper=0, silver=0, detail=""): if not playerIDList: return @@ -377,7 +381,7 @@ for key, itemCnt in itemCountDict.items(): itemID, isBind = key combineItemList.append((itemID, itemCnt, isBind)) - cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver] + cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver, detail] GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMail", '%s' % (cmdList), len(str(cmdList))) return True @@ -2009,7 +2013,7 @@ # @param canLock 是否可以锁定玩家(传送点不可锁定, 因为要跨地图寻路) # @return 返回值无意义 # @remarks 玩家切换地图 -def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID= -1, msg='', canLock=True, exData1=0): +def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID=-1, msg='', canLock=True, exData1=0): #更改: 死亡允许切换地图, 在副本中被怪打死, 副本时间到, 回收副本 # if curPlayer.GetHP() <= 0 : # GameWorld.Log("死亡无法切换地图") @@ -2082,6 +2086,10 @@ GameWorld.DebugLog("分流boss, bossID=%s,bossShuntLineID=%s" % (bossID, bossShuntLineID), playerID) NPCCommon.AddBossShuntRelatedPlayer(curPlayer, tagMapID, bossShuntLineID, bossID, tick) return bossShuntLineID + return tagLineID + + if curMapID == tagMapID: + GameWorld.DebugLog("同地图切换坐标不处理分流!", playerID) return tagLineID # 可以用来常规分流的线路人数字典信息, 并不是所有线路都可以用来做人数分流的,比如中立地图有多条线用来分流boss,但是只有1条线可用来做常规的人数分流 @@ -2723,8 +2731,8 @@ curBourseMoney = GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney) updBourseMoney = curBourseMoney - #当是交易所扣费时,则必定扣除交易额度 - if costType == ChConfig.Def_Cost_BourseBuy: + #当是交易所扣费、钻石红包时,则必定扣除交易额度 + if costType in ChConfig.UnUseInner_CostType: updBourseMoney = max(0, curBourseMoney - price) #其他如果当前金子比交易额度还少,则强制调整交易额度为当前金子数(这种情况一般是非交易所消费的,需要同步扣除交易所可购买额度) elif updPlayerGold < updBourseMoney: @@ -3395,6 +3403,7 @@ OnlyFinalHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_OnlyFinalHurt) # 额外输出伤害 PVPAtkBackHP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_PVPAtkBackHP) # PVP攻击回血 + NPCHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_NPCHurtAddPer) # 对怪物伤害加成 #其他需作为公式参数的系数 AtkSpeedParameter = fpParam.GetCftAtkSpeed() @@ -5394,10 +5403,11 @@ fightExpRate += PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FightExpRate) # VIP加成 actExpRateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ExpRate, {})# 多倍经验活动加成 - if not PlayerTJG.GetIsTJG(curPlayer) and actExpRateInfo.get(ShareDefine.ActKey_State) \ - and curPlayer.GetLV() >= actExpRateInfo.get(ShareDefine.ActKey_LVLimit, 0): - fightExpRate += actExpRateInfo.get(ShareDefine.ActKey_AddExpRate, 0) - + if not PlayerTJG.GetIsTJG(curPlayer) and actExpRateInfo.get(ShareDefine.ActKey_State): + actExpIpyData = IpyGameDataPY.GetIpyGameData("ActExpRate", actExpRateInfo.get(ShareDefine.ActKey_CfgID)) + if actExpIpyData and curPlayer.GetLV() >= actExpIpyData.GetLVLimit(): + fightExpRate += actExpIpyData.GetAddExpRate() + if curPlayer.GetMapID() not in [ChConfig.Def_FBMapID_FamilyInvade]: #守卫人皇不加组队加成 fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队 @@ -5514,6 +5524,7 @@ def SetGMForbidenTalk(curPlayer, value): curPlayer.SetGMForbidenTalk(value) curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value) + curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False) return @@ -6055,7 +6066,10 @@ ## 对怪物伤害加成 def GetNPCHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NPCHurtAddPer) -def SetNPCHurtAddPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value) +def SetNPCHurtAddPer(curPlayer, value): + curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value) + curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_NPCHurtAddPer, value, False) + #---职业伤害加成--- ## 目标战士伤害加成 def GetJobAHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_JobAHurtAddPer) @@ -6116,9 +6130,6 @@ curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value, False) #---特殊伤害概率--- -## 富甲一击概率 -def GetFujiaHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FujiaHitRate) -def SetFujiaHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FujiaHitRate, value) ## 富豪一击概率 def GetFuhaoHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FuhaoHitRate) def SetFuhaoHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FuhaoHitRate, value) @@ -6129,6 +6140,11 @@ curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value) curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BleedDamage, value, False) +## 最终伤害百分比 +def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer) +def SetFinalHurtPer(curPlayer, value): + curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value) + curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurtPer, value, False) ## 最终固定伤害增加 def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt) def SetFinalHurt(curPlayer, value): -- Gitblit v1.8.0