Code: ############################################################### #===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# # Single char mining for OLDP Mine. OLDP Shard www.oldp.net # # Scripted by NMY (c) 2006-07 # # Перевёл на русский - Печа :) # #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# # To start script use ",exec main" command from client window # ###############################################################
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;==================== Main mining script ====================== ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
############################################################### # Чтобы настроить этот скрипт вам придёться прочитать все # # строки на русском языке. И тогда можно спать... # ###############################################################
sub main() VAR DigDistance, TileNum, LastTimer DIM BaseX[5], BaseY[5] ## Считывающиеся точки с координат, ( сколько их у вас )? VAR BaseZ, WayPoint, WayPoints VAR MaxWeight, elem
elem='Yes' MaxWeight=740 DigDistance=2 WayPoints=6 ## Считывающиеся точки с координат, ( сколько их у вас )?
## Скрипты. точка с запятой обозначает что выключин, если уберёте то скрипт будет рабюотать.
;uo.exec('exec Reconnector') ## Скрипт на реконект на сервер. ;uo.exec('exec Alert') ;uo.exec('exec closer') uo.exec('msg Хочу Фулл Cargo!!!')
## Тут пишем координаты точек там где будем встовать и начинать копать, пример полной координаты: 1111,2222 , пример раздельной: BaseX[0]=1111 , BaseY[0]=2222. Если вам этих точек много или мало то можите сами дописать далее( скрипт нечитает пятую точку так что перескакивая сразу на шесть).
## Координаты №1 BaseX[0]=1116 BaseY[0]=2661 BaseZ=0
## Координаты №2 BaseX[1]=1116 BaseY[1]=2657
## Координаты №3 BaseX[2]=1119 BaseY[2]=2653
## Координаты №4 BaseX[3]=1113 BaseY[3]=2653
## Координаты №5 BaseX[4]=1112 BaseY[4]=2657
## Координаты №6 #BaseX[5]=1112 #BaseY[5]=2657
CheckLag() UO.UseObject('Sunduk') LastTimer=UO.Timer() Repeat wait(500) Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100 If UO.InJournal('see the') Then UO.Say("Подойдите к сундуку и навидите прицелом!") UO.AddObject('Sunduk') While UO.Targeting()==2 wait(500) Wend UO.SaveConfig() UO.UseObject('Sunduk') Else UO.Say("Атлична! Типерь нада кападь, поцан!.") end if uo.deletejournal() While NOT UO.Dead() For WayPoint=0 to WayPoints-1 WalkMe(BaseX[WayPoint],BaseY[WayPoint],'') digitstay(MaxWeight,DigDistance,elem,BaseX[WayPoint],BaseY[WayPoint]) Next wend end sub
;-------------------- Try to mine under self ------------------
sub digitstay(MaxWeight,MaxDistance,elem,BaseX,BaseY) VAR x,y,z='0',TileNum='1339' VAR Last=0, LastTimer VAR MaxTimer=110
For x=-MaxDistance to MaxDistance For y=-MaxDistance to MaxDistance Repeat CheckLag() Del('There is nothing|elsewhere|location|You cannot|Region|Elemental|attacking you|You stop')
dig: UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) UO.UseType('0x0E85')
LastTimer=UO.Timer()
Repeat wait(500) until UO.InJournal('There is nothing|elsewhere|location|You cannot|Region|Elemental|attacking you|You stop') OR LastTimer+250<UO.Timer() OR uo.life < uo.str
If UO.InJournal('Elemental|attacking you') or uo.life < uo.str then If elem=='Yes' Then elem() Endif Endif
If UO.InJournal('you stop') then UO.UseType('0x0E85') GoTo dig Endif
If UO.Weight>=MaxWeight then unloadore() Endif Until UO.InJournal('There is nothing|location|Region|You cannot|elsewhere') OR LastTimer+250<UO.Timer() Next Next end sub
;------------------------- Unload ore ------------------------- sub unloadore() VAR Sunduk, TempX, TempY, n VAR SundukX=1115 ## С какой точки будет открывать сундук и складывать руду. VAR SundukY=2675 ## С какой точки будет открывать сундук и складывать руду.
TempX=UO.GetX() TempY=UO.GetY()
Dim UnLoad[18] ## То что будет складывать в сундук( если нужно дополнить или удалить, меняем следующие координаты: UnLoad[1] = '0x0000' сюда пишем Type, Dim UnLoad[1] указываем сколько всего итомов в вашем скрипте). UnLoad[1] = '0x19B9' ## Руда 4 шт. UnLoad[2] = '0x19B8' ## Руда 3 шт. UnLoad[3] = '0x19BA' ## Руда 2 шт. UnLoad[4] = '0x19B7' ## Руда 1 шт. UnLoad[5] = '0x0EED' ## Деньги. UnLoad[6] = '0x09AA' ## Пандор. UnLoad[7] = '0x1088' ## Амуль. UnLoad[8] = '0x1087' ## Серёжки. UnLoad[9] = '0x1086' ## Браслет. UnLoad[10]= '0x108A' ## Колечко. UnLoad[11]= '0x1830' ## Бутылка ласер кур. UnLoad[12]= '0x1831' ## Бутылка ласер пойзона. UnLoad[13]= '0x182F' ## Бутылка ласер рефреш. UnLoad[14]= '0x182E' ## Бутылка ласер хёл. UnLoad[15]= '0x1515' ## Плащик. UnLoad[16]= '0x1F03' ## Роба. UnLoad[17]= '0x1541' ## Ленточка. UnLoad[18]= '0x1549' ## Маска. WalkMe(1115,2664,'')## Координаты выхода из шахты (перед выходом из шахты чтобы не путался). WalkMe(1116,2663,'')## Координаты входа в шахту (перед входом в шахту чтобы не путался). WalkMe(SundukX,SundukY,'')
UO.UseObject('Sunduk') CheckLag()
For n = 1 to 18 ##Вытаскивает из вашего портфеля 18 итемов. UO.FindType( UnLoad[n] , -1 ,'backpack') while UO.GetQuantity('finditem') > 0 UO.moveitem('finditem','0','Sunduk') CheckLag() UO.FindType( UnLoad[n] , -1 ,'backpack') wend next
UO.FindType('0x0E85', -1 ,'backpack') If UO.FindCount() == 0 then UO.FindType('0x0E86', -1 ,'Sunduk') UO.MoveItem('finditem') Endif
WalkMe(1115,2664,'') ## Идём от сундука ( вход в шахту ). WalkMe(1116,2663,'') WalkMe(1115,2659,'') ## До средней точки. WalkMe(TempX,TempY,'') end sub -----------------------------------------------------------=:D sub opendoor() UO.DeleteJournal() UO.Set('finddistance','2') UO.FindType('0x0870', -1 ,'ground') If UO.FindCount() then open: UO.UseObject('finditem') CheckLag() wait(200) If UO.InJournal('you must wait') then wait(9000) Goto open Endif Endif end sub
;----------- :D -----------
sub loot() VAR n Dim Load[18] ## Всё то что будет лутать с элемов (если нужно дополнить или удалить, меняем следующие координаты: Load[1] = '0x0000' сюда пишем Type, Dim Load[1] указываем сколько всего итомов в вашем скрипте). Load[1] = '0x19B9' ## Руда 4 шт. Load[2] = '0x19B8' ## Руда 3 шт. Load[3] = '0x19BA' ## Руда 2 шт. Load[4] = '0x19B7' ## Руда 1 шт. Load[5] = '0x0EED' ## Деньги. Load[6] = '0x09AA' ## Пандор. Load[7] = '0x1088' ## Амуль. Load[8] = '0x1087' ## Серёжки. Load[9] = '0x1086' ## Браслет. Load[10]= '0x108A' ## Колечко. Load[11]= '0x1830' ## Бутылка ласер кур. Load[12]= '0x1831' ## Бутылка ласер пойзона. Load[13]= '0x182F' ## Бутылка ласер рефреш. Load[14]= '0x182E' ## Бутылка ласер хёл. Load[15]= '0x1515' ## Плащик. Load[16]= '0x1F03' ## Роба. Load[17]= '0x1541' ## Ленточка. Load[18]= '0x1549' ## Маска.
wait(500) if (uo.getserial('backpack') <> uo.getserial('lastcontainer')) then For n = 1 to 18 ## Вытаскивает из трупа от 1 до 18 итомов. UO.FindType( Load[n] , -1 ,'lastcontainer') while UO.GetQuantity('finditem') > 0 UO.moveitem('finditem','0','backpack') CheckLag() Wait(900) UO.FindType( Load[n] , -1 ,'lastcorpse') wend next end if end sub ------------------------------------------------------------------------------------- sub Reconnector() while True while UO.IsOnline() AND NOT UO.Dead() wait(1000) wend UO.TextOpen() UO.TextPrint('Disconnected at '+MakeTime()) UO.Exec('terminate all') connect: wait(3000) UO.LDblClick(616,455) wait(3000) UO.LDblClick(616,455) wait(3000) UO.LDblClick(616,455) wait(3000) UO.LDblClick(357,164) if UO.IsOnline() then UO.Exec('exec main') UO.TextOpen() UO.TextPrint('Reconnected at '+MakeTime()) else goto connect endif wend endsub ------------------------------------------------------------------------------- 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 GetXY(str,arnum) arnum[0]=val(mid(str, 7, 3)) arnum[1]=val(mid(str, 10, 3)) end sub
Sub decode() var temp='',i=0 var pos=0 var line=5 var sX=0, sY=0 var code='' var finding = 1 var CurrX=0 var CurrY=0 var NumSum dim tempXY[2] dim Num[9] Num[0]=6 Num[1]=35 Num[2]=45 Num[3]=-24 Num[4]=34 Num[5]=-5 Num[6]=26 Num[7]=4 Num[8]=-6 Repeat temp=uo.LastGump('command',line) GetXY(temp, tempXY) if pos >= 17 then if pos == 17 then NumSum=(CurrX-sX)*10+(CurrY-sY) finding = 1 i=0 while finding if NumSum == num[i] then code=code+str(i+1) finding = 0 end if i=i+1 wend end if if tempXY[0]-CurrX > 5 then pos=0 end if end if if not pos then sX=tempXY[0] sY=tempXY[1] pos=15 line=line+15 end if CurrX=tempXY[0] CurrY=tempXY[1] pos=pos+1 line=line+1 Until len(code) == 4 return code end sub
sub Alert() VAR a UO.TextClear() UO.DeleteJournal() while true and not uo.dead() If UO.InJournal('Elemental|Your total damage|You see') then Del('Elemental|Your total damage|You see') end if If UO.JournalSerial()<>'0x00000000' && UO.JournalSerial()<>'0xFFFFFFFF' && UO.JournalSerial()<>'0x4013129C' && UO.JournalSerial()<>'0x001312A8' && UO.JournalSerial()=='0x000101C7' then For a = 1 to 5 UO.PlayWAV('D:\inject\alert2.wav') wait(250) next uo.textopen() uo.textprint(uo.journalserial()) end if wait(200) wend end sub
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; W A L K E R ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
################# W A L K E R ######################
sub WalkME(x,y,Target) 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 If Target<>"" Then dx=UO.GetX(Target)-UO.GetX() dy=UO.GetY(Target)-UO.GetY() ; UO.Print("Target locked!") If UO.GetDistance(Target)<2 Then return Endif Else dx=x-UO.GetX() dy=y-UO.GetY() If dx==0 AND dy==0 Then Exit=1 Endif
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 end sub
sub StepEdit(x,y,dir,key) VAR walkwait=300 VAR ErrLevel=0 If UO.GetDir()<>dir Then checkstam() UO.Press(key) wait(walkwait) If UO.GetDir()<>dir Then CheckLag() Endif Endif checkstam() 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 checkstam() 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 checkstam() 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
sub checkstam() var refresh = '0x0F0B' if uo.stamina < 10 then uo.findtype(refresh,-1,'backpack') if uo.findcount() then uo.usetype(refresh) wait(1000) else uo.print("Nety Refreshey! Stoim...") repeat wait(500) until uo.stamina >= 10 endif else endif endsub
Sub CHECKLAG() del('backpack') uo.click('backpack') repeat wait(200) until uo.injournal('backpack') del('backpack') endsub
Sub DEL(msg) while uo.injournal(msg) uo.setJournalLine(uo.injournal(msg)-1,"Is Empty!") wend endsub
sub closer() VAR t For t=0 to 540 wait(60000) next uo.closeuo() end sub
sub elem() VAR elem, tmpX, tmpY if uo.injournal('Elemental') then tmpX=uo.GetX() tmpY=uo.GetY() elem = uo.journalserial(uo.injournal('Elemental')-1) uo.deletejournal() repeat uo.msg(".arm") uo.attack( elem ) Walkme(0,0,elem) wait(1000) until not uo.InJournal('body') uo.DeleteJournal() walkme(tmpX,tmpY,'') end if end sub
В самом низу скрипта приведён эдакий скрипт elem на уничтожение Элементалов но он работает плохо помагите .В нынешнем виде скрипт (elem +TWI ON) получает от бота кренделей штук 3 так в нагло в притык, потом доходит до моего чара что его бьют нацеливаеться на врага(элементала) кое как подбегает(он элементал в это время отбегает типа кастует на меня всякую херь) делает 1 удар сматываеться берёт кирку и как небывало под Фламе страйк капает после тички снова встанет на секунд 30 подумает возмёт пушку но не долетая до Элементала (видимо затея не понравилась) бежит обратно капать так вот товарищи можете мне помочь в этой не завидной проблемме... пожалуйста ...
|