Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using ProtoBuf;
- using System;
- using System.Runtime.InteropServices;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Collections.Concurrent;
- using System.Text;
- using VirusX;
- using VirusX.Database;
- using System.Threading.Tasks;
- namespace VirusX.Network.GamePackets
- {
- public class MsgBossHarmRanking
- {
- public MsgBossHarmRanking() { }
- public MsgBossHarmRankingProto Info;
- [ProtoContract]
- public class MsgBossHarmRankingProto
- {
- [ProtoMember(1, IsRequired = true)]
- public uint Type;
- [ProtoMember(2, IsRequired = true)]
- public uint BossUID;
- [ProtoMember(3, IsRequired = true)]
- public Hunter[] Hunters;
- }
- [ProtoContract]
- public class Hunter
- {
- [ProtoMember(1, IsRequired = true)]
- public uint Rank;
- [ProtoMember(2, IsRequired = true)]
- public uint ServerID;
- [ProtoMember(3, IsRequired = true)]
- public uint UID;
- [ProtoMember(4, IsRequired = true)]
- public string Name;
- [ProtoMember(5, IsRequired = true)]
- public uint Damage;
- }
- public bool Read(byte[] packet)
- {
- using (var memoryStream = new MemoryStream(packet))
- {
- Info = Serializer.DeserializeWithLengthPrefix<MsgBossHarmRankingProto>(memoryStream, PrefixStyle.Fixed32);
- }
- return true;
- }
- public void Ready(VirusX.Client.GameState client)
- {
- var proto = new MsgBossHarmRankingProto();
- proto.BossUID = Info.BossUID;
- proto.Type = 1;
- /* var scores = client.Map.Entities.Where(i => i.Key == proto.BossUID).FirstOrDefault().Value.MonsterInfo.Score.OrderByDescending(i => i.Value).ToArray();
- if (scores.Length != 0)
- {
- proto.Hunters = new Hunter[scores.Length];
- for (int i = 0; i < proto.Hunters.Length; i++)
- {
- proto.Hunters[i] = new Hunter();
- proto.Hunters[i].UID = scores[i].Key.UID;
- proto.Hunters[i].Name = scores[i].Key.Name;
- proto.Hunters[i].Damage = scores[i].Value;
- proto.Hunters[i].ServerID = scores[i].Key.ServerID;
- proto.Hunters[i].Rank = (uint)(i + 1);
- }
- } */
- client.Send(Kernel.FinalizeProtoBuf(proto, 1044));
- //client.Send(Kernel.FinalizeProtoBuf(Info, 3282));
- }
- public void Handle(VirusX.Client.GameState client)
- {
- switch (Info.Type)
- {
- case 0:
- {
- var proto = new MsgBossHarmRankingProto();
- proto.BossUID = Info.BossUID;
- proto.Type = 1;
- var scores = client.Map.Entities.Where(i => i.Key == proto.BossUID).FirstOrDefault().Value.MonsterInfo.Score.OrderByDescending(i => i.Value).ToArray();
- if (scores.Length != 0)
- {
- proto.Hunters = new Hunter[scores.Length];
- for (int i = 0; i < proto.Hunters.Length; i++)
- {
- proto.Hunters[i] = new Hunter();
- proto.Hunters[i].UID = scores[i].Key.UID;
- proto.Hunters[i].Name = scores[i].Key.Name;
- proto.Hunters[i].Damage = scores[i].Value;
- proto.Hunters[i].ServerID = scores[i].Key.ServerID;
- proto.Hunters[i].Rank = (uint)(i + 1);
- }
- }
- client.Send(Kernel.FinalizeProtoBuf(proto, 1044));
- break;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement