عرض مشاركة واحدة
قديم 2019-09-16, 02:26 AM
المشاركة 5
Rider
.:: عضو خبير ::.
  • غير متواجد
افتراضي رد: الاكونت اول مابينزل بيكون Earl من غير مايكون دافع حاجة فى الدونيشن

كود:
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<uintNobilityInformationBoard = new SafeDictionary<uintNobilityInformation>(10000);
        public static 
void Handle(NobilityInfo informationClient.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.UIDclient.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), 0packet);
WriteUInt16(20642packet);
WriteUInt16(24packet);
WriteUInt16((ushort)(Board.Count 50 : (Board.Count 10) + 1), 10packet);
int offset 120;
ushort rank 0;
rank = (ushort)(information.wParam1 10);
foreach (var 
entity in Board.Values.OrderByDescending(=> e.Donation).Skip(information.wParam1 10).Take(10))
{
WriteUInt32(entity.EntityUIDoffsetpacket);
offset += 4;
WriteUInt32(1offsetpacket);
offset += 4;
WriteUInt32(entity.Meshoffsetpacket);
offset += 4;
WriteString(entity.Nameoffsetpacket);
offset += 20;
WriteUInt64(entity.Donationoffsetpacket);
offset += 8;
entity.Rank getMyRank(entity.Donationrank);
WriteUInt32((uint)entity.Rankoffsetpacket);
offset += 4;
WriteUInt32((uint)rankoffsetpacket);
offset += 4;
rank++;
}
WriteUInt16(rank12packet);
client.Send(packet);
break;
}
}
}

        private static 
void Sort(uint p)
        {
            throw new 
NotImplementedException();
        }
        private static 
NobilityRank getMyRank(ulong donationint currentRank)
        {
            if (
currentRank >= && 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.Serf;
            }
        }
        public static 
void Donate(ulong silversClient.GameState client)
{
bool newDonator false;
client.NobilityInformation.Gender = (byte)(client.Entity.Body 10);
if (
client.NobilityInformation.Donation == 0newDonator 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.UIDclient.NobilityInformation);
try
{
Database.NobilityTable.InsertNobilityInformation(c lient.NobilityInformation);
}
catch
{
Database.NobilityTable.UpdateNobilityInformation(c lient.NobilityInformation);
}
}
else
{
Database.NobilityTable.UpdateNobilityInformation(c lient.NobilityInformation);
}
updateOthers(oldposclient);
}
        private static 
void updateOthers(int oldPositionGameState client)
        {
            
int newpos getPosition(client.Entity.UID);
            var 
Rank getMyRank(client.NobilityInformation.Donationnewpos);

            if (
oldPosition != newpos)
            {
                if (
Rank == NobilityRank.King || Rank == NobilityRank.Prince || Rank == NobilityRank.Duke)
                    foreach (var 
p in Board.Values.OrderByDescending(=> e.Donation).Skip(newpos).Take(50 newpos))
                    {
                        
GameState cl null;
                        if (
Kernel.GamePool.TryGetValue(p.EntityUIDout cl))
                            
SendIconToClient(cl);
                    }
            }
            
SendIconToClient(client);
        }
        private static 
int getPosition(uint entityuid)
        {
            
int currentPos = -1post = -1;
            if (
Board.ContainsKey(entityuid))
            {
                foreach (var 
p in Board.Values.OrderByDescending(=> 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.Donationpos);
                
NobilityInfo update = new NobilityInfo(true);
                
update.Type NobilityInfo.Icon;
                
update.dwParam client.Entity.UID;
                
client.NobilityInformation.Position pos;
                
update.UpdateString(client.NobilityInformation);
                
client.SendScreen(updatetrue);
            }
        }
    }
    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,
    }


ظبها بقا لان ف حاجات انته باعتها
c lient
خليها
client