- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
procedure TInventory.removeItem(userid: integer; invid: integer;amount: integer = 1);
var
MyRes: TInvItemArray;
CurrItem: TInvItem;
I,len: integer;
begin
if (amount <= 0) then
exit;
if (amount = 1) then
begin
db.removeItemFromUserInventory(GetItems(GetIndexByInvId(invid)),userid);
FInventoryList.Remove(GetIndexByInvId(invid));
end else
begin
if (amount >= finventorylist.Size) then
exit;
MyRes:=GetResources(invid);
len:=length(myres);
if (len = 0) then
exit;
if (amount > len) then
exit;
for i:=0 to len - 1 do
begin
curritem:=MyRes[i];
db.removeItemFromUserInventory(GetItems(GetIndexByInvId(curritem.InvId)),userid);
FInventoryList.Remove(GetIndexByInvId(curritem.invid));
end;
Setlength(myres,0);
end;
end;
function TInventory.GetResources(invid: integer): TInvItemArray;
function ToResult(var Return: TInvItemArray; const Item: TInvItem): Integer;
begin
Result := Length(Return);
SetLength(Return, Result + 1);
Return[Result] := Item;
end;
var
item,sameitem: TInvItem;
Resource: TItem;
i: integer;
begin
SetLength(result,0);
item:=GetItem(invid);
if (item = nil) then
exit;
if (item.item <> nil) then
begin
// if (item.itemю = 30) then
// begin
for i:=0 to FInventoryList.Size - 1 do
begin
sameitem:=TInvItem(FInventoryList.Items[i]);
if (sameitem = nil) then
continue;
resource:=sameitem.item;
if (resource = nil) then
continue;
if (item.item.itemid = resource.itemid) then
ToResult(result,sameitem);
end;
// end;
end;
end;
По сути - удалить объект из списка. OMG!
Dr_Sigmund 02.12.2014 02:09 # 0