From 320a417a53a57a9cb7d7759f430afe5f6e6399a6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 29 一月 2019 16:28:30 +0800 Subject: [PATCH] 6087 【后端】【1.5.200】春节红包雨活动(额度特效增加红包类型参数) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 117 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 92 insertions(+), 25 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..10416bf 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,8 @@ import GameLogic_FamilyWar import PlayerBossReborn import PlayerWeekParty +import PlayerFeastWeekParty +import PlayerActLogin import Operate_EquipWash import PlayerTreasure import GameLogic_GodArea @@ -101,6 +103,8 @@ import PlayerActTotalRecharge import PlayerSpringSale import PlayerFairyCeremony +import PlayerNewFairyCeremony +import PlayerFeastRedPacket import CrossRealmPlayer import ChNetSendPack import FamilyRobBoss @@ -110,6 +114,7 @@ import PlayerGeTui import PlayerDogz import PlayerCoat +import PlayerQuDaoDoubleBill import datetime import time @@ -235,14 +240,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 +387,7 @@ # !!!必要发送的数据要注意位置 if GameWorld.IsCrossServer(): curPlayer.SetForbiddenSyncClientState(False) - PlayerControl.SetCrossRealmState(curPlayer, curPlayer.GetMapID()) # 因为主服上传数据之前该值为0,所以登录跨服后在跨服服务器要设置为1 + PlayerControl.SetCrossMapID(curPlayer, curPlayer.GetMapID()) # 因为主服上传数据之前该值为0,所以登录跨服后在跨服服务器要设置为对应地图 return @@ -402,10 +413,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 +450,8 @@ #通知玩家技能信息 __Sync_ClientSkill(curPlayer) - + #替换旧物品 + ItemControler.LoginCheckChangeOldItem(curPlayer) #清除生产采集Buff #PlayerControl.DelProduceBuff(curPlayer, tick) #清除国家答题Buff @@ -448,18 +475,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) @@ -668,6 +683,7 @@ PlayerRune.PlayerRuneLogin(curPlayer) # 仙盟红包登录通知 PlayerFamilyRedPacket.OnPlayerLogin(curPlayer) + PlayerFeastRedPacket.DoPlayerOnLogin(curPlayer) # 法宝登录通知 PlayerMagicWeapon.PlayerMagicWeaponLogin(curPlayer) # 商店物品购买次数登录通知 @@ -695,8 +711,14 @@ PlayerBossReborn.OnLogin(curPlayer) # 周狂欢活动 PlayerWeekParty.OnLogin(curPlayer) + # 节日巡礼活动 + PlayerFeastWeekParty.OnLogin(curPlayer) + # 登录奖励活动 + PlayerActLogin.OnLogin(curPlayer) # 仙界盛典活动 PlayerFairyCeremony.OnLogin(curPlayer) + # 新仙界盛典活动 + PlayerNewFairyCeremony.OnLogin(curPlayer) # 分支下载奖励记录通知 SyncPackDownloadAward(curPlayer) # 登录触发功能开启(老号处理) @@ -728,6 +750,7 @@ # 如果被禁言的,上线同步前端 if curPlayer.GetGMForbidenTalk(): curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, curPlayer.GetGMForbidenTalk(), False) + return @@ -911,11 +934,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 +1042,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 +1273,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 +1406,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() @@ -1522,6 +1566,8 @@ #EndLoadMap需放在最后 curPlayer.EndLoadMap() + # 渠道返利 + PlayerQuDaoDoubleBill.OnMapQDDoubleBill(curPlayer) return True ## 切换地图同步一次PK模式 @@ -2330,7 +2376,7 @@ GameWorld.DebugLog("跨服服务器不接受复活请求!") return - if PlayerControl.GetCrossRealmState(curPlayer): + if PlayerControl.GetCrossMapID(curPlayer): OnReqCrossServerReborn(curPlayer, rebornType) return @@ -2349,7 +2395,7 @@ def OnReqCrossServerReborn(curPlayer, rebornType): ## 请求跨服服务器复活玩家 - crossMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossMapID) + crossMapID = PlayerControl.GetCrossMapID(curPlayer) if not crossMapID: GameWorld.DebugLog("当前无跨服地图!") return @@ -5303,7 +5349,21 @@ # 领取周狂欢积分奖励 elif rewardType == ChConfig.Def_RewardType_WeekPartyPoint: PlayerWeekParty.GetWeekPartyPointAward(curPlayer, dataEx, dataExStr) - + # 领取登录奖励活动奖励 + elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct: + PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr) + # 领取新仙界盛典充值大礼 + elif rewardType == ChConfig.Def_RewardType_NewFairyCRecharge: + PlayerNewFairyCeremony.GetFCRechargeAward(curPlayer) + # 领取新仙界盛典全民来嗨 + elif rewardType == ChConfig.Def_RewardType_NewFairyCParty: + PlayerNewFairyCeremony.GetFCPartyAward(curPlayer, dataEx) + # 领取节日巡礼活动奖励 + elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyAct: + PlayerFeastWeekParty.GetFeastWeekPartyActionAward(curPlayer, dataEx, dataExStr) + # 领取节日巡礼积分奖励 + elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyPoint: + PlayerFeastWeekParty.GetFeastWeekPartyPointAward(curPlayer, dataEx, dataExStr) return @@ -5457,10 +5517,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