Page 1 of 1
Посматрите
Posted: 2006-05-20 17:26:57
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 вот такая(
Что сделать?
Posted: 2006-05-20 19:53:11
by Edred
Мало. И чеклаг после паузы поставь, чтобы при лагах не спотыкалось.
И вот тут логики совсем не понял:
Code: Select all
uo.findtype('0x0EED',-1,'backpack')
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')
Зачем дважды-то искать на первом круге?
Posted: 2006-05-20 19:59:45
by Destruction
Edred wrote:Мало. И чеклаг после паузы поставь, чтобы при лагах не спотыкалось.
И вот тут логики совсем не понял:
Code: Select all
uo.findtype('0x0EED',-1,'backpack')
while uo.findcount() > 0
uo.findtype('0x0EED',-1,'backpack')
Зачем дважды-то искать на первом круге?
1ый раз чтобы пустили в цикл.
2ой раз чтобы что-то циклично искать.
Делается с одним поиском через repeat, но всё-таки, а еще тут нужно условие..
Posted: 2006-05-20 20:04:03
by Edred
Я-то указал про два поиска подряд чтобы автор задумался, куда второй лучше поставить, чтобы не было лишних команд. В скриптах и программах от перемены мест слагаемых (то бишь строк скрипта) сумма меняется...
Хинт: попробуй второй поиск поставить в конце цикла.
ЗЫ: А менять цикл на repeat никакого резона нет.
Posted: 2006-05-20 21:06:09
by Destruction
Edred wrote:Я-то указал про два поиска подряд чтобы автор задумался, куда второй лучше поставить, чтобы не было лишних команд. В скриптах и программах от перемены мест слагаемых (то бишь строк скрипта) сумма меняется...
Хинт: попробуй второй поиск поставить в конце цикла.
ЗЫ: А менять цикл на repeat никакого резона нет.
Как это нет? Был же
Ща попробую нарисовать.
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 вероятно прав.. Но мне так больше нравиться.
Posted: 2006-05-20 22:22:14
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 чаще встречается только потому, что он задействован почти во всех динамических паузах:
Этот цикл при любом раскладе минимум один раз отработает, поэтому хоть минимальная, но будет пауза.