Advertisement
shekohex

MagicAttack2

Apr 1st, 2017
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.41 KB | None | 0 0
  1.         public static void MagicAttack(Player player,ushort x, ushort y, uint spellid, uint TargetUID, ushort TargetX, ushort TargetY)
  2.         {
  3.             int magicType, magicLevel;
  4.              InteractQuery pQuery = new InteractQuery();
  5.  
  6.             BitUnfold32(pQuery.Data[0], out magicType, out magicLevel);
  7.  
  8.             magicType = (ushort)(ExchangeShortBits((uint)spellid - 0x14be, 3) ^ player.UID ^ 0x915d);
  9.             magicLevel = (ushort)((magicLevel + 0x100 * ((uint)DateTime.Now.GetHashCode() % 0x100)) ^ 0x3721);
  10.  
  11.             pQuery.Data[0] = BitFold32(magicType, magicLevel);
  12.             TargetUID = (uint)ExchangeLongBits((((uint)TargetUID - 0x8b90b51a) ^ (uint)player.UID ^ 0x5f2d2463u), 32 - 13);
  13.             x = (ushort)(ExchangeShortBits((uint)x - 0xdd12, 1) ^ player.UID ^ 0x2ed6);
  14.             y = (ushort)(ExchangeShortBits((uint)y - 0x76de, 5) ^ player.UID ^ 0xb99b);
  15.  
  16.             byte[] packet = new byte[44 + 8];
  17.             ReadWrite.WriteUInt16(44, 0, packet);
  18.             ReadWrite.WriteUInt16(1022, 2, packet);
  19.             ReadWrite.WriteUInt32((uint)DateTime.Now.GetHashCode(), 4, packet);
  20.             ReadWrite.WriteUInt32(player.UID, 12, packet);
  21.             ReadWrite.WriteUInt32((uint)TargetUID, 16, packet);
  22.             ReadWrite.WriteUInt16(x, 20, packet); //Getting the same value of x ! WTF !!
  23.             ReadWrite.WriteUInt16(y, 22, packet);
  24.             ReadWrite.WriteUInt16(24, 24, packet); //attacktype
  25.             ReadWrite.WriteUInt16((ushort)pQuery.Data[0], 28, packet); // What is 0 Index ?!!
  26.             ReadWrite.WriteString("TQClient", 44, packet);
  27.             player.SendToServer(packet);
  28.         }
  29.         public static void BitUnfold32(int bits32, out int lower16, out int upper16)
  30.         {
  31.             lower16 = (int)(bits32 & UInt16.MaxValue);
  32.             upper16 = (int)(bits32 >> 16);
  33.         }
  34.         public static int BitFold32(int lower16, int higher16)
  35.         {
  36.             return (lower16) | (higher16 << 16);
  37.         }
  38.         private static uint ExchangeShortBits(uint data, int bits)
  39.         {
  40.             data &= 0xffff;
  41.             return ((data >> bits) | (data << (16 - bits))) & 0xffff;
  42.         }
  43.  
  44.         private static uint ExchangeLongBits(uint data, int bits)
  45.         {
  46.             return (data >> bits) | (data << (32 - bits));
  47.         }
  48. public unsafe struct InteractQuery
  49.         {
  50.             public fixed int Data[4]; // ?!!
  51.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement