hch
2025-12-02 0c589b36181e570c3e345dfc455b5c5e35f5d9ee
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
 
using LitJson;
 
public class GuildBossManager : GameSystemManager<GuildBossManager>
{
    //配置
    public int initSuperHitRate;
    public int[] bzAddAttrs;
    public int bzMaxLevel;
 
    public int freeAtkCount;
    public int[][] atkItemList;
    public int maxAngerValue;
 
    public int[] bxCumulativeDamageList;
    public int bxDailyMax;  //个人每日产出上限
    public int bxDailyAwardMax; //个人每日领取奖励上限
    void ParseConfig()
    {
        // 数值1:初始暴击率万分率,功能独立的暴击率,与角色暴击无关
        // 数值3:布阵最大层级,暂固定每人1次,1次1层
        var config = FuncConfigConfig.Get("FamilyTaofaBuzhen");
        initSuperHitRate = int.Parse(config.Numerical1);
        bzAddAttrs = ConfigParse.GetMultipleStr<int>(config.Numerical2);
        bzMaxLevel = int.Parse(config.Numerical3);
 
        // 数值1:每日免费斩杀次数
        // 数值2:每次普通斩杀获得个人奖励列表 [[物品ID,个数], ...]
        // 数值4:常规斩杀增加怒气|暴击斩杀增加怒气|满怒气值
        config = FuncConfigConfig.Get("FamilyTaofaAtk");
        freeAtkCount = int.Parse(config.Numerical1);
        atkItemList = JsonMapper.ToObject<int[][]>(config.Numerical2);
        maxAngerValue = int.Parse(config.Numerical4.Split('|')[2]);
 
        // 数值1:产出宝箱的累计伤害列表 [宝箱1所需累计伤害,  ...],最后一档伤害可以循环产出,直到当日的贡献宝箱上限
        // 数值2:每日个人贡献宝箱数上限,最后一档可循环,上限控制
        // 数值3:每日个人领取宝箱奖励个数上限
        config = FuncConfigConfig.Get("FamilyTaofaBox");
        bxCumulativeDamageList = JsonMapper.ToObject<int[]>(config.Numerical1);
        bxDailyMax = int.Parse(config.Numerical2);
        bxDailyAwardMax = int.Parse(config.Numerical3);
    }
 
    public override void Init()
    {
        ParseConfig();
    }
    public override void Release()
    {
    }
 
    //// 操作:0-斩杀攻击;1-布阵
    public void TaofaBoss(int opType)
    {
        var pack = new CA613_tagCSFamilyTaofaOP();
        pack.OpType = (byte)opType;
        GameNetSystem.Instance.SendInfo(pack);
    }
 
 
 
 
    // 【公会行为】
    // 增加行为类型18 - 公会讨伐相关数据
    // Value1    玩家ID 或  全局ID,当该值等于1时代表该条数据记录的是讨伐全局数据,以下其他值根据Value1代表不同意思
    //                   玩家                                     全局                            
    // Time      最后讨伐时间戳                     重置时间戳,前端可用于判断是否变更了不同的讨伐(变更后,前端可重置讨伐相关缓存数据,GM重置会变更)
    // Value2     玩家布阵时间戳                          布阵层级到期时间戳                          
    // Value3     到本公会后攻击次数                    当前有效布阵层级 
    // Value4     到本公会后累计伤害,求余亿部分                  无     
    // Value5     到本公会后累计伤害,整除亿部分                  无     
    // Value6     到本公会后贡献宝箱数                                    无     
    // UseData  到本公会后记录                                              无   
    // 成员记录格式: Json格式  {"atkList":[[atkTime, 本次贡献箱子数, 本次总伤害, atkType], ...],   "info":{k:v, ...}}
    // atkList   -     讨伐记录列表,可用于表现成员头像攻击: atkTime  -  攻击时间戳,  atkType  -  攻击类型(0-普通攻击, 1-怒气攻击)
    // info     -     不一定有该key,仅退出的成员才有,用于更新退出成员相关基础信息,如名字、头像等,还在公会里的成员通过 // A5 20 玩家家族信息 #tagMCRoleFamilyInfo 取成员信息
    // "info":{"LV":106,"Job":1,"Name":"主公3016219","FacePic":0,"FightPower":1831995,"RealmLV":12,"ServerID":86,"TitleID":0,"Face":0},
    public HA513_tagMCFamilyActionInfo.tagMCFamilyAction GetGuildBossAction()
    {
        GuildManager.Instance.TryGetFamilyActions(GuildManager.GuildBossActionType, out var familyActions);
        if (familyActions == null)
        {
            return null;
        }
        foreach (var action in familyActions)
        {
            if (action.Value1 == 1)
            {
                return action;
            }
        }
        return null;
    }
 
    int lastGuildBossTime;
 
    // 获取公会中的伤害记录做排名
    public void UpdateGuildBossInfo(HA513_tagMCFamilyActionInfo vNetData)
    {
        if (vNetData.ActionType != GuildManager.GuildBossActionType)
        {
            return;
        }
 
        GuildManager.Instance.TryGetFamilyActions(GuildManager.GuildBossActionType, out var familyActions);
        if (familyActions == null)
        {
            return;
        }
        foreach (var action in familyActions)
        {
            if (action.Value1 == 1)
            {
                return;
            }
        }
    }
 
}
 
public class PlayerGuildBossAtkInfo
{
    public int playerID;
    public int atkTime;
    public int bzTime;
    public int atkCount;
    public long totalHurtValue;
    public int boxCnt;
 
}