Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure AddItemInfo(var Packet: TMapleStream; Item: TItem; AddPosition: Boolean = True);
- var
- Equip: TEquip;
- Pos{$IFNDEF VERSION88_UP}, i{$ENDIF}: ShortInt;
- IsCash: Boolean;
- begin
- IsCash := ItemDataProv.IsCashItem(Item.ID);
- Pos := Item.Position;
- if AddPosition then
- begin
- if Pos < 0 then
- Pos := Pos * -1;
- if Pos > 100 then
- Dec(Pos, 100);
- if Item.ItemType = itEquip then
- Packet.WriteShort(Pos)
- else
- Packet.WriteByte(Pos);
- end;
- Packet.WriteByte(Item.ItemType);
- Packet.WriteInt(Item.ID);
- Packet.WriteBool(IsCash);
- if IsCash then
- Packet.WriteInt64(1);
- AddExpirationTime(Packet, 0);
- {$IFDEF AFTERSHOCK}
- Packet.WriteInt(-1);
- {$ENDIF}
- if Item.ItemType <> itEquip then
- begin
- Packet.WriteShort(Item.Quantity);
- Packet.WriteMapleAnsiString(Item.Owner);
- Packet.WriteShort(0); // xxx Flags
- if IsRechargeable(Item.ID) then
- Packet.WriteInt64(0);
- Exit;
- end;
- Equip := TEquip(Item);
- with Equip, Packet do
- begin
- WriteByte(UpgradeSlots);
- WriteByte(Level); // xxx Scrolls?
- WriteShort(STR);
- WriteShort(DEX);
- WriteShort(INT);
- WriteShort(LUK);
- WriteShort(HP);
- WriteShort(MP);
- WriteShort(WAtk);
- WriteShort(MAtk);
- WriteShort(WDef);
- WriteShort(MDef);
- WriteShort(Acc);
- WriteShort(Avoid);
- WriteShort(Hands);
- WriteShort(Speed);
- WriteShort(Jump);
- WriteMapleAnsiString(Owner);
- WriteShort(0); // xxx Flags: 0 = normal; 1 = locked
- {$IFNDEF VERSION88_UP}
- if IsCash then
- for i := 0 to 9 do
- WriteByte($40)
- else
- begin
- WriteByte(0);
- WriteByte(0); // Item level?
- WriteShort(0);
- WriteShort(0);
- WriteInt(0); // Hammers
- WriteInt64(-1);
- end;
- {$ELSE}
- WriteByte(0);
- WriteByte(0); // Item level?
- WriteInt(0);
- WriteInt(-1);
- WriteInt(0); // Hammers
- {$IFDEF CHAOS}
- WriteShort(0);
- {$ENDIF}
- WriteShort(0); // Potential Status: 0 = None, 1..4 = Hidden, 5 = Rare, 6 = Epic, 7 = Unique
- WriteShort(0); // Potential Stat 1
- WriteShort(0); // 2
- WriteShort(0); // 3
- WriteInt(0);
- if not IsCash then
- WriteInt64(-1);
- {$ENDIF}
- end;
- Packet.WriteHex('00 40 E0 FD 3B 37 4F 01'); // Some kind of magic?
- Packet.WriteInt(-1);
- end;
Add Comment
Please, Sign In to add comment