Page 1 of 1

Прицел =(

Posted: 2007-05-03 14:12:17
by Ururu
Мне нужно ткнуть на гампе на кнопку, появляется прицел и этот прицел отправить на итем в паке.
Пробовал так, неполучается:

Code: Select all

uo.waittargettype('finditem')
uo.LClick(28,572)
wait(500)


Дело в том что установить ловушку на итем вначале нельзя, нужно сначало дождатся появления прицела.

А второй вопрос про поиск объектов. Нужно искать реги в подсумках и кидать их в бекпак. Незнаю ниодной команды для поиска в подсумках игнорируя бекпак =(

В процессе написания скрипта еще вопросик возник. Я выставил

Code: Select all

uo.set('finddistance','1')

потом ищу кровь и хиляюсь, но чар пытается хилятся кровью которая далеко. А можно только той что под ногами и в 1 тайле от чара. Да и как после исполнения скрипта, дистанцию выставить по дефаулту?

Posted: 2007-05-03 17:20:35
by korzh

Code: Select all

 DIM reg[8] 
var c
reg[0]=0x0F7B ; BM
reg[1]=0x0F7A ; BP
reg[2]=0x0F86 ; MR
...........                    
for c=0 to 7
uo.findtype(reg[c],"-1","[color=red][b]my[/b][/color]") ; my искать во всех подсумках пака


на кровь думаю будет так:

Code: Select all

var n
Dim Blood[6] ; вроде их 6 не помню
Blood[0] = '0x0000'
.......
Blood[5] = '0x0000
uo.set('finddistance','1')
For n = 0 TO 5
UO.FindType(Blood[n],'-1','ground')
If UO.FindCount() > 0 Then
UO.UseObject('finditem')
EndIf


и еще так вроде можно:

Code: Select all

Dim Blood[6] ; 
Blood[0] = '0x0000'
.......
Blood[5] = '0x0000'
uo.set('finddistance','1')
For n = 0 TO 5
UO.FindType(Blood[n],'-1','ground')
if uo.GetDistance(Blood[n])<2 then
.......


попробуй оба, не тестить негде просто

Posted: 2007-05-03 18:07:17
by Ururu
все не так
1) мне нужно только в подсумках искать а не в бекпаке и подсумках
2) и 3) кровь не юзается, он ищет не там где нужно

Posted: 2007-05-03 18:25:16
by korzh
ммм, а где он кровь ищет? на земле на растоянии 1 тайла, вроде даже юзать ее должен:)

Posted: 2007-05-03 20:02:35
by Ururu
ааа все разобрался, кровь за кустиком была и он ее не доставал =)

но первые 2 вопроса актуальны

Posted: 2007-05-03 20:18:27
by korzh
а про первую поподробнее можно?

и чем тебе не вариант просто в отдельную сумку кинуть все что нужно, и если не секрет то зачем ето?

Posted: 2007-05-03 20:35:58
by Ururu
Есть сейф для регов, я тыкаю в нем на кнопку(гамп) и прицел на рег, этор рег суется в сейф.

Если искать в сумках и выкладывать реги в пак не игнорируя поиск в нем, то получается бесконечный цыкл перекладывания из пака в пак.

Posted: 2007-05-04 02:30:28
by korzh
а напиши uo.ignor('sunduk')

Posted: 2007-05-04 02:56:15
by Ururu
о_0 мне просто нужно в подсумках искать игнорируя бекпак

Posted: 2007-05-04 05:47:41
by Destruction

Code: Select all

uo.waittargettype('finditem') 
uo.LClick(28,572)
wait(500)

Исправить логику и всё заработает.

Конкретно - первая строчка.

Posted: 2007-05-04 09:36:12
by Ururu

Code: Select all

uo.waittargettype(finditem) 
uo.LClick(28,572)
wait(500)

Posted: 2007-05-04 10:00:29
by Destruction
Ururu wrote:

Code: Select all

uo.waittargettype(finditem) 
uo.LClick(28,572)
wait(500)

Ещё хуже сделал, имхо 8)

finditem - объект..

Posted: 2007-05-04 10:18:50
by Ururu
спасибо, разобрался...

а вот тут еще 1 ньюансик :

скрипт выкладывает все реги из подсумок, в бекпак чара

Code: Select all

for r=1 to 26
repeat
 uo.findtype(Meshok,-1,'backpack')
 MeshSer = UO.GetSerial( 'finditem' )
 uo.useobject(MeshSer)
 wait(500)
 repeat   
     uo.findtype(reg[r],-1,MeshSer)
     uo.moveitem('finditem',0,'backpack')
     wait(200)
 until not UO.GetQuantity('finditem')
 wait(200)
 uo.ignore(MeshSer)
until not UO.count(Meshok)
uo.ignorereset()
NEXT

проблема в том, что он медленный. Тоесть ищет вначале первый рег из массива во всех подсумках, потом второй рег и т.д. Если мешков 100 то скрипт затягивается на пол часа =)

Posted: 2007-05-04 11:40:49
by Destruction
Дык скрипт нелогичный, хоть и последовательный :)

Code: Select all

uo.findtype( Meshok )
while uo.findcount()
   if uo.findcount() then
      MeshSer = uo.getserial( "finditem" )
      uo.useobject( "finditem" )
      checklag()
      for r=1 to 26
         uo.findtype( reg[ r ], "-1", MeshSer )
         while uo.findcount()
            uo.moveitem( "finditem" )
            uo.ignore( "finditem" )
         wend
      next
   end if
   uo.findtype( Meshok )
wend
uo.ignorereset()


Вроде всё верно описал, это с учётом, что при перемещении в рюкзаке нету паузы, иначе немного изменить надо :)

Posted: 2007-05-04 13:41:34
by Ururu
Не.. Не работает.
1) открывает кучу мешков и не закрыает их (весь экран в мешках). Но с этим можно разобратся переложив мешок в бекпаке.
2) как добирается до бекпака, начинает в нем с одного на дугое место перекладывать реги и на этом все =)

З.Ы. Если пытаюсь закрыть гамп, получается несовсем то что нужно. Закрывает все гампы что есть (даже ,morph 0x0000 сбрасывает), после чего успешно уходит в дисконект =)
Может есть принцип закрытия последнего открывшегося гампа не используя finditem (а если он уже закрыт, то другие не трогать)?