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
 
using System.Collections.Generic;
using LitJson;
 
public class GuildBossManager : GameSystemManager<GuildBossManager>
{
 
    public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> bossActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
 
 
 
    //配置
    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()
    {
 
        return null;
    }
 
    // 获取公会中的伤害记录做排名
    public bool UpdateGuildBossInfo(HA513_tagMCFamilyActionInfo vNetData)
    {
        if (vNetData.ActionType != GuildManager.GuildBossActionType)
        {
            return false;
        }
 
        for (int i = 0; i < vNetData.Count; i++)
        {
            bossActions[(int)vNetData.FamilyActionList[i].Value1] = vNetData.FamilyActionList[i];
        }
 
 
        return true;
    }
 
}
 
public class PlayerGuildBossAtkInfo
{
    public int playerID;
    public int atkTime;
    public int bzTime;
    public int atkCount;
    public long totalHurtValue;
    public int boxCnt;
 
}