الحل النهائي لمشكلة السوكت والدامج بعد ابجريد الاجنحة
السلام عليكم وعليكم ورحمة الله وبركاته
اليوم
حل نهائي لمشكلة فتح سوكت والدامج في الايتمات بعد ابجريد الاجنحة.
من غير مقدمات وكلام كتير
هتروح لكلاس الباكت هندلر
تبحث عن
static void SocketTalismanWithItem(ItemUsage itemUsage, Client.GameState client)
هتروح قافلها بالسالب وتبدلها ب
static void SocketTalismanWithItem(ItemUsage itemUsage, Client.GameState client)
{
ConquerItem talisman = client.Equipment.TryGetItem(itemUsage.UID);
ConquerItem item = null;
for (ushort i = 91; i < 91 + 4 * itemUsage.ToArray()[26]; i += 4)
{
uint item_swap = BitConverter.ToUInt32(itemUsage.ToArray(), i);
if (client.Inventory.TryGetItem(item_swap, out item))
{
if (talisman == null)
return;
if (item.ID / 1000 == talisman.ID / 1000)
return;
if (item.Bound == true)
return;
if (talisman.SocketTwo != Game.Enums.Gem.NoSocket)
return;
ushort Points = 0;
switch (item.ID % 10)
{
case 6: Points += 5; break;
case 7: Points += 10; break;
case 8: Points += 40; break;
case 9: Points += 1000; break;
}
Points += Database.DataHolder.TalismanPlusPoints(item.Plus);
int position = ItemPosition(item.ID);
switch (position)
{
case 0: return;
case 4:
case 5:
if (item.ID % 10 >= 8)
{
if (item.SocketOne != Game.Enums.Gem.NoSocket)
Points += 160;
if (item.SocketTwo != Game.Enums.Gem.NoSocket)
Points += 800;
}
break;
default:
if (item.ID % 10 >= 8)
{
if (item.SocketOne != Game.Enums.Gem.NoSocket)
Points += 2000;
if (item.SocketTwo != Game.Enums.Gem.NoSocket)
Points += 6000;
}
break;
}
talisman.SocketProgress += Points;
if (talisman.SocketOne == Game.Enums.Gem.NoSocket)
{
if (talisman.SocketProgress >= 8000)
{
talisman.SocketProgress -= 8000;
talisman.SocketOne = Game.Enums.Gem.EmptySocket;
talisman.Mode = Game.Enums.ItemMode.Update;
talisman.Send(client);
if (talisman.Position != 0)
client.LoadItemStats();
}
}
if (talisman.SocketOne != Game.Enums.Gem.NoSocket)
{
if (talisman.SocketProgress >= 20000)
{
talisman.SocketProgress = 0;
talisman.SocketTwo = Game.Enums.Gem.EmptySocket;
}
}
talisman.Mode = Game.Enums.ItemMode.Update;
talisman.Send(client);
Database.ConquerItemTable.UpdateSocketProgress(talisman);
Database.ConquerItemTable.UpdateSockets(talisman);
if (talisman.Position != 0)
client.LoadItemStats();
client.Inventory.Remove(item, Game.Enums.ItemUse.Remove);
}
}
}
كده بقي تمام والي اللقاء في درس اخر جديد.
تعليقات: 0
إرسال تعليق