Guest User

Untitled

a guest
Apr 20th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.41 KB | None | 0 0
  1. procedure AddItemInfo(var Packet: TMapleStream; Item: TItem; AddPosition: Boolean = True);
  2. var
  3.   Equip: TEquip;
  4.   Pos{$IFNDEF VERSION88_UP}, i{$ENDIF}: ShortInt;
  5.   IsCash: Boolean;
  6. begin
  7.   IsCash := ItemDataProv.IsCashItem(Item.ID);
  8.   Pos := Item.Position;
  9.  
  10.   if AddPosition then
  11.   begin
  12.     if Pos < 0 then
  13.       Pos := Pos * -1;
  14.  
  15.     if Pos > 100 then
  16.       Dec(Pos, 100);
  17.  
  18.     if Item.ItemType = itEquip then
  19.       Packet.WriteShort(Pos)
  20.     else
  21.       Packet.WriteByte(Pos);
  22.   end;
  23.  
  24.   Packet.WriteByte(Item.ItemType);
  25.   Packet.WriteInt(Item.ID);
  26.  
  27.   Packet.WriteBool(IsCash);
  28.   if IsCash then
  29.     Packet.WriteInt64(1);
  30.   AddExpirationTime(Packet, 0);
  31.  
  32.   {$IFDEF AFTERSHOCK}
  33.   Packet.WriteInt(-1);
  34.   {$ENDIF}
  35.  
  36.   if Item.ItemType <> itEquip then
  37.   begin
  38.     Packet.WriteShort(Item.Quantity);
  39.     Packet.WriteMapleAnsiString(Item.Owner);
  40.     Packet.WriteShort(0);   // xxx Flags
  41.  
  42.     if IsRechargeable(Item.ID) then
  43.       Packet.WriteInt64(0);
  44.  
  45.     Exit;
  46.   end;
  47.  
  48.   Equip := TEquip(Item);
  49.   with Equip, Packet do
  50.   begin
  51.     WriteByte(UpgradeSlots);
  52.     WriteByte(Level);    // xxx Scrolls?
  53.     WriteShort(STR);
  54.     WriteShort(DEX);
  55.     WriteShort(INT);
  56.     WriteShort(LUK);
  57.     WriteShort(HP);
  58.     WriteShort(MP);
  59.     WriteShort(WAtk);
  60.     WriteShort(MAtk);
  61.     WriteShort(WDef);
  62.     WriteShort(MDef);
  63.     WriteShort(Acc);
  64.     WriteShort(Avoid);
  65.     WriteShort(Hands);
  66.     WriteShort(Speed);
  67.     WriteShort(Jump);
  68.     WriteMapleAnsiString(Owner);
  69.     WriteShort(0);    // xxx Flags: 0 = normal; 1 = locked
  70.  
  71.     {$IFNDEF VERSION88_UP}
  72.     if IsCash then
  73.       for i := 0 to 9 do
  74.         WriteByte($40)
  75.     else
  76.     begin
  77.       WriteByte(0);
  78.       WriteByte(0);    // Item level?
  79.       WriteShort(0);
  80.       WriteShort(0);
  81.       WriteInt(0);    // Hammers
  82.       WriteInt64(-1);
  83.     end;
  84.     {$ELSE}
  85.     WriteByte(0);
  86.     WriteByte(0);    // Item level?
  87.     WriteInt(0);
  88.     WriteInt(-1);
  89.     WriteInt(0);   // Hammers
  90.     {$IFDEF CHAOS}
  91.     WriteShort(0);
  92.     {$ENDIF}
  93.     WriteShort(0);  // Potential Status: 0 = None, 1..4 = Hidden, 5 = Rare, 6 = Epic, 7 = Unique
  94.     WriteShort(0);  // Potential Stat 1
  95.     WriteShort(0);  //                2
  96.     WriteShort(0);  //                3
  97.     WriteInt(0);
  98.     if not IsCash then
  99.       WriteInt64(-1);
  100.     {$ENDIF}
  101.   end;
  102.  
  103.   Packet.WriteHex('00 40 E0 FD 3B 37 4F 01');  // Some kind of magic?
  104.   Packet.WriteInt(-1);
  105. end;
Add Comment
Please, Sign In to add comment