Page 1 of 1

MinIng FFFFFFFFFIIIIINAAALLLLLLLLL! :)

Posted: 2004-11-09 21:21:08
by CHiC777
Привет всем )))

если не трудно опостите , последнююю самую навороченную а главное САМУЮ Понятную версию на MINING ))) нужно для сервера DRV ) со всеми примочками и обрасываниями левых руд ))) ну если не трудно THX !))))

Re: MinIng FFFFFFFFFIIIIINAAALLLLLLLLL! :)

Posted: 2004-11-10 01:25:38
by Leks
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]
### 8)Убыстрен рекол по руне(от ПК). [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.)
### ]![ Внимание руна должна лежать в стандартном положении(как продается, только замарканная). ]![
### При появлении пк,прозвучит сигнал-
### uo.PlayWav("D:\Ultima Online\Injection\Lumb Sound\humiliation.wav")
### - Здесь можете сменить чтобы был звук при появлении ПК.
### чар автоматически телепортнется к сундуку.
### При этом выложит всю руду в сундук и будет "ждать"
### время которое вы указали в переменной - var WaitTime=18000.
### Чар подождет указанное время а потом портанется обратно, встанет в хайд и продолжит копать.
###
######################################################
### Функция Вторая - "Пауза при Выкапывании Элема" ###
######################################################
### Этот режим соответственно отвечает за Паузу при выкапывании Злементала.
### Включается переменной var ElementalPause=1 ## 1 - Включить паузу при выкапывании Элементала, 0 - выключить.
### То есть если ElementalPause=1 скрипт будет вставать на паузу.
###
### При паузе:
### Поставте переменную ElementalPause равную 1 (ElementalPause=1).
### Если чар выкопает элема,то прозвучит сигнал который вы указали -
### uo.PlayWav("D:\Ultima Online\Injection\Lumb Sound\humiliation.wav")
### - Здесь можете сменить чтобы был звук при выкапывании Элементала.
### и скрипт встанет на паузу до того времени как вы ненапишите в игре "GO".
### После того как вы напишите "GO" чар продолжит копать.
###
####################################
### Функция Третья - "Реконнект" ###
####################################
### Этот режим соответственно отвечает за Реконнект при выкидывании с сервера.
### Включается переменной var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.
### То есть если Reconnect=1 чар будет реколиться при атаке.
###
### Реконнект происходит так:
### Поставте переменную Reconnect равную 1 (Reconnect=1).
### Если вдруг повиснет игровая сфера или вас выкинет по любой другой причине
### реконнектор законнектит вса на сервер автоматически.
### Пишется время дисконнекта и коннекта на сервер.
###
### Настройте скрипт под себя при помощи переменных.
###
#####################
### Патчи Вердаты ###
#####################
### Сдесь я приведу пару ссылок на патчи которые помогут вам копать:
###
### 1)cave floor - для тех кто предпочитает копать вручную, этот файл-патч отделяет тайлы в пещерах друг от друга,
### что приводит к более комфортабельному копанию.
### Линк(ссылка):
### www.drguild.fatal.ru/files/verdata/cavefloor.exe
###
### 2)clean dungeons - в пещерах и подземельях не виден всякий мусор, как то: кости, мусор, большая паутина,
### все сталагмиты заменены на маленькие и т.д.
### Линк(ссылка):
### www.drguild.fatal.ru/files/verdata/cleandungeons.exe
###
### 3)ore mod - большое количество руды (больше 4 шт.) выглядит как маленькая кучка (3 шт.),
### а изображение руды в количестве одной и двух штук уменьшено.
### Линк(ссылка):
### www.drguild.fatal.ru/files/verdata/ore.exe
###
### Все патчи проверены и протестены, но скрипт работает и без них, так что ставить или нет - это ваше решение.
###
### Удачи и приятного Мининга. 8)
#####################################################################
##################
### Переменные ###
##################
### var TryToHide=1 ## - 1 - Включить уход в хайд перед копанием, 0 - выключить(советую включить 8)).
### 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

Posted: 2004-11-10 01:27:55
by Leks
Надеюсь такой устроит ??? 8)

Re: MinIng FFFFFFFFFIIIIINAAALLLLLLLLL! :)

Posted: 2004-11-10 10:35:20
by BETEPAH
CHiC777 wrote:Привет всем )))

если не трудно опостите , последнююю самую навороченную а главное САМУЮ Понятную версию на MINING ))) нужно для сервера DRV ) со всеми примочками и обрасываниями левых руд ))) ну если не трудно THX !))))


А когдва ты у меня в гостях был не судьба ?

Posted: 2004-11-10 10:42:25
by Revenant
#############################################
# 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

Хммммммммм

Posted: 2004-11-11 13:17:59
by CHiC777
Все отлично последний скрипт очень хороший по описанию , ну так и не понял как его запускать , чтото не хочет ... Вроде запускаю "Start"
exec start он стоит у яшика нужного , Выбрасывает оры и медитируют вот и все , а дальше ? Почему не реколиться и т.д. , и еше путь к скипту мининг , к какому ?? PLz oпишите ... Буду очень признателен ..



WAITING FOR REPLY ..... Or po ICQ 52702571

Posted: 2004-11-11 13:36:04
by Revenant
брр... ничего не понял )

стартовая процедура - main
если еще не промарканы пещеры - multimark
должны быть созданны обьекты Mine...Mine4, Bank
если они в контейнере, контейнер нужно сначала открыть, в скрипте они в банке, он открывается произнесением "bank" (на Антаресе банки бездонные, очень удобно)