Посматрите

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
SESTRA
Posts: 223
Joined: 2006-02-21 09:31:41
Contact:

Посматрите

Post by SESTRA »

вот скприт на раскладку по бек пек

Code: Select all

sub rasklad() 

uo.findtype('0x0EED',-1,'backpack')
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')
uo.moveitem('finditem',-1,'backpack',40,60,0)
uo.ignore('finditem')
wait(200)
wend
uo.ignorereset()
endsub

ток он что то када итем переложит потом что то глючит просто с боку пишется варнинг команда finditem вот такая(
Что сделать?
А Я че Я не че !
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Code: Select all

wait(200)


Мало. И чеклаг после паузы поставь, чтобы при лагах не спотыкалось.

И вот тут логики совсем не понял:

Code: Select all

uo.findtype('0x0EED',-1,'backpack') 
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')


Зачем дважды-то искать на первом круге?
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Edred wrote:

Code: Select all

wait(200)


Мало. И чеклаг после паузы поставь, чтобы при лагах не спотыкалось.

И вот тут логики совсем не понял:

Code: Select all

uo.findtype('0x0EED',-1,'backpack') 
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')


Зачем дважды-то искать на первом круге?

1ый раз чтобы пустили в цикл.
2ой раз чтобы что-то циклично искать.

Делается с одним поиском через repeat, но всё-таки, а еще тут нужно условие..
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Я-то указал про два поиска подряд чтобы автор задумался, куда второй лучше поставить, чтобы не было лишних команд. В скриптах и программах от перемены мест слагаемых (то бишь строк скрипта) сумма меняется... :wink:

Хинт: попробуй второй поиск поставить в конце цикла.

ЗЫ: А менять цикл на repeat никакого резона нет.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Edred wrote:Я-то указал про два поиска подряд чтобы автор задумался, куда второй лучше поставить, чтобы не было лишних команд. В скриптах и программах от перемены мест слагаемых (то бишь строк скрипта) сумма меняется... :wink:

Хинт: попробуй второй поиск поставить в конце цикла.

ЗЫ: А менять цикл на repeat никакого резона нет.

Как это нет? Был же 8)

Ща попробую нарисовать.

Code: Select all

#Скрипт1
sub rasklad()
uo.findtype('0x0EED',-1,'backpack')
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')
uo.moveitem('finditem',-1,'backpack',40,60,0)
uo.ignore('finditem')
wait(200)
wend
uo.ignorereset()
endsub

Скрипт1 - начнём с того, что после поиска следует проверять нашли мы чего-либо, ибо если ничего не нашли, то будем работать с несуществующим объектом, т.е. делаем так:

Code: Select all

#Скрипт2
sub rasklad()
uo.findtype('0x0EED',-1,'backpack')
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')
if uo.findcount() > 0 then
uo.moveitem('finditem',-1,'backpack',40,60,0)
uo.ignore('finditem')
wait(200)
endif
wend
uo.ignorereset()
endsub

Теперича заменим цикл:

Code: Select all

sub rasklad() 
repeat
uo.findtype('0x0EED',-1,'backpack')
if uo.findcount() > 0 then
uo.moveitem('finditem',-1,'backpack',40,60,0)
uo.ignore('finditem')
wait(200)
endif
until uo.findcount() == 0
uo.ignorereset()
endsub


А ваще Edred вероятно прав.. Но мне так больше нравиться.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Из-за смены циклов тебе пришлось вводить дополнительный if, проверка которого совпадает с проверкой цикла. Смысл?

Code: Select all

uo.findtype('0x0EED',-1,'backpack') 
while uo.findcount() > 0
   uo.moveitem('finditem',-1,'backpack',40,60,0)
   uo.ignore('finditem')
   wait(200)
   uo.findtype('0x0EED',-1,'backpack')
wend


Подумай сам, так же гораздо лучше и логичней.

И вообще, запомни раз и навсегда: цикл repeat нужен только в том случае, если ты хочешь чтобы его тело обязательно хоть один раз выполнилось (проверка в нем в конце). Это его единственное предназначение. Во всех остальных случаях уместнее не изобретать пятиколесный велосипед, а использовать while. А в скриптах инжекта repeat чаще встречается только потому, что он задействован почти во всех динамических паузах:

Code: Select all

repeat
   wait(100)
until .....

Этот цикл при любом раскладе минимум один раз отработает, поэтому хоть минимальная, но будет пауза.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Post Reply