From 92126566b642cdb2be53291c8e8e64c7a623782e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 22 一月 2019 20:38:34 +0800
Subject: [PATCH] 5931 【后端】【1.5.100】诛仙装备开发(学习神技广播)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 92 ++++++++++++++++++++++++++++++++++------------
1 files changed, 68 insertions(+), 24 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 7fef4cf..3daaf34 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -79,6 +79,7 @@
import GameLogic_FamilyWar
import PlayerBossReborn
import PlayerWeekParty
+import PlayerActLogin
import Operate_EquipWash
import PlayerTreasure
import GameLogic_GodArea
@@ -235,14 +236,20 @@
Sync_DBPlayer(curPlayer)
+ # 死亡复活
+ if curPlayer.GetHP() <=0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
+ PlayerRebornByType(curPlayer, ChConfig.rebornType_System, tick)
+
# 强刷一次属性,刷之前重置还没同步过所有属性
curPlayer.SetDict(ChConfig.Def_PlayerKey_NotifyAllAttrState, 0)
playerControl = PlayerControl.PlayerControl(curPlayer)
playerControl.ReCalcAllState()
- if PlayerControl.GetCrossRealmState(curPlayer):
+ if PlayerControl.GetCrossMapID(curPlayer):
CrossRealmPlayer.DoExitCrossRealm(curPlayer)
+ msgInfo = ""
+ GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetPlayerID(), 0, 0, "RefreshMainServerRole", msgInfo, len(msgInfo))
return
def Sync_DBPlayer(curPlayer):
@@ -376,7 +383,7 @@
# !!!必要发送的数据要注意位置
if GameWorld.IsCrossServer():
curPlayer.SetForbiddenSyncClientState(False)
- PlayerControl.SetCrossRealmState(curPlayer, curPlayer.GetMapID()) # 因为主服上传数据之前该值为0,所以登录跨服后在跨服服务器要设置为1
+ PlayerControl.SetCrossMapID(curPlayer, curPlayer.GetMapID()) # 因为主服上传数据之前该值为0,所以登录跨服后在跨服服务器要设置为对应地图
return
@@ -402,10 +409,25 @@
#---玩家上线, 宠物逻辑处理---
PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
+ PlayerFamily.FamilyPlayerOnLoginCross(curPlayer)
+
+ PlayerTeam.OnPlayerLoginCrossServer(curPlayer)
+
#通知运行成功
curPlayer.BalanceServer_PlayerLoginInitOK()
return
+ leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
+ if leaveServerSecond > ChConfig.Def_PlayerOfflineProtectTime / 1000:
+ # 离线超过离线保护重置切线临时保存的相关记录值
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayChangeLineID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FuncChangeLineID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HighChangeLineID, 0)
+ #GameWorld.DebugLog("离线超过10秒重置切线临时保存的相关记录值!leaveServerSecond=%s" % leaveServerSecond, curPlayer.GetPlayerID())
+ # 离线过久恢复为非跨服状态
+ if PlayerControl.GetCrossMapID(curPlayer):
+ PlayerControl.SetCrossMapID(curPlayer, 0)
+
SyncGuideState(curPlayer)
#上线检查一次装备属性
@@ -424,7 +446,8 @@
#通知玩家技能信息
__Sync_ClientSkill(curPlayer)
-
+ #替换旧物品
+ ItemControler.LoginCheckChangeOldItem(curPlayer)
#清除生产采集Buff
#PlayerControl.DelProduceBuff(curPlayer, tick)
#清除国家答题Buff
@@ -448,18 +471,6 @@
PlayerPrestigeSys.OnLogin(curPlayer)
DataRecordPack.DR_PlayerLogin(curPlayer)
EventReport.WriteEvent_login(curPlayer)
-
-
- leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
- if leaveServerSecond > ChConfig.Def_PlayerOfflineProtectTime / 1000:
- # 离线超过离线保护重置切线临时保存的相关记录值
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayChangeLineID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FuncChangeLineID, 0)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HighChangeLineID, 0)
- #GameWorld.DebugLog("离线超过10秒重置切线临时保存的相关记录值!leaveServerSecond=%s" % leaveServerSecond, curPlayer.GetPlayerID())
- # 离线过久恢复为非跨服状态
- if PlayerControl.GetCrossRealmState(curPlayer):
- PlayerControl.SetCrossRealmState(curPlayer, 0)
# 合服首登处理
__DoMixServerFirstLogin(curPlayer)
@@ -695,6 +706,8 @@
PlayerBossReborn.OnLogin(curPlayer)
# 周狂欢活动
PlayerWeekParty.OnLogin(curPlayer)
+ # 登录奖励活动
+ PlayerActLogin.OnLogin(curPlayer)
# 仙界盛典活动
PlayerFairyCeremony.OnLogin(curPlayer)
# 分支下载奖励记录通知
@@ -911,11 +924,22 @@
#@return 返回值无意义
#@remarks 通知玩家技能信息
def __Sync_ClientSkill(curPlayer):
+ sendPack = ChPyNetSendPack.tagMCPlayerSkills()
+ sendPack.Clear()
+ sendPack.Skills = []
skillManager = curPlayer.GetSkillManager()
for i in range(skillManager.GetSkillCount()):
curSkill = skillManager.GetSkillByIndex(i)
- curSkill.Sync_Skill()
+ #curSkill.Sync_Skill()
+ skillInfo = ChPyNetSendPack.tagPlayerSkill()
+ skillInfo.SkillID = curSkill.GetSkillID()
+ skillInfo.RemainTime = curSkill.GetRemainTime()
+ skillInfo.Proficiency = curSkill.GetProficiency()
+
+ sendPack.Skills.append(skillInfo)
+ sendPack.Count = len(sendPack.Skills)
+ NetPackCommon.SendFakePack(curPlayer, sendPack)
return
#---------------------------------------------------------------------
@@ -1008,8 +1032,9 @@
SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
#刷新玩家的视野
- if not GameWorld.IsCrossServer() and PlayerControl.GetCrossRealmState(curPlayer):
+ if not GameWorld.IsCrossServer() and PlayerControl.GetCrossMapID(curPlayer):
GameWorld.DebugLog("===登录本服地图时,处于跨服状态,不刷新视野!", curPlayer.GetPlayerID())
+ curPlayer.SetSight(0)
else:
PlayerState.ChangePlayerSigh(curPlayer, tick)
@@ -1238,6 +1263,15 @@
curPack.SetCount(ChConfig.Def_PackCnt_DogzEquip)
curPack.Sync_PackCanUseCount()
+ #初始化诛仙物品背包
+ curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianItem)
+ curPack.SetCount(ChConfig.Def_PackCnt_ZhuXianItem)
+ curPack.Sync_PackCanUseCount()
+ #初始化诛仙装备背包
+ curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
+ curPack.SetCount(ChConfig.Def_PackCnt_ZhuXianEquip)
+ curPack.Sync_PackCanUseCount()
+
#初始化临时交换背包
curPack = itemManager.GetPack(ShareDefine.rptTempSwap)
curPack.SetCount(ChConfig.Def_PackCnt_TempSwap)
@@ -1362,7 +1396,7 @@
firstMission = QuestCommon.GetCommonMission(curPlayer)
if not (firstMission and firstMission.GetProperty(QuestCommon.Def_NewGuyNoSight) == 1):
#刷新自己的视野
- if not GameWorld.IsCrossServer() and PlayerControl.GetCrossRealmState(curPlayer):
+ if not GameWorld.IsCrossServer() and PlayerControl.GetCrossMapID(curPlayer):
GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服状态,不设置可见!", curPlayer.GetPlayerID())
else:
curPlayer.RefreshView()
@@ -2330,7 +2364,7 @@
GameWorld.DebugLog("跨服服务器不接受复活请求!")
return
- if PlayerControl.GetCrossRealmState(curPlayer):
+ if PlayerControl.GetCrossMapID(curPlayer):
OnReqCrossServerReborn(curPlayer, rebornType)
return
@@ -2349,7 +2383,7 @@
def OnReqCrossServerReborn(curPlayer, rebornType):
## 请求跨服服务器复活玩家
- crossMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossMapID)
+ crossMapID = PlayerControl.GetCrossMapID(curPlayer)
if not crossMapID:
GameWorld.DebugLog("当前无跨服地图!")
return
@@ -5303,6 +5337,9 @@
# 领取周狂欢积分奖励
elif rewardType == ChConfig.Def_RewardType_WeekPartyPoint:
PlayerWeekParty.GetWeekPartyPointAward(curPlayer, dataEx, dataExStr)
+ # 领取登录奖励活动奖励
+ elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
+ PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
return
@@ -5457,10 +5494,17 @@
return
-
-## 地图NPC数量查询封包 A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo
-# @param curPlayer
-# @return None
+#// A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo
+#
+#struct tagCMQueryNPCCntInfo
+#{
+# tagHead Head;
+# DWORD MapID; // 目标地图ID
+# WORD LineID; // 线路ID
+# BYTE IsNoTimeLimit;//是否没有查询时间限制,默认有限制
+# BYTE NPCIDListLen;
+# char NPCIDList[NPCIDListLen]; // 需要查询的NPCID列表
+#};
def OnQueryMapNPCCntInfo(index, clientData, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
if not curPlayer:
--
Gitblit v1.8.0