private static void OnDropItemRequested(int client, PacketReader reader) { const int oldLen08 = 0x0E; const int newLen08 = 0x0F; if (reader.Size != oldLen08 && reader.Size != newLen08) return; int serial8 = reader.ReadInt32(); int x8 = reader.ReadInt16(); int y8 = reader.ReadInt16(); int z8 = reader.ReadSByte(); int container8; if (reader.Size == newLen08) reader.ReadByte(); // Grid location container8 = reader.ReadInt32(); OutgoingPackets.OnDropItemRequested(client, serial8, x8, y8, z8, container8); }
private static void OnExtendedCommand(int client, PacketReader reader) { int command = reader.ReadInt16(); PacketHandler handler = GetExtendedHandler(command); if (handler != null) handler.OnReceive(client, reader); }
private static void OnUseItemRequested(int client, PacketReader reader) { int serial6 = reader.ReadInt32(); OutgoingPackets.OnUseItemRequested(client, serial6); }
private static void OnDragItemRequested(int client, PacketReader reader) { int serial7 = reader.ReadInt32(); int amount7 = reader.ReadInt16(); OutgoingPackets.OnDragItemRequested(client, serial7, amount7); }
private static void OnTargetSent(int client, PacketReader reader) { int type6c = reader.ReadByte(); int charSerial6c = reader.ReadInt32(); bool checkCrime6c = reader.ReadByte() == 1; int serial6c = reader.ReadInt32(); int x6c = reader.ReadUInt16(); int y6c = reader.ReadUInt16(); int z6c = reader.ReadUInt16(); int id6c = reader.ReadUInt16(); OutgoingPackets.OnTargetSent(client, type6c, checkCrime6c, serial6c, x6c, y6c, z6c, id6c, reader.Data); }
private static void OnUnicodeSpeech( int client, PacketReader reader ) { byte messagetype = reader.ReadByte(); int color = reader.ReadInt16(); int font = reader.ReadInt16(); string lang = reader.ReadString( 4 ); string text; int[] keywords; if ((messagetype & 0xC0) != 0) { int value = reader.ReadInt16(); int count = ( value & 0xFFF0 ) >> 4; int hold = value & 0xF; if (count < 0 || count > 50) return; List<int> keyList = new List<int>(); for (int i = 0; i < count; ++i) { int speechID; if (( i & 1 ) == 0) { hold <<= 8; hold |= reader.ReadByte(); speechID = hold; hold = 0; } else { value = reader.ReadInt16(); speechID = ( value & 0xFFF0 ) >> 4; hold = value & 0xF; } if (!keyList.Contains( speechID )) keyList.Add( speechID ); } text = reader.ReadStringSafe(); keywords = keyList.ToArray(); } else { keywords = new int[0]; text = reader.ReadUnicodeStringSafe(); } OutgoingPackets.OnUnicodeSpeech( client, messagetype, color, font, lang, keywords, text ); }
private static void OnStatLockChanged(int client, PacketReader reader) { int type = reader.ReadByte(); int value = reader.ReadByte(); OutgoingPackets.OnStatLockChanged(client, type, value); }
private static void OnSkillLockChanged(int client, PacketReader reader) { int skillID3a = reader.ReadInt16(); LockStatus lockStatus3a = (LockStatus)reader.ReadByte(); OutgoingPackets.OnSkillLockChanged(client, skillID3a, lockStatus3a); }
private static void OnMoveRequested(int client, PacketReader reader) { int direction2 = reader.ReadByte() & 0x07; int sequence2 = reader.ReadByte(); OutgoingPackets.OnMoveRequested(client, direction2, sequence2); }
private static void OnGumpButtonPressed(int client, PacketReader reader) { //gump choice, only button & switches are processed int serialb1 = reader.ReadInt32(); int gumpb1 = reader.ReadInt32(); int buttonb1 = reader.ReadInt32(); int[] switchvaluesb1 = new int[0]; if (gumpb1 != 461) { int switchesb1 = reader.ReadInt32(); switchvaluesb1 = new int[switchesb1]; for (int xb1 = 0; xb1 < switchesb1; xb1++) { switchvaluesb1[xb1] = reader.ReadInt32(); } } OutgoingPackets.OnGumpButtonPressed(client, serialb1, gumpb1, buttonb1, switchvaluesb1); }
public static PacketFilterInfo Deserialize( byte[] bytes ) { PacketReader reader = new PacketReader( bytes, bytes.Length, false ); byte pid = reader.ReadByte(); int numconditions = reader.ReadInt16(); List<PacketFilterCondition> conditions = new List<PacketFilterCondition>(); for (int i = 0; i < numconditions; i++) { int pos = reader.ReadInt16(); int blen = reader.ReadInt16(); byte[] bytes2 = new byte[blen]; bytes2 = reader.ReadByteArray( blen ); int len = reader.ReadInt16(); conditions.Add( new PacketFilterCondition( pos, bytes2, len ) ); } if (conditions.Count == 0) return new PacketFilterInfo( pid, null ); return new PacketFilterInfo( pid, conditions.ToArray() ); }