Школоло / Говнокод #17219 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 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!

Запостил: Cynicrus Cynicrus, (Updated )

Комментарии (1) RSS

  • Да в общем ничего сверхъестественного, учитывая, что удаляется не один объект, а, возможно, несколько сразу, которые ещё сначала найти надо. Плюс проверки на NIL везде.
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8