#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.Zhenbaoge # # @todo:Õ䱦¸ó # @author hxp # @date 2024-10-29 # @version 1.0 # # ÏêϸÃèÊö: Õ䱦¸ó # #------------------------------------------------------------------------------- #"""Version = 2024-10-29 17:30""" #------------------------------------------------------------------------------- import ChConfig import GameWorld import CrossPlayer import PlayerControl import PlayerFamilyZhenbaoge import PlayerFamily import DBDataMgr import random import time def GetGMServerIDList(curPlayer): ## »ñÈ¡ÃüÁî¶îÍâ·¢Ë͵½ÆäËû·þÎñÆ÷£¬Èç¿ç·þ crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID() if crossServerID: GameWorld.DebugAnswer(curPlayer, "±¾·þ¹«»áÒÑ»¥Í¨¿ç·þID:%s" % crossServerID) return [crossServerID] GameWorld.DebugAnswer(curPlayer, "±¾·þ¹«»áδ»¥Í¨") return [] def OnExec(curPlayer, msgList): isMainServer = GameWorld.IsMainServer() if not msgList: if not isMainServer: return GameWorld.DebugAnswer(curPlayer, "-----%s-----" % GameWorld.GetCurrentDataTimeStr()) GameWorld.DebugAnswer(curPlayer, "ÖØÖù«»áÕ䱦¸ó: Zhenbaoge 0") GameWorld.DebugAnswer(curPlayer, "ÖØÖýñÈÕ״ֵ̬: Zhenbaoge d") GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍ˹«»áʱ¼ä: Zhenbaoge ft x·ÖÖÓǰ") GameWorld.DebugAnswer(curPlayer, "ÐÂÔö¼Ù¿³¼ÛÊý¾Ý: Zhenbaoge ´ÎÊý [Ëæ»úAÖµ ÖÁBÖµ]") GameWorld.DebugAnswer(curPlayer, "ABֵûÓÐÌîÔò°´³£¹æ¿³¼Û¼Û¸ñ¼ÆËã") return crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID()) if not crossPlayer: return familyID = crossPlayer.GetFamilyID() if not familyID: GameWorld.DebugAnswer(crossPlayer, "ûÓÐÏÉÃË") return value1 = msgList[0] # ĬÈϱ¾·þÖ´ÐÐµÄ if value1 == "d": if not isMainServer: return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 0) PlayerFamilyZhenbaoge.Sync_ZhenbaogeInfo(curPlayer) GameWorld.DebugAnswer(curPlayer, "ÖØÖÃÕ䱦¸óÍæ¼Ò½ñÈÕ״̬OK") return elif value1 == "ft": if not isMainServer: return minutes = msgList[1] if len(msgList) > 1 else 0 leaveFamilyTimeEx = int(time.time()) - minutes * 60 PlayerControl.SetLeaveFamilyTimeEx(curPlayer, leaveFamilyTimeEx) GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍËÏÉÃËʱ¼ä:%s" % GameWorld.ChangeTimeNumToStr(leaveFamilyTimeEx)) return if isMainServer: crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID() if crossServerID: # ±¾·þ¹«»áÒÑ»¥Í¨²»ÔÙÖ´Ðб¾·þÃüÁî return # ±¾·þ¡¢¿ç·þͨÓà familyMgr = DBDataMgr.GetFamilyMgr() curFamily = familyMgr.FindFamily(familyID) if not curFamily: GameWorld.DebugAnswer(crossPlayer, "Íæ¼Òδ¼ÓÈ빫»á!") return if GameWorld.IsCrossServer(): zoneID = familyMgr.GetFamilyZoneID(familyID) GameWorld.DebugAnswer(crossPlayer, "¿ç·þ¹«»áID:%s,zoneID=%s" % (familyID, zoneID)) if value1 == 0: PlayerFamilyZhenbaoge.OnZhenbaogeReset(curFamily) GameWorld.DebugAnswer(crossPlayer, "ÖØÖÃÏÉÃËÕ䱦¸óOK") return #Ìí¼Ó¼Ù¿³¼Û gActionData = PlayerFamilyZhenbaoge.GetZhenbaogeActionData(familyID, PlayerFamilyZhenbaoge.ActionGlobalID) if not gActionData: GameWorld.DebugAnswer(crossPlayer, "ÇëÏÈÖØÖÃÕ䱦¸ó") return familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, PlayerFamilyZhenbaoge.ActionType) actionCount = familyAction.Count() fackCount = value1 randValue1 = msgList[1] if len(msgList) > 1 else 0 randValue2 = msgList[2] if len(msgList) > 2 else 0 syncActionDataList = [gActionData] startFackID = 1000 + actionCount FakeName = GameWorld.GbkToCode("¼ÙÃû×Ö") for fackID in range(startFackID, startFackID + fackCount): playerID = fackID playerName = "%s%s" % (FakeName, fackID) if randValue1 and randValue2 and randValue1 <= randValue2: cutPrice = random.randint(randValue1, randValue2) else: cutPrice = PlayerFamilyZhenbaoge.CalcCutPrice(curFamily, gActionData, playerID) if not cutPrice: continue actionData = PlayerFamilyZhenbaoge.AddCutPrice(familyID, playerID, playerName, cutPrice, gActionData, False) syncActionDataList.append(actionData) nowPrice = PlayerFamilyZhenbaoge.GetFAPriceFinal(gActionData) GameWorld.DebugAnswer(crossPlayer, "¿³¼ÛÈË´Î:%s,¿³¼Û:%s,ÏÖ¼Û:%s" % (fackID % 1000, cutPrice, nowPrice)) PlayerFamily.SendFamilyAction(syncActionDataList) nowPrice = PlayerFamilyZhenbaoge.GetFAPriceFinal(gActionData) GameWorld.DebugAnswer(crossPlayer, "Ìí¼Ó¼Ù¿³¼ÛÊý:%s,×Ü¿³¼ÛÊý:%s,µ±Ç°¼Û¸ñ:%s" % (fackCount, familyAction.Count() - 1, nowPrice)) return