محمد ياسر
2019-07-11, 10:25 AM
السلام عليكم ورحمة الله وبركاته
في عضو نزل مشكله عن حكايه رنك الورد انه مش شغال
فدلوقتي انضيفه مع بعض
افتح كلاس Flowers.cs
وبدله بده كله
using System;
using System.Linq;
using System.Text;
using code.Client;
using System.Collections.Generic;
using code.Network.GamePackets;
using System.Collections.Concurrent;
using code.Rangers.Inner;
namespace code.Game.Features
{
public unsafe class Flowers
{
public enum Effect : byte
{
None = 0,
Rouse = 1,
Lilies = 2,
Orchids = 3,
Tulips = 4,
Kiss = 1,
love = 2,
Tins = 3,
Jade = 4,
}
public enum FlowersT : byte
{
Rouse = 0,
Lilies = 1,
Orchids = 2,
Tulips = 3,
Kiss = 4,
love = 5,
Tins = 6,
Jade = 7,
}
public Flowers()
{
}
public Flowers(uint _UID, string name)
{
UID = _UID;
Name = name;
}
public uint UID;
public uint aFlower = 1;
public uint SendDay = 0;
public string Name = "";
public int SendScreenValue(FlowersT typ, int rak)
{
if (rak == 0 || rak > 100)
return 0;
return (int)(30000002 + (uint)(100 * (byte)typ) + GetRank(rak));
}
public ushort GetRank(int rank)
{
if (rank == 1)
return 0;
if (rank == 2)
return 10000;
if (rank == 3)
return 20000;
if (rank > 3)
return 30000;
return 0;
}
public int BoySendScreenValue(FlowersT typ, int rak)
{
int ret = 0;
if (rak == -1) return 0;
if (rak > 100) return 0;
ret = (int)(30000402 + (uint)(100 * (byte)typ));
return ret;
}
public int RankRoses = 0;
public int RankLilies = 0;//max 10 start with -1.
public int RankOrchids = 0;//max 10 start with -1.
public int RankTuilps = 0;//max 10 start with -1.
public uint RedRoses;//kiss
public uint RedRoses2day;
public uint Lilies;//love
public uint Lilies2day;
public uint Orchads;//wine
public uint Orchads2day;
public uint Tulips;//jade
public uint Tulips2day;
public override string ToString()
{
return UID + "#"
+ Name + "#"
+ RedRoses + "#"
+ RedRoses2day + "#"
+ Lilies + "#"
+ Lilies2day + "#"
+ Orchads + "#"
+ Orchads2day + "#"
+ Tulips + "#"
+ Tulips2day + "#"
+ SendDay + "#"
+ aFlower + "#"
+ 0 + "#"
+ 0 + "#"
+ 0 + "#"
+ 0 + "#"
+ 0 + "#";
}
public void Read(string aLine)
{
if (aLine == "" || aLine == null) return;
string[] line = aLine.Split('#');
UID = uint.Parse(line[0]);
Name = line[1];
RedRoses = uint.Parse(line[2]);
RedRoses2day = uint.Parse(line[3]);
Lilies = uint.Parse(line[4]);
Lilies2day = uint.Parse(line[5]);
Orchads = uint.Parse(line[6]);
Orchads2day = uint.Parse(line[7]);
Tulips = uint.Parse(line[8]);
Tulips2day = uint.Parse(line[9]);
SendDay = uint.Parse(line[10]);
aFlower = uint.Parse(line[11]);
Reset();
}
public void Reset()
{
if (SendDay != DateTime.Now.Day)
{
RedRoses2day = Lilies2day = Orchads2day = Tulips2day = 0;
aFlower = 1;
SendDay = (uint)DateTime.Now.Day;
}
}
public static ConcurrentDictionary<uint, Flowers> Flowers_Poll = new ConcurrentDictionary<uint, Flowers>();
public static ConcurrentDictionary<uint, Flowers> BoyFlowers = new ConcurrentDictionary<uint, Flowers>();
public static Flowers[] KissTop100 = new Flowers[0];
public static Flowers[] LoveTop100 = new Flowers[0];
public static Flowers[] TineTop100 = new Flowers[0];
public static Flowers[] JadeTop100 = new Flowers[0];
public static Flowers[] RedRousesTop100 = new Flowers[0];
public static Flowers[] LiliesTop100 = new Flowers[0];
public static Flowers[] OrchidsTop100 = new Flowers[0];
public static Flowers[] TulipsTop100 = new Flowers[0];
public static object RouseLock = new object();
public static object LilisLock = new object();
public static object OrchidsLock = new object();
public static object TulipsLock = new object();
public static object KissLock = new object();
public static object LoveLock = new object();
public static object TineLock = new object();
public static object JadeLock = new object();
public static List<Flowers> RankKiss = new List<Flowers>();
public static List<Flowers> RankLove = new List<Flowers>();
public static List<Flowers> RankTine = new List<Flowers>();
public static List<Flowers> RankJade = new List<Flowers>();
public static List<Flowers> Rankrose = new List<Flowers>();
public static List<Flowers> Ranklili = new List<Flowers>();
public static List<Flowers> Rankorchid = new List<Flowers>();
public static List<Flowers> RankTulips = new List<Flowers>();
public static void CulculateRankJade(Flowers afflow)
{
lock (JadeLock)
{
try
{
if (!RankJade.Contains(afflow))
RankJade.Add(afflow);
var data = RankJade.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Tulips.CompareTo(c1.Tulips); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Tulips == 0) continue;
if (x < 100)
{
flow.RankTuilps = x;
backUpd.Add(flow);
}
else
flow.RankTuilps = 0;
x++;
}
lock (JadeTop100)
{
RankJade = new List<Flowers>(backUpd);
JadeTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankTine(Flowers afflow)
{
lock (TineLock)
{
try
{
if (!RankTine.Contains(afflow))
RankTine.Add(afflow);
var data = RankTine.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Orchads.CompareTo(c1.Orchads); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Orchads == 0) continue;
if (x < 100)
{
flow.RankOrchids = x;
backUpd.Add(flow);
}
else
flow.RankOrchids = 0;
x++;
}
lock (TineTop100)
{
RankTine = new List<Flowers>(backUpd);
TineTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankLove(Flowers afflow)
{
lock (LoveLock)
{
try
{
if (!RankLove.Contains(afflow))
RankLove.Add(afflow);
var data = RankLove.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Lilies.CompareTo(c1.Lilies); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Lilies == 0) continue;
if (x < 100)
{
flow.RankLilies = x;
backUpd.Add(flow);
}
else
flow.RankLilies = 0;
x++;
}
lock (LoveTop100)
{
RankLove = new List<Flowers>(backUpd);
LoveTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankKiss(Flowers afflow)
{
lock (KissLock)
{
try
{
if (!RankKiss.Contains(afflow))
RankKiss.Add(afflow);
var data = RankKiss.ToArray();
Array.Sort(data, (c1, c2) => { return c2.RedRoses.CompareTo(c1.RedRoses); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.RedRoses == 0) continue;
if (x < 100)
{
flow.RankRoses = x;
backUpd.Add(flow);
}
else
flow.RankRoses = 0;
x++;
}
lock (KissTop100)
{
RankKiss = new List<Flowers>(backUpd);
KissTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankRouse(Flowers afflow)
{
lock (RouseLock)
{
try
{
if (!Rankrose.Contains(afflow))
Rankrose.Add(afflow);
var data = Rankrose.ToArray();
Array.Sort(data, (c1, c2) => { return c2.RedRoses.CompareTo(c1.RedRoses); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.RedRoses == 0) continue;
if (x < 100)
{
flow.RankRoses = x;
backUpd.Add(flow);
}
else
{
flow.RankRoses = 0;
}
x++;
}
lock (RedRousesTop100)
{
Rankrose = new List<Flowers>(backUpd);
RedRousesTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankLilies(Flowers afflow)
{
lock (LilisLock)
{
if (!Ranklili.Contains(afflow))
Ranklili.Add(afflow);
var data = Ranklili.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Lilies.CompareTo(c1.Lilies); });
//IEnumerable<Flowers> query = data.OrderBy(redrous => redrous.Tulips);
//var room = query.ToArray();
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Lilies == 0) continue;
if (x < 100)
{
flow.RankLilies = x;
backUpd.Add(flow);
}
else
{
flow.RankLilies = 0;
}
x++;
}
lock (LiliesTop100)
{
Ranklili = new List<Flowers>(backUpd);
LiliesTop100 = backUpd.ToArray();
}
}
}
public static void CulculateRankOrchids(Flowers afflow)
{
lock (OrchidsLock)
{
if (!Rankorchid.Contains(afflow))
Rankorchid.Add(afflow);
var data = Rankorchid.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Orchads.CompareTo(c1.Orchads); });
//IEnumerable<Flowers> query = data.OrderBy(redrous => redrous.Tulips);
//var room = query.ToArray();
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Orchads == 0) continue;
if (x < 100)
{
flow.RankOrchids = x;
backUpd.Add(flow);
}
else
{
flow.RankOrchids = 0;
}
x++;
}
lock (OrchidsTop100)
{
Rankorchid = new List<Flowers>(backUpd);
OrchidsTop100 = backUpd.ToArray();
}
}
}
public static void CulculateRankTulips(Flowers afflow)
{
lock (TulipsLock)
{
if (!RankTulips.Contains(afflow))
RankTulips.Add(afflow);
var data = RankTulips.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Tulips.CompareTo(c1.Tulips); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Tulips == 0) continue;
if (x < 100)
{
flow.RankTuilps = x;
backUpd.Add(flow);
}
else
{
flow.RankTuilps = 0;
}
x++;
}
lock (TulipsTop100)
{
RankTulips = new List<Flowers>(backUpd);
TulipsTop100 = backUpd.ToArray();
}
}
}
public static void MsgRank(byte[] packet, GameState client)
{
MsgRank ranking = new MsgRank(false, 0);
ranking.Deserialize(packet);
switch (ranking.Mode)
{
case 6://Prestige
{
foreach (var c in Kernel.GamePool.Values)
{
PerfectionManager.CalcAndAdd(c);
}
PerfectionManager.ShowRank(ranking, client);
var index = new byte[11] { 0, 15, 25, 45, 55, 65, 75, 85, 135, 145, 165 };
EntityRank[] Chars = new EntityRank[11];
for (int i = 0; i < Chars.Length; i++)
{
if (i == 0)
Chars[i] = PerfectionManager.Ranking.Values.OrderByDescending (e => e.Prestige).ThenByDescending(x => x.Class).ThenByDescending(x => x.Level).ThenBy(x => x.UID).FirstOrDefault();
else Chars[i] = PerfectionManager.Ranking.Values.Where(x => x.Class >= (index[i] - 5) && x.Class <= index[i]).OrderByDescending(x => x.Prestige).ThenByDescending(x => x.Level).ThenBy(x => x.UID).FirstOrDefault();
}
byte count = 0;
foreach (var zz in Chars) if (zz != null) count++;
var nRanking = new MsgRank(true, count);
nRanking.Mode = 6;
nRanking.Count = count;
for (byte z = 0; z < Chars.Length; z++)
{
var Entity = Chars[z];
if (Entity == null) continue;
nRanking.Append2((uint)(z + 1), (uint)Entity.Prestige, Entity.UID, Entity.Name, Entity.Level, Entity.Class, Entity.Mesh, true);
}
client.Send(nRanking);
break;
}
case Network.GamePackets.MsgRank.Ranking:
{
if (ranking.RankingType == Network.GamePackets.MsgRank.InnerPower)
{
ushort page = ranking.Page;
InnerPower[] list = null;
Func<InnerPower, uint> select = null;
list = InnerPower.InnerPowerRank.GetRankingList();
select = (inner) => { return inner.TotalScore; };
if (list.Length < page * 10) return;
uint count = (uint)Math.Min(list.Length - page * 10, 10);
var nRanking = new Network.GamePackets.MsgRank(true);
nRanking.Mode = Network.GamePackets.MsgRank.Ranking;
nRanking.RankingType = ranking.RankingType;
nRanking.Page = page;
nRanking.RegisteredCount = (ushort)list.Length;
int rank = (int)page * 10;
for (int i = rank; i < rank + count; i++)
{
var current = list[i];
nRanking.Append((uint)(i + 1), (uint)select(current), current.UID, current.Name);
}
client.Send(nRanking);
}
if (ranking.RankingType >= Network.GamePackets.MsgRank.DragonChi && ranking.RankingType <= Network.GamePackets.MsgRank.TurtleChi)
MsgTrainingVitality.ShowGenericRanking(ranking, client);
else if (ranking.RankingType >= Network.GamePackets.MsgRank.RoseFairy && ranking.RankingType <= Network.GamePackets.MsgRank.TulipFairy)
MsgTrainingVitality.ShowGenericRanking2(ranking, client);
else if (ranking.RankingType >= Network.GamePackets.MsgRank.Kiss && ranking.RankingType <= Network.GamePackets.MsgRank.Jade)
MsgTrainingVitality.ShowGenericRanking2(ranking, client);
if (ranking.RankingType >= Network.GamePackets.MsgRank.Prestige && ranking.RankingType <= Network.GamePackets.MsgRank.Prestige + 10)
{
switch (ranking.Mode)
{
case Network.GamePackets.MsgRank.Ranking:
{
foreach (var c in Kernel.GamePool.Values)
{
PerfectionManager.CalcAndAdd(c);
}
PerfectionManager.ShowRank(ranking, client);
return;
}
}
return;
}
break;
}
case Network.GamePackets.MsgRank.QueryCount:
{
if (ranking.RankingType == 70000000)
{
if (client.Player.InnerPower != null)
{
MsgRank genericRanking3 = new MsgRank(true, 1);
genericRanking3.Mode = 2;
genericRanking3.RankingType = ranking.RankingType;
genericRanking3.Count = 1;
genericRanking3.Append((uint)client.Player.InnerPo wer.Rank, client.Player.InnerPower.TotalScore, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
return;
}
/* if (ranking.RankingType == Network.GamePackets.MsgRank.Prestige)
{
if (client.Player.Prestige > 1)
{
MsgRank genericRanking3 = new MsgRank(true, 1);
genericRanking3.Mode = 2;
genericRanking3.RankingType = ranking.RankingType;
genericRanking3.Count = 1;
genericRanking3.Append((uint)PerfectionManager.Get Rank(client, ranking.RankingType), (uint)client.Player.Prestige, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
return;
}
if (ranking.RankingType >= Network.GamePackets.MsgRank.PrestigeTrojan && ranking.RankingType <= Network.GamePackets.MsgRank.Prestigewing)
{
if (client.Player.Prestige > 1)
{
MsgRank genericRanking3 = new MsgRank(true, 1);
genericRanking3.Mode = 2;
genericRanking3.RankingType = ranking.RankingType;
genericRanking3.Count = 1;
genericRanking3.Append((uint)PerfectionManager.Get Rank(client, ranking.RankingType), (uint)client.Player.Prestige, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
return;
}*/
if (Flowers.IsGirl((uint)client.Player.Body))
{
if (client.Player.MyFlowers != null)
{
int num61 = -1;
uint num62 = Flowers.CreateMyRank(client, out num61);
packet[4] = 5;
client.Send(packet);
client.Player.FlowerRank = (uint)client.Player.MyFlowers.SendScreenValue((Gam e.Features.Flowers.FlowersT)num62, num61);
MsgRank genericRanking2 = new MsgRank(true, 1u);
genericRanking2.Mode = 2u;
genericRanking2.RankingType = client.Player.FlowerRank;
genericRanking2.Count = 1u;
int rank = num61;
if (client.Player.MyFlowers.RankRoses < 100 && client.Player.MyFlowers.RankRoses > 0)
{
genericRanking2.RankingType = Network.GamePackets.MsgRank.RoseFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankRoses, client.Player.MyFlowers.RedRoses, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
if (client.Player.MyFlowers.RankLilies < 100 && client.Player.MyFlowers.RankLilies > 0)
{
genericRanking2.Reset();
genericRanking2.RankingType = Network.GamePackets.MsgRank.LilyFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankLilies, client.Player.MyFlowers.Lilies, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
if (client.Player.MyFlowers.RankOrchids < 100 && client.Player.MyFlowers.RankOrchids > 0)
{
genericRanking2.Reset();
genericRanking2.RankingType = Network.GamePackets.MsgRank.OrchidFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankOrchids, client.Player.MyFlowers.Orchads, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
if (client.Player.MyFlowers.RankTuilps < 100 && client.Player.MyFlowers.RankTuilps > 0)
{
if (client.Player.MyFlowers.RankTuilps == 1 && !client.Player.TulipsWing)
{
//client.TitleStorage.Add(6005, 6005, false);
if (client.Player.EquippedWing == 0)
new TitleStorage().AddTitle(client, 6005, 6005, true);
else
new TitleStorage().AddTitle(client, 6005, 6005, false);
client.Player.TulipsWing = true;
}
//Mrali
genericRanking2.Reset();
genericRanking2.RankingType = Network.GamePackets.MsgRank.TulipFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankTuilps, client.Player.MyFlowers.Tulips, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
packet[4] = 5;
client.Send(packet);
break;
}
break;
}
else
{
if (client.Player.MyFlowers != null)
{
MsgRank genericRanking3 = new MsgRank(true, 1u);
genericRanking3.Mode = 2u;
genericRanking3.RankingType = 30000402u;
genericRanking3.Count = 1u;
if (client.Player.MyFlowers.RankRoses < 100 && client.Player.MyFlowers.RankRoses > 0)
{
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankRoses, client.Player.MyFlowers.RedRoses, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
if (client.Player.MyFlowers.RankLilies < 100 && client.Player.MyFlowers.RankLilies > 0)
{
genericRanking3.Reset();
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankLilies, client.Player.MyFlowers.Lilies, client.Player.UID, client.Player.Name);
genericRanking3.RankingType = 30000502u;
client.Send(genericRanking3.ToArray());
}
if (client.Player.MyFlowers.RankOrchids < 100 && client.Player.MyFlowers.RankOrchids > 0)
{
genericRanking3.Reset();
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankOrchids, client.Player.MyFlowers.Orchads, client.Player.UID, client.Player.Name);
genericRanking3.RankingType = 30000602u;
client.Send(genericRanking3.ToArray());
}
if (client.Player.MyFlowers.RankTuilps < 100 && client.Player.MyFlowers.RankTuilps > 0)
{
genericRanking3.Reset();
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankTuilps, client.Player.MyFlowers.Tulips, client.Player.UID, client.Player.Name);
genericRanking3.RankingType = 30000702u;
client.Send(genericRanking3.ToArray());
}
packet[4] = 5;
client.Send(packet);
break;
}
}
break;
}
/*case Network.GamePackets.MsgRank.TotemRank:
{
PerfectionManager.ShowHighWall(ranking, client);
break;
} */
default:
if (client.Account.State == Database.AccountTable.AccountState.Administrator)
client.Send("Unknown RankID : " + ranking.Mode); break;
}
}
public static void MsgFlower(Client.GameState client, byte[] packet)
{
byte typ1 = packet[4];
uint Target = BitConverter.ToUInt32(packet, 8);
uint ITEM_UID = BitConverter.ToUInt32(packet, 12);
if (IsBoy(client.Player.Body) && typ1 == 0)//boy send
{
switch (ITEM_UID)
{
case 0://send my flower
{
if (client.Player.MyFlowers.aFlower == 0) break;
Client.GameState target_client;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsGirl(target_client.Player.Body)) return;
client.Player.MyFlowers.aFlower = 0;
client.Player.MyFlowers.SendDay = (uint)DateTime.Now.Day;
target_client.Player.MyFlowers.RedRoses2day += 1;
target_client.Player.MyFlowers.RedRoses += 1;
SendFlower flow = new SendFlower();
flow.Typing = 0;
flow.Effect = (byte)Game.Features.Flowers.Effect.Tulips;
flow.Amount = 1;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Rouse;
client.SendScreen(flow.ToArray(), true);
}
break;
}
default:
{
Network.GamePackets.MsgItemInfo Item = null;
if (client.Inventory.TryGetItem(ITEM_UID, out Item))
{
Client.GameState target_client;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsGirl(target_client.Player.Body)) return;
uint Amount = Item.ID % 1000;
SendFlower flow = new SendFlower();
flow.Typing = typ1;
flow.Amount = Amount;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
switch (GetFlowerTyp(Item.ID))
{
case (byte)Game.Features.Flowers.FlowersT.Rouse:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Rouse;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Rouse;
target_client.Player.MyFlowers.RedRoses2day += Amount;
target_client.Player.MyFlowers.RedRoses += Amount;
if (Game.Features.Flowers.RedRousesTop100.Length > 98)
{
if (Game.Features.Flowers.RedRousesTop100[98].RedRoses <= target_client.Player.MyFlowers.RedRoses)
{
Game.Features.Flowers.CulculateRankRouse(target_cl ient.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankRouse(target_cl ient.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Lilies:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Lilies;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Lilies;
target_client.Player.MyFlowers.Lilies2day += Amount;
target_client.Player.MyFlowers.Lilies += Amount;
if (Game.Features.Flowers.LiliesTop100.Length > 98)
{
if (Game.Features.Flowers.LiliesTop100[98].Lilies <= target_client.Player.MyFlowers.Lilies)
{
Game.Features.Flowers.CulculateRankLilies(target_c lient.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankLilies(target_c lient.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Orchids:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Orchids;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Orchids;
target_client.Player.MyFlowers.Orchads2day += Amount;
target_client.Player.MyFlowers.Orchads += Amount;
if (Game.Features.Flowers.OrchidsTop100.Length > 98)
{
if (Game.Features.Flowers.OrchidsTop100[98].Orchads <= target_client.Player.MyFlowers.Orchads)
{
Game.Features.Flowers.CulculateRankOrchids(target_ client.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankOrchids(target_ client.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Tulips:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Tulips;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Tulips;
target_client.Player.MyFlowers.Tulips2day += Amount;
target_client.Player.MyFlowers.Tulips += Amount;
if (Game.Features.Flowers.TulipsTop100.Length > 98)
{
if (Game.Features.Flowers.TulipsTop100[98].Tulips <= target_client.Player.MyFlowers.Tulips)
{
Game.Features.Flowers.CulculateRankTulips(target_c lient.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankTulips(target_c lient.Player.MyFlowers);
break;
}
}
client.Inventory.Remove(Item, Enums.ItemUse.Remove);
client.SendScreen(flow.ToArray(), true);
}
}
break;
}
}
}
else if (IsGirl(client.Player.Body) && typ1 == 1)//girl send
{
switch (ITEM_UID)
{
case 0://curent flower
{
if (client.Player.MyFlowers.aFlower == 0)
return;
Client.GameState target_client;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsBoy(target_client.Player.Body)) return;
client.Player.MyFlowers.aFlower = 0;
client.Player.MyFlowers.SendDay = (uint)DateTime.Now.Day;
target_client.Player.MyFlowers.RedRoses += 1;
target_client.Player.MyFlowers.RedRoses2day += 1;
SendFlower flow = new SendFlower();
flow.Typing = 1;
flow.Effect = (byte)Game.Features.Flowers.Effect.Kiss;
flow.Amount = 1;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Kiss;
client.SendScreen(flow.ToArray(), true);
}
break;
}
default:
{
MsgItemInfo Item = null;
if (client.Inventory.TryGetItem(ITEM_UID, out Item))
{
Client.GameState target_client = null;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsBoy(target_client.Player.Body)) return;
uint Amount = Item.ID % 1000;
SendFlower flow = new SendFlower();
flow.Typing = 1;
flow.Amount = Amount;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
switch (GetFlowerTyp(Item.ID))
{
case (byte)Game.Features.Flowers.FlowersT.Rouse:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Kiss;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Kiss;
target_client.Player.MyFlowers.RedRoses2day += Amount;
target_client.Player.MyFlowers.RedRoses += Amount;
if (Game.Features.Flowers.KissTop100.Length > 98)
{
if (Game.Features.Flowers.KissTop100[98].RedRoses <= target_client.Player.MyFlowers.RedRoses)
{
Game.Features.Flowers.CulculateRankKiss(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankKiss(target_cli ent.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Lilies:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.love;
flow.FType = (byte)Game.Features.Flowers.FlowersT.love;
target_client.Player.MyFlowers.Lilies2day += Amount;
target_client.Player.MyFlowers.Lilies += Amount;
if (Game.Features.Flowers.LoveTop100.Length > 98)
{
if (Game.Features.Flowers.LoveTop100[98].Lilies <= target_client.Player.MyFlowers.Lilies)
{
Game.Features.Flowers.CulculateRankLove(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankLove(target_cli ent.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Orchids:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Tins;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Tins;
target_client.Player.MyFlowers.Orchads2day += Amount;
target_client.Player.MyFlowers.Orchads += Amount;
if (Game.Features.Flowers.TineTop100.Length > 98)
{
if (Game.Features.Flowers.TineTop100[98].Orchads <= target_client.Player.MyFlowers.Orchads)
{
Game.Features.Flowers.CulculateRankTine(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankTine(target_cli ent.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Tulips:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Jade;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Jade;
target_client.Player.MyFlowers.Tulips2day += Amount;
target_client.Player.MyFlowers.Tulips += Amount;
if (Game.Features.Flowers.JadeTop100.Length > 98)
{
if (Game.Features.Flowers.JadeTop100[98].Tulips <= target_client.Player.MyFlowers.Tulips)
{
Game.Features.Flowers.CulculateRankJade(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankJade(target_cli ent.Player.MyFlowers);
break;
}
}
client.Inventory.Remove(Item, Enums.ItemUse.Remove);
client.SendScreen(flow.ToArray(), true);
}
}
break;
}
}
}
}
public static uint CreateMyRank(Client.GameState client, out int rank)
{
List<ClientRank> FRanks = new List<ClientRank>()
{
new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankLilies, Amount = client.Player.MyFlowers.Lilies}
, new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankOrchids, Amount = client.Player.MyFlowers.Orchads}
, new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankRoses, Amount = client.Player.MyFlowers.RedRoses}
, new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankTuilps, Amount = client.Player.MyFlowers.Tulips}
};
var array = FRanks.Where((f1) => f1.Rank != 0).ToArray();
Array.Sort(array, (f1, f2) =>
{
int n_rank = f1.Rank.CompareTo(f2.Rank);
if (f2.Rank == f1.Rank)
return f2.Amount.CompareTo(f1.Amount);
return n_rank;
});
if (array != null && array.Length > 0)
{
ClientRank BestRank = array[0];
if (BestRank.Rank != 0)
{
rank = (int)BestRank.Rank;
if (client.Player.MyFlowers.RankLilies == BestRank.Rank && client.Player.MyFlowers.Lilies == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Lilies;
if (client.Player.MyFlowers.RankOrchids == BestRank.Rank && client.Player.MyFlowers.Orchads == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Orchids;
if (client.Player.MyFlowers.RankRoses == BestRank.Rank && client.Player.MyFlowers.RedRoses == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Rouse;
if (client.Player.MyFlowers.RankTuilps == BestRank.Rank && client.Player.MyFlowers.Tulips == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Tulips;
}
}
rank = 0;
return 0;
}
public static uint GetFlowerTyp(uint ID)
{
if (ID >= 751001 && ID <= 751999 || ID >= 755001 && ID <= 755999)
return (uint)Game.Features.Flowers.FlowersT.Rouse;
if (ID >= 752001 && ID <= 752999 || ID >= 756001 && ID <= 756999)
return (uint)Game.Features.Flowers.FlowersT.Lilies;
if (ID >= 753001 && ID <= 753999 || ID >= 757001 && ID <= 757999)
return (uint)Game.Features.Flowers.FlowersT.Orchids;
if (ID >= 754001 && ID <= 754999 || ID >= 758001 && ID <= 758999)
return (uint)Game.Features.Flowers.FlowersT.Tulips;
return 0;
}
public static bool IsBoy(uint mesh)
{
return mesh == 1005 || mesh == 1006;
}
public static bool IsGirl(uint mesh)
{
return mesh == 2005 || mesh == 2006;
}
public class ClientRank
{
public uint Rank;
public uint Amount;
}
}
}
الكود دا المسئول عن اللد والبنت لو مش عاوز تغير الكلاس بدلو بالى عندك فى الكلاس
public static bool IsBoy(uint mesh)
{
return mesh == 1005 || mesh == 1006;
}
public static bool IsGirl(uint mesh)
{
return mesh == 2005 || mesh == 2006;
}
طبعا ده ابجريد ال 3d لو 2d انت اتغيره حسب الابجريد والرقم بتاع البنت والولد
افتح كلاس
SendFlower.cs
بدل بده
using System.Text;
using code.Game.Features;
namespace code.Network.GamePackets
{
public unsafe class SendFlower : Writer
{
private byte[] Packet;
public SendFlower()
{
Packet = new byte[68];
WriteUInt16(60, 0, Packet);
WriteUInt16(1150, 2, Packet);
}
public uint Typing
{
get { return BitConverter.ToUInt32(Packet, 4); }
set { WriteUInt32(value, 4, Packet); }
}
public string SenderName
{
get { return Encoding.ASCII.GetString(Packet, 16, 16); }
set { WriteString(value, 16, Packet); }
}
public string ReceiverName
{
get { return Encoding.ASCII.GetString(Packet, 32, 16); }
set { WriteString(value, 32, Packet); }
}
public uint Amount
{
get { return BitConverter.ToUInt32(Packet, 48); }
set { WriteUInt32(value, 48, Packet); }
}
public uint FType
{
get { return BitConverter.ToUInt32(Packet, 52); }
set { WriteUInt32(value, 52, Packet); }
}
public uint Effect
{
get { return BitConverter.ToUInt32(Packet, 56); }
set { WriteUInt32(value, 56, Packet); }
}
public void Apprend(Flowers flowers)
{
WriteUInt32(flowers.RedRoses, 16, Packet);
WriteUInt32(flowers.RedRoses2day, 20, Packet);
WriteUInt32(flowers.Lilies, 24, Packet);
WriteUInt32(flowers.Lilies2day, 28, Packet);
WriteUInt32(flowers.Orchads, 32, Packet);
WriteUInt32(flowers.Orchads2day, 36, Packet);
WriteUInt32(flowers.Tulips, 40, Packet);
WriteUInt32(flowers.Tulips2day, 44, Packet);
}
public byte[] ToArray()
{
return Packet;
}
}
}
وصور الرنك اهو
عفواً لايمكن عرض الروابط في الإرشيف
في عضو نزل مشكله عن حكايه رنك الورد انه مش شغال
فدلوقتي انضيفه مع بعض
افتح كلاس Flowers.cs
وبدله بده كله
using System;
using System.Linq;
using System.Text;
using code.Client;
using System.Collections.Generic;
using code.Network.GamePackets;
using System.Collections.Concurrent;
using code.Rangers.Inner;
namespace code.Game.Features
{
public unsafe class Flowers
{
public enum Effect : byte
{
None = 0,
Rouse = 1,
Lilies = 2,
Orchids = 3,
Tulips = 4,
Kiss = 1,
love = 2,
Tins = 3,
Jade = 4,
}
public enum FlowersT : byte
{
Rouse = 0,
Lilies = 1,
Orchids = 2,
Tulips = 3,
Kiss = 4,
love = 5,
Tins = 6,
Jade = 7,
}
public Flowers()
{
}
public Flowers(uint _UID, string name)
{
UID = _UID;
Name = name;
}
public uint UID;
public uint aFlower = 1;
public uint SendDay = 0;
public string Name = "";
public int SendScreenValue(FlowersT typ, int rak)
{
if (rak == 0 || rak > 100)
return 0;
return (int)(30000002 + (uint)(100 * (byte)typ) + GetRank(rak));
}
public ushort GetRank(int rank)
{
if (rank == 1)
return 0;
if (rank == 2)
return 10000;
if (rank == 3)
return 20000;
if (rank > 3)
return 30000;
return 0;
}
public int BoySendScreenValue(FlowersT typ, int rak)
{
int ret = 0;
if (rak == -1) return 0;
if (rak > 100) return 0;
ret = (int)(30000402 + (uint)(100 * (byte)typ));
return ret;
}
public int RankRoses = 0;
public int RankLilies = 0;//max 10 start with -1.
public int RankOrchids = 0;//max 10 start with -1.
public int RankTuilps = 0;//max 10 start with -1.
public uint RedRoses;//kiss
public uint RedRoses2day;
public uint Lilies;//love
public uint Lilies2day;
public uint Orchads;//wine
public uint Orchads2day;
public uint Tulips;//jade
public uint Tulips2day;
public override string ToString()
{
return UID + "#"
+ Name + "#"
+ RedRoses + "#"
+ RedRoses2day + "#"
+ Lilies + "#"
+ Lilies2day + "#"
+ Orchads + "#"
+ Orchads2day + "#"
+ Tulips + "#"
+ Tulips2day + "#"
+ SendDay + "#"
+ aFlower + "#"
+ 0 + "#"
+ 0 + "#"
+ 0 + "#"
+ 0 + "#"
+ 0 + "#";
}
public void Read(string aLine)
{
if (aLine == "" || aLine == null) return;
string[] line = aLine.Split('#');
UID = uint.Parse(line[0]);
Name = line[1];
RedRoses = uint.Parse(line[2]);
RedRoses2day = uint.Parse(line[3]);
Lilies = uint.Parse(line[4]);
Lilies2day = uint.Parse(line[5]);
Orchads = uint.Parse(line[6]);
Orchads2day = uint.Parse(line[7]);
Tulips = uint.Parse(line[8]);
Tulips2day = uint.Parse(line[9]);
SendDay = uint.Parse(line[10]);
aFlower = uint.Parse(line[11]);
Reset();
}
public void Reset()
{
if (SendDay != DateTime.Now.Day)
{
RedRoses2day = Lilies2day = Orchads2day = Tulips2day = 0;
aFlower = 1;
SendDay = (uint)DateTime.Now.Day;
}
}
public static ConcurrentDictionary<uint, Flowers> Flowers_Poll = new ConcurrentDictionary<uint, Flowers>();
public static ConcurrentDictionary<uint, Flowers> BoyFlowers = new ConcurrentDictionary<uint, Flowers>();
public static Flowers[] KissTop100 = new Flowers[0];
public static Flowers[] LoveTop100 = new Flowers[0];
public static Flowers[] TineTop100 = new Flowers[0];
public static Flowers[] JadeTop100 = new Flowers[0];
public static Flowers[] RedRousesTop100 = new Flowers[0];
public static Flowers[] LiliesTop100 = new Flowers[0];
public static Flowers[] OrchidsTop100 = new Flowers[0];
public static Flowers[] TulipsTop100 = new Flowers[0];
public static object RouseLock = new object();
public static object LilisLock = new object();
public static object OrchidsLock = new object();
public static object TulipsLock = new object();
public static object KissLock = new object();
public static object LoveLock = new object();
public static object TineLock = new object();
public static object JadeLock = new object();
public static List<Flowers> RankKiss = new List<Flowers>();
public static List<Flowers> RankLove = new List<Flowers>();
public static List<Flowers> RankTine = new List<Flowers>();
public static List<Flowers> RankJade = new List<Flowers>();
public static List<Flowers> Rankrose = new List<Flowers>();
public static List<Flowers> Ranklili = new List<Flowers>();
public static List<Flowers> Rankorchid = new List<Flowers>();
public static List<Flowers> RankTulips = new List<Flowers>();
public static void CulculateRankJade(Flowers afflow)
{
lock (JadeLock)
{
try
{
if (!RankJade.Contains(afflow))
RankJade.Add(afflow);
var data = RankJade.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Tulips.CompareTo(c1.Tulips); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Tulips == 0) continue;
if (x < 100)
{
flow.RankTuilps = x;
backUpd.Add(flow);
}
else
flow.RankTuilps = 0;
x++;
}
lock (JadeTop100)
{
RankJade = new List<Flowers>(backUpd);
JadeTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankTine(Flowers afflow)
{
lock (TineLock)
{
try
{
if (!RankTine.Contains(afflow))
RankTine.Add(afflow);
var data = RankTine.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Orchads.CompareTo(c1.Orchads); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Orchads == 0) continue;
if (x < 100)
{
flow.RankOrchids = x;
backUpd.Add(flow);
}
else
flow.RankOrchids = 0;
x++;
}
lock (TineTop100)
{
RankTine = new List<Flowers>(backUpd);
TineTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankLove(Flowers afflow)
{
lock (LoveLock)
{
try
{
if (!RankLove.Contains(afflow))
RankLove.Add(afflow);
var data = RankLove.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Lilies.CompareTo(c1.Lilies); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Lilies == 0) continue;
if (x < 100)
{
flow.RankLilies = x;
backUpd.Add(flow);
}
else
flow.RankLilies = 0;
x++;
}
lock (LoveTop100)
{
RankLove = new List<Flowers>(backUpd);
LoveTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankKiss(Flowers afflow)
{
lock (KissLock)
{
try
{
if (!RankKiss.Contains(afflow))
RankKiss.Add(afflow);
var data = RankKiss.ToArray();
Array.Sort(data, (c1, c2) => { return c2.RedRoses.CompareTo(c1.RedRoses); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.RedRoses == 0) continue;
if (x < 100)
{
flow.RankRoses = x;
backUpd.Add(flow);
}
else
flow.RankRoses = 0;
x++;
}
lock (KissTop100)
{
RankKiss = new List<Flowers>(backUpd);
KissTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankRouse(Flowers afflow)
{
lock (RouseLock)
{
try
{
if (!Rankrose.Contains(afflow))
Rankrose.Add(afflow);
var data = Rankrose.ToArray();
Array.Sort(data, (c1, c2) => { return c2.RedRoses.CompareTo(c1.RedRoses); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.RedRoses == 0) continue;
if (x < 100)
{
flow.RankRoses = x;
backUpd.Add(flow);
}
else
{
flow.RankRoses = 0;
}
x++;
}
lock (RedRousesTop100)
{
Rankrose = new List<Flowers>(backUpd);
RedRousesTop100 = backUpd.ToArray();
}
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public static void CulculateRankLilies(Flowers afflow)
{
lock (LilisLock)
{
if (!Ranklili.Contains(afflow))
Ranklili.Add(afflow);
var data = Ranklili.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Lilies.CompareTo(c1.Lilies); });
//IEnumerable<Flowers> query = data.OrderBy(redrous => redrous.Tulips);
//var room = query.ToArray();
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Lilies == 0) continue;
if (x < 100)
{
flow.RankLilies = x;
backUpd.Add(flow);
}
else
{
flow.RankLilies = 0;
}
x++;
}
lock (LiliesTop100)
{
Ranklili = new List<Flowers>(backUpd);
LiliesTop100 = backUpd.ToArray();
}
}
}
public static void CulculateRankOrchids(Flowers afflow)
{
lock (OrchidsLock)
{
if (!Rankorchid.Contains(afflow))
Rankorchid.Add(afflow);
var data = Rankorchid.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Orchads.CompareTo(c1.Orchads); });
//IEnumerable<Flowers> query = data.OrderBy(redrous => redrous.Tulips);
//var room = query.ToArray();
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Orchads == 0) continue;
if (x < 100)
{
flow.RankOrchids = x;
backUpd.Add(flow);
}
else
{
flow.RankOrchids = 0;
}
x++;
}
lock (OrchidsTop100)
{
Rankorchid = new List<Flowers>(backUpd);
OrchidsTop100 = backUpd.ToArray();
}
}
}
public static void CulculateRankTulips(Flowers afflow)
{
lock (TulipsLock)
{
if (!RankTulips.Contains(afflow))
RankTulips.Add(afflow);
var data = RankTulips.ToArray();
Array.Sort(data, (c1, c2) => { return c2.Tulips.CompareTo(c1.Tulips); });
var room = data.ToArray();
List<Flowers> backUpd = new List<Flowers>();
int x = 1;
foreach (Flowers flow in room)
{
if (flow.Tulips == 0) continue;
if (x < 100)
{
flow.RankTuilps = x;
backUpd.Add(flow);
}
else
{
flow.RankTuilps = 0;
}
x++;
}
lock (TulipsTop100)
{
RankTulips = new List<Flowers>(backUpd);
TulipsTop100 = backUpd.ToArray();
}
}
}
public static void MsgRank(byte[] packet, GameState client)
{
MsgRank ranking = new MsgRank(false, 0);
ranking.Deserialize(packet);
switch (ranking.Mode)
{
case 6://Prestige
{
foreach (var c in Kernel.GamePool.Values)
{
PerfectionManager.CalcAndAdd(c);
}
PerfectionManager.ShowRank(ranking, client);
var index = new byte[11] { 0, 15, 25, 45, 55, 65, 75, 85, 135, 145, 165 };
EntityRank[] Chars = new EntityRank[11];
for (int i = 0; i < Chars.Length; i++)
{
if (i == 0)
Chars[i] = PerfectionManager.Ranking.Values.OrderByDescending (e => e.Prestige).ThenByDescending(x => x.Class).ThenByDescending(x => x.Level).ThenBy(x => x.UID).FirstOrDefault();
else Chars[i] = PerfectionManager.Ranking.Values.Where(x => x.Class >= (index[i] - 5) && x.Class <= index[i]).OrderByDescending(x => x.Prestige).ThenByDescending(x => x.Level).ThenBy(x => x.UID).FirstOrDefault();
}
byte count = 0;
foreach (var zz in Chars) if (zz != null) count++;
var nRanking = new MsgRank(true, count);
nRanking.Mode = 6;
nRanking.Count = count;
for (byte z = 0; z < Chars.Length; z++)
{
var Entity = Chars[z];
if (Entity == null) continue;
nRanking.Append2((uint)(z + 1), (uint)Entity.Prestige, Entity.UID, Entity.Name, Entity.Level, Entity.Class, Entity.Mesh, true);
}
client.Send(nRanking);
break;
}
case Network.GamePackets.MsgRank.Ranking:
{
if (ranking.RankingType == Network.GamePackets.MsgRank.InnerPower)
{
ushort page = ranking.Page;
InnerPower[] list = null;
Func<InnerPower, uint> select = null;
list = InnerPower.InnerPowerRank.GetRankingList();
select = (inner) => { return inner.TotalScore; };
if (list.Length < page * 10) return;
uint count = (uint)Math.Min(list.Length - page * 10, 10);
var nRanking = new Network.GamePackets.MsgRank(true);
nRanking.Mode = Network.GamePackets.MsgRank.Ranking;
nRanking.RankingType = ranking.RankingType;
nRanking.Page = page;
nRanking.RegisteredCount = (ushort)list.Length;
int rank = (int)page * 10;
for (int i = rank; i < rank + count; i++)
{
var current = list[i];
nRanking.Append((uint)(i + 1), (uint)select(current), current.UID, current.Name);
}
client.Send(nRanking);
}
if (ranking.RankingType >= Network.GamePackets.MsgRank.DragonChi && ranking.RankingType <= Network.GamePackets.MsgRank.TurtleChi)
MsgTrainingVitality.ShowGenericRanking(ranking, client);
else if (ranking.RankingType >= Network.GamePackets.MsgRank.RoseFairy && ranking.RankingType <= Network.GamePackets.MsgRank.TulipFairy)
MsgTrainingVitality.ShowGenericRanking2(ranking, client);
else if (ranking.RankingType >= Network.GamePackets.MsgRank.Kiss && ranking.RankingType <= Network.GamePackets.MsgRank.Jade)
MsgTrainingVitality.ShowGenericRanking2(ranking, client);
if (ranking.RankingType >= Network.GamePackets.MsgRank.Prestige && ranking.RankingType <= Network.GamePackets.MsgRank.Prestige + 10)
{
switch (ranking.Mode)
{
case Network.GamePackets.MsgRank.Ranking:
{
foreach (var c in Kernel.GamePool.Values)
{
PerfectionManager.CalcAndAdd(c);
}
PerfectionManager.ShowRank(ranking, client);
return;
}
}
return;
}
break;
}
case Network.GamePackets.MsgRank.QueryCount:
{
if (ranking.RankingType == 70000000)
{
if (client.Player.InnerPower != null)
{
MsgRank genericRanking3 = new MsgRank(true, 1);
genericRanking3.Mode = 2;
genericRanking3.RankingType = ranking.RankingType;
genericRanking3.Count = 1;
genericRanking3.Append((uint)client.Player.InnerPo wer.Rank, client.Player.InnerPower.TotalScore, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
return;
}
/* if (ranking.RankingType == Network.GamePackets.MsgRank.Prestige)
{
if (client.Player.Prestige > 1)
{
MsgRank genericRanking3 = new MsgRank(true, 1);
genericRanking3.Mode = 2;
genericRanking3.RankingType = ranking.RankingType;
genericRanking3.Count = 1;
genericRanking3.Append((uint)PerfectionManager.Get Rank(client, ranking.RankingType), (uint)client.Player.Prestige, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
return;
}
if (ranking.RankingType >= Network.GamePackets.MsgRank.PrestigeTrojan && ranking.RankingType <= Network.GamePackets.MsgRank.Prestigewing)
{
if (client.Player.Prestige > 1)
{
MsgRank genericRanking3 = new MsgRank(true, 1);
genericRanking3.Mode = 2;
genericRanking3.RankingType = ranking.RankingType;
genericRanking3.Count = 1;
genericRanking3.Append((uint)PerfectionManager.Get Rank(client, ranking.RankingType), (uint)client.Player.Prestige, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
return;
}*/
if (Flowers.IsGirl((uint)client.Player.Body))
{
if (client.Player.MyFlowers != null)
{
int num61 = -1;
uint num62 = Flowers.CreateMyRank(client, out num61);
packet[4] = 5;
client.Send(packet);
client.Player.FlowerRank = (uint)client.Player.MyFlowers.SendScreenValue((Gam e.Features.Flowers.FlowersT)num62, num61);
MsgRank genericRanking2 = new MsgRank(true, 1u);
genericRanking2.Mode = 2u;
genericRanking2.RankingType = client.Player.FlowerRank;
genericRanking2.Count = 1u;
int rank = num61;
if (client.Player.MyFlowers.RankRoses < 100 && client.Player.MyFlowers.RankRoses > 0)
{
genericRanking2.RankingType = Network.GamePackets.MsgRank.RoseFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankRoses, client.Player.MyFlowers.RedRoses, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
if (client.Player.MyFlowers.RankLilies < 100 && client.Player.MyFlowers.RankLilies > 0)
{
genericRanking2.Reset();
genericRanking2.RankingType = Network.GamePackets.MsgRank.LilyFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankLilies, client.Player.MyFlowers.Lilies, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
if (client.Player.MyFlowers.RankOrchids < 100 && client.Player.MyFlowers.RankOrchids > 0)
{
genericRanking2.Reset();
genericRanking2.RankingType = Network.GamePackets.MsgRank.OrchidFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankOrchids, client.Player.MyFlowers.Orchads, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
if (client.Player.MyFlowers.RankTuilps < 100 && client.Player.MyFlowers.RankTuilps > 0)
{
if (client.Player.MyFlowers.RankTuilps == 1 && !client.Player.TulipsWing)
{
//client.TitleStorage.Add(6005, 6005, false);
if (client.Player.EquippedWing == 0)
new TitleStorage().AddTitle(client, 6005, 6005, true);
else
new TitleStorage().AddTitle(client, 6005, 6005, false);
client.Player.TulipsWing = true;
}
//Mrali
genericRanking2.Reset();
genericRanking2.RankingType = Network.GamePackets.MsgRank.TulipFairy;
genericRanking2.Append((uint)client.Player.MyFlowe rs.RankTuilps, client.Player.MyFlowers.Tulips, client.Player.UID, client.Player.Name);
client.Send(genericRanking2.ToArray());
}
packet[4] = 5;
client.Send(packet);
break;
}
break;
}
else
{
if (client.Player.MyFlowers != null)
{
MsgRank genericRanking3 = new MsgRank(true, 1u);
genericRanking3.Mode = 2u;
genericRanking3.RankingType = 30000402u;
genericRanking3.Count = 1u;
if (client.Player.MyFlowers.RankRoses < 100 && client.Player.MyFlowers.RankRoses > 0)
{
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankRoses, client.Player.MyFlowers.RedRoses, client.Player.UID, client.Player.Name);
client.Send(genericRanking3.ToArray());
}
if (client.Player.MyFlowers.RankLilies < 100 && client.Player.MyFlowers.RankLilies > 0)
{
genericRanking3.Reset();
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankLilies, client.Player.MyFlowers.Lilies, client.Player.UID, client.Player.Name);
genericRanking3.RankingType = 30000502u;
client.Send(genericRanking3.ToArray());
}
if (client.Player.MyFlowers.RankOrchids < 100 && client.Player.MyFlowers.RankOrchids > 0)
{
genericRanking3.Reset();
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankOrchids, client.Player.MyFlowers.Orchads, client.Player.UID, client.Player.Name);
genericRanking3.RankingType = 30000602u;
client.Send(genericRanking3.ToArray());
}
if (client.Player.MyFlowers.RankTuilps < 100 && client.Player.MyFlowers.RankTuilps > 0)
{
genericRanking3.Reset();
genericRanking3.Append((uint)client.Player.MyFlowe rs.RankTuilps, client.Player.MyFlowers.Tulips, client.Player.UID, client.Player.Name);
genericRanking3.RankingType = 30000702u;
client.Send(genericRanking3.ToArray());
}
packet[4] = 5;
client.Send(packet);
break;
}
}
break;
}
/*case Network.GamePackets.MsgRank.TotemRank:
{
PerfectionManager.ShowHighWall(ranking, client);
break;
} */
default:
if (client.Account.State == Database.AccountTable.AccountState.Administrator)
client.Send("Unknown RankID : " + ranking.Mode); break;
}
}
public static void MsgFlower(Client.GameState client, byte[] packet)
{
byte typ1 = packet[4];
uint Target = BitConverter.ToUInt32(packet, 8);
uint ITEM_UID = BitConverter.ToUInt32(packet, 12);
if (IsBoy(client.Player.Body) && typ1 == 0)//boy send
{
switch (ITEM_UID)
{
case 0://send my flower
{
if (client.Player.MyFlowers.aFlower == 0) break;
Client.GameState target_client;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsGirl(target_client.Player.Body)) return;
client.Player.MyFlowers.aFlower = 0;
client.Player.MyFlowers.SendDay = (uint)DateTime.Now.Day;
target_client.Player.MyFlowers.RedRoses2day += 1;
target_client.Player.MyFlowers.RedRoses += 1;
SendFlower flow = new SendFlower();
flow.Typing = 0;
flow.Effect = (byte)Game.Features.Flowers.Effect.Tulips;
flow.Amount = 1;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Rouse;
client.SendScreen(flow.ToArray(), true);
}
break;
}
default:
{
Network.GamePackets.MsgItemInfo Item = null;
if (client.Inventory.TryGetItem(ITEM_UID, out Item))
{
Client.GameState target_client;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsGirl(target_client.Player.Body)) return;
uint Amount = Item.ID % 1000;
SendFlower flow = new SendFlower();
flow.Typing = typ1;
flow.Amount = Amount;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
switch (GetFlowerTyp(Item.ID))
{
case (byte)Game.Features.Flowers.FlowersT.Rouse:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Rouse;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Rouse;
target_client.Player.MyFlowers.RedRoses2day += Amount;
target_client.Player.MyFlowers.RedRoses += Amount;
if (Game.Features.Flowers.RedRousesTop100.Length > 98)
{
if (Game.Features.Flowers.RedRousesTop100[98].RedRoses <= target_client.Player.MyFlowers.RedRoses)
{
Game.Features.Flowers.CulculateRankRouse(target_cl ient.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankRouse(target_cl ient.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Lilies:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Lilies;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Lilies;
target_client.Player.MyFlowers.Lilies2day += Amount;
target_client.Player.MyFlowers.Lilies += Amount;
if (Game.Features.Flowers.LiliesTop100.Length > 98)
{
if (Game.Features.Flowers.LiliesTop100[98].Lilies <= target_client.Player.MyFlowers.Lilies)
{
Game.Features.Flowers.CulculateRankLilies(target_c lient.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankLilies(target_c lient.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Orchids:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Orchids;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Orchids;
target_client.Player.MyFlowers.Orchads2day += Amount;
target_client.Player.MyFlowers.Orchads += Amount;
if (Game.Features.Flowers.OrchidsTop100.Length > 98)
{
if (Game.Features.Flowers.OrchidsTop100[98].Orchads <= target_client.Player.MyFlowers.Orchads)
{
Game.Features.Flowers.CulculateRankOrchids(target_ client.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankOrchids(target_ client.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Tulips:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Tulips;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Tulips;
target_client.Player.MyFlowers.Tulips2day += Amount;
target_client.Player.MyFlowers.Tulips += Amount;
if (Game.Features.Flowers.TulipsTop100.Length > 98)
{
if (Game.Features.Flowers.TulipsTop100[98].Tulips <= target_client.Player.MyFlowers.Tulips)
{
Game.Features.Flowers.CulculateRankTulips(target_c lient.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankTulips(target_c lient.Player.MyFlowers);
break;
}
}
client.Inventory.Remove(Item, Enums.ItemUse.Remove);
client.SendScreen(flow.ToArray(), true);
}
}
break;
}
}
}
else if (IsGirl(client.Player.Body) && typ1 == 1)//girl send
{
switch (ITEM_UID)
{
case 0://curent flower
{
if (client.Player.MyFlowers.aFlower == 0)
return;
Client.GameState target_client;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsBoy(target_client.Player.Body)) return;
client.Player.MyFlowers.aFlower = 0;
client.Player.MyFlowers.SendDay = (uint)DateTime.Now.Day;
target_client.Player.MyFlowers.RedRoses += 1;
target_client.Player.MyFlowers.RedRoses2day += 1;
SendFlower flow = new SendFlower();
flow.Typing = 1;
flow.Effect = (byte)Game.Features.Flowers.Effect.Kiss;
flow.Amount = 1;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Kiss;
client.SendScreen(flow.ToArray(), true);
}
break;
}
default:
{
MsgItemInfo Item = null;
if (client.Inventory.TryGetItem(ITEM_UID, out Item))
{
Client.GameState target_client = null;
if (Kernel.GamePool.TryGetValue(Target, out target_client))
{
if (!IsBoy(target_client.Player.Body)) return;
uint Amount = Item.ID % 1000;
SendFlower flow = new SendFlower();
flow.Typing = 1;
flow.Amount = Amount;
flow.SenderName = client.Player.Name;
flow.ReceiverName = target_client.Player.Name;
switch (GetFlowerTyp(Item.ID))
{
case (byte)Game.Features.Flowers.FlowersT.Rouse:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Kiss;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Kiss;
target_client.Player.MyFlowers.RedRoses2day += Amount;
target_client.Player.MyFlowers.RedRoses += Amount;
if (Game.Features.Flowers.KissTop100.Length > 98)
{
if (Game.Features.Flowers.KissTop100[98].RedRoses <= target_client.Player.MyFlowers.RedRoses)
{
Game.Features.Flowers.CulculateRankKiss(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankKiss(target_cli ent.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Lilies:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.love;
flow.FType = (byte)Game.Features.Flowers.FlowersT.love;
target_client.Player.MyFlowers.Lilies2day += Amount;
target_client.Player.MyFlowers.Lilies += Amount;
if (Game.Features.Flowers.LoveTop100.Length > 98)
{
if (Game.Features.Flowers.LoveTop100[98].Lilies <= target_client.Player.MyFlowers.Lilies)
{
Game.Features.Flowers.CulculateRankLove(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankLove(target_cli ent.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Orchids:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Tins;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Tins;
target_client.Player.MyFlowers.Orchads2day += Amount;
target_client.Player.MyFlowers.Orchads += Amount;
if (Game.Features.Flowers.TineTop100.Length > 98)
{
if (Game.Features.Flowers.TineTop100[98].Orchads <= target_client.Player.MyFlowers.Orchads)
{
Game.Features.Flowers.CulculateRankTine(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankTine(target_cli ent.Player.MyFlowers);
break;
}
case (byte)Game.Features.Flowers.FlowersT.Tulips:
{
flow.Effect = (byte)Game.Features.Flowers.Effect.Jade;
flow.FType = (byte)Game.Features.Flowers.FlowersT.Jade;
target_client.Player.MyFlowers.Tulips2day += Amount;
target_client.Player.MyFlowers.Tulips += Amount;
if (Game.Features.Flowers.JadeTop100.Length > 98)
{
if (Game.Features.Flowers.JadeTop100[98].Tulips <= target_client.Player.MyFlowers.Tulips)
{
Game.Features.Flowers.CulculateRankJade(target_cli ent.Player.MyFlowers);
}
}
else Game.Features.Flowers.CulculateRankJade(target_cli ent.Player.MyFlowers);
break;
}
}
client.Inventory.Remove(Item, Enums.ItemUse.Remove);
client.SendScreen(flow.ToArray(), true);
}
}
break;
}
}
}
}
public static uint CreateMyRank(Client.GameState client, out int rank)
{
List<ClientRank> FRanks = new List<ClientRank>()
{
new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankLilies, Amount = client.Player.MyFlowers.Lilies}
, new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankOrchids, Amount = client.Player.MyFlowers.Orchads}
, new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankRoses, Amount = client.Player.MyFlowers.RedRoses}
, new ClientRank(){Rank = (uint)client.Player.MyFlowers.RankTuilps, Amount = client.Player.MyFlowers.Tulips}
};
var array = FRanks.Where((f1) => f1.Rank != 0).ToArray();
Array.Sort(array, (f1, f2) =>
{
int n_rank = f1.Rank.CompareTo(f2.Rank);
if (f2.Rank == f1.Rank)
return f2.Amount.CompareTo(f1.Amount);
return n_rank;
});
if (array != null && array.Length > 0)
{
ClientRank BestRank = array[0];
if (BestRank.Rank != 0)
{
rank = (int)BestRank.Rank;
if (client.Player.MyFlowers.RankLilies == BestRank.Rank && client.Player.MyFlowers.Lilies == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Lilies;
if (client.Player.MyFlowers.RankOrchids == BestRank.Rank && client.Player.MyFlowers.Orchads == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Orchids;
if (client.Player.MyFlowers.RankRoses == BestRank.Rank && client.Player.MyFlowers.RedRoses == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Rouse;
if (client.Player.MyFlowers.RankTuilps == BestRank.Rank && client.Player.MyFlowers.Tulips == BestRank.Amount)
return (byte)Game.Features.Flowers.FlowersT.Tulips;
}
}
rank = 0;
return 0;
}
public static uint GetFlowerTyp(uint ID)
{
if (ID >= 751001 && ID <= 751999 || ID >= 755001 && ID <= 755999)
return (uint)Game.Features.Flowers.FlowersT.Rouse;
if (ID >= 752001 && ID <= 752999 || ID >= 756001 && ID <= 756999)
return (uint)Game.Features.Flowers.FlowersT.Lilies;
if (ID >= 753001 && ID <= 753999 || ID >= 757001 && ID <= 757999)
return (uint)Game.Features.Flowers.FlowersT.Orchids;
if (ID >= 754001 && ID <= 754999 || ID >= 758001 && ID <= 758999)
return (uint)Game.Features.Flowers.FlowersT.Tulips;
return 0;
}
public static bool IsBoy(uint mesh)
{
return mesh == 1005 || mesh == 1006;
}
public static bool IsGirl(uint mesh)
{
return mesh == 2005 || mesh == 2006;
}
public class ClientRank
{
public uint Rank;
public uint Amount;
}
}
}
الكود دا المسئول عن اللد والبنت لو مش عاوز تغير الكلاس بدلو بالى عندك فى الكلاس
public static bool IsBoy(uint mesh)
{
return mesh == 1005 || mesh == 1006;
}
public static bool IsGirl(uint mesh)
{
return mesh == 2005 || mesh == 2006;
}
طبعا ده ابجريد ال 3d لو 2d انت اتغيره حسب الابجريد والرقم بتاع البنت والولد
افتح كلاس
SendFlower.cs
بدل بده
using System.Text;
using code.Game.Features;
namespace code.Network.GamePackets
{
public unsafe class SendFlower : Writer
{
private byte[] Packet;
public SendFlower()
{
Packet = new byte[68];
WriteUInt16(60, 0, Packet);
WriteUInt16(1150, 2, Packet);
}
public uint Typing
{
get { return BitConverter.ToUInt32(Packet, 4); }
set { WriteUInt32(value, 4, Packet); }
}
public string SenderName
{
get { return Encoding.ASCII.GetString(Packet, 16, 16); }
set { WriteString(value, 16, Packet); }
}
public string ReceiverName
{
get { return Encoding.ASCII.GetString(Packet, 32, 16); }
set { WriteString(value, 32, Packet); }
}
public uint Amount
{
get { return BitConverter.ToUInt32(Packet, 48); }
set { WriteUInt32(value, 48, Packet); }
}
public uint FType
{
get { return BitConverter.ToUInt32(Packet, 52); }
set { WriteUInt32(value, 52, Packet); }
}
public uint Effect
{
get { return BitConverter.ToUInt32(Packet, 56); }
set { WriteUInt32(value, 56, Packet); }
}
public void Apprend(Flowers flowers)
{
WriteUInt32(flowers.RedRoses, 16, Packet);
WriteUInt32(flowers.RedRoses2day, 20, Packet);
WriteUInt32(flowers.Lilies, 24, Packet);
WriteUInt32(flowers.Lilies2day, 28, Packet);
WriteUInt32(flowers.Orchads, 32, Packet);
WriteUInt32(flowers.Orchads2day, 36, Packet);
WriteUInt32(flowers.Tulips, 40, Packet);
WriteUInt32(flowers.Tulips2day, 44, Packet);
}
public byte[] ToArray()
{
return Packet;
}
}
}
وصور الرنك اهو
عفواً لايمكن عرض الروابط في الإرشيف