|
|
المشاركات 503 |
+التقييم 0.27 |
تاريخ التسجيل Jun 2019 |
الاقامة المنوفية |
نظام التشغيل windows Server 2012R2 |
رقم العضوية 325 |
using System;
using System.Linq;
using System.Collections.Generic;
using KhaledMohamed.Network.GamePackets;
using System.IO;
namespace KhaledMohamed.Game.ConquerStructures
{
public class Nobility : KhaledMohamed.Network.Writer
{
public static ulong MaxDonation = 0;
public static ulong MaxDonation1 = 0;
public static ulong MaxDonation2 = 0;
public static SafeDictionary<uint, NobilityInformation> Board = new SafeDictionary<uint, NobilityInformation>(10000);
public static List<NobilityInformation> BoardList = new List<NobilityInformation>(10000);
public static void Handle(NobilityInfo information, Client.GameState client)
{
switch (information.Type)
{
case NobilityInfo.Donate:
{
if (client.Trade.InTrade)
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.PokerPlayer == null)
{
client.Entity.ConquerPoints -= (uint)cps;
client.NobilityInformation.Donation += silvers;
}
}
else
{
if (client.Entity.Money >= silvers && client.PokerPlayer == null)
{
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(client.NobilityInformation);
}
catch
{
Database.NobilityTable.UpdateNobilityInformation(client.NobilityInformation);
}
}
else
{
Database.NobilityTable.UpdateNobilityInformation(client.NobilityInformation);
}
Sort(client.Entity.UID);
break;
}
case NobilityInfo.List:
{
byte[] packet = new byte[600 + 8];
WriteUInt16(600, 0, packet);
WriteUInt16(2064, 2, packet);
WriteUInt16(2, 4, packet);
WriteUInt16(5, 10, packet);
WriteUInt16(10, 12, packet);
int offset = 120;
for (int i = (int)(information.wParam1 * 10); i < information.wParam1 * 10 + 10 && i < BoardList.Count; i++)
{
var nob = BoardList[i];
WriteUInt32(nob.EntityUID, offset, packet);
offset += 4;
if (Kernel.GamePool.ContainsKey(nob.EntityUID))
{
WriteUInt32(1, offset, packet);
offset += 4;
WriteUInt32(nob.Mesh, offset, packet);
offset += 4;
}
else
{
offset += 8;
}
WriteString(nob.Name, offset, packet);
offset += 20;
WriteUInt64(nob.Donation, offset, packet);
offset += 8;
WriteUInt32((uint)nob.Rank, offset, packet);
offset += 4;
WriteUInt32((uint)i, offset, packet);
offset += 4;
}
client.Send(packet);
information.Type = NobilityInfo.NextRank;
ulong value = 0;
information.dwParam2 = 0;
lock (BoardList)
{
if (client.NobilityInformation.Rank == NobilityRank.Prince)
value = (ulong)(BoardList[02].Donation - client.NobilityInformation.Donation + 1);
if (client.NobilityInformation.Rank == NobilityRank.Duke)
value = (ulong)(BoardList[14].Donation - client.NobilityInformation.Donation + 1);
}
Network.Writer.WriteUInt64(value, 8, information.ToArray());
information.dwParam3 = 60;
information.dwParam4 = uint.MaxValue;
client.Send(information);
break;
}
}
}
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;
if (!Board.ContainsKey(client.Entity.UID) && client.NobilityInformation.Donation == silvers && newDonator)
{
Board.Add(client.Entity.UID, client.NobilityInformation);
try
{
Database.NobilityTable.InsertNobilityInformation(client.NobilityInformation);
}
catch
{
Database.NobilityTable.UpdateNobilityInformation(client.NobilityInformation);
}
}
else
{
Database.NobilityTable.UpdateNobilityInformation(client.NobilityInformation);
}
Sort(client.Entity.UID);
}
public static void Sort(uint updateUID)
{
SafeDictionary<uint, NobilityInformation> sortedBoard = new SafeDictionary<uint, NobilityInformation>();
int Place = 0;
foreach (NobilityInformation entry in Board.Values.OrderByDescending((p) => p.Donation))
{
Client.GameState client = null;
try
{
int previousPlace = entry.Position;
entry.Position = Place;
NobilityRank Rank = NobilityRank.Serf;
if (Place >= CPanal.Duke)
{
if (Program.Nobility == true)
{
Rank = NobilityRank.King;
}
else
{
if (entry.Donation >= 200000000)
{
Rank = NobilityRank.Earl;
}
else if (entry.Donation >= 100000000)
{
Rank = NobilityRank.Baron;
}
else if (entry.Donation >= 30000000)
{
Rank = NobilityRank.Knight;
}
else if (entry.Donation == 1)
{
Rank = NobilityRank.King;
}
}
}
else
{
if (Program.Nobility == true)
{
Rank = NobilityRank.King;
}
else
{
if (Place < CPanal.king)//serverrank
{
Rank = NobilityRank.King;
}
else if (Place < CPanal.prince)
{
Rank = NobilityRank.Prince;
}
else if (Place < CPanal.Duke && Place < CPanal.lastDuke)
{
Rank = NobilityRank.Duke;
}
}
}
var oldRank = entry.Rank;
entry.Rank = Rank;
if (Kernel.GamePool.TryGetValue(entry.EntityUID, out client))
{
bool updateTheClient = false;
if (oldRank != Rank)
{
updateTheClient = true;
if (Rank == NobilityRank.Duke)
{
Kernel.SendWorldMessage(new Message("Congratulation! " + client.Entity.Name + " has the Duke title.", System.Drawing.Color.White, Message.Center), Program.Values);
}
if (Rank == NobilityRank.Prince)
{
Kernel.SendWorldMessage(new Message("Congratulation! " + client.Entity.Name + " has the Prince title.", System.Drawing.Color.White, Message.Center), Program.Values);
}
if (Rank == NobilityRank.King)
{
Kernel.SendWorldMessage(new Message("Congratulation! " + client.Entity.Name + " has become the new King/Queen.", System.Drawing.Color.White, Message.Center), Program.Values);
}
}
else
{
if (previousPlace != Place)
{
updateTheClient = true;
}
}
if (updateTheClient || client.Entity.UID == updateUID)
{
NobilityInfo update = new NobilityInfo(true);
update.Type = NobilityInfo.Icon;
update.dwParam = entry.EntityUID;
update.UpdateString(entry);
client.SendScreen(update, true);
client.Entity.NobilityRank = entry.Rank;
}
}
sortedBoard.Add(entry.EntityUID, entry);
Place++;
}
catch { }
}
Board = sortedBoard;
lock (BoardList)
BoardList = Board.Values.ToList();
}
public static void Delet(Client.GameState client)
{
if (Game.ConquerStructures.Nobility.Board.ContainsKey(client.Entity.UID))
{
Game.ConquerStructures.Nobility.Board.Remove(client.Entity.UID);
Game.ConquerStructures.Nobility.Sort(0);
foreach (var clients in Program.GamePool)
{
if (Game.ConquerStructures.Nobility.Board.ContainsKey(clients.Entity.UID))
Game.ConquerStructures.Nobility.Sort(client.Entity.UID);
}
Database.MySqlCommand cmd = new Database.MySqlCommand(Database.MySqlCommandType.DELETE).Delete("nobility", "EntityUID", client.Entity.UID);
cmd.Execute();
}
}
}
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 bool king;
public DateTime KingDays;
}
public enum NobilityRank : byte
{
Serf = 0,
Knight = 1,
Baron = 3,
Earl = 5,
Duke = 7,
Prince = 9,
King = 12
}
}
//Rank\\
king = 2, //عدد الكنجات
prince = 2 + CPanal.king, //عدد البرنسات عدل علي رقم 10
Duke = 2 + CPanal.prince,//عدد الدوقات
lastDuke = 2 + CPanal.Duke,
Earl = 0 ,//عدد الايرلات
Baron = 0,
Knight = 0,
public static bool SaveEntity(
.Set("My_Title", (byte)e.MyTitle)
client.Entity.MyTitle1 = (TitlePacket.Titles)reader.ReadUInt32("My_Title");
public int EquippedTitle
{
get
{
return BitConverter.ToInt32(SpawnPacket, _MyTitle);
}
set
{
Writer.Write(value, _MyTitle, SpawnPacket);
if (Owner != null)
foreach (var Entity in Owner.Screen.Objects.Where(p => p.MapObjType == MapObjectType.Entity))
if (Entity != null)
if ((Entity as Entity) != null)
(Entity as Entity).Owner.Send(SpawnPacket);
}
}
public int EquippedWing
{
get
{
return BitConverter.ToInt32(SpawnPacket, _MyWing);
}
set
{
Writer.Write(value, _MyWing, SpawnPacket);
if (Owner != null)
foreach (var Entity in Owner.Screen.Objects.Where(p => p.MapObjType == MapObjectType.Entity))
if (Entity != null)
if ((Entity as Entity) != null)
(Entity as Entity).Owner.Send(SpawnPacket);
}
}
toarray
Writer.Write((UInt16)client.Entity.MyTitle, 103, Packet);
case 1130:
case 1130:
{
try
{
TitlePacket tpacket = new TitlePacket(false);
tpacket.Deserialize(packet);
switch (tpacket.Type)
{
case TitlePacket.Types.List:
{
tpacket.Title = client.Entity.MyTitle;
if (client.Entity.Titles.Count > 0)
{
tpacket.Count = (Byte)client.Entity.Titles.Count();
foreach (var title in client.Entity.Titles)
tpacket.Add((Byte)title.Key);
}
client.Send(tpacket);
break;
}
case TitlePacket.Types.Switch:
{
if (client.Entity.Titles.Keys.Contains(tpacket.Title) || tpacket.Title == TitlePacket.Titles.None)
{
client.Entity.MyTitle = tpacket.Title;
client.Send(tpacket);
client.Entity.Teleport(client.Entity.MapID, client.Entity.X, client.Entity.Y);
}
break;
}
}
}
catch (Exception x)
{
Console.WriteLine(x.ToString());
}
break;
}
public static bool SaveEntity(
.Set("My_Title", (byte)e.MyTitle)
client.Entity.MyTitle1 = (TitlePacket.Titles)reader.ReadUInt32("My_Title");
public int EquippedTitle
{
get
{
return BitConverter.ToInt32(SpawnPacket, _MyTitle);
}
set
{
Writer.Write(value, _MyTitle, SpawnPacket);
if (Owner != null)
foreach (var Entity in Owner.Screen.Objects.Where(p => p.MapObjType == MapObjectType.Entity))
if (Entity != null)
if ((Entity as Entity) != null)
(Entity as Entity).Owner.Send(SpawnPacket);
}
}
public int EquippedWing
{
get
{
return BitConverter.ToInt32(SpawnPacket, _MyWing);
}
set
{
Writer.Write(value, _MyWing, SpawnPacket);
if (Owner != null)
foreach (var Entity in Owner.Screen.Objects.Where(p => p.MapObjType == MapObjectType.Entity))
if (Entity != null)
if ((Entity as Entity) != null)
(Entity as Entity).Owner.Send(SpawnPacket);
}
}
toarray
Writer.Write((UInt16)client.Entity.MyTitle, 103, Packet);
case 1130:
case 1130:
{
try
{
TitlePacket tpacket = new TitlePacket(false);
tpacket.Deserialize(packet);
switch (tpacket.Type)
{
case TitlePacket.Types.List:
{
tpacket.Title = client.Entity.MyTitle;
if (client.Entity.Titles.Count > 0)
{
tpacket.Count = (Byte)client.Entity.Titles.Count();
foreach (var title in client.Entity.Titles)
tpacket.Add((Byte)title.Key);
}
client.Send(tpacket);
break;
}
case TitlePacket.Types.Switch:
{
if (client.Entity.Titles.Keys.Contains(tpacket.Title) || tpacket.Title == TitlePacket.Titles.None)
{
client.Entity.MyTitle = tpacket.Title;
client.Send(tpacket);
client.Entity.Teleport(client.Entity.MapID, client.Entity.X, client.Entity.Y);
}
break;
}
}
}
catch (Exception x)
{
Console.WriteLine(x.ToString());
}
break;
}
|
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
أدوات الموضوع | |
|
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
عايز اضعف اسكلايه خالص تضرب بي 1 | ahmedshetos888 | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2020-01-23 04:26 AM |
مشكلة صغيرة | xAttack | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2019-11-18 05:59 PM |
مشكلة فى الاتاك كله بايظ خالص من فضلكم محتاج الحل ضرورى | ViORX | مشكلات السيرفيرات كونكر الشخصيه | 9 | 2019-09-03 05:20 PM |
محتاج طلب سهل خالص بس دروري | ElSaher | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2019-08-11 08:48 PM |
مشكلة صغيرة يا شباب عرفين باتش xmego | osama | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2019-07-30 10:41 PM |