|
|
|
أفضل جواب - كتبه Lucifer
|
|
ماشي اضيفو فين يعني انهي كلاسك
كلمني فيس يسطا دلوقتي هخش اعملهولك |
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));
}
}
}
}
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));
}
}
}
}
|
| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|