المشاركة الأصلية كتبت بواسطة lucifer
(المشاركة 71456)
شغال بسورس مين؟
عموما شوف الباكيت متضاف عندك ولا لا الاول ورقمه 2048 واسمه equiplock وخلي بالك الاسم ممكن يكون متغير ف ابحث ب رقم الباكيت في كلاس packetid او msgtype علي حسب نوع السورس
ودا الباكيت كامل عموما وشغال تمام
كود PHP:
using system;
namespace spark.network.gamepackets
{
public unsafe class equiplock : Writer, interfaces.ipacket
{
public const uint
requestlock = 0,
requestunlock = 1,
unlockdate = 2;
byte[] buffer;
public equiplock(bool create)
{
if (create)
{
buffer = new byte[24];
writeuint16(16, 0, buffer);
writeuint16((ushort)packetid.equiplock, 2, buffer);
}
}
public uint uid
{
get { return bitconverter.touint32(buffer, 4); }
set { writeuint32(value, 4, buffer); }
}
public uint id
{
get { return bitconverter.touint32(buffer, 8); }
set { writeuint32(value, 8, buffer); }
}
public uint dwparam
{
get { return bitconverter.touint32(buffer, 12); }
set { writeuint32(value, 12, buffer); }
}
public byte[] toarray()
{
return buffer;
}
public void deserialize(byte[] buffer)
{
buffer = buffer;
}
public void send(client.gamestate client)
{
client.send(buffer);
}
public static void process(byte[] packet, client.gamestate client)
{
if (client.action != 2) return;
equiplock locks = new equiplock(false);
locks.deserialize(packet);
switch (locks.id)
{
case requestlock:
{
lock(locks, client);
break;
}
case requestunlock:
{
unlock(locks, client);
break;
}
}
}
static void lock(equiplock lock, client.gamestate client)
{
conqueritem item = null;
if (client.inventory.trygetitem(lock.uid, out item))
{
lock.id = 1;
item.lock = 1;
item.mode = game.enums.itemmode.update;
client.send(lock);
item.send(client);
database.conqueritemtable.updatelock(item);
}
else if (client.equipment.trygetitem(lock.uid) != null)
{
item = client.equipment.trygetitem(lock.uid);
lock.id = 1;
item.lock = 1;
item.mode = game.enums.itemmode.update;
client.send(lock);
item.send(client);
database.conqueritemtable.updatelock(item);
}
}
static void unlock(equiplock unlock, client.gamestate client)
{
conqueritem item = null;
if (client.inventory.trygetitem(unlock.uid, out item))
{
if (item.lock == 1)
{
item.lock = 2;
item.unlockend = datetime.now.adddays(5);
item.mode = game.enums.itemmode.update;
item.send(client);
database.conqueritemtable.updatelock(item);
}
else client.send(new message("can't unlock an item that is in progress of unlocking.", system.drawing.color.floralwhite, message.topleft));
}
}
}
}
|