Ultima Online программы,советы,скрипты. Вторник, 14.05.2024, 17:50
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Скрипты [22]
Интересное Чтиво. (советы) [3]
Публикации пользователей [2]
Проверенные статьи переношу в основные разделы.

Главная » Статьи » Скрипты

Арчери
Итак со скриптом от Асканели я помоч несмогу т.к. сам им не пользовался.





#############################################################################

#################### Train Archery crafted by Askaneli ####################
#################### Шард DRW (http://www.drw.ru) ####################
#################### Отдельное спасибо за наводку Guesst ####################
#################### Отдельное спасибо за модули Sfagnum ####################
#############################################################################



Var RejimSC=2 ; Режим работы скрипта, 1 - арчер, 2 - кастующий
Var Sunduk='0x4029B845' ; ИД сундука где все ресурсы, луки и стрелы, реги для вортекса или скролы для вортекса, кормёжка для чаров
Var xVortex='1255',yVortex='745',zVortex='251' ; Координаты куда кастуем вортекса, не далее 2х тайлов от берега, а то стрелы не достаёт упавшие
Var TBow='0x13B1' ; Тип оружия которое будем использовать, лук типа сча

## Запускаемый модуль

sub main()
uo.exec("filterspeech clear")
uo.exec("filterspeech off")
uo.exec("set finddistance 3")
uo.sayu(".detail 0")
uo.useobject(Sunduk)
uo.useobject('backpack')
wait(1000)
uo.exec("exec main0"+STR(RejimSC))
uo.Exec('terminate Reconnector')
wait(1000)
uo.Exec('exec Reconnector')
wait(1000)
end sub

## Модуль арчера

Sub main01()
var Vortex='0x40043143',check = false
var arN,arT,arE,qV = 0
var sk=uo.skillval("Archery",1)

uo.exec("warmode 1")
arN = uo.count('0x0F3F','0x0000')
arE = arN
while not uo.dead()
if uo.IsNPC(Vortex) then ## Есть вортекс, просто следим за количеством стрел и наличием лука
if uo.skillval("Archery",1) == 1000 then
uo.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" YES!!! GM Archery!!!")
uo.closeuo()
end if
if uo.count('0x0F3F','0x0000')<50 then ; Стрелы, пополняем из сундука
arT = uo.count('0x0F3F','0x0000')
uo.findtype('0x0F3F','0x0000',Sunduk)
Cheklag()
uo.moveitem('finditem','100','backpack')
wait(1000)
arE = arE + uo.count('0x0F3F','0x0000')-arT
end if
if uo.GetGraphic(uo.ObjAtLayer('Lhand'))<>TBow then ; Оружие в руке, при отсутствии берём из сундука
uo.findtype(TBow,'-1','backpack')
if uo.findcount()>0 then
uo.usetype(TBow)
wait(1000)
else
uo.findtype(TBow,'-1',Sunduk)
Cheklag()
uo.moveitem('finditem','1','backpack')
wait(1000)
uo.usetype(TBow)
wait(1000)
end if
end if
if not check then
check = true
qV = qV + 1
end if
else ## Нету вортекса, ищем следующего, попутно подбираем стрелы в пак с земли. Пишем отчётик о состоянии скила в лог. Кушаем до полного.
if check then
if sk <> uo.skillval("Archery",1) then
uo.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" ::на поднятие скила потратил " + str(arE-ArN) + ", потребовалось " + str(qV) + " вортексов, состояние скила арчери - "+STR(uo.skillval("Archery",1)/10))
arN = uo.count('0x0F3F','0x0000')
arE = arN
qV = 0
sk = uo.skillval("Archery",1)
end if
Eda()
check = false
end if
uo.findtype('0x000D','0x000D','ground')
if uo.findcount()>0 then
Vortex=uo.getserial('finditem')
UO.attack(Vortex)
end if
end if
wait(1000) ; Опрос состояния каждую секунду
if uo.injournal('SkokaAR') then
uo.deletejournal()
uo.say(STR(uo.skillval("Archery",1)/10))
end if
wend
uo.closeuo()
end sub

## Модуль кастующего

Sub main02()
var Vortex=''
var i
dim ResursCast[5]

ResursCast[1]='0x1F66' ## Energy Vortex Scroll
ResursCast[2]='0x0F7B' ## BM
ResursCast[3]='0x0F7A' ## BP
ResursCast[4]='0x0F86' ## MR
ResursCast[5]='0x0F88' ## NS

uo.exec("warmode 0")

uo.findtype('0x000D','0x000D','ground') ; Стартовый поиск вортекса, на всякий случай ...
if uo.findcount()>0 then
Vortex=uo.getserial('finditem')
end if

while not uo.dead()
if not uo.IsNPC(Vortex) then ## Нету вортекса, кастуем его что бы был , если есть кому качать арчери, ну и реги за одно пополняем и кушаем, чёб голодным не был чар
if ChekArcher() then
while not castuni(40,'0x1F66','Energy Vortex')
for i=2 to 5
if uo.count(ResursCast[i],'0x0000')==0 then
uo.findtype(ResursCast[i],'0x0000',Sunduk)
Cheklag()
if uo.findcount()>0 then
uo.moveitem('finditem',str(10-uo.count(ResursCast[i],'0x0000')),'backpack')
wait(1000)
end if
end if
next
wend
uo.findtype('0x000D','0x000D','ground')
if uo.findcount()>0 then
Vortex=uo.getserial('finditem')
for i=2 to 5
if uo.count(ResursCast[i],'0x0000')<10 then
uo.findtype(ResursCast[i],'0x0000',Sunduk)
Cheklag()
if uo.findcount()>0 then
uo.moveitem('finditem',str(10-uo.count(ResursCast[i],'0x0000')),'backpack')
wait(1000)
end if
end if
next
Eda()
ToMedit()
end if
end if
end if
wait(1000) ; Опрос состояния каждую секунду
if uo.mana==uo.int then
ToHide()
end if
if uo.injournal('Stop Aaz 3472') then
uo.deletejournal()
uo.closeuo()
end if
uo.findtype('0x0F3F','0x0000','ground')
if uo.findcount()>0 then
##Cheklag()
uo.moveitem('finditem','-1',Sunduk)
wait(1000)
end if
wend
uo.closeuo()
end sub

## Вспомогательные модули

Sub ChekArcher()
var i
Dim Archers[5]

Archers[1]=''
Archers[2]=''
Archers[3]=''
Archers[4]=''
Archers[5]=''

for i=1 to 5
if uo.IsNPC(Archers[i]) then
if Archers[i]<>uo.getserial('self') then
return true
end if
end if
next
return false
end sub

Sub Eda()
if uo.count('0x097B','0x0000')<50 then ## Жрачка, кушаем до изнеможения
uo.findtype('0x097B','0x0000',Sunduk)
if uo.findcount()>0 then
Cheklag()
uo.moveitem('finditem',STR(50-uo.count('0x097B','0x0000')),'backpack')
wait(1000)
end if
end if

uo.deletejournal()
repeat
if uo.count('0x097B','0x0000')==0 then
return
end if
uo.usetype('0x097B','0x0000')
wait(1000)
until uo.injournal("You are stuffed!") or uo.injournal("You can't think of a way to use that item.")
end sub

Sub Cheklag()
UO.DeleteJournal()
UO.Click('backpack')
Repeat
Wait(10)
Until UO.InJournal("backpack")
end sub

Sub ToMedit()
while uo.mana<40
uo.warmode(0)
uo.deletejournal()
uo.useskill('Meditation')
repeat
wait(10)
until uo.injournal("You lose your concentration") or uo.injournal("You are at peace.") or uo.mana>40
wend
end sub

Sub ToHide()
while not uo.hidden()
uo.warmode(0)
uo.DeleteJournal()
uo.useskill("Hiding")
repeat
wait(10)
until UO.InJournal("You have hidden yourself well") or UO.InJournal("You can't seem to hide here.") or UO.InJournal("You are preoccupied with thoughts of battle.") or uo.dead()
if UO.InJournal("You are preoccupied with thoughts of battle.") then
uo.warmode(0)
end if
if uo.dead() then
return
end if
wend
end sub

Sub castuni(minMANA,sType,cName)
var t = UO.Timer(),m = UO.MANA
uo.exec("warmode 0")
repeat
UO.FindType(sType,-1,'my')
If UO.findcount()>0 then
if uo.mana<(minMANA/2) then
ToMedit()
end if
m = UO.MANA
uo.DeleteJournal()
uo.waittargettile('400',xVortex,yVortex,zVortex)
UO.UseObject('finditem')
else
if uo.mana<minMANA then
ToMedit()
end if
m = UO.MANA
uo.DeleteJournal()
uo.waittargettile('400',xVortex,yVortex,zVortex)
uo.cast(cName)
end if
t = UO.Timer()
repeat
wait(10)
until IsMyOwn('You have interrupted') or IsMyOwn(uo.getname()+': The spell fizzles.') or IsMyOwn('You lack') or t+200<uo.Timer() or m > UO.MANA
wait(500)
if IsMyOwn('You lack') then
return false
end if
until not (IsMyOwn('You have interrupted') or IsMyOwn(uo.getname()+': The spell fizzles.'))
return true
end sub

Sub IsMyOwn(msgSTR)
if not UO.InJournal(msgSTR) then
return false
end if
if msgSTR == Left(UO.Journal(UO.InJournal(msgSTR)-1),len(msgSTR)) then
return true
else
return false
end if
end sub

## Модуль реконекта

Sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (uo.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(110000) # WorldSave Protection
uo.Say('')
Wait(5000)
uo.Say('')
Wait(5000)
uo.Say('')
Wait(5000)
uo.LDblClick(357,164)
uo.LClick(616,459)
Wait(5000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then
UO.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" - "+"Упс. Ребут типа !!!")
uo.Exec('terminate main01')
uo.Exec('terminate main02')
wait(5000)
uo.RClick(196,193)
wait(2000)
uo.RClick(196,193)
wait(2000)
uo.RClick(196,193)
wait(2000)
uo.RClick(196,193)
wait(2000)
uo.Exec('exec main')
wait(5000)
RFlag = 1
ReconnectTime = '0'
endif
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
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







Категория: Скрипты | Добавил: cornor (25.03.2008)
Просмотров: 1505 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Форма входа

Поиск

Друзья сайта

Статистика

Copyright MyCorp © 2024 Сделать бесплатный сайт с uCoz