少年修仙传客户端代码仓库
hch
2025-03-19 6770e1eb64c4282def45adb824b14b2a407fdd30
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
using System.Collections.Generic;
using System;
using LitJson;
using UnityEngine;
 
namespace vnxbqy.UI
{
    
    public struct Dungeon
    {
        public int mapId;
        public int lineId;
 
        public Dungeon(int _mapId, int _lineId)
        {
            this.mapId = _mapId;
            this.lineId = _lineId;
        }
 
        public static bool operator ==(Dungeon _lhs, Dungeon _rhs)
        {
            return _lhs.mapId == _rhs.mapId && _lhs.lineId == _rhs.lineId;
        }
 
        public static bool operator !=(Dungeon _lhs, Dungeon _rhs)
        {
            return _lhs.mapId != _rhs.mapId || _lhs.lineId != _rhs.lineId;
        }
 
    }
 
    public struct DungeonResult
    {
        public int conWinCnt;  //胜利的场数
        public int extraExp; //额外的经验加成
        public int extraExpPoint;//额外的经验点数
        public int score; //获得积分 
        public int extrScore; //额外获得积分
 
        public int addScore; //增加的积分,有正负
        public int updScore; //更新后的积分
        public int curOrder; // 之前排名
        public int updOrder; //更新后排名
 
        public int quickPass; //快速通关
        public int isSweep;
        public int dataMapID;
        public int lineID;
        public int upPer;
        public int costTime; //毫秒
        public int isPass;
        public int isAssist;
        public int rank;
        public int grade;
        public int gradeExp;
        public int gradeExpPoint;
        public int scoreExp;
        public int scoreExpPoint;
        public int npcTotal;
        public int expPoint;
        public int exp;
        public DungeonGotMoney[] money;
        public int runeEssence;
        public int runeMagicEssence;
        public ServerItem[] itemInfo;
        public ServerItem[] succItemInfo;
        public ServerItem[] AuctionItem;
        public ServerItem[] firstPassItem;
        public int[] xianyuanCoin;
        public int sp;
        public int startRewardLineID;
        public int enterLV;
        public int leaderID;
        public int wheel;
        public Dictionary<string, AssistPlayer> helpPlayer;
        public int memberCnt;
        public uint ownerID;
        public string ownerName;
        public int isWin;
 
        public long totalExp
        {
            get
            {
                return (long)((ulong)exp + (ulong)expPoint * Constants.ExpPointValue);
            }
        }
 
        public long extraTotalExp
        {
            get { return (long)((ulong)extraExp + (ulong)extraExpPoint * Constants.ExpPointValue); }
        }
 
        public long totalScoreExp
        {
            get { return (long)((ulong)scoreExp + (ulong)scoreExpPoint * Constants.ExpPointValue); }
        }
 
        public long totalGradeExp
        {
            get { return (long)((ulong)gradeExp + (ulong)gradeExpPoint * Constants.ExpPointValue); }
        }
    }
 
 
 
    //协助BOSS伤害列表
    public struct BossHurtRankInfo
    {
        public uint npcObjID;  //实例ID 非表
        public List<BossHurt> bossHurtInfo;
        public List<AssistBossHurt> assistBossHurtInfo;
        public ulong hurtValueSelf; // 包含团队伤害
        public int hurtRankSelf; // 本人排名,默认0未上榜
    }
 
    //协助BOSS伤血信息
    public struct BossHurt
    {
        public string HurtName;   // 队伍代表(不一定队长)
        public uint HurtID; //对应 HurtType
        public int HurtType; // 1 玩家,2队伍
        public ulong totalHurt; //封包两个字段总额
    }
    public struct AssistBossHurt
    {
        public string playerName;
        public uint playerID;
        public long totalHurt; //封包两个字段总额
    }
    public struct DungeonMissionData
    {
        public int lineID;
        public int missionID;
        public int step;
        public int wheel;
        public int expPoint;
        public int exp;
        public int grade;
        public int npcTotal;
        public int npcTotalNeed;
        public int hasCollect;
        public int passAllCnt;
        public DungeonNPCInfo[] npc;
        public DungeonGotMoney[] money;
        public int score;
        public int remainHPPer;
        public int hpReduceSpeed;
        public int talkOver;
        public int winCnt;
        public int KillBOSS;
        public DungeonHurt[] hurtInfo;
        public int myHurt;
        public int myHurtEx;
        public int myRank;
        public int myMenberCnt;
        public string topName;
        public int topScore;
        public int isFullExp;
        public int leaderID;
        public FairyFeastRank[] familyPartyRank;
        public FairyFeastTop familyPartyTop;
        public int topPlayerID;
        public int enemyID;
        public int hasSit;
        public int isHelp;
        public int helpCount;
        public int[] relation; 
        public int roundNum;            //跨服1Vs1 当前回合
        public int[] roundWinerIDList;  //跨服1Vs1 回合胜利的Id列表
        public int prepareTime;     //跨服1Vs1 回合结束倒计时
        public int isStart;        //跨服1Vs1回合开始
        public int PlayerEnterMap; //判断玩家ID不是自己则清除等待时间显示
        public int IsEncourage;//是否鼓舞
        public long totalExp
        {
            get
            {
                return (long)((ulong)exp + (ulong)expPoint * Constants.ExpPointValue);
            }
        }
 
        public long myHurtTotal
        {
            get
            {
                return (long)((ulong)myHurt + (ulong)myHurtEx * Constants.ExpPointValue);
            }
        }
    }
 
    public struct DungeonNPCInfo
    {
        public int NPCID;
        public int killCnt;
        public int HPPer;
    }
 
    public struct DungeonGotMoney
    {
        public int moneyType;
        public int moneyValue;
    }
 
    public struct DungeonHurt
    {
        public string playerName;
        public int hurt;
        public int rank;
        public int hurtEx;
        public long totalHurt
        {
            get
            {
                return (long)((ulong)hurt + (ulong)hurtEx * Constants.ExpPointValue);
            }
        }
    }
 
    public struct FairyFeastRank
    {
        public int rank;
        public string name;
        public int cnt;
    }
 
    public struct FairyFeastTop
    {
        public string name;
        public int cnt;
    }
 
    public struct ServerItem
    {
        public int ItemID;
        public int Count;
        public int IsAuctionItem;
        public string UserData;
    }
 
    public struct AssistPlayer
    {
        public string Name;
        public int LV;
        public int Job;
        public int Face;
        public int FacePic;
        public int Relation;
        public int RealmLV;
        public int FightPower;
    }
 
    public class DungeonRecord
    {
        public int id { get; private set; }                        //副本id
        public int enterTimes { get; private set; }        //当日进入次数
        public int buyTimes { get; private set; }              //当日已购买次数
        public int extraTimes { get; private set; }           //使用物品增加的额外次数
        public int recoverTimes { get; private set; }        //找回次数
        public Dictionary<int, int> lineGrades;             //副本线路对应星级值列表
        public int enterCntTotal { get; private set; }        //找回次数
 
        public int passLineID;
 
        public DungeonRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo)
        {
            this.id = (int)_serverInfo.FBID;
            this.enterTimes = (int)_serverInfo.EnterCnt;
            this.recoverTimes = (int)_serverInfo.RecoverCnt;
            this.extraTimes = (int)_serverInfo.ItemAddCnt;
            this.lineGrades = new Dictionary<int, int>();
            this.passLineID = (int)_serverInfo.PassLineID;
            for (int i = 0; i < _serverInfo.PassGrade.Length; i++)
            {
                var tempValue = (int)_serverInfo.PassGrade[i];
                for (int j = 0; j < 9; j++)
                {
                    var a = MathUtility.Power(10, j);
                    var b = MathUtility.Power(10, j + 1);
                    this.lineGrades[i * 9 + j] = (tempValue % b) / a;
                }
            }
            this.enterCntTotal = (int)_serverInfo.EnterCntTotal;
        }
 
        public DungeonRecord(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo _serverInfo)
        {
            this.id = (int)_serverInfo.FBID;
            this.buyTimes = _serverInfo.BuyCount;
        }
 
        public void UpdateRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo)
        {
            this.enterTimes = (int)_serverInfo.EnterCnt;
            this.recoverTimes = (int)_serverInfo.RecoverCnt;
            this.extraTimes = (int)_serverInfo.ItemAddCnt;
            this.passLineID = (int)_serverInfo.PassLineID;
            for (int i = 0; i < _serverInfo.PassGrade.Length; i++)
            {
                var tempValue = (int)_serverInfo.PassGrade[i];
                for (int j = 0; j < 9; j++)
                {
                    var a = MathUtility.Power(10, j);
                    var b = MathUtility.Power(10, j + 1);
                    this.lineGrades[i * 9 + j] = (tempValue % b) / a;
                }
            }
            this.enterCntTotal = (int)_serverInfo.EnterCntTotal;
        }
 
        public void UpdateRecord(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo _serverInfo)
        {
            this.buyTimes = _serverInfo.BuyCount;
        }
 
    }
 
    public class DungeonEnterCoolDown
    {
        public int mapId;
        public int level;
        public int duration;
        public int clearCoolDownCost;
        public DateTime endCoolDownTime;
 
        public void SetEnterTime(uint tick)
        {
            endCoolDownTime = TimeUtility.GetTime(tick);
            endCoolDownTime = endCoolDownTime.AddTicks(duration * TimeSpan.TicksPerSecond);
        }
 
        public int suplursSeconds
        {
            get
            {
                return Mathf.Max(0, (int)(endCoolDownTime - TimeUtility.ServerNow).TotalSeconds);
            }
        }
    }
 
    public struct DungeonTarget
    {
        public DungeonTargetType targetType;
        public int targetCondition;
        public int targetValue;
 
        public DungeonTarget(DungeonTargetType _type, int _condition, int _targetValue)
        {
            this.targetType = _type;
            this.targetCondition = _condition;
            this.targetValue = _targetValue;
        }
 
    }
}