#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.GMT_Worship # # @todo:ºǫ́¹ÜÀíĤ°Ý # @author hxp # @date 2024-07-02 # @version 1.0 # # ÏêϸÃèÊö: ºǫ́¹ÜÀíĤ°Ý # #------------------------------------------------------------------------------- #"""Version = 2024-07-02 16:30""" #------------------------------------------------------------------------------- import GMCommon import ChConfig import GameWorship import PyDataManager import PlayerViewCache import IpyGameDataPY import ShareDefine import GameWorld ## Ö´ÐÐÂß¼­ # @param curPlayer µ±Ç°Íæ¼Ò # @param gmCmdDict: ÃüÁî×Öµä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(orderId, gmCmdDict): GameWorld.Log("GMT_Worship %s" % gmCmdDict) queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '') playerFind = gmCmdDict.get(GMCommon.Def_GMKey_PlayerFind, '') worshipType = GameWorld.ToIntDef(gmCmdDict.get('worshipType', ''), 0) worshipValue = GameWorld.ToIntDef(gmCmdDict.get('worshipValue', ''), 0) zoneID = GameWorld.ToIntDef(gmCmdDict.get('zoneID', ''), 0) days = GameWorld.ToIntDef(gmCmdDict.get('days', ''), 0) opType = gmCmdDict.get('opType', '') if not opType or not worshipType: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr) return if opType == "view": worshipList = __GetServerWorshipList() GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success, {"WorshipList":worshipList}) return if worshipType in ShareDefine.Def_WorshipTypeCross: if not GameWorld.IsCrossServer(): GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "player run in cross server.") return else: if GameWorld.IsCrossServer(): GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "do not run in cross server.") return ipyData = IpyGameDataPY.GetIpyGameData("Worship", worshipType, worshipValue) if not ipyData: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "worshipType value ipyData is not exist.") return playerManager = GameWorld.GetPlayerManager() if queryType == "playerID": tagPlayerID = GameWorld.ToIntDef(playerFind, 0) else: if queryType == GMCommon.Def_GMKey_PlayerAccID: queryType = ChConfig.queryType_sqtPlayerByAccID tagPlayer = playerManager.FindPlayerByAccID(str(playerFind)) elif queryType == GMCommon.Def_GMKey_PlayerName: queryType = ChConfig.queryType_sqtPlayerByName tagPlayer = playerManager.FindPlayerByName(str(playerFind)) else: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr) return if not tagPlayer: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_PlayerOfLine) return tagPlayerID = tagPlayer.GetPlayerID() cacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(tagPlayerID)) if not cacheDict: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_NoTag, "can not found player view cache") return {} Name = cacheDict.get("Name", "") AccID = cacheDict.get("AccID", "") if opType == "add": if not GameWorship.AddWorshipPlayer(tagPlayerID, worshipType, worshipValue, days, zoneID): GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Unknow, "add error.") return elif opType == "del": GameWorship.DelWorshipPlayer(worshipType, worshipValue, tagPlayerID) else: GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr) return worshipList = __GetServerWorshipList() GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success, {"AccID":AccID, "Name":Name, "PlayerID":tagPlayerID, "WorshipList":worshipList}) return def __GetServerWorshipList(): worshipList = [] playerRecMgr = PyDataManager.GetDBPlayerRecDataManager() recDict = playerRecMgr.GetPlayerRecDataDict(ShareDefine.Def_PlayerRecType_WorshipPlayer) for recDataList in recDict.values(): for recData in recDataList: playerInfo = GameWorship.GetModelShowInfo(recData) worshipList.append({"PlayerID":recData.GetPlayerID(), "AddTime":GameWorld.ChangeTimeNumToStr(recData.GetTime()), "WorshipType":GameWorship.GetWorshipType(recData), "WorshipValue":GameWorship.GetWorshipValue(recData), "Days":GameWorship.GetWorshipDays(recData), "ZoneID":GameWorship.GetWorshipZoneID(recData), "AccID":playerInfo.get("AccID", ""), "Name":playerInfo.get("Name", ""), }) return worshipList