![]() |
الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن
السلام عليكم
الاكونت اول مابينزل جديد بيكون واخد رانك Earl فى الدونيشن من غير مايكون دافع اى حاجة تحياتى ليكم |
رد: الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن
Nobility.cs
سيرش كود PHP:
كود PHP:
|
رد: الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن
Nobility.cs
سيرش كود PHP:
كود PHP:
|
رد: الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن
اقتباس:
مش لاقى حاجة عندى خالص فى الملف من الاكواد اللى المفروض ابحث عنها وجبتلك اكواد ملف Nobility.cs اللى عندى بالكامل using System; using System.IO; using System.Linq; using Viorx.Client; using System.Collections.Generic; using Viorx.Network.GamePackets; namespace Viorx.Game.ConquerStructures { public class Nobility : Network.Writer { public static SafeDictionary<uint, NobilityInformation> Board = new SafeDictionary<uint, NobilityInformation>(10000); public static void Handle(NobilityInfo information, Client.GameState client) { switch (information.Type) { case NobilityInfo.Donate: { if (client.Trade.InTrade) return; if (client.Entity.PokerHack == true) return; ulong silvers = information.dwParam; bool newDonator = false; client.NobilityInformation.Gender = (byte)(client.Entity.Body % 10); if (client.NobilityInformation.Donation == 0) newDonator = true; if (information.MoneyType == 1) { ulong cps = silvers / 1; if (client.Entity.ConquerPoints >= cps) { client.Entity.ConquerPoints -= (uint)cps; client.NobilityInformation.Donation += silvers; } } else { if (client.Entity.Money >= silvers) { client.Entity.Money -= (ulong)silvers; client.NobilityInformation.Donation += silvers; } } if (!Board.ContainsKey(client.Entity.UID) && client.NobilityInformation.Donation == silvers && newDonator) { Board.Add(client.Entity.UID, client.NobilityInformation); try { Database.NobilityTable.InsertNobilityInformation(c lient.NobilityInformation); } catch { Database.NobilityTable.UpdateNobilityInformation(c lient.NobilityInformation); } } else { Database.NobilityTable.UpdateNobilityInformation(c lient.NobilityInformation); } Sort(client.Entity.UID); break; } case NobilityInfo.List: { byte[] packet = new byte[608]; WriteUInt16((ushort)(packet.Length - 8), 0, packet); WriteUInt16(2064, 2, packet); WriteUInt16(2, 4, packet); WriteUInt16((ushort)(Board.Count > 50 ? 5 : (Board.Count / 10) + 1), 10, packet); int offset = 120; ushort rank = 0; rank = (ushort)(information.wParam1 * 10); foreach (var entity in Board.Values.OrderByDescending(e => e.Donation).Skip(information.wParam1 * 10).Take(10)) { WriteUInt32(entity.EntityUID, offset, packet); offset += 4; WriteUInt32(1, offset, packet); offset += 4; WriteUInt32(entity.Mesh, offset, packet); offset += 4; WriteString(entity.Name, offset, packet); offset += 20; WriteUInt64(entity.Donation, offset, packet); offset += 8; entity.Rank = getMyRank(entity.Donation, rank); WriteUInt32((uint)entity.Rank, offset, packet); offset += 4; WriteUInt32((uint)rank, offset, packet); offset += 4; rank++; } WriteUInt16(rank, 12, packet); client.Send(packet); break; } } } private static void Sort(uint p) { throw new NotImplementedException(); } private static NobilityRank getMyRank(ulong donation, int currentRank) { if (currentRank >= 0 && currentRank < 999999) { return NobilityRank.King; } else if (currentRank >= 10 && currentRank < 0) { return NobilityRank.Prince; } else if (currentRank >= 50 && currentRank < 0) { return NobilityRank.Duke; } else { return NobilityRank.Earl; } } public static void Donate(ulong silvers, Client.GameState client) { bool newDonator = false; client.NobilityInformation.Gender = (byte)(client.Entity.Body % 10); if (client.NobilityInformation.Donation == 0) newDonator = true; client.NobilityInformation.Donation += silvers; int oldpos = client.NobilityInformation.Position; if (!Board.ContainsKey(client.Entity.UID) && client.NobilityInformation.Donation == silvers && newDonator) { Board.Add(client.Entity.UID, client.NobilityInformation); try { Database.NobilityTable.InsertNobilityInformation(c lient.NobilityInformation); } catch { Database.NobilityTable.UpdateNobilityInformation(c lient.NobilityInformation); } } else { Database.NobilityTable.UpdateNobilityInformation(c lient.NobilityInformation); } updateOthers(oldpos, client); } private static void updateOthers(int oldPosition, GameState client) { int newpos = getPosition(client.Entity.UID); var Rank = getMyRank(client.NobilityInformation.Donation, newpos); if (oldPosition != newpos) { if (Rank == NobilityRank.King || Rank == NobilityRank.Prince || Rank == NobilityRank.Duke) foreach (var p in Board.Values.OrderByDescending(e => e.Donation).Skip(newpos).Take(50 - newpos)) { GameState cl = null; if (Kernel.GamePool.TryGetValue(p.EntityUID, out cl)) SendIconToClient(cl); } } SendIconToClient(client); } private static int getPosition(uint entityuid) { int currentPos = -1, post = -1; if (Board.ContainsKey(entityuid)) { foreach (var p in Board.Values.OrderByDescending(e => e.Donation)) { currentPos++; if (entityuid == p.EntityUID) { post = currentPos; break; } } } return post; } public static void SendIconToClient(Client.GameState client) { if (client != null && client.NobilityInformation != null) { int pos = getPosition(client.Entity.UID); client.Entity.NobilityRank = client.NobilityInformation.Rank = getMyRank(client.NobilityInformation.Donation, pos); NobilityInfo update = new NobilityInfo(true); update.Type = NobilityInfo.Icon; update.dwParam = client.Entity.UID; client.NobilityInformation.Position = pos; update.UpdateString(client.NobilityInformation); client.SendScreen(update, true); } } } public class NobilityInformation { public string Name; public uint EntityUID; public uint Mesh; public ulong Donation; public byte Gender; public int Position; public NobilityRank Rank; } public enum NobilityRank : byte { Serf = 0, Knight = 1, Baron = 3, Earl = 5, Duke = 7, Prince = 9, King = 12, } } |
رد: الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن
كود PHP:
c lient خليها client |
رد: الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن
اقتباس:
تحياتى ليك |
الساعة الآن 09:38 AM |
مرحبا بكم في منتدي اكواد لتطوير الالعاب