Page 1 of 1

Проверка

Posted: 2010-03-30 12:27:16
by XpyCmuK
Помогите написать и вставить в скрипт проверку на голод

Code: Select all

if uo.InJournal('are hungry') then
ищем в сумке ('молоко')
если меньше трех добираем из сундука
кушаем пока в журнале не будет надписи- Water: You can't drink more.
ищем в сумке ('бекон')
если меньше двух добираем из сундука 
кушаем пока в журнале не будет надписи- Hungry: Your are stuffed!
надо вставить в этот скрипт:

Code: Select all

##################################################################### 
; Tinker. v.1.00b (c) Edred 
; 
; Чар берет из сундука инготы, крафтит из них бутылки 
; и складывает эти бутылки в этот же сундук. 
; Если инги закончились - выход. 
; 
sub tinker() 
VAR Sunduk = '0x40018837' ; Сериал сундука 
VAR Ingi = '0x1BDD' ; Тип ингов 
VAR Instrum = '0x1034' ; Тип инструмента тинкера 
VAR Bottle = '0x0E34' ; Тип бутылки 
VAR Kolvo = 300 ; Брать ингов 
VAR k = 0 
While TRUE 
UO.FindType( Ingi, -1, Sunduk ) ; Ищем инги в сундуке 
If UO.FindCount() == 0 Then 
UO.Print("Iron Ingots not found, script terminated") 
return 
Endif 
UO.Grab( Str( Kolvo ), 'finditem' ) 
wait( 2000 ) 
While UO.Count( Ingi ) > 5 
; Пока в паке есть инги 
UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' ) 
UO.DeleteJournal() 
uo.findtype('0x1034','0x0000','backpack')
if uo.findcount() then
uo.recall('finditem','3')
k = 0 
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 ) 
k = k + 1 
wait(500) 
wend 
if UO.Count( Bottle ) > 30 then 
UO.FindType( Bottle, -1, -1 ) 
UO.MoveItem( 'finditem', 0, Sunduk ) 
wait( 1000 ) 
UO.Print( 'Bottle moved' ) 
end if 
Wend 
Wend 
end sub

Re: Проверка

Posted: 2010-03-30 12:43:53
by Beyonder
Так детально расписал алгоритм что мог бы уже и сам написать скрипт :)

Что-то вроде такого:

Code: Select all

var moloko = '0x1234'
var beckon = '0x4321'
var sunduk = '0x12345678'

Sub eat()
    if uo.InJournal('are hungry') then
        ;ищем в сумке ('молоко')
        ;если меньше трех добираем из сундука
        if (UO.Count(moloko)<3) then
            ;открываем сундук
            UO.UseObject(sunduk)
            Wait(500)
            ;ищем в нём молоко
            UO.FindType(moloko,-1,sunduk)
            ;перемещаем 10 штук в рюкзак
            UO.MoveItem('finditem',10,'backpack')
        endif
        UO.DeleteJournal()
        ;кушаем пока в журнале не будет надписи- Water: You can't drink more.
        while (NOT UO.InJournal("Water: You can't drink more."))
            UO.UseType(moloko)
            Wait(500)
        wend

        ;ищем в сумке ('бекон')
        ;если меньше двух добираем из сундука
        if (UO.Count(beckon)<2) then
            ;открываем сундук
            UO.UseObject(sunduk)
            Wait(500)
            ;ищем в нём бекон
            UO.FindType(beckon,-1,sunduk)
            ;перемещаем 10 штук в рюкзак
            UO.MoveItem('finditem',10,'backpack')
        endif
        UO.DeleteJournal()
        ;кушаем пока в журнале не будет надписи- Hungry: Your are stuffed!
        while (NOT UO.InJournal('Hungry: Your are stuffed!'))
            UO.UseType(beckon)
            Wait(500)
        wend
    endif
endsub

Re: Проверка

Posted: 2010-03-30 12:50:46
by XpyCmuK
Beyonder wrote:Так детально расписал алгоритм что мог бы уже и сам написать скрипт :)
Да еслибы мог не просил бы помощи :)

Можешь склейт свой скрипт со скриптом на тинкер, сам я точно несмогу.

Code: Select all

while (NOT UO.InJournal('Water: You can't drink more.') 
вот на этой строчке он ошибку выдает

Re: Проверка

Posted: 2010-03-30 13:16:36
by Beyonder
Ошибку исправил в верхнем своём сообщении.

Воткнуть в тинкер примерно вот так:

Code: Select all

While UO.Count( Ingi ) > 5
; Пока в паке есть инги 
Между строками нужно воткнуть eat()

Code: Select all

While UO.Count( Ingi ) > 5
eat()
; Пока в паке есть инги 

Re: Проверка

Posted: 2010-03-30 13:25:41
by XpyCmuK
Beyonder wrote:Ошибку исправил в верхнем своём сообщении.

Воткнуть в тинкер примерно вот так:

Code: Select all

While UO.Count( Ingi ) > 5
; Пока в паке есть инги 
Между строками нужно воткнуть eat()

Code: Select all

While UO.Count( Ingi ) > 5
eat()
; Пока в паке есть инги 
Всеравно на той же строчке ругается :(

Re: Проверка

Posted: 2010-03-30 13:34:33
by Beyonder
Точно, там 2 ошибки было а не одна. Теперь должно работать :)

Re: Проверка

Posted: 2010-03-30 13:42:14
by XpyCmuK
Как в журнале выскакивет hungry начинает писать no item found
Типы все прописал

Re: Проверка

Posted: 2010-03-30 13:50:52
by Beyonder
Сундука ты точно верный ID указал? Надо было именно ID а не тип.

Re: Проверка

Posted: 2010-03-30 13:54:31
by XpyCmuK
Beyonder wrote:Сундука ты точно верный ID указал? Надо было именно ID а не тип.
Ид вставил,
VAR Sunduk = '0x40018837'

А есть разница sunduk или Sunduk?

Re: Проверка

Posted: 2010-03-30 13:58:41
by Beyonder
Нет, разницы нету.

Судя по всему, он не может найти молоко у тебя в рюкзаке. Ты точно верный тип молока прописал?

Re: Проверка

Posted: 2010-03-30 14:02:38
by XpyCmuK
Beyonder wrote:Нет, разницы нету.

Судя по всему, он не может найти молоко у тебя в рюкзаке. Ты точно верный тип молока прописал?
Все верно, щас он его стал брать только перед тем как взять все равно выдает no item found

Может дело в том что молоко нескладывается в кучку?