| | |
| | | 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
|
| | |
|
| | |
| | | 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
|
| | |
|
| | |
| | |
|
| | | 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:
|
| | |
| | |
|
| | | 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()
|
| | |
| | | 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) # 组队
|
| | |
|
| | |
| | | def SetGMForbidenTalk(curPlayer, value):
|
| | | curPlayer.SetGMForbidenTalk(value)
|
| | | curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value)
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False)
|
| | | return
|
| | |
|
| | |
|
| | |
| | |
|
| | | ## 对怪物伤害加成
|
| | | 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)
|
| | |
| | | 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)
|
| | |
| | | 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):
|