hxp
昨天 9d5ec7599f3abe0cebb76ce1df3c3b8c4e0aa51e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package GM.Commands.Family
#
# @todo:¹«»á
# @author hxp
# @date 2025-10-10
# @version 1.0
#
# ÏêϸÃèÊö: ¹«»á
#
#-------------------------------------------------------------------------------
#"""Version = 2025-10-10 21:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import CreateFamily
import IpyGameDataPY
import PlayerFamilyEmblem
import PlayerControl
import PlayerFamily
import CrossPlayer
import DBDataMgr
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()
    familyMgr = DBDataMgr.GetFamilyMgr()
    curFamily = familyMgr.FindFamily(familyID) if familyID else None
    if not curFamily:
        GameWorld.DebugAnswer(crossPlayer, "Íæ¼Òδ¼ÓÈ빫»á!")
        return
    
    value = msgList[0]
    if value == "m":
        CreateFamily.OnExecCross(crossPlayer, msgList)
        return
    
    if GameWorld.IsCrossServer():
        zoneID = familyMgr.GetFamilyZoneID(familyID)
        GameWorld.DebugAnswer(crossPlayer, "¿ç·þ¹«»áID:%s,zoneID=%s" % (familyID, zoneID))
        
    syncMemIDList = []
    if value == "lv":
        lv = msgList[1] if len(msgList) > 1 else 1
        exp = msgList[2] if len(msgList) > 2 else 0
        if not IpyGameDataPY.GetIpyGameData("Family", lv):
            GameWorld.DebugAnswer(crossPlayer, "¹«»áµÈ¼¶²»´æÔÚ: %s" % (lv))
            return
        curFamily.SetLV(lv)
        curFamily.SetExp(exp)
        GameWorld.DebugAnswer(crossPlayer, "ÉèÖù«»áµÈ¼¶:%s, exp=%s" % (lv, exp))
        
    elif value == "e":
        emblemID = msgList[1] if len(msgList) > 1 else 0
        setExpireTimes = msgList[2] if len(msgList) > 2 else None
        emblemActionObj = PlayerFamilyEmblem.AddFamilyEmblem(curFamily.GetID(), emblemID, setExpireTimes)
        if not emblemActionObj:
            GameWorld.DebugAnswer(crossPlayer, "¸Ã»ÕÕÂIDÎÞ·¨Ìí¼Ó")
            return
        endTime = PlayerFamilyEmblem.GetActionEmblemEndTime(emblemActionObj)
        GameWorld.DebugAnswer(crossPlayer, "Ìí¼Ó»ÕÕÂ(%s)µ½ÆÚ:%s" % (emblemID, GameWorld.ChangeTimeNumToStr(endTime)))
        return
    
    elif value == "n":
        PlayerFamily.SetRenameTime(curFamily, 0)
        GameWorld.DebugAnswer(crossPlayer, "ÖØÖù«»á¸ÄÃûCD")
        
    elif value == "c":
        contribDay = msgList[1] if len(msgList) > 1 else 0
        contribTotal = msgList[2] if len(msgList) > 2 else 0
        memID = msgList[3] if len(msgList) > 3 else crossPlayer.GetPlayerID()
        member = curFamily.FindMember(memID)
        if not member:
            GameWorld.DebugAnswer(crossPlayer, "²»´æÔڸóÉÔ±ID:%s" % memID)
            return
        member.SetContribDay(contribDay)
        member.SetContribTotal(contribTotal)
        GameWorld.DebugAnswer(crossPlayer, "ÉèÖù±Ï×:%s/%s, ID:%s" % (contribDay, contribTotal, memID))
        syncMemIDList.append(memID)
        
    elif value == "ml":
        memID = msgList[1] if len(msgList) > 1 else 0
        logoutMinutes = msgList[2] if len(msgList) > 2 else 0
        member = curFamily.FindMember(memID)
        if not member:
            GameWorld.DebugAnswer(crossPlayer, "²»´æÔڸóÉÔ±ID:%s" % memID)
            return
        member.SetOffTime(int(time.time()) - logoutMinutes * 60)
        GameWorld.DebugAnswer(crossPlayer, "³ÉÔ±ID:%s,ÀëÏßʱ¼ä:%s" % (memID, GameWorld.ChangeTimeNumToStr(member.GetOffTime())))
        syncMemIDList.append(memID)
        
    isSyncMem = True if syncMemIDList else False
    PlayerFamily.Sync_FamilyInfo(crossPlayer, syncMemIDList=syncMemIDList, isSyncMem=isSyncMem)
    return
 
def OnExec(curPlayer, msgList):
    ## ÓÎÏ··þÖ´ÐÐÃüÁî
    
    if not msgList:
        GameWorld.DebugAnswer(curPlayer, "-----%s-----" % GameWorld.GetCurrentDataTimeStr())
        GameWorld.DebugAnswer(curPlayer, "ÉèÖõȼ¶: Family lv µÈ¼¶ ¾­Ñé")
        GameWorld.DebugAnswer(curPlayer, "ÉèÖûÕÕÂ: Family e »ÕÕÂID [Ê£Óàʱ¼äÃë]")
        GameWorld.DebugAnswer(curPlayer, "ÉèÖù±Ï×: Family c ½ñÈÕ¹±Ï× Àۼƹ±Ï× [³ÉÔ±ID]")
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÀ뿪: Family l Ö÷¶¯À뿪´ÎÊý ±»Ìß´ÎÊý ÉÏ´ÎÊÇ·ñÖ÷¶¯  À뿪¶à¾ÃÁË")
        GameWorld.DebugAnswer(curPlayer, "Ìí¼Ó³ÉÔ±: Family m ÈËÊý [¹«»áID]")
        GameWorld.DebugAnswer(curPlayer, "³ÉÔ±ÀëÏß: Family ml ³ÉÔ±ID ÀëÏß·ÖÖÓÊý")
        GameWorld.DebugAnswer(curPlayer, "ÖØÖøÄÃû: Family n")
        GameWorld.DebugAnswer(curPlayer, "´´½¨¹«»áÏà¹ØÊ¹ÓÃÃüÁî: CreateFamily")
        return
    
    crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID())
    if not crossPlayer:
        return
    
    value = msgList[0]
    
    if value == "l":
        leaveCnt = msgList[1] if len(msgList) > 1 else 0
        kickedCnt = msgList[2] if len(msgList) > 2 else 0
        lastVoluntarily = msgList[3] if len(msgList) > 3 else 0
        leavePassMinutes = msgList[4] if len(msgList) > 4 else 0
        leaveInfo = PlayerControl.SetLeaveFamilyInfo(curPlayer, leaveCnt, kickedCnt, lastVoluntarily)
        leaveTime = PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time()) - leavePassMinutes * 60)
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÀ뿪: Info=%s,%s" % (leaveInfo, GameWorld.ChangeTimeNumToStr(leaveTime)))
        return
    
    OnExecCross(crossPlayer, msgList)
    return