From 9b67e4335f655af8c8aef8aa1e7d41e509c50b76 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 12 九月 2025 17:38:35 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(反击改为使用普攻,去除通用反击技能设定;武将特长支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 511 +++++++++++-------------------------------------------- 1 files changed, 107 insertions(+), 404 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 9c84d58..d6271f0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -19,7 +19,6 @@ import ChConfig import BuffSkill import PlayerEventCounter -import PlayerTeam import PlayerHorse import NPCCommon import SkillCommon @@ -34,11 +33,8 @@ import PetControl import OperControlManager import ShareDefine -import PlayerAutoCheckOnline -import PlayerGameWallow import NetPackCommon import ChPyNetSendPack -import Operate_PlayerBuyZhenQi import DataRecordPack import PlayerBillboard import UpdatePlayerName @@ -51,32 +47,17 @@ import PlayerFamily import PlayerLoginDayAward import PlayerGodWeapon -import PlayerWorldAverageLv import PlayerGoldInvest import PlayerActivity import FBCommon -import BossHurtMng import PlayerWishingWell -import PlayerAttrFruit import PlayerSuccess import PlayerDienstgrad import PlayerFreeGoods import PlayerRecover -import GameLogic_IceLode -import GameLogic_SkyTower -import PlayerEquipDecompose -import PlayerGreatMaster -import PlayerGatherSoul -import PlayerGatherTheSoul -import PlayerFairyDomain import PlayerCrossRealmPK import PlayerCrossChampionship -import PlayerCrossBattlefield import GameFuncComm -import PlayerMagicWeapon -import GameLogic_FamilyBoss -import GameLogic_TrialTower -import GameLogic_FamilyWar import PlayerBossReborn import PlayerWeekParty import PlayerFeastWeekParty @@ -85,16 +66,12 @@ import PlayerFeastWish import PlayerActLogin import PlayerTreasure -import GameLogic_GodArea import PlayerRune import PlayerFamilyRedPacket import IpyGameDataPY import EventReport import OpenServerCampaign -import PlayerVip -import PlayerRefineStove import PassiveBuffEffMng -import GameLogic_XMZZ import PlayerFlashSale import PlayerFlashGiftbag import PlayerDailyGiftbag @@ -104,21 +81,13 @@ import PlayerActCollectWords import PlayerActTotalRecharge import PlayerActRechargePrize -import PlayerActGarbageSorting -import PlayerActXianXiaMJ -import PlayerActGubao -import PlayerActHorsePetTrain import PlayerActLianqi import PlayerActGodGift import PlayerActFamilyCTGAssist import PlayerActRechargeRebateGold import PlayerActManyDayRecharge import PlayerActSingleRecharge -import PlayerActHorsePetFeast -import PlayerActBossTrial import PlayerSpringSale -import PlayerFairyCeremony -import PlayerNewFairyCeremony import GY_Query_BossFirstKill import PlayerCrossYaomoBoss import PlayerFeastRedPacket @@ -132,9 +101,6 @@ import PlayerTongTianLing import CrossRealmPlayer import ChNetSendPack -import FamilyRobBoss -import FBHelpBattle -import PlayerAssist import PlayerArena import PyGameData import PlayerCoin @@ -155,11 +121,10 @@ import PlayerLove import GameObj import PlayerChangeJob -import PlayerGuaji import PlayerFace import PlayerChatBox import PlayerXiangong -import PlayerMineArea +import PlayerGoldRush import PlayerActLoginNew import PlayerActBuyCountGift import PlayerActLunhuidian @@ -200,6 +165,7 @@ #@return 返回值无意义 #@remarks 玩家登陆游戏初始化 def InitLoginPlayer(curPlayer, tick): + PlayerOnline.OnPlayerLogin(curPlayer) #初始化玩家的时钟个数 if curPlayer.GetTickTypeCount() == 0: curPlayer.SetTickTypeCount(ChConfig.TYPE_Player_Tick_Count) @@ -485,7 +451,7 @@ InitPlayerPack(curPlayer) if GameWorld.IsCrossServer(): - SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick) + #SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick) # 重置所有技能CD DoPlayerLoginInMap(curPlayer, tick) @@ -493,9 +459,7 @@ DataRecordPack.DR_PlayerLogin(curPlayer) EventReport.WriteEvent_login(curPlayer) #---玩家上线, 宠物逻辑处理--- - PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) - - PlayerTeam.OnPlayerLoginCrossServer(curPlayer) + #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) return leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer) @@ -508,8 +472,9 @@ # 离线过久恢复为非跨服状态 if PlayerControl.GetCrossMapID(curPlayer): PlayerControl.SetCrossMapID(curPlayer, 0) - - PlayerOnline.OnPlayerLogin(curPlayer) + + __FirstLoginOnEnter(curPlayer) + TurnAttack.OnPlayerLogin(curPlayer) SyncGuideState(curPlayer) @@ -519,21 +484,18 @@ PlayerControl.UpdPlayerServerGroupID(curPlayer) #上线学习技能 - SkillCommon.PlayerLoginCheckLearnSkill(curPlayer) + #SkillCommon.PlayerLoginCheckLearnSkill(curPlayer) #刷新技能CD - SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick) + #SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick) #通知玩家技能信息 - __Sync_ClientSkill(curPlayer) + #__Sync_ClientSkill(curPlayer) #清除VIPbuff #BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick) #通知玩家的buff - __Sync_ClientBuff(curPlayer) - - #初始化现实时间物品 - InitRealityTimeItem(curPlayer, tick) + #__Sync_ClientBuff(curPlayer) #---刷新了玩家属性, 登陆只刷新一次,其他地方不用刷 DoPlayerLoginInMap(curPlayer, tick) @@ -546,14 +508,9 @@ #DataRecordPack.DR_PlayerLogin(curPlayer) EventReport.WriteEvent_login(curPlayer) - __FirstLoginOnEnter(curPlayer) - # 合服首登处理 __DoMixServerFirstLogin(curPlayer) PlayerBillboard.BillboardOnLogin(curPlayer) - - #上线时通知脱机挂时被击杀的离线时间 - __Sync_PlayerOffline(curPlayer, tick) #玩家扩展信息 __SyncPlayerInfoEx(curPlayer) @@ -562,31 +519,11 @@ GiveDownloadPatchAward(curPlayer) #PK模式 - SyncPKModel(curPlayer) - - #装备相关信息 - ChEquip.OnPlayerEquipLoginLogic(curPlayer) - - #大师 - PlayerGreatMaster.MasterOnLogin(curPlayer) - - #通知VIP - PlayerVip.DoOnLogin(curPlayer, tick) - - #通知法宝精炼等级 - PlayerRefineStove.DoOnLogin(curPlayer, tick) + #SyncPKModel(curPlayer) #---玩家上线, 宠物逻辑处理--- - PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) - PlayerPet.OnPlayerPetLogin(curPlayer) - - #清空玩家万能背包中的任务物品 - ItemControler.ClearPackEventItem(curPlayer, IPY_GameWorld.rptAnyWhere) - - #PlayerLoginNotify(curPlayer, tick) - - #防沉迷计算下线累积时间 - PlayerGameWallow.Calc_Wallow_OfflineTime(curPlayer, tick) + #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick) + #PlayerPet.OnPlayerPetLogin(curPlayer) # 通知等级奖励领取记录 PlayerLVAward.Sync_LVAwardGetRecordInfo(curPlayer) @@ -595,27 +532,17 @@ # 首充/天天首充/充值豪礼 PlayerGoldGift.OnLogin(curPlayer) - #通知购买功能中各购买类型的已购买和可购买次数 - Operate_PlayerBuyZhenQi.DoPlayerLogin(curPlayer) -# -# #通知功能首次触发情况 + #通知功能首次触发情况 GameFuncComm.Sync_FuncOpenState(curPlayer) -# -# #通知客户端签到信息 + + #通知客户端签到信息 PlayerSignDay.SignDayOnLogin(curPlayer) #通知玩家死亡时间 - PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer) - #ClearPlayerDeadInfo(curPlayer) - - #充值活动玩家登入处理 - #PlayerGoldAction.DoLogic_PlayerOnLogin(curPlayer) - - # 提示贵宾俱乐部信息 - #PlayerVip.NoteVIPClubInfo(curPlayer) + #PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer) #角色改名次数 - UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer) + #UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer) # 坐骑相关通知 PlayerHorse.PlayerHorseLogin(curPlayer) @@ -633,13 +560,9 @@ # 开服活动奖励信息 OpenServerCampaign.OnOpenServerCampaignLogin(curPlayer) - - # 试炼之塔 - GameLogic_TrialTower.OnFBPlayerLogin(curPlayer) - # 古神禁地 - GameLogic_GodArea.GodAreaOnLogin(curPlayer) + # 采集NPC次数通知 - NPCCommon.SyncCollNPCTime(curPlayer) + #NPCCommon.SyncCollNPCTime(curPlayer) # 每日活跃度 PlayerActivity.OnLogin(curPlayer) @@ -647,14 +570,8 @@ # 副本进入时间 FBCommon.FBOnLogin(curPlayer) - #世界等级 - PlayerWorldAverageLv.OnLogin(curPlayer) - # 投资理财 PlayerGoldInvest.OnLogin(curPlayer) - - #属性果实使用情况 - PlayerAttrFruit.AttrFruitOnLogin(curPlayer) #成就 PlayerSuccess.SuccOnLogin(curPlayer) @@ -682,7 +599,6 @@ # 跨服PK PlayerCrossRealmPK.DoPlayerLogin(curPlayer) PlayerCrossChampionship.DoPlayerLogin(curPlayer) - PlayerCrossBattlefield.DoPlayerLogin(curPlayer) # 幸运云购 PlayerLuckyCloudBuy.OnPlayerLogin(curPlayer) @@ -694,7 +610,7 @@ PlayerControl.NotifyPlayerAllCurrency(curPlayer) PlayerControl.NotifyUseMoneyTotal(curPlayer) #通知基础属性 - NotifyPlayerBasePoint(curPlayer) + #NotifyPlayerBasePoint(curPlayer) #跨服充值排行 CrossActCTGBillboard.OnPlayerLogin(curPlayer) @@ -724,37 +640,21 @@ PlayerActFamilyCTGAssist.OnPlayerLogin(curPlayer) #集字活动 PlayerActCollectWords.OnPlayerLogin(curPlayer) - # 世界boss - BossHurtMng.OnLogin(curPlayer) ChItem.Sync_ItemDayUseCnt(curPlayer) # 符印登录通知 PlayerRune.PlayerRuneLogin(curPlayer) # 仙盟红包登录通知 PlayerFamilyRedPacket.OnPlayerLogin(curPlayer) PlayerFeastRedPacket.DoPlayerOnLogin(curPlayer) - # 法宝登录通知 - PlayerMagicWeapon.PlayerMagicWeaponLogin(curPlayer) # 商店物品购买次数登录通知 FunctionNPCCommon.ShopItemOnLogin(curPlayer) # 通知设置的被动功法 #PassiveBuffEffMng.OnLoginGFPassive(curPlayer) - #仙魔之争 - GameLogic_XMZZ.OnXMZZLogin(curPlayer) PlayerOnlinePrize.OnPlayerLogin(curPlayer) - #装备分解 - PlayerEquipDecompose.PlayerLogin(curPlayer) - #防沉迷 - PlayerGameWallow.DoLogic_CheckWallow(curPlayer, tick) - # 协助 - PlayerAssist.OnPlayerLogin(curPlayer) # 极品白拿 PlayerFreeGoods.OnLogin(curPlayer) # BOSS复活活动 PlayerBossReborn.OnLogin(curPlayer) - # boss历练 - PlayerActBossTrial.OnPlayerLogin(curPlayer) - # 骑宠盛宴活动 - PlayerActHorsePetFeast.OnLogin(curPlayer) # 周狂欢活动 PlayerWeekParty.OnLogin(curPlayer) # 购买次数礼包活动 @@ -777,14 +677,6 @@ PlayerFeastTravel.OnPlayerLogin(curPlayer) # 登录奖励活动 PlayerActLogin.OnLogin(curPlayer) - # 垃圾分类活动 - PlayerActGarbageSorting.OnPlayerLogin(curPlayer) - # 仙匣秘境活动 - PlayerActXianXiaMJ.OnPlayerLogin(curPlayer) - # 古宝养成活动 - PlayerActGubao.OnPlayerLogin(curPlayer) - # 骑宠养成活动 - PlayerActHorsePetTrain.OnPlayerLogin(curPlayer) # 炼器活动 PlayerActLianqi.OnPlayerLogin(curPlayer) # 天帝礼包活动 @@ -795,34 +687,21 @@ PlayerActSingleRecharge.OnPlayerLogin(curPlayer) # 转盘活动 PlayerActTurntable.OnPlayerLogin(curPlayer) - # 仙界盛典活动 - PlayerFairyCeremony.OnLogin(curPlayer) - # 新仙界盛典活动 - PlayerNewFairyCeremony.OnLogin(curPlayer) # 分支下载奖励记录通知 SyncPackDownloadAward(curPlayer) # 登录触发功能开启(老号处理) GameFuncComm.DoFuncOpenLogic(curPlayer) # 神兽 PlayerDogz.OnPlayerLogin(curPlayer) - # 骑宠 - FamilyRobBoss.OnPlayerLogin(curPlayer) # 许愿池 PlayerWishingWell.OnLogin(curPlayer) #幸运鉴宝 PlayerLuckyTreasure.OnLogin(curPlayer) # 小助手 SyncLittleHelper(curPlayer) - # 副本助战 - FBHelpBattle.DoPlayerLogin(curPlayer) - # 聚魂 - PlayerGatherSoul.PlayerLogin(curPlayer) - PlayerGatherTheSoul.OnPlayerLogin(curPlayer) - #缥缈仙域 - PlayerFairyDomain.OnLogin(curPlayer) PlayerFB.OnLogin(curPlayer) #技能专精信息 - SkillShell.NotifyElementSkillInfo(curPlayer) + #SkillShell.NotifyElementSkillInfo(curPlayer) #Boss首杀 GY_Query_BossFirstKill.OnPlayerLogin(curPlayer) #通天令 @@ -887,8 +766,7 @@ PlayerZhanling.OnPlayerLogin(curPlayer) PlayerTask.OnPlayerLogin(curPlayer) PlayerTree.OnPlayerLogin(curPlayer) - PlayerMineArea.OnPlayerLogin(curPlayer) - PlayerGuaji.OnPlayerLogin(curPlayer) + PlayerGoldRush.OnPlayerLogin(curPlayer) PlayerActFamilyGCZ.OnPlayerLogin(curPlayer) PlayerTalk.OnPlayerLogin(curPlayer) @@ -925,22 +803,24 @@ # 那么在DoPlayerLogin 中设置的数据将不会被保存, 如会导致第一个任务重复触发问题,记录多次发送 EventReport.WriteEvent_Entry(curPlayer, 4) #EventReport.EventReport(ShareDefine.Def_UserAction_FirstLogin, "", curPlayer) + + curPlayer.SetFightPoint(1) # 初始化为1倍消耗 #---补满血满魔--- GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer)) - curPlayer.SetMP(curPlayer.GetMaxMP()) + #curPlayer.SetMP(curPlayer.GetMaxMP()) #默认触发一次功能开启 if curPlayer.GetLV() == 1: GameFuncComm.DoFuncOpenLogic(curPlayer) #初始化组队状态 - autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1) - autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2) - PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck)) + #autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1) + #autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2) + #PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck)) #玩家默认恶名值 - curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue) + #curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue) #curPlayer.SetDict("ThunderLogin", 1) #记录第一次登陆 @@ -951,6 +831,11 @@ for mailTypeKey, mailItemList in mailList: PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList) + PlayerHero.OnPlayerFirstLogin(curPlayer) + + #淘金初始化 + PlayerGoldRush.InitGoldEnergy(curPlayer) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1) return @@ -1015,17 +900,6 @@ # 同步排行榜 PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True) - # 天星塔全服过关记录 - GameLogic_SkyTower.OnMixFirstLogin(curPlayer) - - # boss凭证 - PlayerActBossTrial.OnMixFirstLogin(curPlayer) - # 仙匣秘境 - PlayerActXianXiaMJ.OnMixFirstLogin(curPlayer) - # 古宝养成 - PlayerActGubao.OnMixFirstLogin(curPlayer) - # 骑宠养成 - PlayerActHorsePetTrain.OnMixFirstLogin(curPlayer) # 重置玩家改名次数 #UpdatePlayerName.ResetChangeNameCnt(curPlayer) return @@ -1040,51 +914,6 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_DeadTime, 0) return -##玩家登陆, 相关活动通知 -#@param curPlayer 玩家实例 -#@param tick 时间戳 -#@return 返回值无意义 -#@remarks 玩家登陆, 相关活动通知 -def PlayerLoginNotify(curPlayer, tick): - curTime = GameWorld.GetCurrentTime() - - #读取上线提示表 - notifyByTimeSect = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_TimeSect') #某时间段内上线提示 - notifyByDict = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_Dict') #根据字典值给提示 - - #在规定时间段内上线给提示 - DoNotifyByTimeSect(curPlayer, curTime, notifyByTimeSect) - #指定字典值内提示 - DoNotifyByDict(curPlayer, notifyByDict) - return -#--------------------------------------------------------------------- -##在活动规定时间段内上线给提示 -#@param curPlayer 玩家索引 -#@param curTime 传入时间 -#@param notifyInfo 提示信息 -#@return 返回值无意义 -#@remarks 在活动规定时间段内上线给提示 -def DoNotifyByTimeSect(curPlayer, curTime, notifyInfo): - for curNotify in notifyInfo: - #有时间段限制,验证时间段 - if not GameWorld.IsAtActTime(curTime, curNotify[0]): - continue - - PlayerControl.NotifyCode(curPlayer, curNotify[1], curNotify[2]) - -#--------------------------------------------------------------------- -##指定字典值内提示 -#@param curPlayer 玩家实例 -#@param notifyInfo 提示信息 -#@return 返回值无意义 -#@remarks 指定字典值内提示 -def DoNotifyByDict(curPlayer, notifyInfo): - gameWorld = GameWorld.GetGameWorld() - for curNotify in notifyInfo: - if gameWorld.GetGameWorldDictByKey(curNotify[0]) in curNotify[1]: - PlayerControl.NotifyCode(curPlayer, curNotify[2], curNotify[3]) - - #--------------------------------------------------------------------- ##通知背包详细信息 #@param curPlayer 玩家实例 @@ -1097,18 +926,6 @@ rolePack = itemManager.GetPack(packIndex) rolePack.Sync_Refresh() - # 刷下装备评分,仓库可以暂不处理,取出装备后登录触发刷新 - for i in xrange(rolePack.GetCount()): - curItem = rolePack.GetAt(i) - if curItem.IsEmpty(): - continue - newScore = ItemCommon.CalcEquipGS(curItem) - hisScore = ItemCommon.GetEquipGearScore(curItem) - if hisScore != newScore: - ItemCommon.SetEquipGearScore(curItem, newScore) - GameWorld.Log("登录更新装备评分: packType=%s,i=%s,hisScore=%s,newScore=%s,itemID=%s,guid=%s" - % (packIndex, i, hisScore, newScore, curItem.GetItemTypeID(), curItem.GetGUID()), curPlayer.GetPlayerID()) - for packIndex in ChConfig.Def_VPackCnt_Dict.keys(): ItemControler.Sync_VPackItem_Refresh(curPlayer, packIndex) @@ -1139,16 +956,6 @@ # #itemManager.GetPack(IPY_GameWorld.rptBreakPrepare).Sync_Refresh() # #itemManager.GetPack(IPY_GameWorld.rptBreakItem).Sync_Refresh() #=============================================================================== - return - -#--------------------------------------------------------------------- -##初始化现实时间物品 -#@param curPlayer 玩家实例 -#@param tick 时间戳 -#@return 返回值无意义 -#@remarks 初始化现实时间物品 -def InitRealityTimeItem(curPlayer, tick): - PlayerState.ProcessTimeEquip(curPlayer, tick) return #--------------------------------------------------------------------- @@ -1200,54 +1007,6 @@ return #--------------------------------------------------------------------- -##上线时通知离线时间(离线挂机功能) -# @param curPlayer 玩家实例 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 上线时通知离线时间(离线挂机功能) -def __Sync_PlayerOffline(curPlayer, tick): - #---等级限制--- - if GameWorld.IsCrossServer(): - return - -#=============================================================================== -# #---等级限制--- -# lvLimit = ReadChConfig.GetEvalChConfig('OfflineSys_LVLimit') -# if curPlayer.GetLV() < lvLimit: -# return -# -# if GameWorld.IsCrossServer(): -# return -# -# #当前离线时间(分) -# curOfflineMinutes = min(PlayerControl.GetPlayerLeaveServerMinute(curPlayer), -# ChConfig.Def_UpperLimit_DWord) -# -# #防止服务器时间修改到过去得到负值 -# if curOfflineMinutes < 0: -# GameWorld.ErrLog("Login Time Error, outTime: %s - loginTime :%s" % -# (curPlayer.GetLogoffTime(), GameWorld.GetCurrentDataTimeStr()), -# curPlayer.GetPlayerID()) -# curOfflineMinutes = 0 -# -# #时间为分钟 -# minTimeLimit, maxTimeLimit = ReadChConfig.GetEvalChConfig("OfflineSys_AllTimeUpperLimit") -# if curOfflineMinutes >= minTimeLimit: -# #总离线时间(分) -# allOfflineMinutes = min(curPlayer.GetOfflineMinutes() + curOfflineMinutes, maxTimeLimit) -# #记录离线总时间 -# curPlayer.SetOfflineMinutes(int(allOfflineMinutes)) -# GameWorld.DebugLog("设置离线奖励时间 %s,curOfflineMinutes=%s" % (allOfflineMinutes, curOfflineMinutes), curPlayer.GetPlayerID()) -# else: -# GameWorld.DebugLog("离线时间过短,不计入离线奖励!curOfflineMinutes=%s" % curOfflineMinutes, curPlayer.GetPlayerID()) -# -# #通知客户端离线时间 -# # curPlayer.Syn_OfflineTimeRefresh(int(curOfflineMinutes)) -# curPlayer.Syn_OfflineTimeQueryResult() -#=============================================================================== - return - -#--------------------------------------------------------------------- ##玩家在地图服务器中登录ok,初始化自己 #@param curPlayer 玩家实例 #@param tick 时间戳 @@ -1291,9 +1050,8 @@ if GameWorld.IsCrossServer(): curPlayer.SetForbiddenSyncClientState(False) - playerControl = PlayerControl.PlayerControl(curPlayer) - #刷新所有状态 - playerControl.ReCalcAllState() + olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer) + olPlayer.ReCalcAllAttr() if GameWorld.IsCrossServer(): curPlayer.SetForbiddenSyncClientState(True) @@ -1479,36 +1237,30 @@ #@return 返回值无意义 #@remarks 初始化玩家背包 def InitPlayerPack(curPlayer) : - itemManager = curPlayer.GetItemManager() - + #设置装备实际个数,默认最大个数 - curPack = itemManager.GetPack(IPY_GameWorld.rptEquip) - curPack.SetCount(curPack.GetMaxCount()) + PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptEquip, defaultMax=True, isSync=False) #初始化玩家背包 - PlayerControl.Init_ItemPack(curPlayer) + PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptItem) #初始化玩家仓库 #PlayerControl.Init_Warehouse(curPlayer) #初始化鉴定背包,默认最大个数用于存放主线掉落 - curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptIdentify) - curPack.SetCount(curPack.GetMaxCount()) - curPack.Sync_PackCanUseCount() + PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptIdentify, defaultMax=True) #初始化英雄背包 - PlayerControl.Init_HeroPack(curPlayer) + PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptHero) #初始化临时交换背包,默认最大个数 - curPack = itemManager.GetPack(ShareDefine.rptTempSwap) - curPack.SetCount(curPack.GetMaxCount()) + PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempSwap, defaultMax=True, isSync=False) #初始化临时存放背包,默认最大个数 - curPack = itemManager.GetPack(ShareDefine.rptTempItem) - curPack.SetCount(curPack.GetMaxCount()) + PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempItem, defaultMax=True, isSync=False) #初始化寻宝背包 - PlayerControl.Init_TreasurePack(curPlayer) + PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTreasure) #初始化神兽物品背包 #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem) @@ -1535,6 +1287,8 @@ #curPack = itemManager.GetPack(ShareDefine.rptPet) #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptPet)) #curPack.Sync_PackCanUseCount() + + ItemCommon.SyncPackBuyCnt(curPlayer) #通知玩家物品信息 __Sync_PackDetel(curPlayer) @@ -1692,9 +1446,7 @@ #======================================================================= #此时已经是下马状态不需要刷状态 但是需要通知客户端下马 PlayerHorse.PlayerRideHorseDown(curPlayer, False) - - PlayerTeam.PlayerLoginSetTeam(curPlayer, tick) - + #激活玩家(保证持续性Buff处理间隔) PlayerControl.SetIsNeedProcess(curPlayer, True) @@ -1753,13 +1505,7 @@ curPlayer.SetFaction(ChConfig.CampType_Neutral) BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_SkillID_Justice, tick) BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_SkillID_Evil, tick) - - - #再次请求双倍经验是否领取 - #PlayerDoubleExpSys.ChangeMapAfter_CalcDoubleExpTime(curPlayer, tick) - - #PlayerVip.SetStartCalcVIPTick(curPlayer, tick) - + #强制切换PK模式 initAttackModel = curMap.GetInitAttackModel() if curPlayer.GetAttackMode() != initAttackModel: @@ -1769,7 +1515,6 @@ PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer) PlayerYinji.OnLoadMap(curPlayer) - ItemControler.PlayerItemControler(curPlayer).RefreshStartEquipCount() # 刷新装备珍品星级 #EndLoadMap需放在最后, 0403 tagPlayerLoginLoadOK curPlayer.EndLoadMap() @@ -1861,7 +1606,7 @@ NotifyPlayerBasePoint(curPlayer, pointAttrIDList) playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.RefreshPlayerAttrState() - PlayerControl.SetLingGenMaxIndex(curPlayer) + #PlayerControl.SetLingGenMaxIndex(curPlayer) return #// B2 07 重置加点 #tagCMResetAttrPoint @@ -2409,7 +2154,6 @@ #下线了,将存储在字典中的真实XP值,设置给玩家,完成通知和存储 #curPlayer.SetXP(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue)) ####################################################################### - PlayerOnline.OnPlayerLogoff(curPlayer) #下线逻辑 PlayerControl.PlayerLeaveServer(curPlayer, tick) @@ -2420,8 +2164,6 @@ #流向记录玩家下线 DataRecordPack.DR_PlayerDisconnect(curPlayer) - #VIP时间 - #PlayerVip.CalcVIPTimeByTick(curPlayer, tick, False) #在线时间 PlayerOnlinePrize.CalcOnlineTime(curPlayer) #首充提示时间 @@ -2448,6 +2190,9 @@ #离线session EventReport.WriteEvent_session(curPlayer) + + #需放最后 + PlayerOnline.OnPlayerLogoff(curPlayer) return #--------------------------------------------------------------------- @@ -3024,11 +2769,7 @@ return elif rebornType == ChConfig.rebornType_UseItem: - if crossMapID == ChConfig.Def_FBMapID_CrossBattlefield: - rebornItemID = IpyGameDataPY.GetFuncCfg("CrossBattlefieldReborn", 1) - rebornItem = ItemCommon.FindItemInPackByItemID(curPlayer, rebornItemID, IPY_GameWorld.rptItem) - else: - rebornItem = ItemCommon.FindItemInPackByEffectEx(curPlayer, ChConfig.Def_Effect_Reborn) + rebornItem = ItemCommon.FindItemInPackByEffectEx(curPlayer, ChConfig.Def_Effect_Reborn) if not rebornItem: GameWorld.ErrLog("复活道具不足,无法原地复活! ", playerID) return @@ -3363,7 +3104,7 @@ # @param transportType 传送类型 # @return 是否vip等级限制 def TransportVipLvRestrict(curPlayer, transportType): - return PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FreeTransport) + return 0 @@ -3435,7 +3176,7 @@ #参考经验 rExp = PlayerControl.GetPlayerReExp(curPlayer) reLV = curPlayer.GetLV() #参考等级 - worldLvExpRate = PlayerWorldAverageLv.GetWorldAverageLvExpRate(curPlayer) #世界等级经验加成 + worldLvExpRate = 0 #经验公式 redeemExp = int(eval(recList[1])) @@ -3486,34 +3227,6 @@ # @param tick: 时间戳 # @return: None def ReceiveFamilyArrestAward(index, clientData, tick): - curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - arrestID = clientData.ArrestID - - bit = ShareDefine.Def_ArrestOverState_BitDic.get(arrestID) - if bit == None: - #没有这个家族悬赏任务 - GameWorld.DebugLog("没有这个家族悬赏任务 arrestID=%s" % arrestID) - return - - receiveState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyArrestAwardState) - - if receiveState & pow(2, bit): - #该任务奖励已经领取 - GameWorld.DebugLog("该任务奖励已经领取 arrestID=%s" % arrestID) - return - - if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FamilyArrestQueryState) == 1: - #已经在查询中, 不重复查询 - GameWorld.DebugLog("已经在查询中, 不重复查询 arrestID=%s" % arrestID) - return - - sendMsg = '%s' % arrestID - - #向GameServer请求该悬赏任务是否已经完成 - curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_FamilyArrest, 0, 'FamilyArrestAward', sendMsg, len(sendMsg)) - - #设置状态查询中 - curPlayer.SetDict(ChConfig.Def_PlayerKey_FamilyArrestQueryState, 1) return @@ -3547,26 +3260,6 @@ NetPackCommon.SendFakePack(curPlayer, awardReceiveState) return -## 领取奖励表奖励 -# @param None None -# @return None -def ClientPlayerGetReward(index, clientData, tick): - playerManager = GameWorld.GetPlayerManager() - curPlayer = playerManager.GetPlayerByIndex(index) - - # 背包空间不足 - if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem): - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [IPY_GameWorld.rptItem]) - return - - rewardType = clientData.RewardType - - #通知GameServer领取奖励 - resultName = str(rewardType) - GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'PlayerGetReward', - resultName, len(resultName)) - return - #//A5 04 玩家领取奖励 #tagCMPlayerGetReward # #struct tagCMPlayerGetReward @@ -3594,27 +3287,18 @@ # 活跃放置奖励 elif rewardType == ChConfig.Def_RewardType_ActivityPlace: PlayerActivity.GetActivityPlaceReward(curPlayer) - # 挂机奖励 - elif rewardType == ChConfig.Def_RewardType_Guaji: - PlayerGuaji.OnGetGuajiAward(curPlayer, dataEx) + # 仙树免费减时 + elif rewardType == ChConfig.Def_RewardType_TreeFreeTime: + PlayerTree.FreeReduceTreeLVTime(curPlayer) # 每日免费直购礼包 elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift: PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer) - # 仙盟联赛冠军仙盟每日俸禄奖励 - elif rewardType == ChConfig.Def_RewardType_ChampionFamilyDailyReward: - GameLogic_FamilyWar.GetChampionFamilyDailyReward(curPlayer) - # 仙魔之争胜利场数奖励 - elif rewardType == ChConfig.Def_RewardType_XMZZWinCnt: - GameLogic_XMZZ.GetXMZZWinPrize(curPlayer, dataEx) # 仙盟每日福利奖励 elif rewardType == ChConfig.Def_RewardType_FamilyDayAward: PlayerFamily.GetFamilyDayAward(curPlayer) # 玩家等级奖励 elif rewardType == ChConfig.Def_RewardType_LVAward: PlayerLVAward.GetPlayerLVAward(curPlayer, dataEx) - # 仙宝寻主奖励 - elif rewardType == ChConfig.Def_RewardType_XBXZ: - PlayerMagicWeapon.OnGetXBXZAward(curPlayer, dataEx) # 首充礼包奖励 elif rewardType == ChConfig.Def_RewardType_GoldGiftFirst: PlayerGoldGift.GetPlayerGoldGiftFirst(curPlayer, dataEx) @@ -3636,12 +3320,6 @@ # 领取boss复活活动奖励 elif rewardType == ChConfig.Def_RewardType_BossReborn: PlayerBossReborn.GetBossRebornActionAward(curPlayer, dataEx) - # 领取仙界盛典充值大礼 - elif rewardType == ChConfig.Def_RewardType_FCRecharge: - PlayerFairyCeremony.GetFCRechargeAward(curPlayer) - # 领取仙界盛典全民来嗨 - elif rewardType == ChConfig.Def_RewardType_FCParty: - PlayerFairyCeremony.GetFCPartyAward(curPlayer, dataEx) # 领取分包下载奖励 elif rewardType == ChConfig.Def_RewardType_DownLoad: GetDownloadAward(curPlayer, dataEx) @@ -3651,9 +3329,6 @@ # 功能开启奖励 elif rewardType == ChConfig.Def_RewardType_OpenFunc: GameFuncComm.GetFuncOpenAward(curPlayer, dataEx) - # 冰晶矿脉星级奖励 - elif rewardType == ChConfig.Def_RewardType_IceLodeStar: - GameLogic_IceLode.GetIceLodeStarAward(curPlayer, dataEx) # 领取周狂欢活动奖励 elif rewardType == ChConfig.Def_RewardType_WeekPartyAct: PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr) @@ -3663,12 +3338,6 @@ # 领取登录奖励活动奖励 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) @@ -3723,18 +3392,12 @@ # 轮回殿奖励 elif rewardType == ChConfig.Def_RewardType_LunhuidianAward: PlayerActLunhuidian.GetLunhuidianAward(curPlayer, dataEx, dataExStr) - #缥缈奇遇领取 - elif rewardType == ChConfig.Def_RewardType_FairyAdventuresAward: - PlayerFairyDomain.GetFairyAdventuresAward(curPlayer, dataEx, dataExStr) #历史累计充值领取 elif rewardType == ChConfig.Def_RewardType_HistoryChargeAward: PlayerGoldGift.OnGetHistoryRechargeAward(curPlayer, dataEx) #在线特惠充值额外奖励 elif rewardType == ChConfig.Def_RewardType_OnlineRechargeTH: PlayerCoin.OnGetOnlineRechargeTH(curPlayer) - #天星塔全服挑战层领奖 - elif rewardType == ChConfig.Def_RewardType_SkyTowerServerChallengeReward: - GameLogic_SkyTower.OnGetSkyTowerServerChallengeReward(curPlayer, dataEx, dataExStr) #创角奖励 elif rewardType == ChConfig.Def_RewardType_CreateRole: OnGetCreateRoleAward(curPlayer) @@ -3744,9 +3407,6 @@ #境界渡劫任务条件奖励 elif rewardType == ChConfig.Def_RewardType_RealmLVUpTask: PlayerPrestigeSys.GetRealmLVUpTaskAward(curPlayer, dataEx) - #仙盟boss伤害奖励 - elif rewardType == ChConfig.Def_RewardType_FamilyBossHurt: - GameLogic_FamilyBoss.GetFamilyBossHurtAward(curPlayer, dataEx, dataExStr) #打包直购礼包奖励 elif rewardType == ChConfig.Def_RewardType_DailyPackBuyGift: PlayerGoldGift.GetDailyPackBuyGift(curPlayer, dataEx) @@ -3756,9 +3416,6 @@ #战令奖励 elif rewardType == ChConfig.Def_RewardType_Zhanling: PlayerZhanling.GetZhanlingReward(curPlayer, dataEx, dataExStr) - #福地聚宝盆奖励 - elif rewardType == ChConfig.Def_RewardType_MineTreasure: - PlayerMineArea.GetMineTreasureAward(curPlayer, dataEx) #玩法前瞻奖励 elif rewardType == ChConfig.Def_RewardType_GameNotice: OnGiveAwardByClient(curPlayer, rewardType, ChConfig.Def_PDict_GameNoticeAwardState, IpyGameDataPY.GetFuncEvalCfg("GameNoticeReward", 1)) @@ -3924,7 +3581,6 @@ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if not curPlayer: return - BossHurtMng.OnQueryBossHurtList(curPlayer, clientData) return @@ -4398,3 +4054,50 @@ #PlayerControl.SetRealmDifficulty(curPlayer, clientData.RealmDifficulty) return +#// A0 08 查看通用记录 #tagCSViewGameRec +# +#struct tagCSViewGameRec +#{ +# tagHead Head; +# WORD RecType; //记录类型 +# DWORD RecID; //自定义记录ID +#}; +def OnViewGameRec(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + recType = clientData.RecType + recID = clientData.RecID + if recType not in ShareDefine.Def_GameRecTypeList: + return + if recType in ShareDefine.Def_ViewGameRecSelfList: + recID = curPlayer.GetPlayerID() + recTypeIDMgr = DBDataMgr.GetGameRecMgr().GetRecTypeIDMgr(recType, recID) + SyncGameRecInfo(curPlayer, recType, recID, recTypeIDMgr.GetDataList()) + return + +def SyncGameRecInfo(curPlayer, recType, recID, recDataList): + recList = [] + for recData in recDataList: + if not recData: + continue + rec = ChPyNetSendPack.tagSCGameRec() + rec.Time = recData.GetTime() + rec.Value1 = recData.GetValue1() + rec.Value2 = recData.GetValue2() + rec.Value3 = recData.GetValue3() + rec.Value4 = recData.GetValue4() + rec.Value5 = recData.GetValue5() + rec.Value6 = recData.GetValue6() + rec.Value7 = recData.GetValue7() + rec.Value8 = recData.GetValue8() + rec.UserData = recData.GetUserData() + rec.UserDataLen = len(rec.UserData) + recList.append(rec) + + clientPack = ChPyNetSendPack.tagSCGameRecInfo() + clientPack.Clear() + clientPack.RecType = recType + clientPack.RecID = recID + clientPack.RecList = recList + clientPack.Count = len(clientPack.RecList) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return -- Gitblit v1.8.0