Спарринг
Moderators: Murderator+, Murderator
Re: Спарринг
Скрипт класный Но вот такой прикол он вчера работал! Сегодня уже неработает!
Проблема в ходилке пишет вот такой бред
Инвайл намберс оф аргумен -Валк
Проблема в ходилке пишет вот такой бред
Инвайл намберс оф аргумен -Валк
Re: Спарринг
Можно вопрос а где этот режим нужно выбирать ?Destruction wrote:Собсно скрипт подходит, отходит, хилит.
Инструкция:
0. Включите режим Always Run, иначе будут проблемы!
Re: Спарринг
Options в клиенте.Nightmare wrote:Можно вопрос а где этот режим нужно выбирать ?Destruction wrote:Собсно скрипт подходит, отходит, хилит.
Инструкция:
0. Включите режим Always Run, иначе будут проблемы!
Я тоже своё творение выложу, без ходилки правда... Ходилку можете из предыдущего скрипта выдернуть, или поискать подХодящую. 
Найдёте чего лишнего, смело препарируйте, мне лень... 
Code: Select all
###############################################################
### Переменные ###############################################
###############################################################
var enemy, minlife, x, x1, y, y1, n
enemy='0xID-ENEMY' ; ID оппонента
minlife=90 ; Минимальное количество жизни при котором отступаем
x=1838 ; WayPoint-a X - точка отхода координата X
y=795 ; WayPoint-a y - точка отхода координата Y
x1=1836 ; WayPoint-b X - точка встречи координата X
y1=794 ; WayPoint-b y - точка встречи координата Y
n=7 ; Направление оппонента при бегстве
;0 - Север (верхний правый угол экрана)
;1 - Северо-восток (правый центр экрана)
;2 - Восток (нижний правый угол экрана)
;3 - Юго-Восток (нижний центр экрана)
;4 - Юг (нижний левый угол экрана)
;5 - Юго-Запад (левый центр экрана)
;6 - Запад (верхний левый угол экрана)
;7 - Северо-Запад (верхний центр экрана)
###############################################################
### Начальная функция ########################################
###############################################################
sub main()
uo.print(str(uo.GetDir(enemy))) ; Покажет текущее направление оппонента
uo.setarm('arm')
if uo.life==uo.str then
uo.exec('exec ataka')
else
uo.exec('exec bs')
endif
end sub
###############################################################
### Функция атаки ########################################
###############################################################
Sub ataka()
var dist
uo.click(enemy)
Walker(x1,y1,0) ; Ходилка по координатам :)
while uo.getdistance(enemy)>2
wait(200)
wend
uo.arm('arm')
uo.warmode('1')
uo.attack(enemy)
uo.warmode('1')
uo.attack(enemy)
wait(200)
while uo.life>minlife
dist=uo.getdistance(enemy)
if uo.getdir(enemy)==n || uo.getdistance(enemy)>2 then
uo.warmode('0')
uo.warmode('0')
uo.exec('terminate all; exec bs')
endif
wait(200)
wend
uo.exec('terminate all; exec main')
end sub
###############################################################
### Healing ###############################################
###############################################################
Sub bs()
uo.warmode('0')
uo.warmode('0')
Walker(x,y,0) ; Ходилка по координатам :)
uo.warmode('0')
uo.waittargettype('0x1008')
uo.usetype('0x0E20')
wait(3000)
repeat
ws()
uo.BandageSelf()
wait(3500)
if uo.count('0x0E21')<1 then
uo.waittargettype('0x1008')
uo.usetype('0x0E20')
wait(3000)
endif
until uo.life==uo.str
uo.arm('arm')
wait(2000)
CheckLag()
main()
end sub
###############################################################
### Проверка на сохранение мира ############################
###############################################################
Sub ws()
if uo.injournal("world is saving now...") then
while not uo.injournal("world data saving")
wait(100)
wend
endif
CheckLag()
end sub
###############################################################
### CheckLag() ###########################################
###############################################################
Sub CheckLag()
UO.DeleteJournal() ; вытрем все сообщения в журнале (Inj, но не клиента)
UO.Click('backpack') ; одиночный клик по вашему backpack
; ждем сообщения в журнале
repeat
wait(100)
until UO.InJournal("backpack")
; этот цикл завершится, если это сообщение появится.... замечу "Backpack" и "backpack"
; регистр важен Пишите точно что ждете
end sub
########################################## Ходилка ##########################
;
;ТУТ ДОЛЖНА БЫТЬ ФУНКЦИЯ ХОДИЛКИ!!!!
;
########################################## Конец ходилки ##########################
Last edited by ADEPT_ABP on 2009-01-21 19:43:13, edited 1 time in total.
Играю на drw.ru
Использую инжект 505.18 VeNd0r
Начинающий скриптер.
Использую инжект 505.18 VeNd0r
Начинающий скриптер.
-
heroineinc
- Posts: 2
- Joined: 2009-01-19 18:18:56
Как-то не догоняю, чего именно ты хочешь?heroineinc wrote:...можно сделать так что бы они сразу хилились, а расходились только тогда когда хп половина ?
Дерутся они и сразу хилятся? А если не получается - то расходятся? Если так, то никаких бинтов не хватит, и расходятся они тогда, когда жизнь будет меньше указанного тобою значения. Поставишь 20, будут расходиться если жизнь меньше 20. Для чего расходятся? Чтобы не упасть, и зря бинты не тратить.
P.S. Надо бы ещё, проверку сделать на дисконнект оппонента... Лень.
Играю на drw.ru
Использую инжект 505.18 VeNd0r
Начинающий скриптер.
Использую инжект 505.18 VeNd0r
Начинающий скриптер.
Держи ссылку, сори только до компа долезADEPT_ABP wrote:Не вижу у Destruction-a подписи...
http://ultimasoft.ru/tools/codesweeper.php
Re: Спарринг
Сделал небольшие дополнения. Теперь ждет результата прикладывания бандажки.
sub WarTraining()
uo.setarm('current armor')
var x = uo.getX()
var y = uo.getY()
var time = uo.timer(), tx, ty
uo.addObject('opponent')
while uo.targeting()
wait(200)
wend
uo.addObject('bandages')
while uo.targeting()
wait(200)
wend
if uo.getX()-uo.getX('opponent') > 1 || uo.getX('opponent')-uo.getX() > 1 || uo.getY()-uo.getY('opponent') > 1 || uo.getY('opponent')-uo.getY() > 1 then
uo.print('Персонажи должны стоять рядом!')
return
endif
if uo.getX() > uo.getX('opponent') then
tx = x+1
ty = y
else
if uo.getX('opponent') > uo.getX() then
tx = x-1
ty = y
else
if uo.getY() > uo.getY('opponent') then
tx = x
ty = y+1
else
if uo.getY('opponent') > uo.getY() then
tx = x
ty = y-1
else
uo.print('Вы должны быть на расстоянии!!')
return
endif
endif
endif
endif
uo.warmode(true)
uo.attack('opponent')
repeat
if uo.getHP() < uo.getMaxHP()/2 then
Walk(tx,ty)
uo.warmode(false)
uo.waittargetobject('self')
uo.usetype(uo.getGraphic('bandages'))
repeat
Uo.deletejournal()
While NOT (Uo.injournal('bloody') OR Uo.Injournal('barely') OR Uo.injournal('mummy'))
wait(200)
wend
uo.waittargetobject('self')
uo.usetype(uo.getGraphic('bandages'))
wait(1000)
until (uo.getHP() == uo.getMaxHP()) OR Uo.injournal('mummy')
uo.arm('current armor')
Walk(x,y)
uo.warmode(true)
uo.attack('opponent')
endif
if uo.getHP('opponent') < uo.getMaxHP('opponent')/2 then
Walk(tx,ty)
uo.warmode(false)
uo.waittargetobject('opponent')
uo.usetype(uo.getGraphic('bandages'))
repeat
Uo.deletejournal()
While NOT (Uo.injournal('bloody') OR Uo.Injournal('barely')OR Uo.injournal('mummy'))
wait(200)
wend
uo.waittargetobject('opponent')
uo.usetype(uo.getGraphic('bandages'))
wait(1000)
until (uo.getHP('opponent') == uo.getMaxHP('opponent')) OR Uo.injournal('mummy')
uo.arm('current armor')
Uo.Arm('0x41471AAF')
Walk(x,y)
uo.warmode(true)
uo.attack('opponent')
endif
if uo.timer() > time + 9000 then
time = uo.timer()
UO.UseType('0x097B','0x0000')
Uo.UseType('0x1B78','0x0000')
endif
wait(700)
until uo.dead()
endsub
sub WarTraining()
uo.setarm('current armor')
var x = uo.getX()
var y = uo.getY()
var time = uo.timer(), tx, ty
uo.addObject('opponent')
while uo.targeting()
wait(200)
wend
uo.addObject('bandages')
while uo.targeting()
wait(200)
wend
if uo.getX()-uo.getX('opponent') > 1 || uo.getX('opponent')-uo.getX() > 1 || uo.getY()-uo.getY('opponent') > 1 || uo.getY('opponent')-uo.getY() > 1 then
uo.print('Персонажи должны стоять рядом!')
return
endif
if uo.getX() > uo.getX('opponent') then
tx = x+1
ty = y
else
if uo.getX('opponent') > uo.getX() then
tx = x-1
ty = y
else
if uo.getY() > uo.getY('opponent') then
tx = x
ty = y+1
else
if uo.getY('opponent') > uo.getY() then
tx = x
ty = y-1
else
uo.print('Вы должны быть на расстоянии!!')
return
endif
endif
endif
endif
uo.warmode(true)
uo.attack('opponent')
repeat
if uo.getHP() < uo.getMaxHP()/2 then
Walk(tx,ty)
uo.warmode(false)
uo.waittargetobject('self')
uo.usetype(uo.getGraphic('bandages'))
repeat
Uo.deletejournal()
While NOT (Uo.injournal('bloody') OR Uo.Injournal('barely') OR Uo.injournal('mummy'))
wait(200)
wend
uo.waittargetobject('self')
uo.usetype(uo.getGraphic('bandages'))
wait(1000)
until (uo.getHP() == uo.getMaxHP()) OR Uo.injournal('mummy')
uo.arm('current armor')
Walk(x,y)
uo.warmode(true)
uo.attack('opponent')
endif
if uo.getHP('opponent') < uo.getMaxHP('opponent')/2 then
Walk(tx,ty)
uo.warmode(false)
uo.waittargetobject('opponent')
uo.usetype(uo.getGraphic('bandages'))
repeat
Uo.deletejournal()
While NOT (Uo.injournal('bloody') OR Uo.Injournal('barely')OR Uo.injournal('mummy'))
wait(200)
wend
uo.waittargetobject('opponent')
uo.usetype(uo.getGraphic('bandages'))
wait(1000)
until (uo.getHP('opponent') == uo.getMaxHP('opponent')) OR Uo.injournal('mummy')
uo.arm('current armor')
Uo.Arm('0x41471AAF')
Walk(x,y)
uo.warmode(true)
uo.attack('opponent')
endif
if uo.timer() > time + 9000 then
time = uo.timer()
UO.UseType('0x097B','0x0000')
Uo.UseType('0x1B78','0x0000')
endif
wait(700)
until uo.dead()
endsub
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...
Re: Спарринг
Проверка журнала без таймера на 80% обречена на сбой.
Re: Спарринг
Возможно. Но меня все время бесили надписи "подождите, прежде чем заняться..." и "вы уже используете бандажки". Добавил - стало лучше. Не утверждаю, что это панацея.Mirage wrote:Проверка журнала без таймера на 80% обречена на сбой.
Если есть желание и возможность - покажи, как им пользоваться (таймером).
Ведь хороший скрипт получается. Его отшлифовать - и в нетленку. )))
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...
Re: Спарринг
Если простой пример то вот:
UO.Timer()>LastTimer+150
примерно 10-15 секунд. Если сообщение не появляется то цикл отключается.
Для кастов и лечения UO.Timer()>LastTimer+50 достаточно.
Code: Select all
sub TinkKey()
var LastTimer
UO.DeleteJournal()
LastTimer=UO.Timer() ; <------
UO.WaitMenu ('Tinkering','Keys','Keys','Iron key' )
UO.Usetype( Instrum )
repeat
wait( 300 )
until UO.InJournal("You put|положили|fail|не удалось|You broke|сломали") or UO.Timer()>LastTimer+150 ; <------
end subпримерно 10-15 секунд. Если сообщение не появляется то цикл отключается.
Для кастов и лечения UO.Timer()>LastTimer+50 достаточно.
