Page 1 of 1
эксплоужен, explosion, бомба, bomb
Posted: 2009-02-15 16:00:38
by wizardme
Code: Select all
; explosion on last target
; Hotkeys- Add new hotkey- Command ,exec exp
sub exp()
var i,k
uo.set('blocktargets', 1) ; выключаем отображение таргетов клиента
uo.deletejournal()
uo.useobject('0x74D73B0C') ;explosion potion (,info)
wait(100)
if uo.injournal("Select a target") then ; проверка
wait(2000) ; 2,7sec ; время до того, как кинуть банку
uo.target(0x00000004, 'lasttarget') ; вот тут скорее всего проблема
wait(100)
uo.set('blocktargets', 0) ; отблочиваем таргеты
wait(17000)
for i = 0 to 10 ; с этим отсчетом проблем нет
k=10-i
uo.print(str(k)) ; ots4et
wait(1000)
next
end if
uo.set('blocktargets', 0) ; поставит таргеты на место
end sub
Скрипт, собственно, юзает экспоужен бутылку, ждет определенное время и кидает ее в супостата. И все бы ничего, если бы скрипт не имел две пренепреятнейшие особенности, иногда вместо исполнения своих обязанностей скрипт или пишет You can't see that! (стоя напротив цели) в то время как кидается target(), либо, в крайнем случае, пишет Warning! Error in command после чего успешно взрывает владельца, при этом слайд эффектом идет заедание таргета, и приходится писать ,info и на чем- нибудь щелкать, чтобы эффект данный прошел.
Проблема судя по всему в uo.target(). Lasttargetkey 0x00000004 получен с помощью команды 0x00000004 uo.print(uo.getserial('lasttarget')).
Также хочу заметить, что от замены 'lasttarget' на 'laststatus' ничего не меняется.
В итоге мне хотелось бы узнать, что необходимо исправить в скрипте, чтобы он вел себя более вменяемо.
Posted: 2009-02-15 17:56:11
by Millerbeer
юзай бомбу не по ID, а по типу, серийник у всех предметов разный, то есть ты одну бомбу бахнул, у следующей уже серийник другой, и целиться попробуй чуть по другому
Code: Select all
; explosion on last target
; Hotkeys- Add new hotkey- Command ,exec exp
sub exp()
uo.deletejournal()
uo.usetype('0x????') ;explosion potion (,info) тут тип пропиши, в инфо следующая цифра после ID
uo.deletejournal()
repeat
wait(100)
until uo.injournal("Select a target") ; проверка
wait(2000) ; 2,7sec ; время до того, как кинуть банку
uo.waittargetobject('laststatus')
wait(17000)
for var i = 10 to 0 ; с этим отсчетом проблем нет
uo.print(str(i)) ; ots4et
wait(1000)
next
end sub
P.S. не тестил
Posted: 2009-02-15 18:01:55
by wizardme
Заменил на uo.usetype('0x0F0E','0x069A') , но все равно. Тем более не менялся id раньше, но юзтайп все равно лучше. Пока проблема сузилась до 'lasttarget' он почему- то глючит. То есть если предварительно спел кинуть по waittargetlast(), то скрипт вроде работает стабильно.
По waittargetobject задержку поставить, по крайней мере я так считаю, невозможно.
Posted: 2009-02-15 18:08:32
by Millerbeer
ну там ловушка стоит в ластстатус, на цель левой кнопкой мыши жмёшь и тащишь, чтоб ластстатус получить и потом скрипт запускаешь
Posted: 2009-02-15 18:42:07
by wizardme
Ничего не меняет.
Posted: 2009-02-15 18:47:30
by Millerbeer
А ты мой вариант пробуешь? или свой?
Posted: 2009-02-15 19:01:40
by wizardme
Millerbeer wrote:А ты мой вариант пробуешь? или свой?
У твоего есть одна небольшая проблема, waittarget должен использоваться до usetype по правилам.
Posted: 2009-02-15 19:04:14
by Millerbeer
по идее да, но на практике вроде пофиг, что ловушку ставишь до юза, что юзанешь, появится прицел, потом ставишь ловушку и она нормально срабатывает
Posted: 2009-02-15 19:29:19
by wizardme
Millerbeer wrote:по идее да, но на практике вроде пофиг, что ловушку ставишь до юза, что юзанешь, появится прицел, потом ставишь ловушку и она нормально срабатывает
Вовсе не пофиг, у тебя она работает потому что у тебя циклы. Первый раз у тебя ничего не выходит, а со второго раза цикл начинает работать, с эксплоуженами как с парашутом.
Проблема вроде определилась, каким- то образом сбивается ласттаргет, не смотря на то, что сериал таргета не меняется.
Каким- то образом если кастануть спел по waittargetlast до юза эксплоужена то все работает (пока как часы).
Каким- то образом если юзнуть скил с таргетом на цель (вместо спела), то все равно багует.
А значит необходимо эмулировать каст спела, желательно при этом его не кастуя и быстро это сделать.
Вопрос, как эмулировать каст спела или как еще можно добится желаемого результата?
Posted: 2009-02-15 20:20:07
by Millerbeer
Потестил у нас на шарде, у нас взрывчатка кидается на пол, поэтому пришлось мудрить с киркой и ласт тайлом, для чистоты эксперимента в начале скрипта впихнул канселтаргет и чр27, это чтоб ты не думал, что срабатывает не с первого, а со второго раза и выводы следующие:
если ты юзанул чегото и прицел появился, можешь сделать паузу, какую тебе надо, потом кинуть ловушку, какой-нить вейт таргет, всё замечательно сработает именно на первый прицел, не на второй не на третий не на 28, миф подтверждён

вот скрипт
Code: Select all
sub exp()
if uo.waiting() then
uo.canceltarget()
endif
if uo.targeting() then
uo.say(chr(27))
endif
uo.print('покажь цель')
uo.usetype('0x0E85')
while uo.targeting()
wait(300)
wend
wait(3000)
uo.usetype('0x0F0D','0x0B99')
uo.deletejournal()
repeat
wait(100)
until uo.injournal('Where do')
wait(1000) ; 2,7sec
uo.waittargettile('lasttile')
for var i=0 to 10
uo.print(str(10-i)) ; ots4et
wait(500)
next
end sub
Posted: 2009-02-15 20:51:05
by wizardme
Code: Select all
sub exp()
uo.useskill('Anatomy')
wait(500)
uo.waittargetobject('self')
end sub
У меня даже такой скрипт не работает.
Posted: 2009-02-15 21:57:46
by Millerbeer
ндя, такое и у меня не работает

Posted: 2009-02-15 22:35:47
by wizardme
Как объяснить, что этот скрипт работает,
Code: Select all
sub exp()
var i,k
if uo.waiting() or uo.targeting() then
uo.canceltarget()
uo.say(chr(27))
end if
uo.deletejournal()
uo.waittargetlast()
uo.cast('Poison')
repeat
wait(50)
until uo.injournal('eval_damage=')
uo.set('blocktargets', 1)
uo.usetype('0x0F0E','0x069A')
repeat
wait(50)
until uo.injournal('Select a target') or uo.injournal('You cannot use this yet!')
if uo.injournal("Select a target") then
wait(2600)
uo.target(0x00000004, 'lasttarget')
wait(100)
uo.set('blocktargets', 0)
wait(17000)
for i = 0 to 10
k=10-i
uo.print(str(k)) ; ots4et
wait(1000)
next
end if
uo.set('blocktargets', 0)
end sub
а этот не работает?
Code: Select all
sub exp()
var i,k
if uo.waiting() or uo.targeting() then
uo.canceltarget()
uo.say(chr(27))
end if
uo.deletejournal()
uo.waittargetlast()
uo.cast('Magic Arrow')
repeat
wait(50)
until UO.injournal('eval_damage=')
uo.set('blocktargets', 1)
uo.usetype('0x0F0E','0x069A')
repeat
wait(50)
until uo.injournal('Select a target') or uo.injournal('You cannot use this yet!')
if uo.injournal("Select a target") then
wait(2600)
uo.target(0x00000004, 'lasttarget')
wait(100)
uo.set('blocktargets', 0)
wait(17000)
for i = 0 to 10
k=10-i
uo.print(str(k)) ; ots4et
wait(1000)
next
end if
uo.set('blocktargets', 0)
end sub
Если я не ошибаюсь, отличие в скриптах только одно, в первом кастуется пойзон, во втором стрелка. Причем если вместо стрелки кастуется фаербол (тоже 3уровень магии как и пойзон), то все равно не работает.
То есть кастуется спел, а когда бутылку надо кидать пишет you can't see that.
Проверка проходила так- я реколился вторым чаром куда-нибудь и реколился обратно. Если в скрипте кастовался пойзон по нему, то потом кидалась бомба. Если кастовалась стрелка или фаербол, то you cant see that и бомба не кидалась.
Что это за полтергейст? И можно ли как нибудь без пойзона кидать экспоужен?
Posted: 2009-02-16 06:59:13
by Millerbeer
А если просто uo.lclick, юзанул бомбу, выдержал паузу и левый клик по цели
Posted: 2009-02-16 15:16:19
by wizardme
Millerbeer wrote:А если просто uo.lclick, юзанул бомбу, выдержал паузу и левый клик по цели
Что написать нужно в uo.click?
Сейчас кстати попробовал уошным ласттаргетом кидать бомбу, и нифига, не видит цель, хотя скилы и спелы работают. В чем то тут может быть проблема?
Posted: 2009-02-16 15:51:23
by Millerbeer
Не, uo.lclick не покатит, там аргументы ток координаты, указатели не принимаются, а какой именно уошный ласттаргет, что за скрипт вообще?
Posted: 2009-02-16 16:39:42
by wizardme
Millerbeer wrote:Не, uo.lclick не покатит, там аргументы ток координаты, указатели не принимаются, а какой именно уошный ласттаргет, что за скрипт вообще?
lasttarget в уо макросе