// World Conquer Online Project 2.6552 - COPS6 Project Based// This project has been created by Eslam Abdullah// Source Infrastructure based on COPS6 Source, written by CptSky// This source is targeted to Conquer Online, client version 6552// // File Created by: Moustafa Mahmoud & Moustafa Muhammad & Mahmoud Mohammed// World Conquer v2 6552 - MsgServer - MsgBossHarmRanking.cs// Last Edit: 2017/6/15 14:05// Created: 2010/11/23 10:12using 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 COServer;using COServer.Database;using System.Threading.Tasks;namespace COServer.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(Client.GameState client) { var proto = new MsgBossHarmRankingProto(); proto.BossUID = Info.BossUID; proto.Type = 1; client.Send(Kernel.FinalizeProtoBuf(proto, 1044)); } public void Handle(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; } } } }}
public Dictionary<Game.Player, uint> Score = new Dictionary<Game.Player, uint>();
public static void ReceiveAttack(Player attacker, Player attacked,
#region Bosses Scores if (attacked.PlayerFlag == PlayerFlag.Monster) { if (attacked.MonsterInfo != null) { if (attacked.MonsterInfo.Score.ContainsKey(attacker)) attacked.MonsterInfo.Score[attacker] += damage; else attacked.MonsterInfo.Score.Add(attacker, damage); } } #endregion
#region MsgBossHarmRanking case MsgTypes.MsgBossHarmRanking: { var pkt = new MsgBossHarmRanking(); var myPacket = new byte[Packet.Length - 8]; for (int i = 0; i < myPacket.Length; i++) { myPacket[i] = Packet[i]; } if (pkt.Read(myPacket)) pkt.Handle(client); break; } #endregion
MsgBossHarmRanking = 1044,