Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Как переместить вещь с контейнера чару в бекпак?

тут можно задать вопрос по скриптингу
Post Reply
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Как переместить вещь с контейнера чару в бекпак?

Post by MAXHO »

Собсно мне надо взять кирки с сундука. Я пишу так:
MoveItem(FindType($0E85, $620BB10A), 1, backpack, 0, 0, 0);

После выполнения этой команды чар долгое время ничего не делает. Потом выдается сообщание Drag timeout и идет дальше выпонения скрипта. Кирки чар Не кладет в пак, хотя на курсор берет. Помогите плз :)
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

1)чтоб искать в контейнере - контейнер должен быть открыт
2)перед перемещением лучше убедиться что предмет есть

типа этого

Code: Select all

UseObject($620BB10A); // Открываю контейнер с ресурсами
FindType($0E85, $620BB10A); // ищем нужный предмет 
if FindCount > 0 then // если нашли - перемещаем
MoveItem(FindItem, 1, backpack, 0, 0, 0);
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

После открытия контейнера желательно поставить паузу (размер зависит от шарда) и чексэйв.
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Post by MAXHO »

Это все я делал. И сундук открывал и паузу ставил.
Я даже сделал пошаговую отладку. Тоесть после каждого действия отправляет в журнал отчет. Тоесть когда он нашел кирку скрипт отправил отчет найдена кирка и серийник ее. Далее чар берет ее на курсор. И после этого макра простаивает.
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

Немного не похоже, судя по выдаваемой ошибке, но может дело ... в настоящей версии вылез глюк с перемещением предметов
http://stealth.od.ua/forum/viewtopic.php?t=913
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Post by MAXHO »

У меня RC1
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Post by MAXHO »

Code: Select all

18:49:18 [MAXH0]: Script: error drag item. drag timeout

Вот такую фигню пишет.
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Post by MAXHO »

18:49:18 [MAXH0]: Script: error drag item. drag timeout

Просьба уменьшите таймаут. Написал скрипт работает все, но изза этого таймаута чар долго стоит без дела.
Сделал все через драгитем и дропитем.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

MAXHO wrote:18:49:18 [MAXH0]: Script: error drag item. drag timeout
Вот это самое и у меня на RC1 лезло изо всех щелей. Побеждается циклом, выход из которого - наличие предмета в паке. Раза 3-4 ругнется (иногда и 20), потом все-таки возьмет.
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Post by MAXHO »

В том то и прикол что надо брать предмет если его в паке нет :D
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Еще раз перечитай мой пост. Именно взятие в пак. И это взятие засунуто в цикл, выход из которого - когда количество данного типа и цвета больше 0 (в ряде случаев - больше того кол-ва, которое было до входа в цикл).
MAXHO
Neophyte
Neophyte
Posts: 14
Joined: 08.03.2006 5:08

Post by MAXHO »

Я ничего не понял :)
Это пофиксить как-то можно?
Можешь привести пример цыкла. Если будут коменты так вообще здорово :)
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

Code: Select all

UseObject($620BB10A); // Открываю контейнер с ресурсами
wait(2000); // Смотря сколько открывает на шарде, лаги...
CheckSave; // Если будет СейвВорлд 
FindType($0E85, $620BB10A); // ищем нужный предмет 
if FindCount > 0 then // если нашли - перемещаем
begin
   repeat
     MoveItem(FindItem, 1, backpack, 0, 0, 0);
     wait(3000); // Задержка между попытками MoveItem
     FindType($0E85, backpack); // ищем уже в сумке
   until FindCount > 0 // > 0, значит переместили
end;
тут есть момент, так сразу и не скажу:
"FindType - Возвращает ID вещи, либо 0 при неудачном поиске. "
FindType($0E85, backpack); = 0 не обнулит ли перемещаемый FindItem?
Если так то, с предварительным обьявлением mItem, вроде так:

Code: Select all

UseObject($620BB10A); // Открываю контейнер с ресурсами
wait(2000); // Смотря сколько открывает на шарде, лаги...
CheckSave; // Если будет СейвВорлд 
FindType($0E85, $620BB10A); // ищем нужный предмет 
if FindCount > 0 then // если нашли - перемещаем
begin
   mItem:=FindItem;
   repeat
     MoveItem(mItem, 1, backpack, 0, 0, 0);
     wait(3000); // Задержка между попытками MoveItem
     FindType($0E85, backpack); // ищем уже в сумке
   until FindCount > 0 // > 0, значит переместили, прекращаем MoveItem
end;
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Ну примерно так. Я предпочитаю открытие туда же в цикл засунуть:

Code: Select all

repeat
	waitconnection(3000);
	UseObject(Sunduk);
	wait(1000);
	checksave;
	UseObject(BagPickaxe1);
	wait(1000);
	checksave;
	tmpser := findtype(Pickaxe1,BagPickaxe1);
	if tmpser = 0 then tmpser := findtype(Pickaxe2,BagPickaxe1);
	if tmpser <> 0 then
	begin
		Grab(tmpser,1);
		wait(1000);
		checksave;
	end;
until (count(Pickaxe1)<>0) or (count(Pickaxe2)<>0);
Тут сразу на два типа кирок, с одним чуть упростится. Вот такой цикл надежно берет кирку из сундука (рано или поздно) и на RC1 и на RC2. Если что, поругается 2-10 раз, но возьмет.
Post Reply