abdo1
2019-10-03, 01:16 PM
انا ازاي اعمل اخر بلاص 8 و اضيف في اللتوتري
Hassan Emprator
2019-10-03, 04:18 PM
حضرتك هتفح
كلاس PackerHandler.cs
وتبحث عن
static void ComposePlus(Compose compose, Client.GameState client)
لما تلاقيه تبدل الفويد كلو بي دا
static void ComposePlus(Compose compose, Client.GameState client)
{
ConquerItem Item = null;
ConquerItem[] Minors = null;
if (client.Inventory.TryGetItem(compose[0], out Item) || (client.Equipment.TryGetItem(compose[0]) != null) || (compose.Mode == Compose.QuickCompose))
{
if (Item == null && client.Inventory.TryGetItem(compose[0], out Item) == false && (client.Equipment.TryGetItem(compose[0]) != null))
Item = client.Equipment.TryGetItem(compose[0]);
if (compose.Mode == Compose.DragonBallUpgrade || compose.Mode == Compose.MeteorUpgrade)
{
Minors = new ConquerItem[compose.Countx];
for (int i = 0; i < compose.Countx; i++)
{
if (!client.Inventory.TryGetItem(compose[i + 2], out Minors[i]))
return;
else
if (Minors[i].UID == Item.UID)
return;
}
}
else
{
Minors = new ConquerItem[compose.Count - 1];
for (int i = 0; i < compose.Count - 1; i++)
{
if (!client.Inventory.TryGetItem(compose[i + 1], out Minors[i]))
return;
else
if (Minors[i].UID == Item.UID)
return;
}
}
ushort pos = ItemPosition(Item.ID);
if (pos == ConquerItem.Bottle || pos == ConquerItem.Garment || pos == ConquerItem.LeftWeaponAccessory || pos == ConquerItem.RightWeaponAccessory || pos == ConquerItem.SteedArmor) //mohsen.. i'm remove crop
return;
if (compose.Mode == Compose.ChanceUpgrade || compose.Mode == Compose.QuickCompose)
{
if (Item.Plus < 8 && Item.PlusProgress != 0)
{
double percent = (double)Item.PlusProgress / (double)Database.DataHolder.ComposePlusPoints(Item .Plus);
if (Kernel.Rate(percent))
{
Item.PlusProgress = 0;
Item.Plus++;
}
else
Item.PlusProgress = 0;
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlus(Item);
Database.ConquerItemTable.UpdatePlusProgress(Item) ;
if (Item.Plus >= 8)
Kernel.SendWorldMessage(new Message("Congratulations, " + client.Entity.Name + " has upgraded His " + Database.ConquerItemInformation.BaseInformations[Item.ID].Name + " to + " + Item.Plus + " and " + Item.PlusProgress + " in Progress!", System.Drawing.Color.Red, Network.GamePackets.Message.TopLeft), Program.Values);
}
return;
}
if (compose.Mode == Compose.MeteorUpgrade || compose.Mode == Compose.DragonBallUpgrade)
{
Database.ConquerItemInformation info = new MrHassan.Database.ConquerItemInformation(Item.ID, Item.Plus);
Minors = new ConquerItem[compose.Count - 2];
for (int i = 0; i < compose.Count - 2; i++)
{
if (!client.Inventory.TryGetItem(compose[i + 2], out Minors[i]))
return;
else
if (Minors[i].UID == Item.UID)
return;
}
switch (compose.Mode)
{
case Compose.DragonBallUpgrade:
{
if (Item.ID % 10 == (byte)Game.Enums.ItemQuality.Super)
break;
if (Item.Durability < Item.MaximDurability)
break;
// byte chance = (byte)(70 - ((infos.BaseInformation.Level - (infos.BaseInformation.Level > 100 ? 30 : 0)) / (10 - Item.ID % 10)));
byte cost = DragonBallUpgradeCost(Item, info);
double chance = (((double)compose.Countx / (double)cost) * 100);
if (MyMath.Success(chance))
{
switch ((Game.Enums.ItemQuality)(Item.ID % 10))
{
case Game.Enums.ItemQuality.Normal:
case Game.Enums.ItemQuality.NormalV1:
case Game.Enums.ItemQuality.NormalV2:
case Game.Enums.ItemQuality.NormalV3: Item.ID = (Item.ID - (Item.ID % 10)) + (byte)Game.Enums.ItemQuality.Refined; break;
default: Item.ID++; break;
}
Database.ConquerItemTable.UpdateItemID(Item, client);
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
client.Send(new ItemUsage(true)
{
UID = client.Entity.UID,
dwParam = 1,
ID = ItemUsage.DragonBallUpgrade
});
}
else
{
Item.Durability = (ushort)(Item.Durability / 2);
Database.ConquerItemTable.UpdateDurabilityItem(Ite m);
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
}
foreach (var item in Minors)
client.Inventory.Remove(item, MrHassan.Game.Enums.ItemUse.Remove);
if (compose.Countx > cost)
{
var diff = compose.Countx - cost;
client.Inventory.Add((uint)(Minors[0].ID == 720028 ? 1088000 : 1088001), 0, (byte)diff);
}
break;
}
case Compose.MeteorUpgrade:
{
if (info.BaseInformation.Level == ItemMaxLevel(ItemPosition(info.BaseInformation.ID) ))
break;
if (Item.Durability < Item.MaximDurability)
{
client.MessageBox("Ro7 sal7ha ya Dog ..", null, null);
break;
}
byte cost = MeteorUpgradeCost(Item.ID);
if (ItemPosition(Item.ID) == (ushort)ConquerItem.Armor || ItemPosition(Item.ID) == (ushort)ConquerItem.Head || IsShield(Item.ID))
{
if (info.BaseInformation.Level >= 110)
cost = 1;
}
else
{
if (info.BaseInformation.Level >= 115)
cost = 1;
}
double chance = (((double)compose.Countx / (double)cost) * 100);
uint newid = info.CalculateUplevel();
if (newid != 0 && newid != Item.ID)
{
if (MyMath.Success(chance))
{
Item.ID = newid;
info = new MrHassan.Database.ConquerItemInformation(Item.ID, Item.Plus);
Item.Durability = Item.MaximDurability = info.BaseInformation.Durability;
Database.ConquerItemTable.UpdateItemID(Item, client);
Database.ConquerItemTable.UpdateDurabilityItem(Ite m);
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
client.Send(new ItemUsage(true)
{
UID = client.Entity.UID,
dwParam = 1,
ID = ItemUsage.MeteorUpgrade
});
}
else
{
Item.Durability = (ushort)(Item.Durability / 2);
Database.ConquerItemTable.UpdateDurabilityItem(Ite m);
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
}
}
foreach (var item in Minors)
client.Inventory.Remove(item, MrHassan.Game.Enums.ItemUse.Remove);
if (compose.Countx > cost)
{
var diff = compose.Countx - cost;
client.Inventory.Add((uint)(Minors[0].ID == 720028 ? 1088000 : 1088001), 0, (byte)diff);
}
break;
}
}
}
foreach (var item in Minors)
{
var ItemPlus = item;
Database.ConquerItemInformation infos = new MrHassan.Database.ConquerItemInformation(Item.ID, Item.Plus);
switch (compose.Mode)
{
case Compose.CurrentSteed:
case Compose.Plus:
{
if (Item.Plus == 8 && Item.GetItemType() == ConquerItem.ItemTypes.WingID || Item.Plus == 8 && pos == ConquerItem.Wing || Item.Plus == 8 && pos == ConquerItem.Steed)//Mr.MrHassan
{
Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus) ;
Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);//Mr.MrHassan
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlusProgress(Item) ;
client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
}
if (Item.Plus < 8 && Item.GetItemType() != ConquerItem.ItemTypes.GarmentID_1 && Item.GetItemType() != ConquerItem.ItemTypes.GarmentID_2 && Item.GetItemType() != ConquerItem.ItemTypes.BottleID && Item.GetItemType() != ConquerItem.ItemTypes.RightAccessory1 && Item.GetItemType() != ConquerItem.ItemTypes.RightAccessory2 && Item.GetItemType() != ConquerItem.ItemTypes.RightAccessory3 && Item.GetItemType() != ConquerItem.ItemTypes.LeftAccessory)
{
Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus) ;
while (Item.PlusProgress >= Database.DataHolder.ComposePlusPoints(Item.Plus) && Item.Plus != 8)
{
Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);
Item.Plus++;
if (Item.Plus == 8)
Item.PlusProgress = 0;
}
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlus(Item);
Database.ConquerItemTable.UpdatePlusProgress(Item) ;
client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
if (Item.Plus >= 8)
Kernel.SendWorldMessage(new Message("Congratulations, " + client.Entity.Name + " has upgraded His " + Database.ConquerItemInformation.BaseInformations[Item.ID].Name + " to + " + Item.Plus + " and " + Item.PlusProgress + " in Progress!", System.Drawing.Color.Red, Network.GamePackets.Message.TopLeft), Program.Values);
}
break;
}
case Compose.NewSteed:
{
if (Item.Plus < 8)
{
Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus) ;
while (Item.PlusProgress >= Database.DataHolder.ComposePlusPoints(Item.Plus) && Item.Plus != 8)
{
Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);
Item.Plus++;
if (Item.Plus == 8)
Item.PlusProgress = 0;
}
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlus(Item);
client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
}
int color1 = (int)Item.SocketProgress;
int color2 = (int)ItemPlus.SocketProgress;
int G1 = color1 & 0xFF;
int G2 = color2 & 0xFF;
int B1 = (color1 >> 8) & 0xFF;
int B2 = (color2 >> 8) & 0xFF;
int R1 = (color1 >> 16) & 0xFF;
int R2 = (color2 >> 16) & 0xFF;
Item.NextGreen = (byte)((int)Math.Floor(0.9 * G1) + (int)Math.Floor(0.1 * G2) + 1);
Item.NextBlue = (byte)((int)Math.Floor(0.9 * B1) + (int)Math.Floor(0.1 * B2) + 1);
Item.NextRed = (byte)((int)Math.Floor(0.9 * R1) + (int)Math.Floor(0.1 * R2) + 1);
Item.SocketProgress = (uint)(Item.NextGreen | (Item.NextBlue << 8) | (Item.NextRed << 16));
Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlusProgress(Item) ;
Database.ConquerItemTable.UpdateSocketProgress(Ite m);
// Database.ConquerItemTable.UpdateNextSteedColor(Ite m);
client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
break;
}
}
}
}
}
طيب عايز اضيف حاجه في اللوتري
هتفتح القاعده بتاعتك عايد جدا
هتلاقي ملف اسمه Lottery هتلاقي
فيه كل جميع الايتمات الي مضافه في اللوتري وحبيت بقا تعمل ايه حاجه
في هتعملها من الملف دا بس
كدا
بالتوفيق