привет.вот скрипт на рубку хвороста.Проблема в том,что когда я начинаю помечать деревья после первого помеченного дерева выдаёт ошибку - Uncepl parser error.линию ошибки не указывает.Помогите пожалуйста,в чом может быть проблема?
Code: var fName= "C:\uo\inject\trees3.dat" ## - Путь к файлу в котором будут хранится координаты деревьев. var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки var tKnife = '0x0F52' ; тип ножа, если он в руках - не придётся тыкать на него прицелом.
sub kindling() var i, f dim TreeX[500],TreeY[500],TreeT[500] var flag,treeCount=0 UO.Exec('terminate Reconnector') UO.Exec('exec Reconnector') if UO.GetGraphic(UO.ObjAtLayer('Rhand')) == '0x0F51' then uo.waittargetobject(UO.ObjAtLayer('Rhand')) uo.AddObject('knife') else UO.Print('Мтякс... покажЪ нож...') uo.AddObject('knife') while uo.Targeting() wait(100) wend end if ToHide() uo.Print('Посмотримс, что там у нас в файлике завалялось...') f = file(fName) f.open() treeCount=safe call f.ReadNumber() for i=1 to treeCount TreeT[i]=safe call f.ReadNumber() TreeX[i]=safe call f.ReadNumber() TreeY[i]=safe call f.ReadNumber() next f.close() Orfo(str(treeCount),'Значится пошукал я и нашел '+str(treeCount)+' дерев','',0) wait(2000) ToHide() if treeCount<1 then return end if uo.set('finddistance','3') uo.FilterSpeech('on') uo.FilterSpeech('add', 'What do you want to use this on?') while not UO.Dead() for i=1 to treeCount if uo.skillval('Camping',1)==1000 then uo.set('finddistance','14') uo.FilterSpeech('off') UO.CloseUO() end if uo.Print('Потопал к дереву №'+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i])) if GotoXY(TreeX[i],TreeY[i]) == 1 then GetTree(str(TreeT[i]),str(TreeX[i]),str(TreeY[i]),str(uo.GetZ())) Camping() end if next ToEat() wend uo.set('finddistance','14') uo.FilterSpeech('off') UO.CloseUO() end Sub
Sub GetTree(Type,X,Y,Z) var lt var Text2='There is no wood left to harvest' var Text3="You can't" var Text4='That is too far away.' var Text5='Chopping the tree ' var Text6='You put' UO.DeleteJournal() while not UO.InJournal(Text2) and not UO.InJournal(Text3) and not UO.InJournal(Text4) and not UO.InJournal(Text5) and not UO.Dead() ToHide() CheckLag() uo.WaitTargetTile(Type,X,Y,Z) uo.UseObject('knife') lt = UO.Timer() while not UO.InJournal(Text2) and not UO.InJournal(Text3) and not UO.InJournal(Text4) and not UO.InJournal(Text5) and not UO.InJournal(Text6) and not UO.Dead() and lt+100 > UO.Timer() wait(100) wend if lt+100 < UO.Timer() then if uo.targeting() then uo.canceltarget() end if UO.Print('Больное какое то дерево') return end if wend end Sub
sub MarckingLumbers() var k, i dim TreeX[500], TreeY[500],TreeT[500] dim TreeTile[29] var flag=0, treeCount=0, flag2=0 TreeTile[0]=3277 TreeTile[1]=3280 TreeTile[2]=3283 TreeTile[3]=3286 TreeTile[4]=3289 TreeTile[5]=3291 TreeTile[6]=3294 TreeTile[7]=3296 TreeTile[8]=3299 TreeTile[9]=3302 TreeTile[10]=3393 TreeTile[11]=3394 TreeTile[12]=3395 TreeTile[13]=3396 TreeTile[14]=3415 TreeTile[15]=3416 TreeTile[16]=3417 TreeTile[17]=3418 TreeTile[18]=3419 TreeTile[19]=3438 TreeTile[20]=3439 TreeTile[21]=3440 TreeTile[22]=3441 TreeTile[23]=3442 TreeTile[24]=3460 TreeTile[25]=3461 TreeTile[26]=3462 TreeTile[27]=3290 TreeTile[28]=3288 uo.FilterSpeech('on') uo.FilterSpeech('add', 'Where do you want to use the') uo.Print('Ты будешь смеятся, но мне нужна либо кирка, либо лопата...') uo.AddObject('Pickaxe') While uo.Targeting() Wait (100) Wend uo.Print('Iwi derevja,tikaj na nih a ja budu proverjatj...') UO.DeleteJournal() while uo.Lasttile(1)<>uo.getX() and uo.Lasttile(2)<>uo.gety() CheckLag() uo.UseObject('Pickaxe') if WaitForTryRock()==0 then flag = 0 for k = 0 To 9 if uo.LastTile(0)==TreeTile[k]+1 then flag = 2 end if next if flag == 0 then for k = 0 To 28 if uo.LastTile(0)==TreeTile[k] then flag = 1 end if next end if if flag > 0 then flag2 = 0 if treeCount > 0 Then for i = 1 To treeCount if TreeX[i]==uo.LastTile(1) and TreeY[i]==uo.LastTile(2) then flag2 = 1 end if next end if if flag2 == 0 then treeCount = treeCount + 1 TreeX [treeCount] = uo.LastTile(1) TreeY [treeCount] = uo.LastTile(2) if flag == 1 then TreeT [treeCount] = uo.LastTile(0) else TreeT [treeCount] = uo.LastTile(0) - 1 end if uo.print('Надо же! В дерево попал!!! В это: x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))) Orfo(str(treeCount),'Всего '+str(treeCount)+' дерев',' наковырял',0) else uo.Print('Вот чукча!!! Ты мне енто дерево уже показывал!!!, давай что нибудь новенькое покажи...') end if else UO.Print('похоже... но не дерево...') end if end if wend uo.Filterspeech('off') if treeCount < 1 then UO.Print('И чо ты мне мозги тут пудрил? Ни одного дерева же не нашёл!') UO.Print('Ну ни чо в другой раз тебе больше повезёт :)') return end if if treeCount < 100 then uo.Print('И чо ты думаешь этого тебе хватит?!?!?') else uo.Print('Ну ты и хапуга... и глянь терпения то хватило...') end if wait(200) uo.Print('Да не расстраивайся ты... я так шутю :)') wait(200) uo.Print('посмотрел я тут на досуге, что ты навыбирал...') uo.Print('буду попробывать скинуть в файл...') SaveToFile(treeCount,TreeX,TreeY,TreeT) wait(500) uo.Print('Всё! Типа скинул в файл: ' + fName) wait(200) uo.Print('Эё!!! Ты куда собрался? погодь я тебя ещё не отпустил, ща рубать пойдём...') wait(700) kindling() end Sub
Sub WaitForTryRock() var Text1="Try mining in rock." var Text2="That is too far away." var Text3="You can't see the target" var Text4="You have no line of sight to that location" var Text5="There is no ore here to mine." var Text6='You loosen' var Text7='You put' var Text8='OOPS!!!' var Text9='STOPPP' while not UO.InJournal(Text1) and not UO.InJournal(Text2) and not UO.InJournal(Text3) and not UO.InJournal(Text4) and not UO.InJournal(Text5) and not UO.InJournal(Text6) and not UO.InJournal(Text7) and not UO.InJournal(Text8) and not UO.InJournal(Text9) wait(50) wend if UO.InJournal(Text1) then UO.Print('ща посмотрю куда ты там тыкнул...') return 0 end if if UO.InJournal(Text2) or UO.InJournal(Text3) or UO.InJournal(Text4) then UO.Print('а чо поближе дерева не водятся?') end if if UO.InJournal(Text5) or UO.InJournal(Text6) or UO.InJournal(Text7) or UO.InJournal(Text8) then UO.Print('Ты вроде подрова собирался??? Ну так и иди... лесом иди...') end if return 1 end Sub
Sub SaveToFile(treeCount,TreeX,TreeY,TreeT) var s=0,i=0, f f = file(fName) f.open() f.create() s=safe call f.writeln(treeCount) for i=1 to treeCount s=safe call f.writeln(str(TreeT[i])+' '+str(TreeX[i])+' '+str(TreeY[i])) next f.close() end Sub
Sub Orfo(sNum, fStr, lStr, Rod) ## Rod - 0/1; 0 - дерево, 1 - лог var n=VAL(Right(sNum,1)) if n==0 then if Rod == 0 then UO.Print(fStr+'а'+lStr) else UO.Print(fStr+lStr) end if return end if if n<5 then UO.Print(fStr+'а'+lStr) return end if if Rod == 0 then UO.Print(fStr+'ев'+lStr) else UO.Print(fStr+'ов'+lStr) end if end Sub
Sub Camping() var mx=uo.getx(),my=uo.gety(),x,y uo.DeleteJournal() while uo.count('0x0DE1','0x0000') > 0 for x=mx-2 to mx+2 for y=my-2 to my+2 CheckLag() if uo.count('0x0DE1','0x0000')==0 or uo.Dead() then return end if uo.findtype('0x0DE1','0x0000','ground') if UO.FindCount() == 0 then uo.findtype('0x0DE1','0x0000','backpack') uo.drop('1',str(x),str(y),str(uo.getz()),'finditem') CheckLag() end if uo.findtype('0x0DE1','0x0000','ground') if UO.FindCount() > 0 then uo.deletejournal() uo.useobject('finditem') wait(1500) if uo.injournal("You can't") then uo.ignore('finditem') end if end if next next wend end Sub
Sub ToHide() while not UO.Hidden() CheckLag() UO.WarMode(0) UO.UseSkill('Hiding') repeat wait(200) until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preocopured') or UO.Dead() wend end Sub
Sub ToEat() UO.DeleteJournal() UO.FindType(TypeFood,'0x0000','backpack') while UO.FindCount() > 0 and not uo.InJournal('too full') and not UO.Dead() CheckLag() uo.UseType(TypeFood,'0x0000') while not uo.InJournal('full') and not uo.InJournal('stuffed') and not uo.InJournal('hungry') and not uo.InJournal('satiated') and not UO.Dead() wait(100) wend UO.FindType(TypeFood,'0x0000','backpack') wend end Sub
Sub CheckLag() if uo.Waiting()>0 then uo.Exec('canceltarget') end if uo.DeleteJournal() uo.Click('backpack') repeat wait(50) until uo.InJournal('backpack') or UO.Dead() end Sub
Sub Reconnector() var ReconnectTime, RFlag ReconnectTime = '0' RFlag = 1 Repeat While (UO.ObjAtLayer('Bpack') == '') if RFlag Then ReconnectTime = MakeTime() RFlag = 0 endif Wait(20000) # WorldSave Protection UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.LDblClick(357,164) UO.LClick(616,459) Wait(3000) WEnd Wait(3000) if (RFlag == 0) and (ReconnectTime <> '0') Then UO.Exec('terminate kindling') wait(1000) UO.Exec('exec kindling') UO.TextOpen() UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) RFlag = 1 ReconnectTime = '0' endif Until false end sub
Sub MakeTime() VAR D, T, Ret, i Ret = STR(UO.Time()) T = "" For i = 0 To Len(Ret) T = Ret[Len(Ret)-i] + T If (I == 2) OR (I == 4) Then T = ":" + T EndIf Next Ret = STR(UO.Date()) D = "" For i = 0 To Len(Ret) D = Ret[Len(Ret)-i] + D If (I == 2) OR (I == 4) Then D = "." + D EndIf Next Ret = T + " @ " + D RETURN Ret end sub
################################################################################################### ################################# тут ходилка ##################################################### ###################################################################################################
Sub GotoXY(x,y) VAR i VAR dir,ldir,rdir,key,olddir VAR dx,dy,Exit=0 VAR CacheLimit=9,CacheIndex="Text" DIM CacheX[10], CacheY[10] CacheX[0]="Test" While Exit<>1 dx=x-UO.GetX() dy=y-UO.GetY() If dx<=2 AND dy<=2 Then Exit=1 Endif If dx<>0 AND dy<>0 Then If dx>0 AND dy>0 Then ; GoSE dir=3 ldir=2 rdir=4 key=40 ; DownArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==2 Then ; GoNE dir=1 ldir=0 rdir=1 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=5 rdir=6 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx>0 AND dy<0 Then ; GoNE dir=1 ldir=0 rdir=2 key=39 ; RightArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==0 Then ; GoWN dir=7 ldir=6 rdir=7 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSE dir=3 ldir=3 rdir=4 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx<0 AND dy>0 Then ; GoSW dir=5 ldir=4 rdir=6 key=37 ; LeftArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==6 Then ; GoWN dir=7 ldir=7 rdir=0 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSE dir=3 ldir=2 rdir=3 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif
If dx<0 AND dy<0 Then ; GoWN dir=7 ldir=6 rdir=0 key=38 ; UpArrow olddir=UO.GetDir() If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then If olddir==0 Then ; GoNE dir=1 ldir=1 rdir=2 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=4 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif If dx<>0 AND dy==0 Then If dx>0 Then ; GoE dir=2 key=34 ; PgDown olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoSE dir=3 ldir=3 rdir=4 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoNE dir=1 ldir=1 rdir=0 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dx<0 Then ; GoW dir=6 key=36 ; Home key olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==0 Then ; GoWN dir=7 ldir=7 rdir=0 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=4 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif
If dx==0 AND dy<>0 Then If dy>0 Then ; GoS dir=4 key=35 ; End If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoSE dir=3 ldir=2 rdir=3 key=40 ; DownArrow While UO.GetDir()<>3 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoSW dir=5 ldir=6 rdir=5 key=37 ; LeftArrow While UO.GetDir()<>5 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif If dy<0 Then ;GoN dir=0 key=33 ; PgUp olddir=UO.GetDir() If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then If olddir==2 Then ; GoNE dir=1 ldir=1 rdir=2 key=39 ; RightArrow While UO.GetDir()<>1 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Else ; GoWN dir=7 ldir=7 rdir=6 key=38 ; UpArrow While UO.GetDir()<>7 StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Wend Endif Endif Endif Endif Wend return 1 end sub
Sub StepEdit(x,y,dir,key) VAR walkwait=300 VAR ErrLevel=0 If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif UO.Press(key) wait(walkwait) If x==UO.GetX() AND y==UO.GetY() Then CheckLag() If x==UO.GetX() AND y==UO.GetY() Then ;zatik ErrLevel=1 Endif Endif Return ErrLevel end sub
Sub StepArrow(x,y,dir,ldir,rdir,key) VAR walkwait=300 VAR ErrLevel=0 If UO.GetDir()<>dir Then UO.Press(key) wait(walkwait) If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then CheckLag() Endif Endif
If UO.GetX()==x AND UO.GetY()==y Then UO.Press(key) wait(walkwait) If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then CheckLag() If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then ; zatik ErrLevel=1 Endif Endif Endif Return ErrLevel end sub
|