| | |
| | | import ChConfig
|
| | | import GMCommon
|
| | | import DirtyList
|
| | | import CrossBillboard
|
| | | import PlayerBillboard
|
| | | import PlayerExam
|
| | | import PlayerControl
|
| | | import PlayerRecall
|
| | | import PlayerFamilyAction
|
| | | import PlayerUniversalGameRec
|
| | | import PlayerFamily
|
| | | import GameWorldOpenServerCampaign
|
| | | import ShareDefine
|
| | | import GameDataRecord
|
| | | import GameWorldShopItem
|
| | | import PlayerCompensation
|
| | | import PlayerFB
|
| | | import UpdatePlayerName
|
| | | import PlayerFamilyBoss
|
| | | import PlayerManorWar
|
| | | import GameWorldBoss
|
| | | import GameWorldFamilyWar
|
| | | #import PlayerFamilyTech
|
| | | import PlayerFamilyRedPacket
|
| | | import PlayerFBHelpBattle
|
| | | import PlayerFamilyStore
|
| | | import PlayerHorsePetBoss
|
| | | #import PlayerFamilyStore
|
| | | import PlayerFamilySWRH
|
| | | import GameWorldProcess
|
| | | import PlayerLVAward
|
| | |
| | | import PyGameData
|
| | | import PlayerTalk
|
| | | import PlayerStore
|
| | | import CrossYaomoBoss
|
| | | import CrossRealmPlayer
|
| | | import CrossRealmMsg
|
| | | import CrossRealmPK
|
| | | import CrossChampionship
|
| | | import CrossBattlefield
|
| | | import CrossActAllRecharge
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import AuctionHouse
|
| | | import PlayerFairyDomain
|
| | | import GameWorldSkyTower
|
| | | import GameWorldArena
|
| | | import GameWorldItem
|
| | | import PlayerAssist
|
| | | import PlayerLove
|
| | |
|
| | | import time
|
| | | import datetime
|
| | | import json
|
| | | #---------------------------------------------------------------------
|
| | | #全局变量
|
| | | #---------------------------------------------------------------------
|
| | |
| | | SyncPlayerCrossMapNPCInfo(curPlayer, mapID, npcIDList, mapNPCInfoDict)
|
| | | return
|
| | |
|
| | | serverGroupID = GameWorld.GetServerGroupID()
|
| | | zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID)
|
| | | if not zoneIpyData:
|
| | | return
|
| | | zoneID = zoneIpyData.GetZoneID()
|
| | | |
| | | # 本服缓存超时,发送跨服服务器查询
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryNPCInfo, {"PlayerID":playerID, "MapID":mapID, "NPCIDList":npcIDList})
|
| | | dataMsg = {"PlayerID":playerID, "ZoneID":zoneID, "MapID":mapID, "NPCIDList":npcIDList}
|
| | | CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryNPCInfo, dataMsg)
|
| | | return
|
| | |
|
| | | def ClientServerMsg_QueryNPCInfo(serverGroupID, msgData):
|
| | | ## 收到子服请求查看跨服地图NPC个数信息
|
| | |
|
| | | zoneID = msgData["ZoneID"]
|
| | | mapID = msgData["MapID"]
|
| | | zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(mapID, serverGroupID)
|
| | | |
| | | zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(zoneID, mapID)
|
| | | if not zoneIpyData:
|
| | | return
|
| | | realMapID = zoneIpyData.GetMapID()
|
| | |
| | | callName = pack.GetCallName()
|
| | | resultName = pack.GetResultName() #[queryid, 人气值, 物品ID]
|
| | |
|
| | | if callName == "PlayerRealLoginOK":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | loginMsg = eval(resultName)
|
| | | ChPlayer.DoPlayerRealLoginOK(curPlayer, loginMsg, tick)
|
| | | return
|
| | | |
| | | if callName == "SendMail":
|
| | | title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail, moneySource = eval(resultName)
|
| | | title, content, getDays, playerIDList, addItemList, gold, goldPaper, silver, detail, moneySource, crossMail = eval(resultName)
|
| | | limitTime = str(GameWorld.GetDatetimeByDiffDays(getDays))
|
| | | limitTime = limitTime.split(".")[0]
|
| | | PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver, detail=detail, moneySource=moneySource)
|
| | | PlayerCompensation.SendPersonalItemMail(title, content, limitTime, playerIDList, addItemList, gold, goldPaper, silver, detail=detail, moneySource=moneySource, crossMail=crossMail)
|
| | | return
|
| | |
|
| | | if callName == "SendMailBatch":
|
| | | PlayerCompensation.SendPersonalItemMailBatch(eval(resultName))
|
| | | return
|
| | | |
| | | if callName == "SendEntireMail":
|
| | | mailTypeKey, getDays, limitLV, limitLVType, addItemList, paramList, gold, goldPaper, silver, detail, moneySource = eval(resultName)
|
| | | PlayerCompensation.SendEntireMail(mailTypeKey, getDays, limitLV, limitLVType, addItemList, paramList, gold, goldPaper, silver, detail, moneySource)
|
| | | return
|
| | |
|
| | | if callName == "SendMsgToCrossServer":
|
| | |
| | | PlayerControl.CrossNotify(serverGroupIDList, crossNotifyList)
|
| | | return
|
| | |
|
| | | if callName == "DynamicLineMapStateChange":
|
| | | PlayerFB.OnCrossDynamicLineStateChange(eval(resultName))
|
| | | return
|
| | | |
| | | if callName == "DynamicLineMapInitOK":
|
| | | PlayerFB.OnCrossDynamicMapReset(eval(resultName))
|
| | | return
|
| | | |
| | | if callName == "CommMapServerInitOK":
|
| | | dataMapID, lineID, realMapID, copyMapID = eval(resultName)
|
| | | PyGameData.g_commMapLineInfo[(dataMapID, lineID)] = (realMapID, copyMapID)
|
| | |
| | | if callName == "UpdateBillboard": #地图服务器更新排行榜
|
| | | PlayerBillboard.MapServer_UpdateBillboard(eval(resultName), tick)
|
| | | return
|
| | |
|
| | | if callName == "UpdateCrossBillboard": #地图服务器更新跨服排行榜
|
| | | CrossBillboard.MapServer_UpdateCrossBillboard(eval(resultName))
|
| | | return
|
| | |
|
| | | if callName == 'PyAddFamilyInfoValue': #地图服务器增加战盟信息值
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | PlayerFamily.MapServer_PyAddFamilyInfoValue(curPlayer, eval(resultName))
|
| | | return
|
| | | |
| | | if callName == 'UpdRechargeRankBillboard': #地图服务器更新玩家通知特惠累计充值排行榜
|
| | | PlayerBillboard.MapServer_UpdateRechargeRankBillboard(eval(resultName))
|
| | | return
|
| | | |
| | | if callName == 'UpdCostRankBillboard': #地图服务器更新玩家通知特惠累计消费排行榜
|
| | | PlayerBillboard.MapServer_UpdateCostRankBillboard(eval(resultName))
|
| | | return
|
| | |
|
| | | if callName == 'UpdateTotalRechargeBillboard': #地图服务器更新玩家充值总数排行榜
|
| | |
| | | PlayerExam.MapServer_ExitAction(srcPlayerID)
|
| | | return
|
| | |
|
| | | if callName == 'FuncOpen':
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | PlayerControl.DoFuncOpenLogic(curPlayer, eval(resultName))
|
| | | return
|
| | | |
| | | if callName == 'TeamNotify':
|
| | | #队伍通知
|
| | | teamID = pack.GetQueryID()
|
| | | msg, msgList = eval(resultName)
|
| | |
|
| | | PlayerControl.TeamNotify(teamID, msg, msgList)
|
| | | return
|
| | | |
| | | if callName == 'ReveiveRecallAward':
|
| | | #召回奖励领取情况
|
| | | PlayerRecall.ReveiveRecallAwardResult(srcPlayerID, resultName)
|
| | | return
|
| | |
|
| | | if callName == "NotifyTruckDestroy":
|
| | |
| | | GameDataRecord.ChangeCoinCnt(eval(resultName))
|
| | | return
|
| | |
|
| | | #跨服排位PK战斗结算
|
| | | if callName == "CrossChampionshipPKOver":
|
| | | CrossChampionship.MapServer_CrossChampionshipPKOver(eval(resultName), tick)
|
| | | return
|
| | | |
| | | #跨服匹配PK战斗结算
|
| | | if callName == "CrossPKOver":
|
| | | CrossRealmPK.MapServer_CrossPKOver(eval(resultName), tick)
|
| | |
| | | #跨服注册结果
|
| | | if callName == "CrossRealmReg":
|
| | | CrossRealmPlayer.OnCrossRealmRegOK(srcPlayerID, eval(resultName), tick)
|
| | | return
|
| | | |
| | | # 跨服战场结算
|
| | | if callName =="CrossBattlefieldOver":
|
| | | CrossBattlefield.MapServer_CrossBattlefieldOver(eval(resultName))
|
| | | return
|
| | | |
| | | # 跨服妖魔boss伤害结算
|
| | | if callName =="CrossYaomoBossHurtInfo":
|
| | | CrossYaomoBoss.MapServer_CrossYaomoBossHurtInfo(eval(resultName))
|
| | | return
|
| | | |
| | | # 跨服全民充值
|
| | | if callName == "CrossActAllRecharge":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | CrossActAllRecharge.MapServer_CrossActAllRecharge(curPlayer, eval(resultName))
|
| | | return
|
| | |
|
| | | #py喇叭聊天
|
| | |
| | |
|
| | | return
|
| | |
|
| | | # 领地争夺战拔旗消耗
|
| | | if callName =="ManorWarGetFlagCost":
|
| | | PlayerManorWar.ManorWarGetFlagCost(eval(resultName))
|
| | | return
|
| | | |
| | | # 领地争夺战获胜战盟
|
| | | if callName =="ManorWarWinner":
|
| | | PlayerManorWar.DoMapServerManorWarWinner(eval(resultName))
|
| | | return
|
| | | |
| | | # 战盟副本boss开始、被击杀
|
| | | if callName =="FamilyBossFBState":
|
| | | PlayerFamilyBoss.FamilyBossOnKilled(eval(resultName), tick)
|
| | |
| | | GameWorldProcess.UpdGlobalKillCount(eval(resultName))
|
| | | return
|
| | |
|
| | | # 自定义商店全服限购次数清空
|
| | | if callName =="ShopItemClearBuyCnt":
|
| | | shopID = eval(resultName)[0]
|
| | | GameWorldShopItem.DoShopItemClearBuyCnt(shopID)
|
| | | return
|
| | | |
| | | # 新手指导员天数
|
| | | if callName =="FreshmanGuiderDay":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | |
| | | guiderDay = eval(resultName)[0]
|
| | | PlayerControl.SetFreshmanGuiderDay(curPlayer, guiderDay)
|
| | | # 缓存装备广播信息中的装备明细信息
|
| | | if callName == "NotifyEquipDetailInfo":
|
| | | GameWorldItem.OnCacheNotifyEquipDetailInfo(json.loads(resultName), tick)
|
| | | return
|
| | |
|
| | | #生成仙盟红包
|
| | |
| | | #境界渡劫副本结束
|
| | | if callName =="DuJieFBOver":
|
| | | PlayerDuJie.DoDuJieFBOver(eval(resultName))
|
| | | return
|
| | | #境界提升全服buff
|
| | | if callName =="RealmUpAddBuff":
|
| | | PlayerDuJie.DoRealmUpAddBuff(resultName)
|
| | | return
|
| | |
|
| | | # 组队副本队长请求进入询问结果
|
| | |
| | | AuctionHouse.MapServer_AuctionHouseLogic(curPlayer, eval(resultName), tick)
|
| | | return
|
| | |
|
| | | # 协助
|
| | | if callName == "PlayerAssist":
|
| | | curPlayer = None
|
| | | if srcPlayerID:
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | PlayerAssist.MapServer_PlayerAssistLogic(curPlayer, eval(resultName), tick)
|
| | | return
|
| | | |
| | | if callName == "TeamMemFuncData":
|
| | | PlayerTeam.MapServer_TeamMemFuncData(srcPlayerID, eval(resultName))
|
| | | return
|
| | |
|
| | | #封魔坛结束
|
| | | if callName == "SealDemonOver":
|
| | | playerID, lineID, rank = eval(resultName)
|
| | | PyDataManager.GetSealDemonRecordManager().UpdateSealDemonRecord(playerID,lineID,rank)
|
| | | return
|
| | | # #封魔坛结束
|
| | | # if callName == "SealDemonOver":
|
| | | # playerID, lineID, rank = eval(resultName)
|
| | | # PyDataManager.GetSealDemonRecordManager().UpdateSealDemonRecord(playerID,lineID,rank)
|
| | | # return
|
| | |
|
| | | #查询副本功能线路人数
|
| | | if callName == "FBLinePlayerCnt":
|
| | |
| | | if callName =="AllFamilyBossOver":
|
| | | PlayerFamilyBoss.AllFamilyBossKilled()
|
| | | return
|
| | | #骑宠BOSS结束
|
| | | if callName =="HorsePetBossOver":
|
| | | PlayerHorsePetBoss.HorsePetBossKilled(int(resultName))
|
| | | return
|
| | | #缥缈仙域事件出现
|
| | | if callName =="AddFairyDomainEvent":
|
| | | PlayerFairyDomain.AddFairyDomainEvent(eval(resultName))
|
| | | return
|
| | |
|
| | | #---return分割线-----------------------------------------------------------------
|
| | |
|
| | |
| | | return
|
| | | resultName = '%s' % ret
|
| | |
|
| | | if callName == 'SendInviteCode':
|
| | | #邀请码验证回复
|
| | | resultName = PlayerRecall.PlayerRecall_InviteCode(srcPlayerID, pack.GetQueryID())
|
| | | |
| | | if callName == 'OpenServerCampaignAward':
|
| | | #可否领取开服活动奖励
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | |
| | | if ret == None:
|
| | | return
|
| | | resultName = '%s' % ret
|
| | | |
| | | # 战盟仓库
|
| | | if callName == "FamilyStore":
|
| | | |
| | | # 竞技场
|
| | | if callName =="Arena":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | if not curPlayer:
|
| | | return
|
| | | resultName = '%s' % PlayerFamilyStore.DoMapServerFamilyStore(curPlayer, eval(resultName), tick)
|
| | | |
| | | # 自定义商店物品
|
| | | if callName == "ShopItem":
|
| | | ret = GameWorldArena.MapServer_Arena(curPlayer, eval(resultName))
|
| | | resultName = '%s' % ret if ret != None else '' # 需要重置间隔,每次都回复
|
| | | |
| | | # 情缘
|
| | | if callName =="Love":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | resultName = '%s' % GameWorldShopItem.DoShopItemQueryResult(curPlayer, eval(resultName))
|
| | | |
| | | # 玩家天梯奖励
|
| | | if callName == "HighLadderReward":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | import HighLadder
|
| | | needResult, resultName = HighLadder.MapServer_HighLadderReward(curPlayer, eval(resultName))
|
| | | if not needResult:
|
| | | if not curPlayer:
|
| | | return
|
| | | ret = PlayerLove.MapServer_Love(curPlayer, eval(resultName))
|
| | | if ret == None:
|
| | | return
|
| | | resultName = '%s' % ret
|
| | | |
| | | # 天星塔
|
| | | if callName == "SkyTower":
|
| | | ret = GameWorldSkyTower.MapServer_SkyTowerInfo(eval(resultName))
|
| | | if ret == None:
|
| | | return
|
| | | resultName = '%s' % ret
|
| | | |
| | | # # 战盟仓库
|
| | | # if callName == "FamilyStore":
|
| | | # curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | # if not curPlayer:
|
| | | # return
|
| | | # resultName = '%s' % PlayerFamilyStore.DoMapServerFamilyStore(curPlayer, eval(resultName), tick)
|
| | |
|
| | | srcPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | |
|