Скрипт Question`a: килл, капание, дроп, еда, подбор...
Code: Select all
### # # ### # ## #### #####
# ## # # # # # # # #
# # # ### # # # # # #
### # # # ## # # # #
# v 1.00
# www.drw.ru
########################################################
# скрипт на мининг
########################################################
# добавил описание: GimFlex
# авторы: (не известны)
########################################################
# скрипт чуть отредактирован мной, но авторы идеи и
# основных процедур мне не известны.
########################################################
# Описание:
#
# Чар ходит в випке или вдоль скалы по заданным
# координатам, добывает руду, потом подходит к сейфу,
# скидывает туда всю руду, драгоценные камни и золото
# (если есть), затем кушает и возвращается в исходную
# точку(цикличность).
#
# Скрипт подразумевает, что у вас випка или огороженная
# домами часть горы, поэтому нет проверки на пк.
#
# Если выкапывается елементал то скрипт встает на паузу
# и чтобы его запустить надо сказать GO. Килл элемов
# 100% пока не добавлен.
########################################################
# Как работает скрипт:
#
# Перед тем как начать, убедитесь, что у вас объявлены
# все переменные(ниже), в руках у чара есть кирка
# (желательно превосходного качества чтоб не ломалась),
# в сейфе лежит побольше еды(однотипной).
#
# Дальше идете в начальную точку. ОНА ВСЕГДА ОДНА И
# МЕНЯТЬ ЕЕ НЕЛЬЗЯ!!! Запускаете процедуру main и
# идете учить уроки или спать =)
#######################################################
# Описание процедур и настройка:
#
# В скрипте несколько процедур которые надо настроить;
# ничего сложного в этом нету, просто внимателнее
# читайте дальнейшее описание.
#
# Точнее настроить надо всего 3 процедуры:
######
# 1 - sub go(x,y,k,m)
######
# x - координата х куда идем
# y - координата y куда идем
# k - если 1 ,то капаем когда придем в (x,y), если 0,
# то просто придем в координаты (x,y).
# m - номер клавиши, нажимая на которую чар идет
# в направлении:
# Home - 36 - северо-запад
# End - 35 - ю-з
# PgUp - 33 - с-в
# PgDn - 34 - ю-в
# Этих клавиш хватим вам чтобы добраться до любых
# координат(x,y)
# Чтобы лучше разобраться в этом приведем пример:
# чар ходит по квадрату со стороной 3 клетки и
# копает в углах квадрата если k=1 или просто
# ходит по квадрату если к=0
# while Not UO.Dead()
# go(3920,449,33,0)
# go(3917,449,36,0)
# go(3917,452,35,0)
# go(3920,452,34,0)
# wend
# Если к=1 то он будет копать в углах квадрата,
# причем капает он по одной клетке!!! вокруг себя
######
# 2 - sub FollowMine()
######
# Данная процедура отвечает за хождение по координатам
# в випке или вдоль скалы, причем конец всего пути
# должен совпасть с положением сейфа, тоесть рядом должен
# стоять сейф чтобы чар до него дотянулся и выложил оры
######
# 3 - sub GoBeg()
######
# Данная процедура отвечает за возвращение чара в
# исходную точку, тоесть после того как вы выложили
# все оры и покушали он от того места, где закончилась
# процедура sub FollowMine(), пойдет в исходную точку
# откуда вы начали копать
########################################################
# Итого:
########################################################
# Чтобы все заработало, объявите все переменные и
# составьте весь маршрут пути, заполнив процедуры
# GoBeg и FollowMine
########################################################
# Советы:
#
# Вбивайте координаты через одну клетку, а не подряд все
# т.к. чар итак копает вокруг себя на одну клетку
#
# Если копаете в випке, то поставьте область копания
# побольше в процедуре Dig()
########################################################
#ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ:
########################################################
var tShovel='0x0E85' #Тип кирки или лопаты (кирка)
########################################################
var tSeif='0x401AC056' #Йд сейфа где лежат оры и хавчик
########################################################
var tEat='0x097B' #Тип еды (фишстейки)
########################################################
sub go(x,y,k,m)
while UO.GetX()<>x or UO.GetY()<>y
UO.Press(k)
CheckLag()
wend
if m==1 then
Dig()
end if
end sub
sub main()
Uo.Print("Привет О Великий Кирка!!!")
while Not UO.Dead()
FollowMine()
UnLoad()
ToEat()
GoBeg()
wend
end sub
sub FollowMine()
dig()
go(2251,434,33,0)
go(2250,434,36,0)
go(2250,432,33,0)
go(2251,432,34,1)
go(2251,431,33,0)
go(2251,430,33,1)
go(2251,429,33,0)
go(2251,428,33,0)
go(2251,427,33,0)
go(2252,427,34,1)
go(2252,426,33,0)
go(2252,425,33,0)
go(2253,425,34,1)
go(2253,424,33,0)
go(2253,423,33,0)
go(2254,423,34,1)
go(2254,422,33,0)
go(2254,421,33,1)
go(2254,421,33,0)
go(2254,419,33,1)
go(2254,418,33,0)
go(2254,417,33,0)
go(2254,416,33,0)
go(2255,416,34,1)
go(2255,415,33,0)
go(2255,414,33,1)
go(2255,413,33,0)
go(2255,412,33,1)
go(2255,411,33,0)
go(2255,410,33,0)
go(2255,409,33,1)
go(2254,409,36,0)
go(2254,408,33,0)
go(2254,407,33,1)
go(2254,406,33,0)
go(2254,405,33,1)
go(2254,404,33,0)
go(2254,403,33,1)
go(2253,403,36,0)
go(2253,402,33,0)
go(2253,401,33,1)
go(2253,400,33,0)
go(2252,400,36,0)
go(2252,399,33,1)
go(2252,398,33,0)
go(2253,398,34,0)
go(2254,398,34,1)
go(2253,398,36,0)
go(2252,398,36,0)
go(2252,397,33,0)
go(2252,396,33,0)
go(2252,395,33,1)
go(2251,395,36,0)
go(2250,395,36,0)
go(2250,394,33,1)
end sub
sub GoBeg()
go(2250,395,35,0)
go(2251,395,34,0)
go(2252,395,34,0)
go(2252,396,35,0)
go(2252,397,35,0)
go(2252,398,35,0)
go(2252,399,35,0)
go(2252,400,35,0)
go(2252,401,35,0)
go(2252,402,35,0)
go(2252,403,35,0)
go(2252,404,35,0)
go(2252,405,35,0)
go(2252,406,35,0)
go(2252,407,35,0)
go(2252,408,35,0)
go(2252,409,35,0)
go(2252,410,35,0)
go(2252,411,35,0)
go(2253,411,34,0)
go(2254,411,34,0)
go(2254,412,35,0)
go(2254,413,35,0)
go(2254,414,35,0)
go(2254,415,35,0)
go(2254,416,35,0)
go(2254,417,35,0)
go(2254,418,35,0)
go(2254,419,35,0)
go(2254,420,35,0)
go(2254,421,35,0)
go(2253,421,36,0)
go(2252,421,36,0)
go(2251,421,36,0)
go(2250,421,36,0)
go(2250,422,35,0)
go(2250,423,35,0)
go(2250,424,35,0)
go(2250,425,35,0)
go(2250,426,35,0)
go(2250,427,35,0)
go(2250,428,35,0)
go(2250,429,35,0)
go(2250,430,35,0)
go(2250,431,35,0)
go(2250,432,35,0)
go(2250,433,35,0)
go(2250,434,35,0)
go(2251,434,34,0)
end sub
sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(50)
until UO.InJournal('backpack')
end sub
sub tohide()
while NOT UO.Hidden()
UO.DeleteJournal()
UO.Warmode('0')
UO.UseSkill('Hiding')
repeat
wait(50)
until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied') or UO.Dead()
wend
end sub
sub UnLoad()
var i
DIM Item[13]
######################################
#Типы оров, драгоценных камней, золота
######################################
Item[1]=0x19B9 ; >3 ore
Item[2]=0x19B7 ; 1 ore
Item[3]=0x19BA ; 2 ore
Item[4]=0x19B8 ; 3 ore
Item[5]=0x0F11 ; saphires
Item[6]=0x0F16 ; amethysts
Item[7]=0x0F18 ; tourmalines
Item[8]=0x0F15 ; citrines
Item[9]=0x0F10 ; emeralds
Item[10]=0x0F0F ; star sapphires
Item[11]=0x0F26 ; diamonds
Item[12]=0x0EED ; gold
######################################
for i = 1 to 12
UO.FindType(Item[i], '-1', 'backpack')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',tSeif)
Wait(1000)
CheckLag()
UO.FindType(Item[i],'-1','backpack')
wend
next
end sub
sub ToEat()
UO.UseObject(tSeif)
UO.FindType(tEat,'0x0000',tSeif)
if UO.FindCount() > 0 then
UO.MoveItem('finditem','20','backpack')
else
return
end if
repeat
CheckLag()
uo.UseType(tEat)
while not uo.InJournal("can't") and 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
until uo.InJournal('too full') or UO.Dead()
UO.FindType(tEat, '0x0000','backpack')
if UO.FindCount() > 0 then
UO.MoveItem('finditem','20',tSeif)
end if
end sub
sub Dig()
var xelem,yelem
var mx = UO.GetX("self"), my = UO.GetY("self"), mz = UO.GetZ("self"),TileNum='1339', t=0
var i,j
if UO.Dead() then
UO.CloseUO()
end if
for i = mx-1 to mx+1
for j = my-1 to my+1
tohide()
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock")
tohide()
CheckLag()
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Exec("usetype " + tShovel)
while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("OOPS") and not UO.InJournal("attacking you")
wait(500)
wend
if UO.InJournal('something with ore') OR UO.InJournal("attacking you") then
t=1
end if
if UO.InJournal("but fail") then
wait(1000)
end if
wend
UO.DeleteJournal()
next
next
if t == 1 then
xelem=UO.GetX("self")
yelem=UO.GetY("self")
wait(100)
killelem()
wait(10000)
walkn(xelem,yelem,"")
wait(10000)
UO.Cast('Dispel','self')
wait(5000)
UO.Cast('Dispel','self')
wait(5000)
end if
return 1
end sub
sub Pause()
UO.DeleteJournal()
REPEAT
WAIT(3000)
UO.Print("!!!Skript na payze!!!!")
UNTIL UO.InJournal('GO')
UO.Print("!!!Skript prodolgen!!!!")
end sub
sub killelem()
VAR Count, LastTimer, Elem
UO.UseType('0x0F0E','0x0631') ; inviz potion
While UO.STR<201 ; U'r not morfed char max Strength + 1
If UO.Mana>=50 then
UO.WaitMenu('What','Daemon')
UO.Cast('Polymorph')
wait(8000)
else
UO.UseType('0x0F0E','0x09DF') ; total mana potion
wait(3000)
endif
Wend
LastTimer=UO.Timer()
repeat
UO.BandageSelf()
wait(4000)
until UO.Life==UO.STR OR LastTimer+300<UO.Timer()
UO.UseType(0x1B76) ; heater shield
UO.UseType(0x1413) ; platemail gorget
UO.DeleteJournal()
UO.Exec('warmode 1')
UO.FindType('0x0010',-1,'ground')
Elem=UO.GetSerial('finditem')
UO.Attack(Elem)
repeat
wait(1000)
If UO.Life<100 Then
UO.UseType('0x0F0E','0x09BB') ;GH
Endif
If UO.GetDistance(Elem)>1 Then
walkn(0,0,Elem)
Endif
If UO.Life<100 Then
UO.UseType('0x0F0E','0x0631') ; inviz potion
wait(1000)
repeat
UO.BandageSelf()
wait(4000)
until UO.Life==UO.STR
UO.UseType(0x1B76) ; heater shield
wait(1000)
uo.sayu("Я вернулся!!!")
Endif
until UO.IsNPC(Elem)==0
wait(3000)
grabelem()
UO.FindType('0x0010',-1,'ground')
If UO.GetQuantity('finditem')>0 Then
KillElem()
grabelem()
Endif
UO.Exec('warmode 0')
wait(1000)
UO.Print("Sdoh skotina!")
LastTimer=UO.Timer()
if UO.Life<200 then ; U'r max HP
repeat
UO.BandageSelf()
wait(4000)
until UO.Life>200 OR LastTimer+300<UO.Timer()
endif
UO.DeleteJournal()
end sub
;---------------- ходилка -----------------------
sub GoW()
VAR walkwait=300
VAR x,y,dir=6
VAR key=36 ; Home key
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetX()+1==x Then
return -1
Else
return 1
Endif
end sub
sub GoN()
VAR walkwait=300
VAR x,y,dir=0
VAR key=33 ; PgUp
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetY()+1==y Then
return -1
Else
return 1
Endif
end sub
sub GoE()
VAR walkwait=300
VAR x,y,dir=2
VAR key=34 ; PgDown
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetX()-1==x Then
return -1
Else
return 1
Endif
end sub
sub GoS()
VAR walkwait=300
VAR x,y,dir=4
VAR key=35 ; End
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetY()-1==y Then
return -1
Else
return 1
Endif
end sub
sub GoWN()
VAR walkwait=300
VAR x,y,dir=7
VAR key=38 ; UpArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoNE()
VAR walkwait=300
VAR x,y,dir=1
VAR key=39 ; RightArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoSE()
VAR walkwait=300
VAR x,y,dir=3
VAR key=40 ; DownArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoSW()
VAR walkwait=300
VAR x,y,dir=5
VAR key=37 ; LeftArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
#==============================================================
# WalkN(X,Y,Serial) - char is walking by dX and dY step
# sub using Home, End, PgUp, PgDown keys
# d'not rebind this key from default action!
# walkwait - delay after keypress
#--------------------------------------------------------------
sub WalkN(x,y,Target)
VAR i
VAR dx,dy,Exit=0
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
Exit=1
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()
Endif
If dx>0 AND dy<0 Then
GoNE()
Endif
If dx<0 AND dy>0 Then
GoSW()
Endif
If dx<0 AND dy<0 Then
GoWN()
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then
GoE()
Endif
If dx<0 Then
GoW()
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then
GoS()
Endif
If dy<0 Then
GoN()
Endif
Endif
Wend
end sub
sub grabelem()
var i
DIM Item[6]
######################################
Item[1]=0x19B9 ; >3 ore
Item[2]=0x19B7 ; 1 ore
Item[3]=0x19BA ; 2 ore
Item[4]=0x19B8 ; 3 ore
Item[5]=0x0EED ; gold
######################################
for i = 1 to 5
UO.FindType(Item[i], '-1', 'ground')
UO.MoveItem('finditem','-1','backpack')
Wait(1000)
CheckLag()
next
end sub