Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Удаление не нужных итемов

Рег
19 Фев 2016
Сообщения
71
Реакции
0
Нид хелп, идея такова, что должен удалить все итемы кроме указанных
Скрипт начинает удалять, а потом виснет адрик
Код:
uses SysUtils, Classes;
function CheckItemCount (const itemID: Integer;
        const quest: Boolean = False) : Integer;
var
    tempItem: TL2Item;
begin
    if quest then Inventory.Quest.ByID(itemID, tempItem)
    else Inventory.User.ByID(itemID, tempItem);
    Result := tempItem.Count;
end;
    
procedure Udalyator ();

var
    i, y: integer;
    MySafeItems: TStringList;
begin

    MySafeItems := TStringList.Create;
    MySafeItems.DelimitedText := '57,3949';  // итемы которые нужно оставить

    while itemlist.count > MySafeItems.count do

    begin

        For i := 0 to (itemlist.count - 1)  do

        begin

            for y:=0 to (MySafeItems.count - 1) do

            begin
                if itemlist.items(i).id = Integer(MySafeItems[y]) then
                begin
                    print('OK');
                end
                else
                begin
                    print('УДАЛЯЕМ');
                    Engine.DestroyItem(itemlist.items(i).id, CheckItemCount(itemlist.items(i).id));     //удаляем все к чертям
                    delay(2000 + random(160));
                end;
            end;

        end;

        delay(500);

    end;

begin

   Udalyator ();


end.
 
фишка в том что я не понимаю почему даже тут циклс закончится раньше чем удалятся все вещи..

For i := 0 to (itemlist.count - 1) do Engine.DestroyItem(itemlist.items(i).id, CheckItemCount(itemlist.items(i).id));

по логике должны, но а в реале, выходит из цикла когда еще куча вещей остается в инвентаре, пробовал ставить задержку от 500 до 6 секунд

при повторном запуске удаляется еще часть вещей, но это не катит.
 
@Nomad,
Спасибо за подробное описание проблемы, но все же хотелось бы услышать как сделать скрипт рабочим
 
@BaItazar,
b0d4ddd35019f1931dceb5b19b9ecf1a.png
 
@Алеку,
Спасибо за альтернативу, но нужно сделать именно процедуру, в дальнейшем это будет не только удаление но и продажа, и даже тут идет конкретные ID которые нужно удалить, а не из списка которые в инвертаре.
П.С.
Повторю идею, удалить должен все итемы кроме мною указанных
 
@qseven228, Спс. На форуме бы не помешал скрипт, добавь, если считаешь нужным. :maddovolen:
 
@BaItazar, Ты им неплохой пример дал , пусть сами думают :pandaredlol: Заодно и тебе помогут найти проблему в твоем скрипте
 
Назад
Сверху