| | |
| | | import PlayerPrestigeSys
|
| | | import FBCommon
|
| | | import PassiveBuffEffMng
|
| | | import EventReport
|
| | | import PlayerSuccess
|
| | | import ItemControler
|
| | | import GameFuncComm
|
| | | import IpyGameDataPY
|
| | | import PyGameData
|
| | | import PlayerFeastTravel
|
| | | import PlayerActTurntable
|
| | | import PlayerCostRebate
|
| | | import PlayerActLunhuidian
|
| | | import GY_Query_CrossRealmReg
|
| | | import PlayerGoldInvest
|
| | | import OpenServerActivity
|
| | | import CrossRealmPlayer
|
| | | import CrossPlayerData
|
| | | import PlayerActivity
|
| | |
| | | import PlayerOnline
|
| | | import PlayerTask
|
| | | import PlayerMail
|
| | | import PlayerLLMJ
|
| | | import TurnAttack
|
| | | import ChPlayer
|
| | | import GameObj
|
| | |
|
| | |
| | | return
|
| | |
|
| | | def GetUnXiantaoCntEquip(curPlayer):
|
| | | '''因为战锤对应装备是1个战锤可能对应多个装备掉落,所以分解装备的时候1个战锤需要支持可拆分
|
| | | 所以需要支持小数存储,暂定以支持3位小数存储
|
| | | '''
|
| | | return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) / 1000.0
|
| | | return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip)
|
| | | def AddUnXiantaoCntEquip(curPlayer, addCnt):
|
| | | unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) + addCnt * 1000
|
| | | unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) + addCnt
|
| | | return NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip)
|
| | | def SetUnXiantaoCntEquip(curPlayer, unXiantaoCntEquip):
|
| | | ## 保存装备未结算战锤数,保留3位小数
|
| | | # @param unXiantaoCntEquip: 实际的未结算数量,支持小数
|
| | | unXiantaoCntEquip = int(round(unXiantaoCntEquip, 3) * 1000) # 保留3为小数
|
| | | ## 保存装备未结算战锤数
|
| | | return NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip)
|
| | |
|
| | | ##玩家是否有钱款
|
| | |
| | | __PayMoneyAfterBySilverPaper(curPlayer, price)
|
| | |
|
| | | #转盘活动
|
| | | PlayerActTurntable.OnPlayerUseGold(curPlayer, type_Price, price)
|
| | | #PlayerActTurntable.OnPlayerUseGold(curPlayer, type_Price, price)
|
| | | #轮回殿
|
| | | PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price)
|
| | | #PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price)
|
| | | if type_Price == ShareDefine.TYPE_Price_Xiantao:
|
| | | # 累加未结算战锤 - 经验
|
| | | unXiantaoCntExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntExp)
|
| | |
| | | unXiantaoCntBooty = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntBooty % itemID)
|
| | | NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntBooty % itemID, unXiantaoCntBooty + price)
|
| | |
|
| | | PlayerLLMJ.AddUseZhanchui(curPlayer, price)
|
| | | PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_UseXiantao, price)
|
| | | PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_CutTree, price)
|
| | | PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_CutTree, price)
|
| | | TurnAttack.GetMainFightMgr(curPlayer).useZhanchui += price
|
| | |
|
| | | unitPrice = price if quantity == 1 else int(math.ceil(price * 1.0 / quantity)) # 单价
|
| | | #reason_name = "Unknown" if not costType else costType
|
| | |
| | | orderInfo = infoDict.get("orderInfo", "")
|
| | | GameWorld.Log("记录消耗代币: eventName=%s,price=%s,nowMoney=%s,payCoinDay=%s,orderInfo=%s" % (eventName, price, nowMoney, payCoinDay, orderInfo), playerID)
|
| | | GameWorld.AddPlayerRec(playerID, ShareDefine.Def_PlayerRecType_PayCoin, [2, price, nowMoney, payCoinDay], orderInfo, 1)
|
| | | # 流向用 eventName
|
| | | #if eventName:
|
| | | if costType == ChConfig.Def_Cost_Treasure:
|
| | | GameWorld.DebugLog("BT版本寻宝消耗货币暂时不记录流向: %s,type_Price=%s,price=%s" % (eventName, type_Price, price))
|
| | | else:
|
| | | DataRecordPack.DR_UseMoney(curPlayer, eventName, type_Price, price, infoDict) # 流向
|
| | | EventReport.WriteEvent_virtual_resource(curPlayer, type_Price, reason_name, quantity,
|
| | | unitPrice, ShareDefine.Def_UserAction_Money_Use, infoDict)
|
| | | #===========================================================================
|
| | | # if type_Price == IPY_GameWorld.TYPE_Price_Gold_Money:
|
| | | # EventReport.WriteEvent_virtual_cost(curPlayer, quantity, unitPrice, reason_name)
|
| | | # elif type_Price in [IPY_GameWorld.TYPE_Price_Gold_Paper, IPY_GameWorld.TYPE_Price_Silver_Money]:
|
| | | # |
| | | # # 金币未指定消费类型的不记录
|
| | | # if type_Price == IPY_GameWorld.TYPE_Price_Silver_Money and costType == ChConfig.Def_Cost_Unknown:
|
| | | # return
|
| | | # EventReport.WriteEvent_virtual_resource(curPlayer, type_Price, reason_name, quantity, |
| | | # unitPrice, ShareDefine.Def_UserAction_Money_Use)
|
| | | # |
| | | # # 自定义记录
|
| | | # priceNameDict = {IPY_GameWorld.TYPE_Price_Gold_Money:["钻石", "GetGold", 0],
|
| | | # IPY_GameWorld.TYPE_Price_Gold_Paper:["绑钻", "GetGoldPaper", 0],
|
| | | # IPY_GameWorld.TYPE_Price_Silver_Money:["金币", "GetSilver", ChConfig.Def_DRRecord_Min_Silver],
|
| | | # }
|
| | | # if type_Price in priceNameDict:
|
| | | # typeName, moneyFuncName, minPrice = priceNameDict[type_Price]
|
| | | # if minPrice <= 0 or price >= minPrice: |
| | | # EventReport.WriteEvent_pay_money(curPlayer, reason_name, typeName, price, getattr(curPlayer, moneyFuncName)())
|
| | | #===========================================================================
|
| | | |
| | | DataRecordPack.DR_UseMoney(curPlayer, eventName, type_Price, price, infoDict) # 流向
|
| | | return
|
| | |
|
| | | ## 付款以后后续操作(金子)
|
| | |
| | | # 消费返利
|
| | | if costType not in ChConfig.CostRebate_DisableType:
|
| | | PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_UseGold, price)
|
| | | else:
|
| | | GameWorld.DebugLog("不计入消费活动的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
|
| | |
|
| | | # 事件汇报
|
| | | #===========================================================================
|
| | | # if costType == ChConfig.Def_Cost_BourseBuy:
|
| | | # # 交易所购买物品,汇报交易钻石
|
| | | # playerName = curPlayer.GetPlayerName()
|
| | | # leftGold = curPlayer.GetGold()
|
| | | # eventParam = "RoleID=%s,Price=%s,TradeType=Lost,LeftGold=%s" \
|
| | | # % (playerName, price, leftGold)
|
| | | # EventReport.EventReport(ShareDefine.Def_UserAction_TradeGold, eventParam, curPlayer)
|
| | | # else:
|
| | | # playerName = curPlayer.GetPlayerName()
|
| | | # leftGold = curPlayer.GetGold()
|
| | | # eventParam = "RoleID=%s,CostType=%s,ItemID=%s,Price=%s,LeftGold=%s" \
|
| | | # % (playerName, costType, infoDict, price, leftGold)
|
| | | # EventReport.EventReport(ShareDefine.Def_UserAction_UseGold, eventParam, curPlayer)
|
| | | #===========================================================================
|
| | | |
| | | # 通知元宝消费记录
|
| | | #__Sync_GoldCostReport(curPlayer, costType, price, expandValue)
|
| | | return
|
| | |
|
| | |
|
| | | ## 通知元宝消费记录
|
| | | # @param curPlayer: 玩家实例
|
| | | # @param costType: 消费点类型
|
| | | # @param price: 消费额度
|
| | | # @param itemID: 物品id,消费类型为物品时可填
|
| | | # @return None
|
| | | def __Sync_GoldCostReport(curPlayer, costType, price, itemID=0):
|
| | | sendPack = ChPyNetSendPack.tagMCGoldCostReport()
|
| | | sendPack.Clear()
|
| | | sendPack.CostType = costType
|
| | | sendPack.Price = price
|
| | | sendPack.ItemID = itemID
|
| | | NetPackCommon.SendFakePack(curPlayer, sendPack)
|
| | | return
|
| | |
|
| | |
|
| | | ## 付款以后后续操作(金票)
|
| | | # @param curPlayer 玩家实例
|
| | | # @param price ,货币价格
|
| | | # @return None
|
| | | def __PayMoneyAfterByGoldPaper(curPlayer, price, costType, infoDict): |
| | | |
| | | # 事件汇报
|
| | | #===========================================================================
|
| | | # playerName = curPlayer.GetPlayerName()
|
| | | # leftGoldPaper = curPlayer.GetGoldPaper()
|
| | | # eventParam = "RoleID=%s,CostType=%s,ItemID=%s,Price=%s,LeftGoldPaper=%s" \
|
| | | # % (playerName, costType, infoDict, price, leftGoldPaper)
|
| | | # EventReport.EventReport(ShareDefine.Def_UserAction_UseGoldPaper, eventParam, curPlayer)
|
| | | #===========================================================================
|
| | | def __PayMoneyAfterByGoldPaper(curPlayer, price, costType, infoDict):
|
| | | return
|
| | |
|
| | |
|
| | |
| | | return
|
| | | SetMoney(curPlayer, priceType, updPlayerGold)
|
| | |
|
| | | if isGiveBourseMoney and updPlayerGold > 0:
|
| | | GiveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, min(value, updPlayerGold))
|
| | | #废弃交易所额度
|
| | | #if isGiveBourseMoney and updPlayerGold > 0:
|
| | | # GiveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, min(value, updPlayerGold))
|
| | | addDataDict["BourseMoney"] = GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
|
| | |
|
| | | elif priceType == IPY_GameWorld.TYPE_Price_Gold_Paper:
|
| | |
| | |
|
| | | PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_GetMoney, value, [priceType])
|
| | | PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_GetMoney, value, [priceType])
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAGetMoney, value, [priceType])
|
| | |
|
| | | if priceType == ShareDefine.TYPE_Price_FamilyCoin:
|
| | | PlayerFamily.AddFamilyContrib(curPlayer, value) # 公会币同步增加公会贡献
|
| | | elif priceType == ShareDefine.TYPE_Price_OSAPoint:
|
| | | OpenServerActivity.AddOSACelebrationPoint(curPlayer, value)
|
| | |
|
| | | if priceType not in [IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper, ShareDefine.TYPE_Price_PayCoin] \
|
| | | and giveType == ChConfig.Def_GiveMoney_Unknown:
|
| | |
| | | GameWorld.Log("记录获得代币: eventName=%s,value=%s,nowMoney=%s,payCoinDay=%s,orderInfo=%s" % (eventName, value, nowMoney, payCoinDay, orderInfo), playerID)
|
| | | GameWorld.AddPlayerRec(playerID, ShareDefine.Def_PlayerRecType_PayCoin, [1, value, nowMoney, payCoinDay], orderInfo, 1)
|
| | |
|
| | | if addDataDict.get("GiveItemEvent") == "Treasure":
|
| | | GameWorld.DebugLog("BT版本寻宝给货币暂时不记录流向: %s,priceType=%s,price=%s" % (eventName, priceType, value))
|
| | | else:
|
| | | DataRecordPack.DR_GiveMoney(curPlayer, eventName, priceType, value, addDataDict)
|
| | | EventReport.WriteEvent_virtual_resource(curPlayer, priceType, giveType, 1, value,
|
| | | ShareDefine.Def_UserAction_Money_Get, addDataDict)
|
| | | |
| | | #===============================================================================
|
| | | # reason_name = "Unknown" if not giveType else giveType
|
| | | # eventName = reason_name
|
| | | # if giveType in ChConfig.Def_GetType_Dict:
|
| | | # eventName, reason_name = ChConfig.Def_GetType_Dict[giveType][:2]
|
| | | # if isinstance(addDataDict, dict) and ChConfig.Def_Give_Reason_SonKey in addDataDict:
|
| | | # reasonSon = addDataDict[ChConfig.Def_Give_Reason_SonKey]
|
| | | # else:
|
| | | # reasonSon = reason_name
|
| | | # # 统一格式: 「获得组:获得原因」
|
| | | # reason_name = "%s:%s" % (reason_name, reasonSon)
|
| | | # |
| | | # # 流向用 eventName
|
| | | # if eventName:
|
| | | # DataRecordPack.DR_GiveMoney(curPlayer, eventName, priceType, value, addDataDict)
|
| | | # |
| | | # if priceType == IPY_GameWorld.TYPE_Price_Gold_Money:
|
| | | # playerName = curPlayer.GetPlayerName()
|
| | | # eventParam = "RoleID=%s,AddGold=%s,LeftGold=%s,AddDataDict=%s" \
|
| | | # % (playerName, value, curPlayer.GetGold(), addDataDict)
|
| | | # EventReport.EventReport(ShareDefine.Def_UserAction_GameMakeGold, eventParam, curPlayer)
|
| | | # |
| | | # elif priceType == IPY_GameWorld.TYPE_Price_Gold_Paper:
|
| | | # playerName = curPlayer.GetPlayerName()
|
| | | # eventParam = "RoleID=%s,AddGoldPaper=%s,LeftGoldPaper=%s,AddDataDict=%s" \
|
| | | # % (playerName, value, curPlayer.GetGoldPaper(), addDataDict)
|
| | | # EventReport.EventReport(ShareDefine.Def_UserAction_GameMakeGoldPaper, eventParam, curPlayer)
|
| | | # |
| | | # |
| | | # if priceType == IPY_GameWorld.TYPE_Price_Gold_Money: #and eventName != "CoinToGold":
|
| | | # EventReport.WriteEvent_virtual_reward(curPlayer, value, reason_name)
|
| | | # # 二级货币产出记录, 暂只记录绑钻、金币
|
| | | # elif priceType in [IPY_GameWorld.TYPE_Price_Gold_Paper, IPY_GameWorld.TYPE_Price_Silver_Money]:
|
| | | # EventReport.WriteEvent_virtual_resource(curPlayer, priceType, reason_name, 1, value,
|
| | | # ShareDefine.Def_UserAction_Money_Get)
|
| | | # |
| | | # # 自定义记录
|
| | | # priceNameDict = {IPY_GameWorld.TYPE_Price_Gold_Money:["钻石", "GetGold", 0],
|
| | | # IPY_GameWorld.TYPE_Price_Gold_Paper:["绑钻", "GetGoldPaper", 0],
|
| | | # IPY_GameWorld.TYPE_Price_Silver_Money:["金币", "GetSilver", ChConfig.Def_DRRecord_Min_Silver],
|
| | | # }
|
| | | # if priceType in priceNameDict:
|
| | | # typeName, moneyFuncName, minPrice = priceNameDict[priceType]
|
| | | # if minPrice <= 0 or value >= minPrice: |
| | | # EventReport.WriteEvent_give_money(curPlayer, reason_name, typeName, value, getattr(curPlayer, moneyFuncName)())
|
| | | #===============================================================================
|
| | | |
| | | DataRecordPack.DR_GiveMoney(curPlayer, eventName, priceType, value, addDataDict)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | isNotifyServer = False
|
| | |
|
| | | curPlayer.SetLV(curLV, isNotifyServer)
|
| | | #EventReport.WriteEvent_level_up(curPlayer)
|
| | | |
| | | |
| | | # 记录玩家升级
|
| | | DataRecordPack.DR_PlayerUpgrade(curPlayer, curPlayer.GetLV(), GetPlayerTotalExp(curPlayer), lvUpNeedExp)
|
| | | DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_LVUP, {'lv':curLV})
|
| | |
| | | def Sync_ExpRateChange(curPlayer):
|
| | | totalExpRate = GetPlayerExpRate(curPlayer)
|
| | | fightExpRate = curPlayer.GetFightExpRate() # 系统及功能累加
|
| | | fightExpRate += PlayerGoldInvest.GetAddFightExpRate(curPlayer)
|
| | |
|
| | | actExpRateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ExpRate, {})# 多倍经验活动加成
|
| | | if actExpRateInfo.get(ShareDefine.ActKey_State):
|
| | |
| | |
|
| | | return totalExpRate
|
| | |
|
| | | ##外观额外数据: 其他 * 100 + 坐骑外观
|
| | | def GetHorseSkinID(curPlayer): return GameWorld.GetValue(curPlayer.GetEquipShowSwitch(), 2, 2)
|
| | | ##外观额外数据: 其他 * 1000 + 坐骑外观
|
| | | def GetHorseSkinID(curPlayer): return GameWorld.GetValue(curPlayer.GetEquipShowSwitch(), 3, 3)
|
| | | def SetHorseSkinID(curPlayer, horseSkinID):
|
| | | showValue = curPlayer.GetEquipShowSwitch()
|
| | | updShowValue = GameWorld.SetValue(showValue, 2, 2, min(horseSkinID, 99))
|
| | | updShowValue = GameWorld.SetValue(showValue, 3, 3, min(horseSkinID, 999))
|
| | | curPlayer.SetEquipShowSwitch(updShowValue)
|
| | | GameWorld.DebugLog("使用坐骑外观: horseSkinID=%s,showValue=%s,updShowValue=%s" % (horseSkinID, showValue, updShowValue))
|
| | | return
|
| | |
| | |
|
| | | def IsMainLevelPass(curPlayer, lvID):
|
| | | ## 判断玩家是否过关某个主线关卡ID
|
| | | # @param lvID: 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
|
| | | passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer)
|
| | | passValue = passChapterID * 100 + passLevelNum # 因为pass的记录是带波数的,即当前关卡boss还没过关,所以只有大于该记录值的才算过关
|
| | | return passValue > lvID
|
| | | return GetPassMainLevelID(curPlayer) >= lvID
|
| | | def GetPassMainLevelID(curPlayer):
|
| | | ## 获取已过关主线关卡ID
|
| | | passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer) # 当前过关进度包含波,所以需要取上一关的
|
| | | passLVID = 0 # 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
|
| | | if passLevelNum > 1:
|
| | | preLevelNum = passLevelNum - 1
|
| | | passLVID = passChapterID * 100 + preLevelNum
|
| | | GameWorld.DebugLog("非某章节的第1关直接减1即可: passLVID=%s,passChapterID=%s,passLevelNum=%s" % (passLVID, passChapterID, passLevelNum))
|
| | | |
| | | elif passChapterID > 1: # 取上一章节
|
| | | preChapterID = passChapterID - 1
|
| | | levelDataList = IpyGameDataPY.GetIpyGameDataByCondition("MainLevel", {"ChapterID":preChapterID}, True)
|
| | | levelCount = len(levelDataList) if levelDataList else 0
|
| | | if levelCount:
|
| | | passLVID = preChapterID * 100 + levelCount
|
| | | GameWorld.DebugLog("取上一章节作为已过关关卡: passLVID=%s,preChapterID=%s,levelCount=%s,passChapterID=%s,passLevelNum=%s" |
| | | % (passLVID, preChapterID, levelCount, passChapterID, passLevelNum))
|
| | | return passLVID
|
| | |
|
| | | ## 主线关卡过关进度值 = 章节*10000+关卡编号*100+第x波
|
| | | def GetMainLevelPassValue(curPlayer): return curPlayer.GetExAttr1()
|
| | | def SetMainLevelPassValue(curPlayer, value): curPlayer.SetExAttr1(value, False, False) # 不通知GameServer
|
| | | def SetMainLevelPassValue(curPlayer, value):
|
| | | curPlayer.SetExAttr1(value, False, False) # 不通知GameServer
|
| | | GameFuncComm.DoFuncOpenLogic(curPlayer) |
| | | def SetMainLevelPassInfo(curPlayer, chapterID, levelNum, wave=0):
|
| | | ## 设置主线关卡过关进度
|
| | | # @param chapterID: 章节ID
|
| | |
| | | value = ComMainLevelValue(chapterID, levelNum, wave)
|
| | | SetMainLevelPassValue(curPlayer, value)
|
| | | if wave == 0:
|
| | | lvID = chapterID * 100 + levelNum
|
| | | lvID = GetPassMainLevelID(curPlayer)
|
| | | PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
|
| | | PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAMainLevel, lvID)
|
| | | if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) == 1:
|
| | | PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
|
| | | DataRecordPack.DR_MainLevelPass(curPlayer, lvID)
|
| | | return value
|
| | | def GetMainLevelPassInfo(curPlayer):
|
| | | ## 获取主线关卡过关进度信息
|
| | |
| | | levelNum = value % 10000 / 100
|
| | | wave = value % 100
|
| | | return chapterID, levelNum, wave
|
| | |
|
| | | ## 额外记录最后一次接到的主线任务ID,仅接到新任务时更新即可,可方便用于后台统计或其他判断
|
| | | def GetMainTaskID(curPlayer):return curPlayer.GetExAttr20()
|
| | | def SetMainTaskID(curPlayer, value): curPlayer.SetExAttr20(value)
|
| | |
|
| | | ## 获取佩戴的称号ID
|
| | | def GetTitleID(curPlayer): return curPlayer.GetExAttr3()
|
| | |
| | | if value == curZhenQi:
|
| | | #真气值没有改变
|
| | | return False
|
| | | |
| | | #===============================================================================================
|
| | | # if isSysMsg:
|
| | | # #GeRen_chenxin_254483:获得真气值XX点
|
| | | # NotifyCode(curPlayer, "GeRen_chenxin_254483", [addValue])
|
| | | #===============================================================================================
|
| | | |
| | | SetZhenQi(curPlayer, value)
|
| | | #EventReport.WriteEvent_add_zhenqi(curPlayer, eventName, eventData, addValue, value)
|
| | | return True
|
| | |
|
| | |
|
| | |
| | | if value < 0:
|
| | | GameWorld.ErrLog("curZhenQi = %s, lostValue = %s" % (curZhenQi, lostValue))
|
| | | return False
|
| | | |
| | | #GeRen_chenxin_365899:消耗真气值XX点.
|
| | | #NotifyCode(curPlayer, "GeRen_chenxin_365899", [lostValue])
|
| | | |
| | | SetZhenQi(curPlayer, value)
|
| | | |
| | | #EventReport.WriteEvent_lost_zhenqi(curPlayer, eventName, eventData, lostValue, value)
|
| | | return True
|
| | |
|
| | | ## SP真气值 - 暂废弃 ExAttr7、ExAttr8 改为专精选择通知,用于前端表现其他玩家的不同专精特效
|