Вот скрипт...Работа:
-В бэке (две руны, мешок с регами и едой, кирки), в банке мешок для руды
-Чар стоит около банка, ест , реколится по руне в шахту, медетирует, встает в хайд и копает по заданым координатам
-При достяжении определенного веса реколится к банку
-Там в банк ,в мешок(для нее), выкладывает руду, медетирует и все заного...
Во-первых скрипт настроен под шард Антарес(http://www.uoa.ru),
поэтому тебе надо попросить кого-нить его переделать под твой шард(ты почемуто не указал на каком шарде играешь )
Во-вторых надо указать координаты точек где будет копать...
В-третих попроси чтобы его переделали под дом(т.е чтобы выкладывал руду в сундук...ИД сундука вроде просто поставить вместо ИД банка и убрать UO.SAY('BANK')... точно не уверен...
Его автор :
Beyonder
Code: var Prec=0 var Speed=1 var MaxTracing=100
var PackForOre='0x40344473' var PackForRegs='0x4003B122' var RegCount=10 var MaxWeight=620 var FoodType='0x097B'
sub miner() var PointCnt=47 dim PointsX[47] dim PointsY[47] var iPoint var iGo PointsX[0]=1809 PointsY[0]=1051 PointsX[1]=1812 PointsY[1]=1054 PointsX[2]=1812 PointsY[2]=1056 PointsX[3]=1811 PointsY[3]=1056 PointsX[4]=1809 PointsY[4]=1054 PointsX[5]=1809 PointsY[5]=1058 PointsX[6]=1806 PointsY[6]=1057 PointsX[7]=1804 PointsY[7]=1058 PointsX[8]=1801 PointsY[8]=1061 PointsX[9]=1800 PointsY[9]=1062 PointsX[10]=1798 PointsY[10]=1061 PointsX[11]=1799 PointsY[11]=1060 PointsX[12]=1801 PointsY[12]=1058 PointsX[13]=1803 PointsY[13]=1056 PointsX[14]=1800 PointsY[14]=1056 PointsX[15]=1798 PointsY[15]=1054 PointsX[16]=1800 PointsY[16]=1052 PointsX[17]=1798 PointsY[17]=1050 PointsX[18]=1800 PointsY[18]=1048 PointsX[19]=1802 PointsY[19]=1050 PointsX[20]=1804 PointsY[20]=1052 PointsX[21]=1804 PointsY[21]=1050 PointsX[22]=1802 PointsY[22]=1047 PointsX[23]=1803 PointsY[23]=1046 PointsX[24]=1803 PointsY[24]=1043 PointsX[25]=1803 PointsY[25]=1040 PointsX[26]=1803 PointsY[26]=1038 PointsX[27]=1801 PointsY[27]=1036 PointsX[28]=1798 PointsY[28]=1033 PointsX[29]=1801 PointsY[29]=1032 PointsX[30]=1801 PointsY[30]=1029 PointsX[31]=1803 PointsY[31]=1028 PointsX[32]=1805 PointsY[32]=1026 PointsX[33]=1807 PointsY[33]=1028 PointsX[34]=1809 PointsY[34]=1028 PointsX[35]=1811 PointsY[35]=1026 PointsX[36]=1813 PointsY[36]=1028 PointsX[37]=1811 PointsY[37]=1030 PointsX[38]=1808 PointsY[38]=1033 PointsX[39]=1808 PointsY[39]=1035 PointsX[40]=1810 PointsY[40]=1037 PointsX[41]=1807 PointsY[41]=1040 PointsX[42]=1807 PointsY[42]=1042 PointsX[43]=1808 PointsY[43]=1044 PointsX[44]=1807 PointsY[44]=1046 PointsX[45]=1806 PointsY[45]=1049 PointsX[46]=1807 PointsY[46]=1050 UO.AddType('miner tool') wait(500) while UO.Targeting() wait(100) wend UO.AddObject('BankRune') wait(500) while UO.Targeting() wait(100) wend UO.AddObject('MineRune') wait(500) while UO.Targeting() wait(100) wend
UnloadToBank() CheckLag() GotoRune('MineRune')
while 1 for iPoint=0 to PointCnt-1 GoUntilHit(PointsX[iPoint],PointsY[iPoint]) MineAround() if UO.Weight>MaxWeight then FullDrop() for iGo=0 to iPoint GoUntilHit(PointsX[iGo],PointsY[iGo]) next end if next wend end sub
Sub MineAround() var ix,iy for ix=-2 to 2 for iy=-2 to 2 Hide() if UO.Weight<MaxWeight then MinePoint(UO.GetX()+ix,UO.GetY()+iy,UO.GetZ()) end if next next end sub
Sub MinePoint(X,Y,Z) var Text1="That is too far away." var Text2="Try mining elsewhere." var Text3="There is nothing here to mine for." var Text40="You have no line of sight to that location" var Text41="You can't use the %s where it is" var Text5="You can't see the target" var Text6="Targeting Cancelled" var Text7="You put" var Text8="You loosen some rocks but fail to find any useable ore" UO.DeleteJournal() while not UO.InJournal(Text1+'|'+Text2+'|'+Text3+'|'+Text40+'|'+Text41+'|'+Text5) if UO.WarMode()==1 then wait(20000) UO.WarMode(0) end if UO.WaitTargetTile("0",str(X),str(Y),str(Z)) UO.UseType('miner tool') UO.DeleteJournal() while not UO.InJournal(Text1+'|'+Text2+'|'+Text3+'|'+Text40+'|'+Text41+'|'+Text5+'|'+Text6+'|'+Text7+'|'+Text8) wait(100) wend wend end sub
Sub Hide() while not UO.Hidden() and not UO.WarMode() UO.UseSkill('Hiding') DeleteJournal('stop trying to hide') DeleteJournal('hidden yourself well') DeleteJournal('seem to hide') DeleteJournal('must wait') DeleteJournal('canceled') DeleteJournal('battle') WaitJournal('hidden yourself well|seem to hide|must wait|battle|stop trying to hide') wend end sub
sub WaitJournal(Line) while not UO.InJournal(Line) wait(100) wend end sub
Sub DeleteJournal(MsgText) Var MsgNumb Repeat MsgNumb=UO.InJournal(MsgText) If MsgNumb<>0 Then UO.SetJournalLine(MsgNumb-1, '') EndIf Until Not UO.InJournal(MsgText) endsub
Sub FullDrop() GotoRune('BankRune') UnloadToBank() CheckLag() GotoRune('MineRune') end sub
Sub UnloadToBank() DeleteJournal('Contains') while not UO.InJournal('Contains') wait(1000) UO.Msg('bank') CheckLag() wend DropOres() GetRegs() end sub
Sub GetRegs() UO.UseObject(PackForRegs) CheckLag() if UO.Count('0x0F7A')<RegCount then UO.FindType('0x0F7A','-1',PackForRegs) UO.Grab(RegCount-UO.Count('0x0F7A'),'finditem') wait(500) end if if UO.Count('0x0F7B')<RegCount then UO.FindType('0x0F7B','-1',PackForRegs) UO.Grab(RegCount-UO.Count('0x0F7B'),'finditem') wait(500) end if if UO.Count('0x0F86')<RegCount then UO.FindType('0x0F86','-1',PackForRegs) UO.Grab(RegCount-UO.Count('0x0F86'),'finditem') Wait(500) end if DeleteJournal('too full') while not UO.InJournal('too full') UO.FindType(FoodType,'-1',PackForRegs) UO.Grab(1,'finditem') Wait(500) UO.UseType(FoodType) wend wait(1000) UO.FindType(FoodType,'-1','backpack') UO.MoveItem('finditem','0',PackForRegs) wait(500) end sub
Sub DropOres() if uo.Waiting() then uo.CancelTarget() end if var a, Exit var UnloadChest=PackForOre ## - ID сундука для сброса руды. DIM Ore[5] Ore[0]=0x19B9 ## - 4 and more ore Ore[1]=0x19B7 ## - 1 ore Ore[2]=0x19BA ## - 2 ore Ore[3]=0x19B8 ## - 3 ore uo.SetReceivingContainer(UnloadChest) wait(500) for a=0 to 3 exit=0 repeat uo.FindType(Ore[a]) if uo.GetQuantity('finditem')>0 then uo.Grab('0','finditem') wait(1500) else exit=1 end if until Exit==1 next uo.UnSetReceivingContainer() end sub
Sub CheckLag() var TimeOut=0 DeleteJournal('Backpack') while TimeOut==10 TimeOut=0 UO.Click('backpack') while not UO.InJournal('Backpack') and TimeOut<10 wait(100) TimeOut=TimeOut+1 wend wend end sub
Sub GotoRune(ID) var ManaUsed=0; while ManaUsed==0 and UO.Count('0x0F7A') and UO.Count('0x0F7B') and UO.Count('0x0F86') if UO.Mana>=40 then UO.Cast('Recall',ID) wait(2000) ManaUsed=WaitRecall() wait(2000) else while UO.Mana<UO.Int UO.UseSkill('Meditation') wait(2000) wend end if wend wait(500) while UO.Mana<UO.Int UO.UseSkill('Meditation') wait(2000) wend end sub
Sub WaitRecall() var SMana=UO.Mana var TimeOut=150 var StartX=UO.GetX() var StartY=UO.GetY() DeleteJournal("can't see") DeleteJournal("must wait") DeleteJournal("fizzles") while TimeOut>0 and not UO.InJournal("can't see|must wait|fizzles") and StartX==UO.GetX() and StartY==UO.GetY() wait(100) TimeOut=TimeOut-1 wend wait(300) if StartX==UO.GetX() and StartY==UO.GetY() then return 0 end if return 1 end sub
Sub GoUntilHit(X,Y) var LastDir var StepCount LastDir=GetDir(X,Y) repeat LastDir=GetDir(X,Y) if LastDir<>0 and not IsEnd(X,Y) and not X==0 and not Y==0 then TryDir(LastDir) end if until LastDir==0 or IsEnd(X,Y) or X==0 or Y==0 return LastDir return 0 end sub
Sub IsEnd(GoX,GoY) if Abs(UO.GetX()-GoX)<=Prec and Abs(UO.GetY()-GoY)<=Prec then return true else return false end if end sub
Sub GetDir(GoX,GoY) 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 TryDir(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],Speed) end sub
Sub XFromDir(Dir,StartX) if Dir==2 OR Dir==3 Or Dir==4 then return (StartX+1) end if if Dir==6 OR Dir==7 Or Dir==8 then return (StartX-1) end if return (StartX) end sub
Sub YFromDir(Dir,StartY) if Dir==8 OR Dir==1 Or Dir==2 then return (StartY+1) end if if Dir==4 OR Dir==5 Or Dir==6 then return (StartY-1) end if return (StartY) end sub
Sub Abs(X) if X>0 then return X else return (-X) end if end sub
|