حل مشكلة السوكت والدامج Forging soultion and socket
السلام عليكم ورحمة الله وبركاته
اليوم انهارده حل مشكلة السوكت والدامج
الحل مناسب لسورس عبدو ماتركس
الحل سوف يكون في باكت 1009
case 40:
{
uint ItemAdd = BitConverter.ToUInt32(packet, 8);ConquerItem item_new = null;
if (client.Inventory.TryGetItem(ItemAdd, out item_new))
{
var itemtype = item_new.GetItemType();
if (itemtype == ConquerItem.ItemTypes.GemID)
return;
ushort pos = ItemPosition(item_new.ID);
if (pos == ConquerItem.Bottle || pos == ConquerItem.Fan || pos == ConquerItem.Garment || pos == ConquerItem.LeftWeaponAccessory || pos == ConquerItem.RightWeaponAccessory || pos == ConquerItem.Steed || pos == ConquerItem.SteedArmor || pos == ConquerItem.SteedCrop || pos == ConquerItem.Tower || pos == ConquerItem.Wings)
{
client.Send(new Message("Sorry can't bless this item !", System.Drawing.Color.Red, Message.Talk));
return;
}
if (item_new.Bless >= 7)
return;
Queue<uint> amount = new Queue<uint>(packet[24]);for (ushort i = 91; i < 91 + 4 * usage.dwExtraInfo; i += 4)
{
uint uid = BitConverter.ToUInt32(packet, i);
if (client.Inventory.ContainsUID(uid))
amount.Enqueue(uid);
else
return;
}
byte oldbless = item_new.Bless;
if (item_new.Bless == 0 && amount.Count == 5)
item_new.Bless = 1;
else if (item_new.Bless == 1 && amount.Count == 1)
item_new.Bless = 3;
else if (item_new.Bless == 3 && amount.Count == 3)
item_new.Bless = 5;
else if (item_new.Bless == 5 && amount.Count == 5)
item_new.Bless = 7;
if (oldbless == item_new.Bless)
return;while (amount.Count != 0)
client.Inventory.Remove(amount.Dequeue(), Conquer_Online_Server.Game.Enums.ItemUse.Remove, true);item_new.Mode = Conquer_Online_Server.Game.Enums.ItemMode.Update;
item_new.Send(client);
usage.dwParam = 1;
Database.ConquerItemTable.UpdateBless(item_new);
}
client.Send(packet);
break;
}
وده التعديل الاخير
public uint[] Batch
{
get
{
uint[] items = new uint[dwExtraInfo];
for (int i = 0; i < dwExtraInfo; i++)
{
items[i] = BitConverter.ToUInt32(Buffer, 91 + 4 * i);
}
return items;
}
set
{
if (value != null)
{
dwExtraInfo = (uint)value.Length;
for (int i = 0; i < dwExtraInfo; i++)
{
WriteUInt32(value[i], 91 + 4 * i, Buffer);
}
}
}
}
منقول من المايسترو
ردحذفانا مش قولت ان الحل بتاعي
حذفولكن شوف في المواضيع عدد التعليقات الي الناس فيها محتاجة الحل ده
فحبته ليهم من السورس الي انا شغال عليه والي في الاساس محلول فيه معظم المشاكل
يا ريت لو تقدر توصلنا نعمل ايه بالظبط ونحط الكود فين عشان انا هى دى المشكلة الوحيدة قدامى الى مقبلانى يا ريت توضح اكتر
ردحذفاوضح اكتر ازاي
حذفالشرح واضح انا مديك الاكواد الي انت بتعدلها والسورس هيبقي تمام
ولو مش هتعرف تضبطه يبقي خد السورس ده كامل
http://www.smarty-inv.com/2015/11/source-v3-conquer-full-wings-6135.html
فى مليف دى صح
ردحذفPacketHandler.cs
نصيحة لما مش تلاقي الكاتب كاتب فين بالضبط
حذفانت ممكن بسهولة تاخد جملة او كود وتبحث عنه في البروجكت
ابحث عن
if (pos == ConquerItem.Bottle || pos == ConquerItem.Fan ||
هتلاقي الكود ده في case 40
وصلت يا استاذ محمود ولا لأ