#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.Taofa # # @todo:¹«»áÌÖ·¥ # @author hxp # @date 2025-10-24 # @version 1.0 # # ÏêϸÃèÊö: ¹«»áÌÖ·¥ # #------------------------------------------------------------------------------- #"""Version = 2025-10-24 19:00""" #------------------------------------------------------------------------------- import ChConfig import GameWorld import ShareDefine import CreateFamily import PlayerControl import PlayerFamilyTaofa import PlayerFamily import DBDataMgr import random import time def OnExec(curPlayer, msgList): if not msgList: GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr()) GameWorld.DebugAnswer(curPlayer, "ÖØÖù«»áÌÖ·¥: Taofa 0") GameWorld.DebugAnswer(curPlayer, "ÉèÖò¼Õó²ã¼¶: Taofa z ²ã¼¶ [Ê£ÓàÃë]") GameWorld.DebugAnswer(curPlayer, "ÉèÖõ±Ç°Å­Æø: Taofa a Å­Æø") GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÌÖ·¥´ÎÊý: Taofa c ÒÑÌÖ·¥´ÎÊý ÎïÆ·´ÎÊý") GameWorld.DebugAnswer(curPlayer, "ÉèÖñ¦ÏäÁìÈ¡: Taofa b ÒÑÁìÈ¡±¦Ïä δÁìÈ¡") GameWorld.DebugAnswer(curPlayer, "ÉèÖñ¦Ïäʱ¼ä: Taofa t ¼¸Ãëǰͳ¼ÆµÄ") GameWorld.DebugAnswer(curPlayer, "ÉèÖñ¦Ïä¹±Ï×: Taofa g Òѹ±Ï×±¦Ïä [ÀÛ¼ÆÉ˺¦ ÀúÊ·É˺¦]") GameWorld.DebugAnswer(curPlayer, "Ôö¼Ó³ÉÔ±ÌÖ·¥: Taofa m ÈËÊý [É˺¦ÖµA µ½B Å­¹¥¸ÅÂÊ]") GameWorld.DebugAnswer(curPlayer, "´´½¨ÏÉÃËÏà¹ØÊ¹ÓÃÃüÁî: CreateFamily") return familyID = curPlayer.GetFamilyID() if not familyID: GameWorld.DebugAnswer(curPlayer, "ûÓÐÏÉÃË") return curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID) if not curFamily: return value1 = msgList[0] if value1 == 0: PlayerFamilyTaofa.OnTaofaReset(curFamily) PlayerFamilyTaofa.OnTaofaResetPlayer(curPlayer) GameWorld.DebugAnswer(curPlayer, "ÖØÖù«»áÌÖ·¥OK") return if value1 == "z": gLayer = msgList[1] if len(msgList) > 1 else 0 remainSeconds = msgList[2] if len(msgList) > 2 else 3600 gEndTime = int(time.time()) + remainSeconds familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, PlayerFamilyTaofa.ActionType) gActionData = familyAction.GetActionDataByValue1(PlayerFamilyTaofa.ActionGlobalID, True) PlayerFamilyTaofa.SetFABuzhenLayer(gActionData, gLayer) PlayerFamilyTaofa.SetFABuzhenEndTime(gActionData, gEndTime) PlayerFamily.SendFamilyAction(gActionData) GameWorld.DebugAnswer(curPlayer, "²¼Õó²ã:%s,µ½ÆÚ:%s" % (gLayer, GameWorld.ChangeTimeNumToStr(gEndTime))) return # ÐÂÔö³ÉÔ±ÌÖ·¥ if value1 == "m": __AddMemTaofaAtk(curPlayer, curFamily, msgList) return elif value1 == "a": anger = msgList[1] if len(msgList) > 1 else 0 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaAnger, anger) GameWorld.DebugAnswer(curPlayer, "µ±Ç°Å­Æø: %s" % anger) elif value1 == "c": atkCnt = msgList[1] if len(msgList) > 1 else 0 itemAddCnt = msgList[2] if len(msgList) > 2 else 0 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaCnt, atkCnt) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaItemAddCnt, itemAddCnt) GameWorld.DebugAnswer(curPlayer, "ÒÑÌÖ·¥´ÎÊý:%s, ÎïÆ·Ôö¼Ó´ÎÊý:%s" % (atkCnt, itemAddCnt)) elif value1 == "b": totalGetCnt = msgList[1] if len(msgList) > 1 else 0 unGetCnt = msgList[2] if len(msgList) > 2 else 0 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxTotalGetCnt, totalGetCnt) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt, unGetCnt) GameWorld.DebugAnswer(curPlayer, "ÒÑÁìÈ¡±¦Ïä:%s, δÁìÈ¡:%s" % (totalGetCnt, unGetCnt)) elif value1 == "t": befSeconds = msgList[1] if len(msgList) > 1 else 0 lastTime = int(time.time()) - befSeconds PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxLastTime, lastTime) GameWorld.DebugAnswer(curPlayer, "Éϴμì²é±¦Ïäʱ¼ä:%s" % (GameWorld.ChangeTimeNumToStr(lastTime))) elif value1 == "g": contribCnt = msgList[1] if len(msgList) > 1 else 0 boxHurtTotal = msgList[2] if len(msgList) > 2 else None boxHurtTotalHis = msgList[3] if len(msgList) > 3 else None if boxHurtTotal == None: boxHurt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt) boxHurtEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx) boxHurtTotal = boxHurt + boxHurtEx * ChConfig.Def_PerPointValue if boxHurtTotalHis == None: boxHurtHis = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis) boxHurtHisEx = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx) boxHurtTotalHis = max(boxHurtTotal, boxHurtHis + boxHurtHisEx * ChConfig.Def_PerPointValue) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxContribCnt, contribCnt) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurt, boxHurtTotal % ChConfig.Def_PerPointValue) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtEx, boxHurtTotal / ChConfig.Def_PerPointValue) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHis, boxHurtTotalHis % ChConfig.Def_PerPointValue) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyTaofaBoxHurtHisEx, boxHurtTotalHis / ChConfig.Def_PerPointValue) GameWorld.DebugAnswer(curPlayer, "Òѹ±Ï×±¦Ïä:%s,×ÜÉ˺¦:%s,ÀúÊ·:%s" % (contribCnt, boxHurtTotal, boxHurtTotalHis)) PlayerFamilyTaofa.SyncTaofaInfo(curPlayer) return def __AddMemTaofaAtk(curPlayer, curFamily, msgList): #ÐÂÔö³ÉÔ±ÌÖ·¥: Taofa m ÈËÊý [É˺¦ÖµA µ½B] GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr()) memCnt = msgList[1] if len(msgList) > 1 else curFamily.GetCount() hurtTotalA = msgList[2] if len(msgList) > 2 else 0 hurtTotalB = msgList[3] if len(msgList) > 3 else hurtTotalA angerRate = msgList[4] if len(msgList) > 4 else 5000 hurtTotalB = max(hurtTotalA, hurtTotalB) if curFamily.GetCount() <= memCnt: addMemCnt = memCnt - curFamily.GetCount() + 1 GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓȱÉÙ³ÉÔ±: %s" % addMemCnt) CreateFamily.OnExec(curPlayer, ["m", addMemCnt]) GameWorld.DebugAnswer(curPlayer, "µ±Ç°×ܳÉÔ±Êý: %s" % curFamily.GetCount()) actionDataList = [] for index in range(curFamily.GetCount()): if memCnt <= 0: break member = curFamily.GetAt(index) memID = member.GetPlayerID() if memID >= ShareDefine.RealPlayerIDStart: # ²»°üÀ¨ÕæÊµÍæ¼Ò continue memCnt -= 1 hurtValue = random.randint(hurtTotalA, hurtTotalB) isAnger = GameWorld.CanHappen(angerRate) # ¸ÅÂÊÉèÖÃÎªÅ­Æø¹¥»÷ actionData = PlayerFamilyTaofa.GMAddMemTaofaAtk(curPlayer, curFamily, memID, hurtValue, isAnger) actionDataList.append(actionData) PlayerFamilyTaofa.RefreshPlayerAwardBoxCnt(curFamily) PlayerFamily.SendFamilyAction(actionDataList) return