Спарринг
Moderators: Murderator+, Murderator
Re: Спарринг
Скрипт класный Но вот такой прикол он вчера работал! Сегодня уже неработает!
Проблема в ходилке пишет вот такой бред
Инвайл намберс оф аргумен -Валк
Проблема в ходилке пишет вот такой бред
Инвайл намберс оф аргумен -Валк
Re: Спарринг
Destruction wrote:Собсно скрипт подходит, отходит, хилит.
Инструкция:
0. Включите режим Always Run, иначе будут проблемы!
Можно вопрос а где этот режим нужно выбирать ?
Re: Спарринг
Nightmare wrote:Destruction wrote:Собсно скрипт подходит, отходит, хилит.
Инструкция:
0. Включите режим Always Run, иначе будут проблемы!
Можно вопрос а где этот режим нужно выбирать ?
Options в клиенте.
Я тоже своё творение выложу, без ходилки правда... Ходилку можете из предыдущего скрипта выдернуть, или поискать подХодящую.
Найдёте чего лишнего, смело препарируйте, мне лень...

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
Начинающий скриптер.
-
- 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')[b]OR Uo.injournal('mummy'))
wait(200)
wend[/b]
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')[b]OR Uo.injournal('mummy'))
wait(200)
wend[/b]
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
UO.Timer()>LastTimer+150
примерно 10-15 секунд. Если сообщение не появляется то цикл отключается.
Для кастов и лечения UO.Timer()>LastTimer+50 достаточно.