вот еще
Code: ############################################ ### Lumberjacking / Рубка деревьев ### ############################################ ### Шард Groza / www.uo.groza.ru ### ############################################ ### Реавтор этого скрипта: Reddevill ### ############################################ ################## ### Переменные ### ################## ################################################################################################### var f=file("C:\trees4.dat") ## - Путь к файлу в котором будут хранится координаты деревьев. ### var TryHiding=1 ## 1 - Перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет . ### var LogsQty=1100 ## - Количество логов, добыв которое надо идти к банку. ### var GetFromFile=1 ## 1 - Координаты деревьев будут считыватся из файла, 0 - собиратся из клиента ### (сначала соберите а потом считывайте из файла). ### var TypeFood='0x097B' ## - Тип еды которую будем кушать.(сейчас фиштейки) ### var Chest='0x40021264' ## - ID сундука куда будут выгружаться логи. ### var Trytodrop=1 ## Будем пытатся подходить к сундуку или нет. ### var ContX=4471 ##Координаты X у сундука ### var ContY=1163 ##Координаты Y у сундука ### var oldX,oldY,time ## - Для рекола. ### var Axe='0x0F43' ## ID топора ### var FoodSoondook = 1 ### var Sunduk='0x40021264' ### var ContX1=4442 ## 1-я координата пути к ресалке var ContY1=1188 ### var ContX2=4442 ## 2-я координата пути к ресалке var ContY2=1169 ### var ContX3=4451 ## 3-я координата пути к ресалке var ContY3=1169 ### var ContX4=4451 ## 4-я координата пути к ресалке var ContY4=1162 ### var ContX5=4462 ## Координата на путь к банку (что бы никуда не врезался) var ContY5=1169 ### var ContX6=4462 ## Координата на путь к банку (что бы никуда не врезался) var ContY6=1179 ### var ContX7=4471 ## Координата на путь к банку (что бы никуда не врезался) var ContY7=1179 ### var MaxTraceDistance=10 var TraceLoopIncrease=5 #Увеличение MaxTraceDistance при исчерпании количества ходов var LimitTrace=20 #Сколько шагов в ОБЕ стороны от начальной точки обхода прекращают ходилку (выхода нет). var Speed=1 var StepTimeOut=500 #Таймаут шага. Устанавливать не в размер пинга, а в размер шага + размер пинга. # Для ходьбы - 500+Ping # Для бега/ходьбы на лошади - 300+Ping # Бег на лошади - 150 + Ping
var CheckCnt=2 #Количество слепых проверок. УВЕЛИЧИВАЕТ В СТОЛЬКО РАЗ ТАЙМАУТ. Использовать только на БЫСТРОМ но НЕСТАБИЛЬНОМ коннекте. При большом пинге будет УЖАС. var DynamicPause=30 #Минимальные паузы в циклах. Чем меньше число - тем меньше рывков и тем больше нагрузка процессора.
########### ### Код ### ########### sub Lumberjacking() var i=0,j=0,k=0,r=0,q=0,ii,jj var TopX=324,TopY=65 dim TreeX[5000], TreeY[5000],TreeT[5000] dim TreeTile[29] var flag=0,treeCount=0,clicks=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.Exec("filterspeech on") uo.Exec("filterspeech add 'Where do you want to use the pickaxe?'") ##################################### ### Загружаем координаты из файла ### ##################################### if GetFromFile==1 then uo.Print('Загружаем координаты из файла...') 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() else ###################################### ### Собираем координаты из клиента ### ###################################### uo.Print('Выбери Кирку: ') uo.Exec('addobject Pickaxe') while uo.Targeting() wait(100) wend uo.Print('Собираем координаты деревьев в округе...') repeat clicks=0 flag=0 uo.DeleteJournal() ####################### ### Кликаем на тайл ### ####################### uo.UseObject('Pickaxe') waitForTarget() uo.DeleteJournal() WaitForTryRock() ############################### ### Проверяем дерево ли это ### ############################### flag=0 for k=0 to 28 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 uo.Lasttile(1)==uo.getX() and uo.Lasttile(2)==uo.gety() then flag=3 end if ######################### ### Кликнули на ствол ### ######################### if flag==1 then flag2=0 if treeCount>0 then for ii=1 to treeCount if TreeX[ii]==uo.LastTile(1) and TreeY[ii]==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) TreeT[treeCount]=uo.LastTile(0) uo.Print('Найдено дерево '+str(treeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))+' '+str(treeCount)) end if end if ########################## ### Кликнули по листве ### ########################## if flag==2 then flag2=0 if treeCount>0 then for ii=1 to treeCount if TreeX[ii]==uo.LastTile(1) and TreeY[ii]==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) TreeT[treeCount]=uo.LastTile(0)-1 uo.print('Найдено дерево '+str(treeCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))) end if end if until (Flag==3) or (treeCount==150) uo.Exec("filterspeech off") uo.Print('Анализ закончен, координаты деревьев записаны в файл C:\trees3.dat') SaveToFile(treeCount,TreeX,TreeY,TreeT) end if uo.Print('Деревьев найдено: '+str(treeCount)) wait(2000) ###################################### ### Ходим по собранным координатам ### ###################################### while 1==1 if treeCount>0 then for i=1 to treeCount end if if Trytodrop==1 and uo.Count('ZLK')>=LogsQty then DropLogs() end if uo.Print('Идем к дереву '+str(i)+': x='+str(TreeX[i])+' y='+str(TreeY[i])) InfoLogs() flag=GotoXY(TreeX[i],TreeY[i],2) if flag==1 then if TryHiding==1 then ToHide() end if GetTree(str(TreeT[i]),str(TreeX[i]),str(TreeY[i]),str(uo.GetZ())) end if next end if wend end sub
Sub GetTree(Type,X,Y,Z) var i uo.Print('Начинаем рубку дерева...') for i=0 to 15 if uo.Warmode()==1 then return 0 end if wait(200) uo.DeleteJournal() uo.WaitTargetTile(Type,X,Y,Z) uo.UseObject('Axe') if WaitForChange()==1 then return 1 end if next return 0 end sub
Sub ToHide() while not uo.Hidden() uo.Print('Пытаемся уйти в хайд...') uo.DeleteJournal() uo.UseSkill('Stealth') wait(3000) wend wait(100) end sub
Sub WaitForHide() var Text1=uo.GetName()+": You have hidden yourself well" var Text2=uo.GetName()+": You can't seem to hide here." var mess for var i=0 to 200 mess=uo.Journal(0) if uo.Journal(0)==Text1 then return 1 end if if uo.Journal(0)==Text2 then return 0 end if wait(50) next return 0 end sub
sub WaitForChange() 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." var mess for var i=0 to 200 mess=uo.Journal(0) if uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 then return 1 end if if uo.Journal(0)==Text1 then return 0 end if if mess[0]=='Y' and mess[1]=='o' and mess[2]=='u' and mess[4]=='p' and mess[5]=='u' and mess[6]=='t' then return 0 end if wait(50) next return 0 end sub
sub DropLogs() GotoXY(ContX1,ContY1,2) wait(1500) GotoXY(ContX2,ContY2,2) wait(1500) GotoXY(ContX5,ContY5,2) wait(1500) GotoXY(ContX6,ContY6,2) wait(1500) GotoXY(ContX7,ContY7,2) wait(1500) GotoXY(ContX,ContY,2) wait(1500) uo.say("Bank") if uo.Waiting() then uo.CancelTarget() end if var a,Exit dim Logs[1] Logs[0]=0x1BDD uo.Print('Выкладываем Логи.') uo.SetReceivingContainer(Chest) wait(5000) for a=0 to 0 Exit=0 repeat uo.FindType(Logs[a]) if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(5000) uo.say("Bank") wait(2000) else Exit=1 end if until Exit==1 next uo.UnSetReceivingContainer(Chest) uo.Print('Логи Выложены.') wait(1000) PutFood() GotoXY(ContX7,ContY7,2) wait(1500) GotoXY(ContX6,ContY6,2) wait(1500) GotoXY(ContX5,ContY5,2) wait(1500) GotoXY(ContX2,ContY2,2) wait(1500) GotoXY(ContX1,ContY1,2) wait(1500) end sub
sub PutFood() uo.msg ('bank') uo.SetReceivingContainer('backpack') uo.FindType('0x097B','-1',Sunduk) uo.Grab('10','finditem') wait(500) repeat uo.FindType(TypeFood) if uo.GetQuantity('finditem')>0 then uo.UseType(TypeFood) wait(1000) else EatingFood=0 wait(1000) return 1 endif until uo.InJournal("You are stuffed!") or uo.injournal("You are simply too full") if uo.Waiting() then uo.CancelTarget() endif uo.SetReceivingContainer(Sunduk) uo.FindType('0x097B','-1','backpack') if uo.GetQuantity('finditem')>0 then uo.Grab('-1','finditem') wait(1500) else return 0 endif uo.UnSetReceivingContainer(Sunduk) end sub
Sub WaitForTryRock() var Text1="That is too far away." var Text2="Try mining in rock." var Text3="There is no ore here to mine." var Text4="You have no line of sight to that location" var Text5="You can't see the target" for var i=0 to 50 if uo.Journal(0)==Text1 or uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text5 then return 1 end if wait(200) next return 0 end sub
Sub WaitForTarget() for var i=0 to 50 if uo.Targeting()==1 then return 1 end if wait(200) next return 0 end sub
Sub WaitForChangeXY(myX,myY,lastX,lastY) for var i=1 to 50 if lastX<>myX or lastY<>myY then return 1 end if wait(200) next return 0 end sub
sub ttt() walker(1165,1661,1) end sub
Sub GotoXY(GoX,GoY,Prec) UO.SetGlobal("Logging","0") UO.SetGlobal("BlindWalk","0") var LastDir var MoveRes var TracerCnt UO.SetGlobal("GlobalGoX",str(GoX)) UO.SetGlobal("GlobalGoY",str(GoY)) while not IsEnd(GoX,GoY,Prec) TracerCnt = MaxTraceDistance repeat LogInfo('Just walking') LastDir=GoUntilHit(GoX,GoY,Prec)
if IsEnd(GoX,GoY,Prec) then return 1 end if
LogInfo('Tracing') MoveRes = FullAroundTrace(LastDir,GoX,GoY,Prec,TracerCnt) if TracerCnt > LimitTrace then return 0 endif TracerCnt = TracerCnt + TraceLoopIncrease until MoveRes == 1 wend return 1 end sub Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace) var LineX=UO.GetX() var LineY=UO.GetY() var CurDir=StartDir var Direction=CountDirection(GoX,GoY,CurDir,Prec) var StartX,StartY var MovesDone=0 repeat StartX=UO.GetX() StartY=UO.GetY() CurDir=Tracer(CurDir,Direction,Prec) if (CurDir==GetDir(GoX,GoY,Prec)) then return 1 endif if MovesDone>0 and PrevMoveCross(GetDirToDir(UO.GetDir(),Prec),LineX,LineY,GoX,GoY,StartX,StartY,Prec) then return 1 end if MovesDone=MovesDone+1 CurDir=AddToDir(CurDir,-Direction,Prec) until MovesDone>MaxTrace return 0 end sub Sub CountDirection(GoX,GoY,StartDir,Prec) var GoDir=GetDir(GoX,GoY,Prec) var MyX=UO.GetX() var MyY=UO.GetY() if GoDir<StartDir then return -1 end if if GoDir>StartDir then return 1 end if if Abs(MyX-GoX)>Abs(MyY-GoY) then if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then return -1 else return 1 end if else if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then return -1 else return 1 end if end if end sub Sub PrevMoveCross(Dir,x1,y1,x2,y2,StartX,StartY,Prec) var x3,y3,x4,y4 x3=StartX y3=StartY x4=StartX+(XFromDir(Dir)-StartX)*Speed y4=StartY+(YFromDir(Dir)-StartY)*Speed return LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec) end sub Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec) if x1==x3 and y1==y3 then return false end if var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1) var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1) if z1*z2>0 then return false else LogInfo('Vector info:') LogInfo('x1= '+str(x1)) LogInfo('y1= '+str(y1)) LogInfo('x2= '+str(x2)) LogInfo('y2= '+str(y2)) LogInfo('x3= '+str(x3)) LogInfo('y3= '+str(y3)) LogInfo('x4= '+str(x4)) LogInfo('y4= '+str(y4)) return true end if end sub Sub IsDiap(X,X0,X1,Prec) if X<=X0+Prec and X>=X1-Prec OR X>=X0-Prec and X<=X1+Prec then return true end if return false end sub Sub GoUntilHit(GoX,GoY,Prec) var LastDir LastDir=GetDir(GoX,GoY,Prec) var CouldMove repeat LastDir=GetDir(GoX,GoY,Prec) if LastDir<>0 and not IsEnd(GoX,GoY,Prec) then CouldMove=TryDir(LastDir,Prec) end if until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove return LastDir end sub Sub IsEnd(GoX,GoY,Prec) if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then LogInfo('END FOUND') return true else return false end if end sub Sub GetDir(GoX,GoY,Prec) var MyX=UO.GetX() var MyY=UO.GetY() var DiffX=Abs(UO.GetX()-GoX) var DiffY=Abs(UO.GetY()-GoY) var GoDir=0 if (DiffX/(DiffY+0.1))>=2 then if (MyX>GoX) then GoDir=7 else GoDir=3 end if else if (DiffY/(DiffX+0.1))>=2 then if (MyY>GoY) then GoDir=5 else GoDir=1 end if else if (MyX>GoX) and (MyY>GoY) then GoDir=6 else if (MyX>GoX) and (MyY<GoY) then GoDir=8 else if (MyX<GoX) and (MyY>GoY) then GoDir=4 else if (MyX<GoX) and (MyY<GoY) then GoDir=2 end if end if end if end if end if end if return GoDir end sub Sub Tracer(StartDir,Direction,Prec) var CurDir=StartDir var Result repeat Result=TryDir(CurDir,Prec) if not Result then CurDir=AddToDir(CurDir,Direction,Prec) end if until Result return Result end sub Sub AddToDir(Dir,Cnt,Prec) var NewDir=Dir NewDir=NewDir+Cnt while NewDir>8 NewDir=NewDir-8 wend while NewDir<1 NewDir=NewDir+8 wend return NewDir end sub Sub TryDir(Dir,Prec) var BegX=UO.GetX() # Ia?aeuiia O var BegY=UO.GetY() # Ia?aeuiia Y var Counter=0 var GoX=BegX var GoY=BegY GoX=XFromDir(Dir) GoY=YFromDir(Dir) if not IsPass(GoX,GoY) then LogInfo(str(GoX)+':'+str(GoY)+' is not passable') return false end if return TurnAndGoDir(Dir,Prec) end sub Sub XFromDir(Dir) if Dir==2 OR Dir==3 Or Dir==4 then return (UO.GetX()+1) end if if Dir==6 OR Dir==7 Or Dir==8 then return (UO.GetX()-1) end if return (UO.GetX()) end sub Sub YFromDir(Dir) if Dir==8 OR Dir==1 Or Dir==2 then return (UO.GetY()+1) end if if Dir==4 OR Dir==5 Or Dir==6 then return (UO.GetY()-1) end if return (UO.GetY()) end sub Sub TurnAndGoDir(Dir,Prec) var StartDir=GetDirToDir(UO.GetDir(),Prec) var StartX=UO.GetX() var StartY=UO.GetY() var EndDir var Counter=0 var TestCounter=CheckCnt
#Direction Test repeat Counter = 0 LogInfo('Dir: '+str(StartDir)+' Counter: '+str(Counter)) PressDir(Dir) repeat EndDir=GetDirToDir(UO.GetDir(),Prec) wait(DynamicPause) Counter=Counter+1 until StartDir<>EndDir or StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause TestCounter = TestCounter - 1 LogInfo('Dir: '+str(EndDir)+' Counter: '+str(Counter)) until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
if Counter>=StepTimeOut/DynamicPause then LogInfo('Direction timeout reached') return 0 end if #End direction Test
if StartY<>UO.GetY() or StartX<>UO.GetX() then return Dir end if #Start Primary test TestCounter=CheckCnt repeat GoDir(Dir,Prec) Counter=0 repeat wait(DynamicPause) Counter=Counter+1 until StartY<>UO.GetY() or StartX<>UO.GetX() or Counter>=StepTimeOut/DynamicPause TestCounter = TestCounter - 1 until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause #End primary test
if Counter>=StepTimeOut/DynamicPause then LogInfo('Step timeout reached') return 0 else return Dir end if end sub Sub GetDirToDir(GotDir,Prec) var ChangedDir=-GotDir ChangedDir=AddToDir(ChangedDir,5,Prec) return ChangedDir end sub Sub DirToInj(Dir) dim Dirs[9] Dirs[1]=1 Dirs[2]=2 Dirs[3]=3 Dirs[4]=6 Dirs[5]=9 Dirs[6]=8 Dirs[7]=7 Dirs[8]=4 return (Dirs[Dir]) end sub
Sub PressDir(Dir) dim Dirs[9] Dirs[1]=35 Dirs[2]=40 Dirs[3]=34 Dirs[4]=39 Dirs[5]=33 Dirs[6]=38 Dirs[7]=36 Dirs[8]=37 UO.Press(Dirs[Dir],1) end sub
Sub GoDir(Dir,Prec) dim Dirs[9] Dirs[1]=35 Dirs[2]=40 Dirs[3]=34 Dirs[4]=39 Dirs[5]=33 Dirs[6]=38 Dirs[7]=36 Dirs[8]=37 var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX"))) var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY"))) var GoDistance if (DistanceX-Prec)<Speed then GoDistance=DistanceX-Prec else if (DistanceY-Prec)<Speed then GoDistance=DistanceY-Prec else GoDistance=Speed endif endif UO.Press(Dirs[Dir],GoDistance) end sub Sub IsPass(X,Y) if UO.GetGlobal("BlindWalk") then return true endif dim Types[60] Types[1]=3 Types[2]=25 Types[3]=51 Types[4]=63 Types[5]=113 Types[6]=140 Types[7]=172 Types[8]=219 Types[9]=232 Types[10]=235 Types[11]=239 Types[12]=243 Types[13]=248 Types[14]=251 Types[15]=264 Types[16]=267 Types[17]=282 Types[18]=289 Types[19]=321 Types[20]=379 Types[21]=420 Types[22]=440 Types[23]=476 Types[24]=499 Types[25]=513 Types[26]=542 Types[27]=578 Types[28]=586 Types[29]=622 Types[30]=700 Types[31]=804 Types[32]=1740 Types[33]=1758 Types[34]=1770 Types[35]=1779 Types[36]=1779 Types[37]=1881 Types[38]=1886 Types[39]=1801 Types[40]=1805 Types[41]=1813 Types[42]=1820 Types[43]=1831 Types[44]=1833 Types[45]=1843 Types[46]=1850 Types[47]=1873 Types[48]=1876 Types[49]=1885 Types[50]=1888 Types[51]=1946 Types[52]=1969 Types[53]=2500 Types[54]=2539 for var i=1 TO 53 STEP 2 if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then return true end if next return false end sub Sub LogInfo(Line) if not UO.GetGlobal("Logging")=="0" then UO.TextOpen() UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line); end if end sub Sub Abs(X) if X>0 then return X else return (-X) end if end sub
Sub SaveToFile(treeCount,TreeX,TreeY,TreeT) var f=file("C:\trees3.dat") var s=0,i=0 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 InfoLogs() uo.Print('У вас всего '+str(uo.Count('0x1BDD'))+' логов в сумке') uo.Print('Из них '+str(uo.Count('0x1BDD','0x0000'))+' простых и ' +str(uo.Count('0x1BDD')-uo.Count('0x1BDD','0x0000'))+' цветных') end sub
Sub Open(Container) uo.DeleteJournal() uo.UseObject(Container) repeat wait(500) until uo.InJournal('Contains') end sub
Sub Terminate() uo.Print('Все функции скрипта выключены!') uo.DeleteJournal() uo.Exec('terminate all') wait(100) uo.Exec('terminate all') wait(100) uo.Exec('terminate all') wait(100) 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') end sub sub LumberWithRessurectionLoader() repeat uo.exec( "exec Lumberjacking" ) while not uo.dead() wait( 100 ) wend funcKill( "Lumberjacking" ) Ressurect() until false endsub Sub funcKill( Lumberjacking ) var i for i = 1 to 3 uo.exec( "terminate " + Lumberjacking ) wait( 300 ) next endsub
sub Ressurect() while uo.dead() UO.Print( "Go 1" ) GotoXY(ContX1,ContY1,2) wait(500) UO.Print( "Go 2" ) GotoXY(ContX2,ContY2,2) wait(500) UO.Print( "Go 3" ) GotoXY(ContX3,ContY3,2) wait(500) UO.Print( "Go 4" ) GotoXY(ContX4,ContY4,2) wait(1500) onwar() wait(500) UO.Print( "Go 3" ) GotoXY(ContX3,ContY3,2) UO.Print( "Go 2" ) GotoXY(ContX2,ContY2,2) wait(1500) UO.Print( "Go 1" ) GotoXY(ContX1,ContY1,2) wait(1500) wend while (UO.Life<40) wait(500) wend end sub
sub onwar() if uo.warmode(1) then UO.WarMode(0) end if 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 all') ;UO.Exec('exec autoload') 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
|