автотаргеты на инже все "через 1 место".
я свой писал при помощи файндтайп. в варках работает хорошо, но иногда сбивается из-за глючной работы findtype. это уже где-то обсуждалось на форуме, дело в том, что файндтайп иногда обнуляет сериал объектов, которые находит, и из-за этого пока не перезагрузишь уо файндтайп будет глючить на тот самый сериал. или бывает еще хуже - один из объектов "зависает" каким-то образом и файндтайп будет думать, что там до сих пор в той точке кто-то есть. Даже если ты среколишься, вернешься обратно - все равно. Это я заметил еще при использовании похожих фишек в скриптах на добычу.
Вот мой авто-таргет, которым я пользуюсь:
Code: Select all
sub Ignores()
; Игноры для поиска:
UO.Ignore('self','on')
UO.Ignore('Friend','on')
UO.Ignore('Friend2','on')
UO.Ignore('Friend3','on') ; вместо Friend1, Friend2, Friend3 пишем айди своих друзей и согильдицев.
end sub
sub AutoTarget() ; Авто-таргет на одного чувака. Хорошо для ПК и 1х1.
var a, i
var lastplayernum = 0
var maleplayernum = 0
var femaleplayernum = 0
var allplayernum = 0
var temp = 0
UO.Set('quiet','1')
uo.exec('set finddistance 25')
Ignores()
DIM Chars[2]
Chars[0] = '0x0190' ## - Тип male.
Chars[1] = '0x0191' ## - Тип female.
uo.findtype(Chars[0], '-1', '1')
maleplayernum = uo.findcount()
uo.findtype(Chars[1], '-1', '1')
femaleplayernum = uo.findcount()
allplayernum = maleplayernum + femaleplayernum
for a = 0 to 1 ## - Перебираем типы male/female.
uo.findtype(Chars[a], '-1', '1')
if allplayernum == 1 then
if UO.GetMaxHP('finditem') < 200 then ; проверка на хп, чтобы отсеивало вендоров.
UO.AddObject('MainTarget','finditem')
endif
else
if uo.findcount() > 0 then
temp = uo.findcount()
for i=0 to uo.findcount()
uo.findtype(Chars[a], '-1', '1')
UO.GetStatus('finditem')
if UO.GetMaxHP('finditem') < 200 then
lastplayernum = lastplayernum + 1
if lastplayernum < 5 then
UO.AddObject('AddTarget'+str(lastplayernum), 'finditem')
else
i = temp
endif
if lastplayernum == 1 then
UO.AddObject('MainTarget','finditem')
endif
UO.Ignore('finditem', 'on')
endif
next
endif
endif
next
UO.Set('quiet','0')
UO.Print("MainTarget: "+UO.GetName('MainTarget'))
UO.Click('MainTarget')
UO.IgnoreReset()
end sub
sub ChooseTarget1()
UO.Set('quiet','1')
UO.AddObject('MainTarget','AddTarget1')
UO.Set('quiet','0')
UO.Print("MainTarget: "+UO.GetName('MainTarget'))
UO.Click('MainTarget')
end sub
sub ChooseTarget2()
UO.Set('quiet','1')
UO.AddObject('MainTarget','AddTarget2')
UO.Set('quiet','0')
UO.Print("MainTarget: "+UO.GetName('MainTarget'))
UO.Click('MainTarget')
end sub
sub ChooseTarget3()
UO.Set('quiet','1')
UO.AddObject('MainTarget','AddTarget3')
UO.Set('quiet','0')
UO.Print("MainTarget: "+UO.GetName('MainTarget'))
UO.Click('MainTarget')
end sub
sub ChooseTarget4()
UO.Set('quiet','1')
UO.AddObject('MainTarget','AddTarget4')
UO.Set('quiet','0')
UO.Print("MainTarget: "+UO.GetName('MainTarget'))
UO.Click('MainTarget')
end sub
Пользоваться так:
Делаешь 5 биндов.
1) Основной бинд: "exec AutoTarget". Выполняет скрипт поиска, если находит одного вражеского персонажа - сразу берет его в MainTarget (у меня все скрипты на инжу заточены не под ласт таргет, а под объект MainTarget, который постоянно меняется этим скриптом или специальным, по таргету. Если находит больше одного вражеского персонажа, то берет первого попавшегося в MainTarget, записывает его в первый таргет AddTarget1, а также записывает 3 других в AddTarget2, AddTarget3, AddTarget4.
2) Дополнительный бинд: "exec ChooseTarget1". Выбирает первый таргет и записывает его в MainTarget.
3) Дополнительный бинд: "exec ChooseTarget2". Выбирает второй таргет и записывает его в MainTarget.
4) Дополнительный бинд: "exec ChooseTarget3". Выбирает третий таргет и записывает его в MainTarget.
5) Дополнительный бинд: "exec ChooseTarget4". Выбирает четвертый таргет и записывает его в MainTarget.
Как бы дело слишком специфичное, у каждого свои предпочтения... Такое лучше писать самому.