Привет всем )))
если не трудно опостите , последнююю самую навороченную а главное САМУЮ Понятную версию на MINING ))) нужно для сервера DRV ) со всеми примочками и обрасываниями левых руд ))) ну если не трудно THX !))))
MinIng FFFFFFFFFIIIIINAAALLLLLLLLL! :)
Moderators: Murderator+, Murderator
Re: MinIng FFFFFFFFFIIIIINAAALLLLLLLLL! :)
CHiC777 wrote:Привет всем )))
если не трудно опостите , последнююю самую навороченную а главное САМУЮ Понятную версию на MINING ))) нужно для сервера DRV ) со всеми примочками и обрасываниями левых руд ))) ну если не трудно THX !))))
############################################
### Mining / Копание руды v3.7 Full ###
############################################
### Шард Dragon World / www.drw.ru ###
############################################
### Внимание:
### Для работы скрипта нужна версия YokoInjection 4DZ.
### Скачать dll этой версии можно
### от сюда: www.swines.nm.ru/injection.zip
##########################################################
### Авторы:
### - BETEPAH реавтор, главный скриптер.
### - cOoler добавлял, редактировал перевод и скрипт.
### А также:
### -Большое Savage, за систему сброса руды.
############################################
#############################
### Описание и настройка ###
#############################
### Обратите внимание на значки "]![" ими выделенны важные сообщения.
###
### Чар стоит в пещере(не Vip) и копает вокруг себя.
### После достижения "максимального" веса(в данном случие это 625 стоунов)
### "порталится" домой скидывает руду в сундук, после реколится обратно и продолжает копать.
### Пример: стоите копаете, дошли до придела в 625 веса сработала система рекола
### и вы "порталитесь" домой и складываете руду в сундук,после вы реколитесь обратно в пещеру и продолжаете копать(цикличность).
###
####################
### Нововведения ###
####################
### 1)Руда складываются не на пол а в сундук. [BETEPAH]
### 2)Рекол в пещеру и домой по рунбуке(а не по рункам). [BETEPAH]
### 3)Система сброса руды переделана из MassMove(что в свою очередь иногда приписывалось как фаст лут)в перемещение через
### Масив.[написана Savage, встроена BETEPAH]
### 4)Упразнена система выбора "главных обьектов"(теперь просто указываем прицелом). [BETEPAH]
### 5)Добавлен реконнект и выбор его использования. [Fox M, поместил COoler]
### 6)Упразднена установка веса и время(пока уйдет ПК). [cOoler]
### 7)Добавлен выбор ставить или нет скрипт на паузу при выкопке Элементала. [cOoler]
###

###
### ]![ Чтобы скрипт заработал внимательно прочтите настройки. ]![
###
###################################
### Режимы работы скрипта ###
###################################
### Работает в 2ух режимах: ###
### 1)Копание ###
### 2)Супорт ###
###################################
### Режим Первый - "Копание" ###
###################################
### "sub Mining()"
### Этот режим главный и отвечает за копание.
###
### Положите в суммку к себе рунбук(с рунами домой и в шахту), кирку или лопату, рунку к сундуку(по суте копия той что у вас
### в рунбуке).
### Идите в пещеру в котором вы хотите копать.
### Запустите Скрипт Mining(), инжект попросит вас указать кирку
### (появится прицел,прицелом на кирку которую вы с собой взяли), потом инжект попросит вас указать рунбук(появится прицел,
### прицелом на рунбук ).
### ]![ Внимание!!! В рунбуке руна в 1ом слоте "Домой", в 8ом "в Шахту". ]![
### ]![ Внимание в скрипте рунбуки настроены под ДРВ шард. ]![
### Инжект сообщит вам что "Пытаемся уйти в хайд..." тоесть чар уйдет в хайд.
### Чар автоматом возмет в руки кирку и начнет "окапаватся".
### Если выкопали Элементала то скрипт включит "серену" и встанет на паузу пока вы просто не скажите "GO".(так как вы в хайде)
### Если появился ПК то чар зареколится к сундуку (по рунке, так как на ДРВ рекол через рунбук 8,7 сек, а по рунке 2,3 сек)
### выкинет руду в сундук и будет ждать определенное время которое вы поставите в скрипте.
###
### Чтобы все заработало в скрипте поставте свои значения:
### var WaitTime=180000 - Время в секундах при ожидании пока уйдет ПК. [строка 153]
###
###################################
### Режим Второй - "Супорт" ###
###################################
### "DropOres()"
### Этот скрипт отвечает за сброс руды в сундук.
### После "рекола" домой чар при помощи этого скрипта сбросит руду в сундук (лучше в сейф).
### var UnloadCont='0x40041342' - ID сундука для сброса руды, поставте свой. [строка 196]
###
### "PKDanger()"
### Скрипт "спасатель", отвечает за рекол по любой рунке у вас в паке + реги (включается если прешел ПК)
### будет пытатся реколится пока не "улетит" из пещеры (защита от физла).
###
### "ElementalDanger()"
### Скрипта пауза если выкопали Элементала.
### Если вы выкопали Элементала скрипт как бы "зависнет"(встанет на паузу) за это время вы можете убить Элементала,
### привратившись в Демона или привести Дракона.
### После просто скажите в игре "GO" и чар продолжит копать.
###
### "ElementalAlarmSound() и PKAlarmSound()"
### Скрипты "сирены" отвечают за проигрование Звуковых файлов (wav) при выкапывании элема или поялении ПК
### uo.PlayWav("D:\Ultima Online\Injection\Lumb Sound\humiliation.wav") - укажите на примере этого путь к своим файлам. [строчки 239 и 243]
###
######################################
### Дополнительные функции скрипта ###
######################################
### В скрипте 3 доп. функции: ###
### 1)Побег при Появлении ПК ###
### 2)Пауза при Выкапывании Элема ###
### 3)Реконнект ###
#################################################
### Функция Первая - "Побег при Появлении ПК" ###
#################################################
### Этот режим соответственно отвечает за Побег при появлении пк.
###
### Побег происходит так:
### Замарчите Руну возле сундука.
### Положите к себе в сумку
### Руну(которую замарчили) и Реагенты.(Black Pearls,Blood Moss,Mandrake Root.)
### ]![ Внимание руна должна лежать в стандартном положении(как продается, только замарканная). ]
#####################################################################
##################
### Переменные ###
##################
### var TryToHide=1 ## - 1 - Включить уход в хайд перед копанием, 0 - выключить(советую включить

### var WaitTime=18000 ## - Время в секундах при ожидании пока уйдет ПК
### (ставьте скока считаете нужным, время в секундах).
### var MaxWeight=800 ## - Вес при котором реколимся домой(как тока накопает руды до этого веса реколится,
### ставьте максимальный вес который может унести чар).
###
### После настройки:
### Идите в шахту в которой вы хотите копать.
### Запустите cкрипт Mining(), Инжект попросит вас указать Лопату
### (появится прицел, прицелом на лопату который вы с собой взяли), потом инжект попросит вас указать Рунбук(появится прицел, прицелом на него).
### После этого чар "уйдет" в хайд и будет копать вокруг себя.
###########
### Код ###
###########
sub Mining()
var mX, mY, mZ, i, j, jor, ser, noto
######################
### Меню / Options ###
######################
#################################################################################
###
var TryToHide=1 ## - 1 - Включить уход в хайд перед копанием, 0 - выключить.
###
var WaitTime=18000 ## - Время в секундах при ожидании пока уйдет ПК.
###
var MaxWeight=800 ## - Вес при котором реколимся домой.(Максимальный вес)
###
var Reconnect=0 ## 1 - Включить реконнект на сферу при дисконнекте, 0 - выключить.
###
var ElementalPause=1 ## 1 - Включить паузу при выкапывании Элементала, 0 - выключить.
###
uo.Set('norbcheck','1') ## - Для рекола.
###
uo.Set('norbcalc','1') ## - Для рекола.
###
#################################################################################
uo.Print('Выбери Лопату: ')
uo.Exec('addobject Shovel')
while uo.Targeting()
wait(100)
wend
uo.Print('Выбери Рунбук: ')
uo.Exec('addobject Runebook')
while uo.Targeting()
wait(100)
wend
if Reconnect==1 then
uo.Exec('exec Reconnect')
end if
beginning:
mX = uo.getX("self")
mY = uo.getY("self")
mZ = uo.GetZ("self")
uo.DeleteJournal()
for i = mX-4 to mX+4
for j = mY-4 to mY+4
if TryToHide==1 then
ToHide()
end if
uo.Print("Копаем в координатах: "+str(mX-i)+" "+str(mY-j))
while not uo.InJournal("no ore here") and not uo.InJournal("location") and not uo.InJournal("far away") and not uo.InJournal("in rock") and not uo.InJournal("Iron Ore") and not uo.InJournal("Copper") and not uo.InJournal("Rusty Ore")
uo.DeleteJournal()
if uo.Waiting() then
uo.Canceltarget()
end if
uo.Waittargettile("1341", str(i), str(j), str(mZ))
uo.Useobject("Shovel")
while not uo.InJournal("You put") and not uo.InJournal("heavy") 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")
wait(500)
if ElementalPause==1 then
if uo.InJournal("OOPS!!!") or uo.InJournal("is attacking you") or uo.Dead() then
ElementalAlarmSound()
ElementalDanger()
end if
end if
for jor = 0 to 9
ser = uo.JournalSerial(jor)
noto = uo.GetNotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.InJournal("Elemental") then
if uo.Waiting() then
uo.CancelTarget()
endif
PKAlarmSound()
PKDanger()
wait(WaitTime)
DropOres()
wait(3000)
goto reccal
end if
next
wend
if uo.Weight>MaxWeight then
goto end
end if
wend
uo.DeleteJournal()
next
next
goto beginning
end:
if uo.Waiting() then
uo.CancelTarget()
end if
uo.Print('Прыгаем Домой.')
uo.Exec('recall Runebook 21')
wait(10000)
DropOres()
wait(3000)
reccal:
uo.DeleteJournal()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.Print('Прыгаем в Шахту.')
uo.Exec('recall Runebook 94')
mX = uo.getX("self")
mY = uo.getY("self")
wait(10000)
if not uo.getX("self") <> mX and not uo.getY("self") <> mY then
goto reccal
end if
goto beginning
end sub
sub ToHide()
while not uo.Hidden()
uo.Print('Пытаемся уйти в хайд...')
uo.DeleteJournal()
uo.UseSkill('Stealth')
wait(4100)
wend
wait(100)
end sub
sub DropOres()
if uo.Waiting() then
uo.CancelTarget()
end if
var a, Exit
var UnloadChest='0x40001988' ## - 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 PKDanger()
var mX, mY
reccal:
uo.DeleteJournal()
if uo.Waiting() then
uo.CancelTarget()
end if
mX = uo.getX("self")
mY = uo.getY("self")
uo.DeleteJournal()
uo.FindType('0x1F14',-1,'mY')
### wait(200)
uo.Print('ПК! Реколимся!')
uo.Cast('Recall','finditem')
wait(4000)
if not uo.getX("self") <> mX and not uo.getY("self") <> mY then
goto reccal
end if
end sub
sub PKAlarmSound()
uo.PlayWav("C:\uo\Warning.wav")
end sub
sub ElementalDanger()
uo.DeleteJournal()
repeat
wait(1000)
uo.Print('Выкопан Элементал!')
wait(3000)
uo.Print('Скрипт на паузе!')
until uo.InJournal('GO')
uo.Print('Скрипт продолжен!')
end if
end sub
sub ElementalAlarmSound()
uo.PlayWav("C:\uo\Warning.wav")
end sub
sub Reconnect()
var reconnectTime, rFlag
reconnectTime = '0'
rFlag = 1
repeat
while (uo.ObjAtLayer('Bpack') == '')
if rFlag then
reconnectTime = MakeTime()
rFlag = 0
endif
wait(20000) ## - WorldSave.
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.TextOpen()
uo.TextPrint('Disconnected & Reconnected @ '+reconnectTime)
rFlag = 1
reconnectTime = '0'
end if
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
end if
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
end if
next
ret = t + " @ " + d
return ret
end sub
Just Be! Все ФИГНЯ, кроме пчёл!!! А пчёлы ваще фигня!
Re: MinIng FFFFFFFFFIIIIINAAALLLLLLLLL! :)
CHiC777 wrote:Привет всем )))
если не трудно опостите , последнююю самую навороченную а главное САМУЮ Понятную версию на MINING ))) нужно для сервера DRV ) со всеми примочками и обрасываниями левых руд ))) ну если не трудно THX !))))
А когдва ты у меня в гостях был не судьба ?
Все просто.
BETEPAH ™
BETEPAH ™
#############################################
# Revenant \ Antares
# auo.ru
#############################################
# Использована Саваджевская ходилка
# и хрен знает чьи куски, по мелочам
#############################################
# в банке должны быть руны в пещеры, помеченные в инжекте как обьекты
# (Закладка Objects)
# Mine , Mine1, Mine2, Mine3, Mine4, а в бекпаке обьект Bank - руна к банку
# промаркировать каждую пещеру надо зарание, запустив процедуру MultyMark()
# Для марка, обходя последовательно все точки копания, набирать "set"
# ("точка копания" это центр квадрата 5х5 тайлов который выкапывается подчистую)
# При окончании марка в текущей пещере, набрать "stop" перереколиться в следующюю пещеру и продолжить
# После марка 5 пещер появятся файлы C:\mine4.dat, C:\mine3.dat, C:\mine2.dat, C:\mine1.dat, C:\mine.dat
# После этого можно начинать копку запустив процедуру main() стоя у банка.
# И если в банке будут лежать жаренные фишстеки, чар не применет возможностью ими полакомиться.
# при вероятности дисконнектов перед копкой запустить процедуру Reconnect
################################
var Cont = '0x40FA4545' ;ID контейнера в который будет складываться накопанное.
var RC = '0x40088808' ;ID контейнера с регами
var food= '0x097B' ;еда(type) по умолчанию жаренные фишстейки
var q, w, p
var f=file("C:\mine.dat")
var mine
############################### процедура запуска для 5 пещер
sub main()
repeat
f=file("C:\mine.dat")
mine='Mine'
one()
f=file("C:\mine1.dat")
mine='Mine1'
one()
f=file("C:\mine2.dat")
mine='Mine2'
one()
f=file("C:\mine3.dat")
mine='Mine3'
one()
f=file("C:\mine4.dat")
mine='Mine4'
one()
until UO.Dead()
end sub
################################
sub one()
dim PX[50], PY[50]
var Minepoints=0
var i
uo.Print('Loading from file...')
f.open()
Minepoints=safe call f.ReadNumber()
for i=1 to Minepoints
PX[i]=safe call f.ReadNumber()
PY[i]=safe call f.ReadNumber()
next
f.close()
uo.Print('Loaded')
uo.say("Bank")
wait(100)
med()
takereg()
Recall(mine)
for p=1 to Minepoints
uo.Print('X: '+str(PX[p])+' Y: '+str(PY[p]))
WalkN(PX[p],PY[p],'')
q=PX[p]
w=PY[p]
uo.Print('Mining...')
UO.Warmode("0")
mine(PX,PY)
next
recall('Bank')
Razg()
end sub
##########################
sub vozvrat(PX,PY)
var i
uo.Print('Move...')
for i=1 to p
uo.Print('X: '+str(PX[p])+' Y: '+str(PY[p]))
WalkN(PX[i],PY[i],'')
next
end sub
########################
sub Mark()
dim PX[50], PY[50]
var Minepoints=0
var i
uo.Print('Start marking...')
for i=1 to 50
UO.DeleteJournal()
uo.Print('Set point '+ str(i))
repeat
wait(500)
if UO.InJournal('stop')then
SaveToFile(i-1,PX,PY)
return
endif
until UO.InJournal('set')
PX[i] = UO.GetX("self")
PY[i] = UO.GetY("self")
uo.Print('Point '+str(i)+' X: '+str(PX[i])+' Y: '+str(PY[i])+'taken')
next
end sub
########################
sub MultyMark()
uo.Print('Cove............ 1')
f=file("C:\mine.dat")
Mark()
uo.Print('Cove............ 2')
f=file("C:\mine1.dat")
Mark()
uo.Print('Cove............ 3')
f=file("C:\mine2.dat")
Mark()
uo.Print('Cove............ 4')
f=file("C:\mine3.dat")
Mark()
uo.Print('Cove............ 5')
f=file("C:\mine4.dat")
Mark()
uo.Print('Marking finished. Ready for mine')
end sub
#############################
sub SaveToFile(mp,PX,PY)
var s=0,k=0
f.open()
f.create()
uo.Print('points = '+ str(mp))
s=safe call f.writeln(mp)
for k=1 to mp
s=safe call f.writeln(str(PX[k])+' '+str(PY[k]))
next
f.close()
end sub
##################################
sub mine(PX,PY)
var x, y,z
VAR LastTimer
UO.Set('finddistance','2')
z=UO.GetZ("self")
for x=-2 to 2
for y=-2 to 2
Hid()
UO.Print(str(x)+" "+str(y))
Repeat
if UO.InJournal('TORMOZ') then
pause()
endif
UO.DeleteJournal()
UO.Warmode("0")
UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),z)
UO.UseType('0x0E85')
LastTimer=UO.Timer()
Repeat
wait(500)
Until UO.InJournal("You put") or UO.InJournal("can't see") or UO.InJournal("heavy") or UO.InJournal("location") or UO.InJournal("no ore") or UO.InJournal("but fail") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("must wait") or UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("where it") OR UO.Timer()>LastTimer+200
lookout()
Until UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("no ore here") or UO.InJournal("location") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("where it")
if UO.Weight>720 then
unload(PX,PY)
endif
;wait(2000) ; раскоментировать при копке лопатой
next
next
end sub
#########################################
sub lookout()
if UO.InJournal("Earth elemental") then
killelem()
endif
end sub
#######################################
sub Pause()
UO.DeleteJournal()
REPEAT
WAIT(3000)
UO.Print("Paused")
UNTIL UO.InJournal('GO')
UO.Print("Continue")
endif
end sub
############################################
sub heal()
UO.SetArm('arm')
UO.Exec('bandageself')
wait(500)
UO.Arm('arm')
wait(2000)
end sub
######################################
sub Razg()
VAR a
VAR LastTimer
DIM Ore[8]
Ore[1]=0x19B9 ; 4 and more ore
Ore[2]=0x19B7 ; 1 ore
Ore[3]=0x19BA ; 2 ore
Ore[4]=0x19B8 ; 3 ore
Ore[5]=0x0EED # деньги
Ore[6]=0x09AA # пандоры
Ore[7]=0x19B9 # руда
Ore[8]=0x0F26 # диаманты
uo.say("Bank")
wait(100)
For a=1 to 8
While UO.Count(ore[a])>0
UO.FindType(ore[a],-1,-1)
UO.MoveItem('finditem',0,Cont)
wait(1000)
Wend
next
eat()
takereg()
if UO.Mana < 30 then
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(200)
wend
endif
end sub
#######################################
sub eat()
UO.DeleteJournal()
repeat
if UO.Count(food)>0 then
UO.UseType(food)
wait(500)
else
return
end if
Until UO.InJournal("stuffed!") OR UO.InJournal("think")
end sub
################################
sub unload(PX,PY)
Recall('Bank')
Razg()
wait(100)
takereg()
wait(100)
Recall(mine)
uo.DeleteJournal()
vozvrat(PX,PY)
end sub
########################################
sub med()
VAR LastTimer
UO.DeleteJournal()
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(200)
wend
end sub
#########################################
sub takereg()
DIM reg[3]
var i,n
reg[1]='0x0F86' ; MR
reg[2]='0x0F7A' ; BP
reg[3]='0x0F7B' ; BM
UO.UseObject(RC)
for i=1 to 3
while UO.Count(reg[i])<5
UO.FindType(reg[i],-1,RC)
n=UO.Count(reg[i])
UO.Grab(str(5-n),'finditem')
wait(200)
wend
next
end sub
#########################################
sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(500)
until UO.InJournal('Backpack')
end sub
##################################
sub Reconnect()
var ReconnectTime,rFlag
ReconnectTime='0'
rFlag=1
repeat
while (uo.ObjAtLayer('Bpack')=='')
if rFlag then
ReconnectTime=MakeTime()
rFlag=0
end if
wait(20000)
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.TextOpen()
uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
rFlag=1
ReconnectTime='0'
end if
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
end if
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
end if
next
ret=t+" @ "+d
return ret
end sub
######################
sub Hid()
while not uo.Hidden()
UO.Warmode("0")
uo.Print('Hiding...')
uo.UseSkill('Stealth')
wait(4000)
wend
wait(100)
end sub
#################################
sub Recall(dest)
var b
uo.print('Recoll')
for b=1 to 10
uo.deletejournal()
uo.waittargetobject(dest)
uo.cast('Recall',dest)
if WaitForRecall()==1 then
return 1
end if
next
return 0
end sub
###################################
sub WaitForRecall()
var Text1=uo.getname()+": The spell fizzles."
var mess='',lastX=uo.getX(),lastY=uo.getY()
for var v=0 to 200
mess=uo.journal(0)
if uo.Journal(0)==Text1 then
return 0
end if
if uo.getX()<>lastX OR uo.getY()<>LastY then
return 1
end if
wait(50)
next
return 0
end sub
################################
sub killelem()
VAR LastTimer, Elem ,i
LastTimer=UO.Timer()
UO.DeleteJournal()
UO.FindType('0x000E',-1,'ground')
Elem=UO.GetSerial('finditem')
UO.Exec('warmode 1')
UO.Attack(Elem)
WalkN(0,0,Elem)
UO.Say('Dye, mother fucker!')
repeat
wait(2000)
until UO.InJournal('Body') OR LastTimer+500<UO.Timer()
UO.Exec('warmode 0')
wait(100)
LastTimer=UO.Timer()
if UO.Life<170 and UO.Count('0x0E21') then
repeat
UO.BandageSelf()
wait(4000)
until UO.Life>170 OR LastTimer+300<UO.Timer()
endif
loot()
WalkN(q,w,'')
end sub
##################################
sub loot()
DIM R[3]
var a
R[1] = 0x0EED # деньги
R[2] = 0x09AA # пандоры
R[3] = 0x19B9 #руда
UO.UseObject('lastcorpse')
wait(100)
uo.exec("warmode '0'")
uo.waittargetobject('lastcorpse')
uo.usetype(0x0F51)
wait(500)
for a=1 to 3
uo.findtype(R[a],"-1","lastcorpse")
if UO.FindCount()>0 and Uo.GetDistance("lastcorpse")<=2 then
UO.Grab("0","finditem")
wait(500)
end if
wait(10)
next
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!
# serial - Serial of target or "" - string
# walkwait - delay after keypress
# Example:
# WalkN(2080,2113,'') - go to coordinates
# WalkN(0,0,'0x12345678') - go to target position
#--------------------------------------------------------------
sub WalkN(x,y,Target)
VAR i,StepSucess
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
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
StepSucess=Go(1,39,300) ;NE - RightArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
Endif
Endif
Endif
If dx>0 AND dy<0 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
Endif
Endif
Endif
If dx<0 AND dy>0 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
StepSucess=Go(7,38,300) ;WN - UpArrow
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
Endif
Endif
Endif
If dx<0 AND dy<0 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
StepSucess=Go(5,37,300) ;SW - LeftArrow
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
Endif
Endif
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then
StepSucess=Go(2,34,300) ;E - PgDown
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
Endif
StepSucess=Go(2,34,300) ;E - PgDown
Endif
Endif
If dx<0 Then
StepSucess=Go(6,36,300) ;W - Home
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
Endif
StepSucess=Go(6,36,300) ;W - Home
Endif
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then
StepSucess=Go(4,35,300) ;S - End
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
Endif
StepSucess=Go(4,35,300) ;S - End
Endif
Endif
If dy<0 Then
StepSucess=Go(0,33,300) ;N - PgUp
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
Endif
StepSucess=Go(0,33,300) ;N - PgUp
Endif
Endif
Endif
Wend
end sub
sub Go(dir,key,walkwait)
VAR x,y, OldDir
x=UO.GetX()
y=UO.GetY()
OldDir=UO.GetDir()
hid()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then
UO.Press(key)
wait(walkwait)
Endif
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If x==UO.GetX() AND y==UO.GetY() Then
UO.Print("Zasada!")
return -1
Else
return 1
Endif
end sub
###########################################
# вспомогательная процедура для подбора выпавшей руды
sub pod()
UO.Say('Bank')
repeat
uo.findtype('0x19B9',-1,'ground') ; тип руды
if UO.FindCount() and Uo.GetDistance('finditem')<3 then
uo.moveitem('finditem','1000','0x40FA4B85') ; ID контейнера в банке
wait(100)
end if
wait(100)
uo.print("1")
until not UO.FindCount()
end sub
# Revenant \ Antares
# auo.ru
#############################################
# Использована Саваджевская ходилка
# и хрен знает чьи куски, по мелочам

#############################################
# в банке должны быть руны в пещеры, помеченные в инжекте как обьекты
# (Закладка Objects)
# Mine , Mine1, Mine2, Mine3, Mine4, а в бекпаке обьект Bank - руна к банку
# промаркировать каждую пещеру надо зарание, запустив процедуру MultyMark()
# Для марка, обходя последовательно все точки копания, набирать "set"
# ("точка копания" это центр квадрата 5х5 тайлов который выкапывается подчистую)
# При окончании марка в текущей пещере, набрать "stop" перереколиться в следующюю пещеру и продолжить
# После марка 5 пещер появятся файлы C:\mine4.dat, C:\mine3.dat, C:\mine2.dat, C:\mine1.dat, C:\mine.dat
# После этого можно начинать копку запустив процедуру main() стоя у банка.
# И если в банке будут лежать жаренные фишстеки, чар не применет возможностью ими полакомиться.
# при вероятности дисконнектов перед копкой запустить процедуру Reconnect
################################
var Cont = '0x40FA4545' ;ID контейнера в который будет складываться накопанное.
var RC = '0x40088808' ;ID контейнера с регами
var food= '0x097B' ;еда(type) по умолчанию жаренные фишстейки
var q, w, p
var f=file("C:\mine.dat")
var mine
############################### процедура запуска для 5 пещер
sub main()
repeat
f=file("C:\mine.dat")
mine='Mine'
one()
f=file("C:\mine1.dat")
mine='Mine1'
one()
f=file("C:\mine2.dat")
mine='Mine2'
one()
f=file("C:\mine3.dat")
mine='Mine3'
one()
f=file("C:\mine4.dat")
mine='Mine4'
one()
until UO.Dead()
end sub
################################
sub one()
dim PX[50], PY[50]
var Minepoints=0
var i
uo.Print('Loading from file...')
f.open()
Minepoints=safe call f.ReadNumber()
for i=1 to Minepoints
PX[i]=safe call f.ReadNumber()
PY[i]=safe call f.ReadNumber()
next
f.close()
uo.Print('Loaded')
uo.say("Bank")
wait(100)
med()
takereg()
Recall(mine)
for p=1 to Minepoints
uo.Print('X: '+str(PX[p])+' Y: '+str(PY[p]))
WalkN(PX[p],PY[p],'')
q=PX[p]
w=PY[p]
uo.Print('Mining...')
UO.Warmode("0")
mine(PX,PY)
next
recall('Bank')
Razg()
end sub
##########################
sub vozvrat(PX,PY)
var i
uo.Print('Move...')
for i=1 to p
uo.Print('X: '+str(PX[p])+' Y: '+str(PY[p]))
WalkN(PX[i],PY[i],'')
next
end sub
########################
sub Mark()
dim PX[50], PY[50]
var Minepoints=0
var i
uo.Print('Start marking...')
for i=1 to 50
UO.DeleteJournal()
uo.Print('Set point '+ str(i))
repeat
wait(500)
if UO.InJournal('stop')then
SaveToFile(i-1,PX,PY)
return
endif
until UO.InJournal('set')
PX[i] = UO.GetX("self")
PY[i] = UO.GetY("self")
uo.Print('Point '+str(i)+' X: '+str(PX[i])+' Y: '+str(PY[i])+'taken')
next
end sub
########################
sub MultyMark()
uo.Print('Cove............ 1')
f=file("C:\mine.dat")
Mark()
uo.Print('Cove............ 2')
f=file("C:\mine1.dat")
Mark()
uo.Print('Cove............ 3')
f=file("C:\mine2.dat")
Mark()
uo.Print('Cove............ 4')
f=file("C:\mine3.dat")
Mark()
uo.Print('Cove............ 5')
f=file("C:\mine4.dat")
Mark()
uo.Print('Marking finished. Ready for mine')
end sub
#############################
sub SaveToFile(mp,PX,PY)
var s=0,k=0
f.open()
f.create()
uo.Print('points = '+ str(mp))
s=safe call f.writeln(mp)
for k=1 to mp
s=safe call f.writeln(str(PX[k])+' '+str(PY[k]))
next
f.close()
end sub
##################################
sub mine(PX,PY)
var x, y,z
VAR LastTimer
UO.Set('finddistance','2')
z=UO.GetZ("self")
for x=-2 to 2
for y=-2 to 2
Hid()
UO.Print(str(x)+" "+str(y))
Repeat
if UO.InJournal('TORMOZ') then
pause()
endif
UO.DeleteJournal()
UO.Warmode("0")
UO.WaitTargetTile("1341",STR(UO.GetX()+x),STR(UO.GetY()+Y),z)
UO.UseType('0x0E85')
LastTimer=UO.Timer()
Repeat
wait(500)
Until UO.InJournal("You put") or UO.InJournal("can't see") or UO.InJournal("heavy") or UO.InJournal("location") or UO.InJournal("no ore") or UO.InJournal("but fail") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("must wait") or UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("where it") OR UO.Timer()>LastTimer+200
lookout()
Until UO.InJournal("nothing") or UO.InJournal("elsewhere") or UO.InJournal("no ore here") or UO.InJournal("location") or UO.InJournal("far away") or UO.InJournal("in rock") or UO.InJournal("where it")
if UO.Weight>720 then
unload(PX,PY)
endif
;wait(2000) ; раскоментировать при копке лопатой
next
next
end sub
#########################################
sub lookout()
if UO.InJournal("Earth elemental") then
killelem()
endif
end sub
#######################################
sub Pause()
UO.DeleteJournal()
REPEAT
WAIT(3000)
UO.Print("Paused")
UNTIL UO.InJournal('GO')
UO.Print("Continue")
endif
end sub
############################################
sub heal()
UO.SetArm('arm')
UO.Exec('bandageself')
wait(500)
UO.Arm('arm')
wait(2000)
end sub
######################################
sub Razg()
VAR a
VAR LastTimer
DIM Ore[8]
Ore[1]=0x19B9 ; 4 and more ore
Ore[2]=0x19B7 ; 1 ore
Ore[3]=0x19BA ; 2 ore
Ore[4]=0x19B8 ; 3 ore
Ore[5]=0x0EED # деньги
Ore[6]=0x09AA # пандоры
Ore[7]=0x19B9 # руда
Ore[8]=0x0F26 # диаманты
uo.say("Bank")
wait(100)
For a=1 to 8
While UO.Count(ore[a])>0
UO.FindType(ore[a],-1,-1)
UO.MoveItem('finditem',0,Cont)
wait(1000)
Wend
next
eat()
takereg()
if UO.Mana < 30 then
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(200)
wend
endif
end sub
#######################################
sub eat()
UO.DeleteJournal()
repeat
if UO.Count(food)>0 then
UO.UseType(food)
wait(500)
else
return
end if
Until UO.InJournal("stuffed!") OR UO.InJournal("think")
end sub
################################
sub unload(PX,PY)
Recall('Bank')
Razg()
wait(100)
takereg()
wait(100)
Recall(mine)
uo.DeleteJournal()
vozvrat(PX,PY)
end sub
########################################
sub med()
VAR LastTimer
UO.DeleteJournal()
while UO.Mana<UO.Int
LastTimer=UO.Timer()
UO.UseSkill('Meditation')
repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
UO.DeleteJournal()
wait(200)
wend
end sub
#########################################
sub takereg()
DIM reg[3]
var i,n
reg[1]='0x0F86' ; MR
reg[2]='0x0F7A' ; BP
reg[3]='0x0F7B' ; BM
UO.UseObject(RC)
for i=1 to 3
while UO.Count(reg[i])<5
UO.FindType(reg[i],-1,RC)
n=UO.Count(reg[i])
UO.Grab(str(5-n),'finditem')
wait(200)
wend
next
end sub
#########################################
sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(500)
until UO.InJournal('Backpack')
end sub
##################################
sub Reconnect()
var ReconnectTime,rFlag
ReconnectTime='0'
rFlag=1
repeat
while (uo.ObjAtLayer('Bpack')=='')
if rFlag then
ReconnectTime=MakeTime()
rFlag=0
end if
wait(20000)
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.TextOpen()
uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
rFlag=1
ReconnectTime='0'
end if
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
end if
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
end if
next
ret=t+" @ "+d
return ret
end sub
######################
sub Hid()
while not uo.Hidden()
UO.Warmode("0")
uo.Print('Hiding...')
uo.UseSkill('Stealth')
wait(4000)
wend
wait(100)
end sub
#################################
sub Recall(dest)
var b
uo.print('Recoll')
for b=1 to 10
uo.deletejournal()
uo.waittargetobject(dest)
uo.cast('Recall',dest)
if WaitForRecall()==1 then
return 1
end if
next
return 0
end sub
###################################
sub WaitForRecall()
var Text1=uo.getname()+": The spell fizzles."
var mess='',lastX=uo.getX(),lastY=uo.getY()
for var v=0 to 200
mess=uo.journal(0)
if uo.Journal(0)==Text1 then
return 0
end if
if uo.getX()<>lastX OR uo.getY()<>LastY then
return 1
end if
wait(50)
next
return 0
end sub
################################
sub killelem()
VAR LastTimer, Elem ,i
LastTimer=UO.Timer()
UO.DeleteJournal()
UO.FindType('0x000E',-1,'ground')
Elem=UO.GetSerial('finditem')
UO.Exec('warmode 1')
UO.Attack(Elem)
WalkN(0,0,Elem)
UO.Say('Dye, mother fucker!')
repeat
wait(2000)
until UO.InJournal('Body') OR LastTimer+500<UO.Timer()
UO.Exec('warmode 0')
wait(100)
LastTimer=UO.Timer()
if UO.Life<170 and UO.Count('0x0E21') then
repeat
UO.BandageSelf()
wait(4000)
until UO.Life>170 OR LastTimer+300<UO.Timer()
endif
loot()
WalkN(q,w,'')
end sub
##################################
sub loot()
DIM R[3]
var a
R[1] = 0x0EED # деньги
R[2] = 0x09AA # пандоры
R[3] = 0x19B9 #руда
UO.UseObject('lastcorpse')
wait(100)
uo.exec("warmode '0'")
uo.waittargetobject('lastcorpse')
uo.usetype(0x0F51)
wait(500)
for a=1 to 3
uo.findtype(R[a],"-1","lastcorpse")
if UO.FindCount()>0 and Uo.GetDistance("lastcorpse")<=2 then
UO.Grab("0","finditem")
wait(500)
end if
wait(10)
next
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!
# serial - Serial of target or "" - string
# walkwait - delay after keypress
# Example:
# WalkN(2080,2113,'') - go to coordinates
# WalkN(0,0,'0x12345678') - go to target position
#--------------------------------------------------------------
sub WalkN(x,y,Target)
VAR i,StepSucess
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
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
StepSucess=Go(1,39,300) ;NE - RightArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
Endif
Endif
Endif
If dx>0 AND dy<0 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
Endif
Endif
Endif
If dx<0 AND dy>0 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
StepSucess=Go(7,38,300) ;WN - UpArrow
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
Endif
Endif
Endif
If dx<0 AND dy<0 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
StepSucess=Go(5,37,300) ;SW - LeftArrow
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
Endif
Endif
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then
StepSucess=Go(2,34,300) ;E - PgDown
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
Endif
StepSucess=Go(2,34,300) ;E - PgDown
Endif
Endif
If dx<0 Then
StepSucess=Go(6,36,300) ;W - Home
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
Endif
StepSucess=Go(6,36,300) ;W - Home
Endif
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then
StepSucess=Go(4,35,300) ;S - End
If StepSucess==-1 Then
StepSucess=Go(3,40,300) ;SE - DownArrow
If StepSucess==-1 Then
StepSucess=Go(5,37,300) ;SW - LeftArrow
Endif
StepSucess=Go(4,35,300) ;S - End
Endif
Endif
If dy<0 Then
StepSucess=Go(0,33,300) ;N - PgUp
If StepSucess==-1 Then
StepSucess=Go(1,39,300) ;NE - RightArrow
If StepSucess==-1 Then
StepSucess=Go(7,38,300) ;WN - UpArrow
Endif
StepSucess=Go(0,33,300) ;N - PgUp
Endif
Endif
Endif
Wend
end sub
sub Go(dir,key,walkwait)
VAR x,y, OldDir
x=UO.GetX()
y=UO.GetY()
OldDir=UO.GetDir()
hid()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then
UO.Press(key)
wait(walkwait)
Endif
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If x==UO.GetX() AND y==UO.GetY() Then
UO.Print("Zasada!")
return -1
Else
return 1
Endif
end sub
###########################################
# вспомогательная процедура для подбора выпавшей руды
sub pod()
UO.Say('Bank')
repeat
uo.findtype('0x19B9',-1,'ground') ; тип руды
if UO.FindCount() and Uo.GetDistance('finditem')<3 then
uo.moveitem('finditem','1000','0x40FA4B85') ; ID контейнера в банке
wait(100)
end if
wait(100)
uo.print("1")
until not UO.FindCount()
end sub
Last edited by Revenant on 2004-11-11 13:38:21, edited 1 time in total.
Хммммммммм
Все отлично последний скрипт очень хороший по описанию , ну так и не понял как его запускать , чтото не хочет ... Вроде запускаю "Start"
exec start он стоит у яшика нужного , Выбрасывает оры и медитируют вот и все , а дальше ? Почему не реколиться и т.д. , и еше путь к скипту мининг , к какому ?? PLz oпишите ... Буду очень признателен ..
WAITING FOR REPLY ..... Or po ICQ 52702571
exec start он стоит у яшика нужного , Выбрасывает оры и медитируют вот и все , а дальше ? Почему не реколиться и т.д. , и еше путь к скипту мининг , к какому ?? PLz oпишите ... Буду очень признателен ..
WAITING FOR REPLY ..... Or po ICQ 52702571
брр... ничего не понял )
стартовая процедура - main
если еще не промарканы пещеры - multimark
должны быть созданны обьекты Mine...Mine4, Bank
если они в контейнере, контейнер нужно сначала открыть, в скрипте они в банке, он открывается произнесением "bank" (на Антаресе банки бездонные, очень удобно)
стартовая процедура - main
если еще не промарканы пещеры - multimark
должны быть созданны обьекты Mine...Mine4, Bank
если они в контейнере, контейнер нужно сначала открыть, в скрипте они в банке, он открывается произнесением "bank" (на Антаресе банки бездонные, очень удобно)