From 0a6ffef4ba4593b8a112981b3e0be438889202e1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 29 九月 2025 15:53:55 +0800 Subject: [PATCH] 16 卡牌服务端(修改GM命令Mail中物品,包含货币、装备、武将、常规物品;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 92 +++++++-------------------------------------- 1 files changed, 15 insertions(+), 77 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 d35a1a2..1dd5d6a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -416,10 +416,6 @@ NotifyCode(curPlayer, "CrossMap10") return False - if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene): - GameWorld.Log("客户端自定义场景下无法传送!", curPlayer.GetPlayerID()) - return False - return True @@ -1000,10 +996,8 @@ playerID = curPlayer.GetPlayerID() if not isDisconnect: CrossPlayerData.ClearCrossSyncDataCache(curPlayer) - PyGameData.g_fbBuyBuffTimeDict.pop(playerID, None) #清除地图玩家缓存 PyGameData.g_playerReqEnterFBEx.pop(playerID, None) - NPCCommon.ClearPriWoodPile(curPlayer) #移除地图缓存的境界难度玩家ID信息 for playerIDList in PyGameData.g_realmDiffPlayerDict.values(): if playerID in playerIDList: @@ -1536,12 +1530,6 @@ if isNotify: NotifyCode(curPlayer, "Carry_lhs_697674") return ShareDefine.EntFBAskRet_Sit - - if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene): - if isNotify: - NotifyCode(curPlayer, "Carry_lhs_697674") - GameWorld.Log("客户端自定义场景下无法进入副本!", curPlayer.GetPlayerID()) - return ShareDefine.EntFBAskRet_Other if playerAction in ChConfig.Def_Player_Cannot_TransState: #Carry_lhs_697674:您当前所处的状态不能进行传送! @@ -2981,7 +2969,7 @@ # @return 返回值真, 给钱成功 # @param isSysHint 是否系统提示(默认是) # @remarks 玩家获得金钱 -def GiveMoney(curPlayer, priceType, value, giveType=ChConfig.Def_GiveMoney_Unknown, addDataDict={}, isSysHint=True, isGiveBourseMoney=True): +def GiveMoney(curPlayer, priceType, value, giveType=ChConfig.Def_GiveMoney_Unknown, addDataDict={}, isSysHint=True, isGiveBourseMoney=True, notifyAward=False): if value == 0: return True @@ -3060,6 +3048,9 @@ # NotifyCode(curPlayer, "GetMoney", [priceType, str(round(value/100.0, 2))]) # else: # NotifyCode(curPlayer, "GetMoney", [priceType, value]) + if notifyAward: + ItemControler.NotifyGiveAwardInfo(curPlayer, [], giveType, moneyInfo={priceType:value}) + __GiveMoneyAfter(curPlayer, priceType, value, giveType, addDataDict) if befMoney == 0: @@ -3325,41 +3316,6 @@ return IpyGameDataPY.GetFuncCfg("PKConfig", 2) #--------------------------------------------------------------------- -##获得玩家升级, 获得的属性点 -# @param curPlayer 玩家实例 -# @return 返回值, 获得的属性点 -# @remarks 获得玩家升级, 获得的属性点 -def GetLvUp_AddPoint(curPlayer): - curPlayerID = curPlayer.GetID() - curLV = curPlayer.GetLV() # 当前等级 - - addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) - addPoint = GameWorld.GetDictValueByRangeKey(addPointDict, curLV, 0) - - if addPoint == None: - raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID)) - return - return int(addPoint+ GetFabaoAddPoint(curPlayer) + GetTitleAddExtraPoint(curPlayer)) - -def GetAllPointByLV(curPlayer): - ##获取当前等级可得到属性点数 - openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint) - curLV = curPlayer.GetLV() - if curLV < openLV: - return 0 - # 初始点+(升级点+法宝效果)*称号效果倍数+境界点 - setFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2) - fabaoAddPoint = GetFabaoAddPoint(curPlayer) - titleAddPoint = GetTitleAddExtraPoint(curPlayer) - addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) - for rangLVs, point in addPointDict.items(): - if curLV < rangLVs[0]: - continue - setFreePoint += (point + fabaoAddPoint + titleAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1) - - #境界提升点数 - setFreePoint += curPlayer.GetOfficialRank() * IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3) - return setFreePoint def GetTitleAddExtraPoint(curPlayer): # 称号额外增加玩家每级获得的灵根点 @@ -3367,23 +3323,6 @@ if titleID and curPlayer.GetDienstgradManager().GetDienstgrad(titleID): return IpyGameDataPY.GetFuncCfg("TitleAddPoint", 2) return 0 - -def GetFabaoAddPoint(curPlayer): - #法宝额外增加玩家每级获得的灵根点 - return 0 - -def DoAddPointOpen(curPlayer): - '''加点功能开启''' - beforeFreePoint = curPlayer.GetFreePoint() - - setFreePoint = GetAllPointByLV(curPlayer) - curLV = curPlayer.GetLV() - addDataDict = {'beforeFreePoint':beforeFreePoint} - curPlayer.SetFreePoint(setFreePoint) - DataRecordPack.DR_Freepoint(curPlayer, "AddPointOpen", setFreePoint, addDataDict) - GameWorld.DebugLog(' 加点功能开启处理 beforeFreePoint=%s,curLV=%s, setFreePoint=%s'%(beforeFreePoint, curLV, setFreePoint), curPlayer.GetID()) - return - #--------------------------------------------------------------------- ############################################################### @@ -4267,7 +4206,7 @@ fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队 #地图多倍经验加成,默认是1倍不加成 - mapExpAddMultiple = max(0, FBCommon.GetAreaRewardMultiple(curPlayer) - 1) + mapExpAddMultiple = 0 fightExpRate += mapExpAddMultiple * ChConfig.Def_MaxRateValue if totalExpRate != fightExpRate: @@ -4422,6 +4361,8 @@ value = ComMainLevelValue(chapterID, levelNum, wave) SetMainLevelPassValue(curPlayer, value) if wave == 0: + lvID = chapterID * 100 + levelNum + PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID) PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel) return value def GetMainLevelPassInfo(curPlayer): @@ -4484,16 +4425,6 @@ curPlayer.SetExAttr5(value, False, True) if not value: CrossPlayerData.ClearCrossSyncDataCache(curPlayer) - return - -## 前端自定义场景 -def GetCustomMapID(curPlayer): return curPlayer.GetExAttr14() / 1000 -def GetCustomLineID(curPlayer): return curPlayer.GetExAttr14() % 1000 -## 自定义场景后端判断已结算后需直接重置为0,防止前端没有退出场景直接下线导致数据没有重置,可能引发可以重复进 -def SetCustomMap(curPlayer, mapID, lineID): - value = mapID * 1000 + lineID - if value != curPlayer.GetExAttr14(): - curPlayer.SetExAttr14(value, False, True) return ## 铜钱点, 支持铜钱超20亿 @@ -4608,7 +4539,7 @@ NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPower_HighestEx, highestFightPower / ChConfig.Def_PerPointValue) GameWorld.DebugLog("总战力: %s, 历史最高战力: %s, beforeFightPower=%s" % (value, highestFightPower, beforeFightPower), curPlayer.GetPlayerID()) - PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer) + #PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer) # 记录开服活动数据 #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower) #if beforeFightPower != totalFightPower: @@ -4757,6 +4688,13 @@ return 0 return lvIpyData.GetExp() +def GetOpenMaxLV(): + ## 获取游戏开放的最大等级 + maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1) + ipyDataMgr = IpyGameDataPY.IPY_Data() + realmIpyData = ipyDataMgr.GetRealmByIndex(ipyDataMgr.GetRealmCount() - 1) + return min(maxLV, realmIpyData.GetLVMax()) + def GetPlayerMaxLV(curPlayer): ## 获取玩家实际可升的最大等级 maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1) -- Gitblit v1.8.0