Page 1 of 1

Помогите:)

Posted: 2008-03-01 21:40:32
by Chepk
Вобщем сидел настраивал скрипт на ламбер под свой шард, и возникла следущая проблема:
скрипт при получении сообщений
if (UO.InJournal("There's not enough wood here to chop") or UO.InJournal("You fail") or UO.InJournal("You hack") or UO.InJournal("appear") or UO.InJournal("You put"))<>0
идёт к следущему дереву, а нужно чтобы при определённых сообщениях продолжал рубить, а при остальных шол к следуйщему дереву. Весь вечер сидел эксперементировал со всякими антилами и ифами но так ничего путнего и не получилося(( надеюсь на вашу помощь

вот нужная часть скрипта:
sub Chopping(usetile)
var i, k, NoStop
k=0
Wait(200)
svs()
i=0
Wait(200)
lb1:
uo.exec("waittargettile "+usetile)
Wait(200)
UO.unequip ("Lhand")
Wait(1000)
UO.usetype("0x0F43")
Wait(1000)
svs()
Wait(1000)
if uo.waiting() then
UO.Press(117)
Wait(500)
goto lb1
endif
NoStop=true
while NoStop
if (UO.InJournal("There's not enough wood here to chop") or UO.InJournal("You fail") or UO.InJournal("You hack") or UO.InJournal("appear") or UO.InJournal("You put"))<>0 || k>30 then
NoStop=false
endif
Wait(2000)
k=k+1
wend
UO.DeleteJournal()
end sub

Posted: 2008-03-01 22:01:05
by Grin
очень кривая функция...
увас при ламбе могут не появится сообщении о "удачна" вырубка или "нет"?

Posted: 2008-03-01 22:22:14
by Chepk
Я несовсем правильно выразил свои мысли:)
вобщем скрипт работает нормально, но при получении пофиг какой фразы из тех что прописаны он идёт рубить следущее дерево, а мне нужно зделать чтобы скрипт при получении фразы что чар фейланул при рубке и ещё некоторых, продолжил рубить этоже дерево:) и я незнаю как это реализовать...
Grin wrote:очень кривая функция...
увас при ламбе могут не появится сообщении о "удачна" вырубка или "нет"?
да сам знаю что кривая:) всё появляется как надо, как у всех..

Posted: 2008-03-01 23:00:01
by Chepk
заоодно подскажите что делают волшебные слова ретурн 1 и ретурн 0 вот тут

Code: Select all

Sub GetTree(Type,X,Y,Z)
var i
uo.Print('Íà÷èíàåì ðóáêó äåðåâà...')
for i=0 to 30
if uo.Warmode()==1 then
return 0
end if
wait(200)
uo.DeleteJournal()
checklag()
uo.WaitTargetTile(Type,X,Y,Z)
uo.UseObject('Axe')
if WaitForChange()==1 then
return 1
end if
next
return 0
end sub


Sub WaitForChange()
var Text0='You put'
var Text1='You hack at the tree for a while, but fail to produce any useable wood.'
var Text2='There is nothing here to chop.'
var Text3="You can't reach this."
var Text4="That is too far away."
var Text5="You can't do much in your current state."
for var i=0 to 200
if uo.INJournal(Text2) or uo.INJournal(Text3) or uo.INJournal(Text4) then
return 1
end if
if uo.INJournal(Text1) then
return 0
end if
if uo.INJournal (Text0) then
return 0
end if
wait(50)
next
return 0
end sub 

Posted: 2008-03-01 23:05:14
by Grin
что бы функция чтото возвращала, прописать ретурн с этим чемто
тоесть
sub abc()
return 2*2
end sub

uo.print(str(abc()))

отпринтует 4

возми нормальный ламб... не мучийся с этим...

Posted: 2008-03-01 23:15:31
by Chepk
та это хорошый ламбер только написан кривовато, а работает супер, ниразу незаглючивал, + уже настроен, единственное что осталося так с этой функцией разобратся и подправить её как надо...

Posted: 2008-03-01 23:17:06
by Grin
так первая функция полность повторяется вторыми 2-я

Posted: 2008-03-01 23:41:51
by Chepk
надо чтото типо такого зделать

Code: Select all

sub Chopping(usetile)
var i, k, NoStop
k=0
i=0
Wait(200)
lb1:
uo.exec("waittargettile "+usetile)
Wait(200)
UO.usetype("0x0F43")
Wait(1000)
svs()
Wait(3000)
if uo.waiting() then
UO.Press(117)
Wait(500)
goto lb1
endif
NoStop=true
while NoStop
if (UO.InJournal("You fail")or UO.InJournal("You put")or UO.InJournal("You hack")or UO.InJournal("appears"))<>0 || k>30 then
goto lb1
endif
if (UO.InJournal("There is")or UO.InJournal("appears")or UO.InJournal("You decide"))<>0 || k>30 then
NoStop=false
endif
Wait(500)
k=k+1 
wend
UO.DeleteJournal()
end sub
но в этом варианте оно заглючует(

Posted: 2008-03-02 00:07:07
by Chepk
всё понял! надыбыло очистку журнала добавить потому оно и заглючивало, воттак норм:) бред но работает:)

Code: Select all

sub Chopping(usetile)
var i, k, NoStop
k=0
Wait(200)
lb1:
uo.exec("waittargettile "+usetile)
Wait(200)
UO.usetype("0x0F43")
Wait(1000)
svs()
Wait(3000)
if uo.waiting() then
UO.Press(117)
Wait(500)
goto lb1
endif
NoStop=true
while NoStop
if (UO.InJournal("You fail")or UO.InJournal("You put")or UO.InJournal("You hack")or UO.InJournal("appears"))<>0 || k>30 then
UO.DeleteJournal()
goto lb1
endif
if (UO.InJournal("There is")or UO.InJournal("appears")or UO.InJournal("You decide"))<>0 || k>30 then
NoStop=false
endif
Wait(500)
k=k+1
wend
UO.DeleteJournal()
end sub

Posted: 2008-03-02 00:09:20
by Grin
полный бред;)

Posted: 2008-03-02 00:20:29
by Chepk
не всёравно заглючует(( становится у какогонибуть дерева и пытается рубить хотя пишется что дерева уже нету((
вот весь скрипт, подправтье плиз..

Code: Select all

sub main()
var usetile
UO.DeleteJournal()
wait(1000)
start:
gotoxy (3090,613,0)
gotoxy (3088,613,0)
Chopping('3278 3088 612 0')

gotoxy (3092,610,0)
Chopping('3293 3092 609 0')

gotoxy (3096,613,0)
Chopping('3296 3096 612 0')

gotoxy (3100,610,0)
Chopping('3289 3100 609 0')

gotoxy (3104,610,0)
Chopping('3280 3104 609 0')

gotoxy (3108,610,0)
Chopping('3287 3108 609 0')

gotoxy (3109,610,0)

gotoxy (3109,613,0)
Chopping('3296 3108 612 0')

gotoxy (3109,615,0)
Chopping('3296 3108 615 0')

gotoxy (3111,615,0)
Chopping('3286 3112 615 0')

gotoxy (3111,612,0)
Chopping('3296 3112 612 0')

gotoxy (3111,610,0)
Chopping('3283 3112 609 0')

gotoxy (3115,612,0)
Chopping('3293 3116 612 0')

gotoxy (3115,615,0)
Chopping('3283 3116 615 0')

gotoxy (3115,618,0)
Chopping('3293 3116 618 0')
Chopping('3316 3115 617 0')
gotoxy (3104,618,0)
gotoxy (3099,613,0)

zahod()
goto start
end sub


sub Chopping(usetile)
var i, k, NoStop
k=0
Wait(200)
lb1:
uo.exec("waittargettile "+usetile)
Wait(200)
UO.usetype("0x0F43")
Wait(1000)
svs()
Wait(3000)
if uo.waiting() then
UO.Press(117)
Wait(500)
goto lb1
endif
NoStop=true
while NoStop
if (UO.InJournal("You fail")or UO.InJournal("You put")or UO.InJournal("You hack")or UO.InJournal("appears"))<>0 || k>30 then
UO.DeleteJournal()
goto lb1
endif
if (UO.InJournal("There is")or UO.InJournal("appears")or UO.InJournal("You decide"))<>0 || k>30 then
NoStop=false
endif
Wait(500)
k=k+1
wend
UO.DeleteJournal()
end sub





sub svs()
if UO.InJournal("Saving in 5 ")<>0 then
Wait(35000)
UO.DeleteJournal()
endif
end sub





sub gotoxy(x,y,prec) 
var ld=0,ldc=0 
var dx,dy 
var mx,my 
var ox,oy,mk,k 
#uo.print(">") 
#uo.track("1",str(x),str(y)) 
start: 
;uo.exec("sayu 'help'")
mx=UO.GetX() 
my=UO.GetY() 
dx=mx-x 
if dx<0 then 
dx=0-dx 
endif 
dy=my-y 
if dy<0 then 
dy=0-dy 
endif 
if dy>dx then 
dx=dy 
end if 
if dx<=prec then 
return 
end if 
if not ldc then 
uo.print(STR(dx)) 
end if 
if dx<3 then 
mk=70 
else 
mk=15 
end if 

ox=mx 
oy=my 
for k=1 to mk 
mx=UO.GetX() 
my=UO.GetY() 
if mx<>ox or my<>oy then 
goto sdidapl 
end if 
wait(10) 
next 
sdidapl: 

mx=UO.GetX() 
my=UO.GetY() 
dx=mx-x 
if dx<0 then 
dx=0-dx 
endif 
dy=my-y 
if dy<0 then 
dy=0-dy 
endif 
if dy>dx then 
dx=dy 
end if 

if dx<=prec then 
return 
end if 
if ld==dx then 
ldc=ldc+1 
if ldc>15 then 
uo.print("Can not reach location!") 
return 
end if 
else 
ld=dx 
end if 

if mx==x then 
if my==y then 
return 
endif 
if my>y then 
#UO.Print("UR") 
UO.Press(33) 
goto start 
endif 
#UO.Print("DL") 
UO.Press(35) 
goto start 
end if 
if mx<x then 
if my>y then 
#UO.Print("R") 
UO.Press(39) 
goto start 
endif 
if my==y then 
#UO.Print("DR") 
UO.Press(34) 
goto start 
endif 
#UO.Print("D") 
UO.Press(40) 
goto start 
end if 
if my<y then 
#UO.Print("L") 
UO.Press(37) 
goto start 
endif 
if my==y then 
#UO.Print("LU") 
UO.Press(36) 
goto start 
endif 
#UO.Print("U") 
UO.Press(38) 
goto start 
end sub






sub WaitIfSave()
If (UO.LastMessage()=="Saving in 5") <>0 Then
Wait(20000) 
endif
end sub 


sub DropLogs2()
var Self_Pos,k
Self_Pos=STR(UO.GetX())+" "+STR(UO.GetY())+" "+STR(UO.GetZ())
DIM ColorOfLogs[23]
ColorOfLogs[1]=0x0000 #simple
ColorOfLogs[2]=0x048A #jade


for k=1 to 2
uo.exec("findtype derevo "+str(ColorOfLogs[k])+" my")
uo.exec("moveitem finditem all ground "+Self_Pos)
wait(300)
next

end sub


sub zahod()

gotoxy (3090,613,0)
svs()
Wait(1000)
gotoxy (3090,613,0)
wait(1000)
end sub

Posted: 2008-03-02 02:03:35
by Grin
ну то что он не сглючил не разу, жто только потому что он утебья а первом дереве косячить начинает;) и ты его быстро отрубаешь;)

Posted: 2008-03-02 23:12:47
by Chepk
может подкинет ктонибуть ламбер наподобие єтого? чтонибуть простое, ато смотрел на форуме видел скрипт под ДРВ и подобные ему, не очень вдохновили(