Page 1 of 1

бональная долбежка по камням.

Posted: 2006-02-14 21:26:17
by Dron D.
накидал тут скриптик для удара по камню, который мы указываем таргетом.
Капаем в этом камне, пока не будет мессаги, что нету больше там нечего. Повторяем капание пока в камне что-то есть.

Code: Select all

sub catorg()
var tshovel='0x0F39'
uo.print('show the stone >>>')
uo.exec('addobject stone')
while uo.targeting()
wait(100)
wend
uo.deletejournal()
while not uo.injournal("No mine") or not uo.injournal("Try mining")
   repeat
        uo.findtype('stone','-1','ground')
        wait(100)
          uo.usetype(tshovel)
    until uo.injournal("You loosen") or uo.injournal("You put")
wend
end sub


Скрипт предлагает мне тыкнуть на камень таргетом, но не находит его сам и моментально пишет тоже самое...

Code: Select all

Where do you want to use the shovel?
Targeting Cancelled

Posted: 2006-02-14 21:57:59
by agem
Не UO.FindType('stone'...), а UO.WaitTargetObject('stone')!

Posted: 2006-02-15 12:49:26
by Dron D.
Тот же эффект :(

Posted: 2006-02-15 13:14:20
by GrayLord
все верно. на сфере, если мы не закончили действие с объектом, и повторно его используем, то первое действие отменяется и все идет сначала, потому и таргет отменяется и кидается новый, пока мы только начали использовать предмет повторно.

Posted: 2006-02-15 13:17:56
by Dron D.
Все верно. Только как бы ето все на скрипты перевести :?:

Posted: 2006-02-15 13:18:43
by GrayLord
и вообще, весьма странно все написано... алгоритм скрипта неверен в принципе.
должно быть так:
1)ищем, что копать
2)устанавливаем таргет на найденое
3)используем предмет
4)ждем, пока закончится действие

Posted: 2006-02-15 13:24:06
by Dron D.
Возможно что не верен алгоритм.
Я только учусь писать скрипты, на основе 5 уроков по написанию скриптов, очень сложно написать правильный скрипт.
Если вам не сложно можете ли вы написать такой скрипт в правильном алгоритме?
1-таргетом указываю на цель копания(камень на земле)
2-капает в етом камне пока не выкапает все.

Posted: 2006-02-15 14:14:11
by GrayLord
не вдаваясь в подробности, скажу, что такое вот уже ближе к теме. изменения минимальны:

Code: Select all

sub catorg() 
var tshovel='0x0F39'
uo.print('show the stone >>>')
uo.exec('addobject stone')
while uo.targeting()
wait(100)
wend
uo.deletejournal()
 repeat
   repeat
       uo.waittargetobject('stone')
       uo.usetype(tshovel)
       repeat
        wait(100)
       until uo.injournal("You loosen") or uo.injournal("You put")
 until uo.injournal("No mine") or uo.injournal("Try mining")
end sub

просто нужно помнить, что если мы чего-то ждем в журнале, то оно там сразу не появится, и потому лучше сперва подождать, то есть использовать repeat-until, а while-wend подходит лишь в особых случаях, когда использование постусловия приводит к непомерному росту скрипта или увеличению его сложности.

Posted: 2006-02-15 15:24:54
by Dron D.

Code: Select all

Where do you want to use the shovel? 
Targeting Cancelled
:twisted:

Posted: 2006-02-15 15:59:49
by GrayLord
угу. так и есть. забыл очистку журнала перенести:

Code: Select all

sub catorg() 
var tshovel='0x0F39'
uo.print('show the stone >>>')
uo.exec('addobject stone')
while uo.targeting()
wait(100)
wend
 repeat
   repeat
       uo.deletejournal()
       uo.waittargetobject('stone')
       uo.usetype(tshovel)
       repeat
        wait(100)
       until uo.injournal("You loosen") or uo.injournal("You put")
 until uo.injournal("No mine") or uo.injournal("Try mining")
end sub


Posted: 2006-02-15 16:15:27
by Dron D.
:lol:

Code: Select all

show the stone >>>
What is stone?
Object updated: stone=0x0000
Where do you want to use the prison shovel?
Targeting Cancelled.
:twisted: :twisted: :twisted:

Posted: 2006-02-15 16:25:57
by Dron D.
Вобщем давай по другому.

Code: Select all

sub catorg()
while not uo.dead()
uo.usetype('0x0F39')
wait(2500)
uo.press(113)
wait(7500)
wend
end sub

Вот впринципе тоже самое, только желательно, чтобы он press`ил 113 кнопку после сообщения You put.

Posted: 2006-02-15 18:32:48
by GrayLord
вобщем так, такими темпами мы далеко не уедем.
видимо, камень твой в статике и его надо при помоще waittargettile обрабатывать:

Code: Select all

sub catorg() 
var tshovel='0x0F39'
 repeat
   repeat
       uo.deletejournal()
       uo.exec('waittargettile lasttile')       
       uo.usetype(tshovel)
       repeat
        wait(100)
       until uo.injournal("You loosen") or uo.injournal("You put")
 until uo.injournal("No mine") or uo.injournal("Try mining")
end sub


смысл вот в чем. биндишь в инжекте запуск этого скрипта на кнопочку какую-нибудь. далее, сперва копаешь руками. один раз. как только первый круг отработает с твоей помощью, дальше запускаешь скрипт и он докапывает все сам.

Posted: 2006-02-15 19:00:07
by agem
Object updated: stone=0x0000


Нет там, куда ты кликаешь, никакого объекта.

Posted: 2006-02-15 19:00:24
by Dron D.
да ты прав етож все статика... нету айди, тайпов... вобщем твоим скриптом достаточно указать цель, т.е. тайл становится последней целью и все работает. спс.