|  |  |  | 
|---|
|  |  |  | # @change: "2015-01-14 00:30" hxp 增加服务器平台区服ID获取 | 
|---|
|  |  |  | # @change: "2015-01-14 20:30" hxp 增加CanHappen函数 | 
|---|
|  |  |  | # @change: "2015-06-08 20:30" hxp 增加获取channelCode | 
|---|
|  |  |  | # @change: "2015-09-24 16:00" hxp 增加IsMergeOpen | 
|---|
|  |  |  | # @change: "2015-10-22 23:00" hxp 增加获取子服serverID | 
|---|
|  |  |  | # @change: "2016-03-28 17:00" hxp 增加创角改名GetPlayerFullName | 
|---|
|  |  |  | # @change: "2016-07-18 19:00" hxp 增加获取平台账号 | 
|---|
|  |  |  | 
|---|
|  |  |  | import IpyGameDataPY | 
|---|
|  |  |  | import PyGameData | 
|---|
|  |  |  | import ReadChConfig | 
|---|
|  |  |  | import PlayerDBGSEvent | 
|---|
|  |  |  | import ConfigParser | 
|---|
|  |  |  | import GameConfig | 
|---|
|  |  |  | import ShareDefine | 
|---|
|  |  |  | 
|---|
|  |  |  | import time | 
|---|
|  |  |  | import random | 
|---|
|  |  |  | import copy | 
|---|
|  |  |  | import urllib | 
|---|
|  |  |  | #import psyco | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | GameWorldData = IPY_GameServer.IPY_GameWorld() | 
|---|
|  |  |  | 
|---|
|  |  |  | global GameWorldData | 
|---|
|  |  |  | return GameWorldData.GetBourseManager() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 竞技场管理器 | 
|---|
|  |  |  | #  @param | 
|---|
|  |  |  | #  @return HightLadderMgr | 
|---|
|  |  |  | #  @remarks 函数详细说明. | 
|---|
|  |  |  | def GetHightLadderMgr(): | 
|---|
|  |  |  | global GameWorldData | 
|---|
|  |  |  | return GameWorldData.GetHighLadderManager() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## GM工具补偿管理器 | 
|---|
|  |  |  | #  @param | 
|---|
|  |  |  | #  @return HightLadderMgr | 
|---|
|  |  |  | 
|---|
|  |  |  | def GetPlatform(): | 
|---|
|  |  |  | return ReadChConfig.GetPyMongoConfig("platform", "PlatformName") | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ##获得当前服务器ID | 
|---|
|  |  |  | # @param 无 | 
|---|
|  |  |  | # @return | 
|---|
|  |  |  | def GetServerID(): | 
|---|
|  |  |  | return ToIntDef(GetServerSID()[1:], 0) | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  | # ##获得当前服务器ID | 
|---|
|  |  |  | # # @param 无 | 
|---|
|  |  |  | # # @return | 
|---|
|  |  |  | # def GetServerID(): | 
|---|
|  |  |  | #    return ToIntDef(GetServerSID()[1:], 0) | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetServerSID(): | 
|---|
|  |  |  | ##获得当前服务器ID, 带s的 | 
|---|
|  |  |  | return ReadChConfig.GetPyMongoConfig("platform", "ServerID") | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  | # def GetServerSID(): | 
|---|
|  |  |  | #    ##获得当前服务器ID, 带s的 | 
|---|
|  |  |  | #    return ReadChConfig.GetPyMongoConfig("platform", "ServerID") | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Def_AccID_Split_Sign = "@" | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | mainServerID = ToIntDef(ReadChConfig.GetPyMongoConfig("platform", "%sMainServerID" % accIDPlatform), None) | 
|---|
|  |  |  | if mainServerID != None: | 
|---|
|  |  |  | return mainServerID | 
|---|
|  |  |  | return GetServerID() | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  | 
|---|
|  |  |  | @param dateInfo: 运营活动表配置的日期信息, 如果是纯数字代表开服天 | 
|---|
|  |  |  | @param openServerDay: 当前开服天 | 
|---|
|  |  |  | ''' | 
|---|
|  |  |  | if not dateInfo.isdigit(): | 
|---|
|  |  |  | if dateInfo.startswith("Mix"): | 
|---|
|  |  |  | diffDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + 1 | 
|---|
|  |  |  | actionServerDay = int(dateInfo[3:]) | 
|---|
|  |  |  | elif not dateInfo.isdigit(): | 
|---|
|  |  |  | return dateInfo | 
|---|
|  |  |  | actionServerDay = int(dateInfo) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | diffDay = openServerDay | 
|---|
|  |  |  | actionServerDay = int(dateInfo) | 
|---|
|  |  |  | curDateTime = datetime.datetime.today() | 
|---|
|  |  |  | actionDateTime = curDateTime + datetime.timedelta(days=(actionServerDay-openServerDay)) | 
|---|
|  |  |  | actionDateTime = curDateTime + datetime.timedelta(days=(actionServerDay-diffDay)) | 
|---|
|  |  |  | return "%d-%d-%d" % (actionDateTime.year, actionDateTime.month, actionDateTime.day) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ##获得系统时间 | 
|---|
|  |  |  | 
|---|
|  |  |  | def GetDatetimeBySubDays(diffDays): | 
|---|
|  |  |  | return datetime.datetime.today() - datetime.timedelta(days = diffDays) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 是否跨服服务器 | 
|---|
|  |  |  | #  @param None None | 
|---|
|  |  |  | #  @return | 
|---|
|  |  |  | def IsMergeServer(): | 
|---|
|  |  |  | config = GameConfig.GetConfig() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return config.get('IsMergeWarServe', 0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 是否开启跨服活动 | 
|---|
|  |  |  | #  @param None None | 
|---|
|  |  |  | #  @return | 
|---|
|  |  |  | def IsMergeOpen(): | 
|---|
|  |  |  | config = GameConfig.GetConfig() | 
|---|
|  |  |  | # 如果跨服服务器IP有配置, 或本身就是跨服服务器, 则代表开启 | 
|---|
|  |  |  | return True if (config.get('MergeServerIP') or config.get('IsMergeWarServe')) else False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def IsCrossServer(): | 
|---|
|  |  |  | ## 是否跨服服务器 | 
|---|
|  |  |  | return ToIntDef(ReadChConfig.GetPyMongoConfig("Merge", "IsMergeServer"), 0) | 
|---|
|  |  |  | 
|---|
|  |  |  | def IsCrossRealmOpen(): | 
|---|
|  |  |  | ## 是否开启跨服活动 | 
|---|
|  |  |  | return ReadChConfig.GetPyMongoConfig("Merge", "MergeServerIP") or IsCrossServer() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetCrossZoneName(): | 
|---|
|  |  |  | ## 跨服服务器分区名,标记一起跨服分区的名字,配置在跨服服务器,子服不用配置,由跨服服务器同步 | 
|---|
|  |  |  | if IsCrossServer(): | 
|---|
|  |  |  | return ReadChConfig.GetPyMongoConfig("Merge", "CrossZoneName") | 
|---|
|  |  |  | return PyGameData.g_crossZoneName | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 获取玩家的区服名,仅在跨服有效 | 
|---|
|  |  |  | #  @param curPlayer 玩家实例 | 
|---|
|  |  |  | 
|---|
|  |  |  | except: | 
|---|
|  |  |  | return inputText | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return inputText | 
|---|
|  |  |  | return inputText | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 向运维发送邮件,用于需要紧急处理的信息 | 
|---|
|  |  |  | # 此处不包含服务器报错的汇报 | 
|---|
|  |  |  | def SendGameStateMail(msgInfo): | 
|---|
|  |  |  | # 使用方式 向OpenStateUrl 发送Type为GameWarning,那么就会收到一封游戏内容警告邮件,信息为MsgInfo | 
|---|
|  |  |  | getUrl = ReadChConfig.GetPyMongoConfig("EventReport", "OpenStateUrl") | 
|---|
|  |  |  | groupID = ReadChConfig.GetPyMongoConfig("platform", "GroupID") | 
|---|
|  |  |  | userDBName = ReadChConfig.GetPyMongoConfig("connect", "USER_DB_NAME") | 
|---|
|  |  |  | getUrl = getUrl + "?Type=GameWarning&groupID=%s&userDBName=%s&MsgInfo=%s"%(groupID, userDBName, urllib.quote_plus(msgInfo)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl) | 
|---|
|  |  |  |  | 
|---|