From 6cffbb969c0d62de81d93733f98e0d58d9db6011 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 16 二月 2019 15:10:04 +0800
Subject: [PATCH] 6195 【开发】【1.6】跨服匹配添加机器人(前端自定义机器人PK场景屏蔽中立地图获得经验)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 64 +++++++++++++++++++++++++++++++
1 files changed, 63 insertions(+), 1 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 6e7664b..d174759 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -76,6 +76,7 @@
import PyGameData
import PlayerMagicWeapon
import GameLogic_SealDemon
+import GameLogic_ZhuXianBoss
import PlayerTJG
import PlayerVip
import PlayerRefineStove
@@ -83,10 +84,13 @@
import PlayerCostRebate
import GY_Query_CrossRealmReg
import PlayerFairyCeremony
+import PlayerNewFairyCeremony
import PlayerCrossRealmPK
import FunctionNPCCommon
import CrossRealmPlayer
+import CrossPlayerData
import ChNetSendPack
+import EquipZhuXian
import PlayerCoat
import PlayerState
import QuestCommon
@@ -527,6 +531,10 @@
if not GameWorld.IsCrossServer() and GetCrossMapID(curPlayer):
NotifyCode(curPlayer, "CrossMap10")
+ return False
+
+ if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
+ GameWorld.Log("客户端自定义场景下无法传送!", curPlayer.GetPlayerID())
return False
return True
@@ -1208,6 +1216,14 @@
PyGameData.g_needRefreshMapServerState = True # 有玩家离开地图设置需要刷新
PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick)
+
+ if not isDisconnect:
+ CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
+
+ #清除地图玩家缓存
+ playerID = curPlayer.GetPlayerID()
+ PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None)
+ PyGameData.g_zhuXianSkillReducePerDict.pop(playerID, None)
return
##更新保存玩家在线时间
@@ -1695,6 +1711,14 @@
else:
bossID = GameLogic_SealDemon.CurFBLineBOSSID(lineID)
extendParamList = [bossID]
+ elif mapID == ChConfig.Def_FBMapID_ZhuXianBoss:
+ bossID = GameLogic_ZhuXianBoss.CurFBLineBOSSID(lineID)
+ extendParamList = [bossID, -1]
+ enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % ChConfig.Def_FBMapID_ZhuXianBoss)
+ if enterCnt >= FBCommon.GetEnterFBMaxCnt(curPlayer, ChConfig.Def_FBMapID_ZhuXianBoss):
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhuXianBossHelpCnt):
+ extendParamList = [bossID, curPlayer.GetFamilyID()]
+
SendToGameServerEnterFB(curPlayer, mapID, lineID, tick, extendParamList)
return
@@ -1796,6 +1820,12 @@
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:您当前所处的状态不能进行传送!
@@ -2952,6 +2982,7 @@
PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
# 绝版降临
PlayerFairyCeremony.AddFCCostGold(curPlayer, costType, price)
+ PlayerNewFairyCeremony.AddFCCostGold(curPlayer, costType, price)
# 消费VIP
# if costVIPGold < 0:
# costVIPGold = price
@@ -3528,6 +3559,13 @@
FinalHurtReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtReduce) # 最终固定伤害减少
DamagePerPVP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePerPVP) * fpParam.GetCftDamagePerPVP() # 伤害输出计算百分比PVP
DamagePerPVPReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePerPVPReduce) * fpParam.GetCftDamagePerPVPReduce() # 伤害输出计算百分比PVP减少
+ JobAHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobAHurtAddPer) * fpParam.GetCftJobAHurtAddPer() # 对目标战士伤害加成
+ JobBHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobBHurtAddPer) * fpParam.GetCftJobBHurtAddPer() # 对目标法师伤害加成
+ JobCHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobCHurtAddPer) * fpParam.GetCftJobCHurtAddPer() # 对目标弓箭伤害加成
+ JobAAtkReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobAAtkReducePer) * fpParam.GetCftJobAAtkReducePer() # 战士攻击伤害减免
+ JobBAtkReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobBAtkReducePer) * fpParam.GetCftJobBAtkReducePer() # 法师攻击伤害减免
+ JobCAtkReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobCAtkReducePer) * fpParam.GetCftJobCAtkReducePer() # 弓箭攻击伤害减免
+
ComboRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_ComboRate) # 连击几率
ComboDamPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_ComboDamPer) # 连击伤害
#MaxProDef = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_MaxProDef) # 最大防护值
@@ -3713,7 +3751,7 @@
# 检查最大等级
if curLV >= maxLV and curTotalExp >= maxLVExpStore:
self.__NotifyExpFull(curPlayer, "GeRen_admin_825676")
- GameWorld.DebugLog("经验已满!已满级!curLV=%s" % (curLV), curPlayer.GetPlayerID())
+ #GameWorld.DebugLog("经验已满!已满级!curLV=%s" % (curLV), curPlayer.GetPlayerID())
return 0, expViewType
# 杀怪
@@ -4120,6 +4158,7 @@
PlayerFamilyTech.CalcFamilyTechAttr(curPlayer)
PlayerEquipDecompose.RefreshEDAttr(curPlayer)
PlayerDogz.RefreshDogzAttr(curPlayer)
+ EquipZhuXian.CalcZhuXianAttr(curPlayer)
PlayerGatherSoul.RefreshGatherSoulAttr(curPlayer)
PlayerCoat.CalcClothesCoatSkinAttr(curPlayer)
self.RefreshAllState(isForce=True)
@@ -4787,6 +4826,8 @@
PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
# 记录开服活动数据
OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower)
+ if beforeFightPower != totalFightPower:
+ CrossPlayerData.OnPlayerFightPowerChange(curPlayer)
return
def __RefreshMoveSpeed(self, allAttrListBuffs):
@@ -5744,6 +5785,8 @@
def GetCrossMapID(curPlayer): return curPlayer.GetExAttr5()
def SetCrossMapID(curPlayer, value):
curPlayer.SetExAttr5(value, False, True)
+ if not value:
+ CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
return
## 铜钱点, 支持铜钱超20亿
@@ -6610,6 +6653,18 @@
def GetFuncDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CopyFuncAttr % (ChConfig.TYPE_Calc_AttrDEF - 1))
def SetFuncDef(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_CopyFuncAttr % (ChConfig.TYPE_Calc_AttrDEF - 1), value)
+#---诛仙一击概率---
+def GetZhuXianRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ZhuxianRate)
+def SetZhuXianRate(curPlayer, value):
+ curPlayer.SetDict(ChConfig.Def_PlayerKey_ZhuxianRate, value)
+ curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ZhuxianRate, value, False)
+
+#---诛仙一击伤害百分比---
+def GetZhuXianHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ZhuxianHurtPer)
+def SetZhuXianHurtPer(curPlayer, value):
+ curPlayer.SetDict(ChConfig.Def_PlayerKey_ZhuxianHurtPer, value)
+ curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ZhuxianHurtPer, value, False)
+
## 增加天梯竞技场积分
# @param curPlayer 玩家实例
@@ -6798,6 +6853,13 @@
#-------------------------------------------------------------------------------
## 设置玩家字典值, 存库
def NomalDictSetProperty(curPlayer, key, value, dType=0):
+ if CrossPlayerData.IsNeedProcessCrossPlayer(curPlayer) and key not in \
+ [ChConfig.Def_PDict_FightPower_Total, ChConfig.Def_PlayerKey_CrossRegisterMap]:
+ playerID = curPlayer.GetPlayerID()
+ changeDict = PyGameData.g_crossPlayerDictChangeInfo.get(playerID, {})
+ changeDict[(key, dType)] = value
+ PyGameData.g_crossPlayerDictChangeInfo[playerID] = changeDict
+
if value == 0:
curPlayer.NomalDictDelProperty(key, dType)
return
--
Gitblit v1.8.0