Code: Select all
###############################################################
#===---====----===---===---= 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 подумает возмёт пушку но не долетая до Элементала (видимо затея не понравилась) бежит обратно капать так вот товарищи можете мне помочь в этой не завидной проблемме... пожалуйста ...
