عرض مشاركة واحدة
قديم 2019-09-16, 04:38 AM
المشاركة 6
ViORX
.:: عضو نشيط ::.
  • غير متواجد
افتراضي رد: الاكونت اول مابينزل بيكون 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
عاش تسلم ايدك ياكبير
تحياتى ليك