#!/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 CrossPlayer
|
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 OnExecCross(crossPlayer, msgList):
|
if not msgList:
|
return
|
if GameWorld.IsMainServer() and DBDataMgr.GetFamilyMgr().GetCurCrossServerID():
|
# ±¾·þ¹«»áÒÑ»¥Í¨²»ÔÙÖ´Ðб¾·þÃüÁî
|
return
|
|
familyID = crossPlayer.GetFamilyID()
|
curFamily = DBDataMgr.GetFamilyMgr().FindFamily(familyID)
|
if not curFamily:
|
GameWorld.DebugAnswer(crossPlayer, "ûÓй«»á")
|
return
|
|
value1 = msgList[0]
|
if value1 == 0:
|
PlayerFamilyTaofa.OnTaofaReset(curFamily)
|
GameWorld.DebugAnswer(crossPlayer, "ÖØÖù«»áÌÖ·¥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(crossPlayer, "²¼Õó²ã:%s,µ½ÆÚ:%s" % (gLayer, GameWorld.ChangeTimeNumToStr(gEndTime)))
|
return
|
|
# ÐÂÔö³ÉÔ±ÌÖ·¥
|
if value1 == "m":
|
__AddMemTaofaAtk(crossPlayer, curFamily, msgList)
|
return
|
|
return
|
|
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 g Òѹ±Ï×±¦Ïä [ÀÛ¼ÆÉ˺¦ ÀúÊ·É˺¦]")
|
GameWorld.DebugAnswer(curPlayer, "Ôö¼Ó³ÉÔ±ÌÖ·¥: Taofa m ÈËÊý [É˺¦ÖµA µ½B Ź¥¸ÅÂÊ]")
|
GameWorld.DebugAnswer(curPlayer, "´´½¨¹«»áÏà¹ØÊ¹ÓÃÃüÁî: CreateFamily")
|
return
|
|
crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID())
|
if not crossPlayer:
|
return
|
|
value1 = msgList[0]
|
|
if value1 == 0:
|
OnExecCross(crossPlayer, msgList)
|
PlayerFamilyTaofa.OnTaofaResetPlayer(curPlayer)
|
GameWorld.DebugAnswer(curPlayer, "ÖØÖÃÍæ¼ÒÌÖ·¥OK")
|
return
|
|
if 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 == "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(crossPlayer, curFamily, msgList):
|
#ÐÂÔö³ÉÔ±ÌÖ·¥: Taofa m ÈËÊý [É˺¦ÖµA µ½B]
|
|
GameWorld.DebugAnswer(crossPlayer, "---------- %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(crossPlayer, "Ìí¼ÓȱÉÙ³ÉÔ±: %s" % addMemCnt)
|
CreateFamily.OnExecCross(crossPlayer, ["m", addMemCnt])
|
GameWorld.DebugAnswer(crossPlayer, "µ±Ç°×ܳÉÔ±Êý: %s" % curFamily.GetCount())
|
|
actionDataList = []
|
for index in range(curFamily.GetCount()):
|
if memCnt <= 0:
|
break
|
member = curFamily.GetAt(index)
|
memID = member.GetPlayerID()
|
if memID == PlayerFamilyTaofa.ActionGlobalID:
|
continue
|
if memID >= ShareDefine.RealPlayerIDStart:
|
# ²»°üÀ¨ÕæÊµÍæ¼Ò
|
continue
|
memCnt -= 1
|
hurtValue = random.randint(hurtTotalA, hurtTotalB)
|
isAnger = GameWorld.CanHappen(angerRate) # ¸ÅÂÊÉèÖÃÎªÅÆø¹¥»÷
|
|
actionData = PlayerFamilyTaofa.GMAddMemTaofaAtk(crossPlayer, curFamily, memID, hurtValue, isAnger)
|
actionDataList.append(actionData)
|
|
PlayerFamily.SendFamilyAction(actionDataList)
|
PlayerFamilyTaofa.SyncMemContribInfo(curFamily)
|
return
|