Page 1 of 1
Правка скрипта на TargetNext из Клиента.
Posted: 2014-10-26 06:56:44
by Mimiks
Здаравия желаю. Имеется скрипт, суть скрипта:
Юзаем кнопку забинженую в клиенте на TargetNext, проверяем статус цели.
Проверяем не NPC ли цель, если цель Нпс, то выводим сообщение о пропуске Нпс и юзаем кнопку из клиента еще раз.
Если же цель не Нпс, то выводим сообщение что цель зафиксирована и запускаем скрипт AttackStat():
В этом скрипте делает атаку по последнему статусу.
Проблема в том что в скриптинге не силен. Не могу решить повторение нажатия кнопки в местах отмеченных ***.
Буду очень благодарен за помощь. Возможно есть какие то пожелания или дополнения.
Заранее благодарю.
Code: Select all
Sub tnext() # Юзаем кнопку TargetNext из клиента, проверяем не НПС ли в таргете.
# start: ***
uo.press(45)
wait(500)
uo.set('lasttarget','laststatus')
if uo.isNPC('laststatus') then
uo.print('skip NPC...')
# goto start ***
else
uo.print('targeting ok')
wait(100)
AttackStat()
end if
AttackStat()
end sub
###
###
Sub AttackStat() # Атаковать по последнему статусу
if uo.GetNotoriety("laststatus")>2 then
uo.print("attaking murderer "+uo.GetName("laststatus"))
uo.attack("laststatus")
#uo.cast("Strike","laststatus")
end if
end sub
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-10-26 08:58:34
by Juicy Fruit
Оно определяет не НПС/Игрок, а Существо/Предмет.
Если ты все 'uo.isNPC' пропустишь - у тебя не останется чаров для выбора.
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-10-26 09:12:41
by Mimiks
Juicy Fruit wrote:Оно определяет не НПС/Игрок, а Существо/Предмет.
Если ты все 'uo.isNPC' пропустишь - у тебя не останется чаров для выбора.
Хмм. А есть идеи через какую команду реализовать проверку на Нпс ???
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-10-26 14:15:07
by Mimiks
Хорошо можно пойти другим путем я так понимаю можно не чекать Нпс или Нпс а скажем : uo.GetNotoriety("laststatus")<2 и если Статус больше 2 то AttackStat() а если меньше то проигрывало бы uo.press(45). Как реализовать подскажите.
Code: Select all
Sub tnext()
# uo.GetNotoriety("laststatus")<2 then *** Куда ?
# if *** then # Оно надо ?
uo.press(45) #
wait(500) # Надо что бы эта чать повторялась если uo.GetNotoriety("laststatus")<2
uo.set('lasttarget','laststatus') #
# else *** ?
# end if *** ?
uo.print("Target "+uo.GetName("laststatus")) #
wait(100) # А вот эта часть должна проигрываться если uo.GetNotoriety("laststatus")>2
AttackStat() #
end sub
###
###
Sub AttackStat()
if uo.GetNotoriety("laststatus")>2 then
uo.print("attaking murderer "+uo.GetName("laststatus"))
uo.attack("laststatus")
#uo.cast("Strike","laststatus")
end if
end sub
Дайте подсказку хоть чер что реализовать ? repeat - until ? while - wend ?
Тоесть вся суть тыкаем кнопку через уо клиент на Таргет некст если статус таргета <2, тоесть (Серый, криминал, вражеская гильда, мурдер), то еще раз прокликиваем кнопку в клиенте.
А если же статус таргета >3 то
uo.print("Target "+uo.GetName("laststatus"))
wait(100)
AttackStat()
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-10-26 14:21:10
by Juicy Fruit
Code: Select all
var FindDistance=20
var TargetNextDepth=1 #На сколько углубляться в поисковик таргета? (Рекурсия)
var AutoRefresh=1 #Автообновление листа
sub autostart()
#Твой код автостарта...
InitGlobals()
#Это для более шустрой работы скрипта
#Можно проверять глобалки из самого скрипта на таргет,
#но смысл? лишнее время на обработку кода
end sub
sub TargetNext()
TargetNext(AutoRefresh,TargetNextDepth)
wait(50)
end sub
Sub InitGlobals()
uo.SetGlobal('FoundPlayers','0')
uo.SetGlobal('FoundPointer','0')
end sub
Sub FriendListIgnore()
uo.Ignore('self')
#Вписать ID чаров для игнора
#Можно заменить на массив ИДшек, как удобнее...
uo.Ignore('0x003BBE99')
uo.Ignore('0x004EDB32')
uo.Ignore('0x00569E31')
end sub
Sub TargetNext(Refresh,Recurse)
dim Types[2]
Types[0]='0x0190'
Types[1]='0x0191'
var i=0,ID=''
var FoundPlayers=val(uo.GetGlobal('FoundPlayers'))
var FoundPointer=val(uo.GetGlobal('FoundPointer'))
if FoundPlayers>0 then
if FoundPointer>=FoundPlayers then
uo.Print('End of found list. Refresh list.')
InitGlobals() #Сброс вектора объектов при достижении конца
if Recurse>0 then
TargetNext(0,Recurse)
endif
return
endif
if Refresh then
uo.SetGlobal('FoundPointer','0')
ID=uo.GetGlobal('FoundPlayersArray['+str(FoundPointer)+']')
uo.IgnoreReset()
FriendListIgnore()
uo.Set('finddistance',str(FindDistance))
FoundPlayers=0
for i=0 to 1
uo.FindType(Types[i],-1,'ground')
while uo.FindCount()
if uo.GetSerial('finditem')==ID then
uo.SetGlobal('FoundPointer',str(FoundPlayers))
endif
uo.SetGlobal('FoundPlayersArray['+str(FoundPlayers)+']',uo.GetSerial('finditem'))
FoundPlayers=FoundPlayers+1
uo.Ignore('finditem')
uo.FindType(Types[i],-1,'ground')
wend
next
uo.SetGlobal('FoundPlayers',str(FoundPlayers))
TargetNext(0,Recurse)
return
endif
for i=FoundPointer to FoundPlayers-1
ID=uo.GetGlobal('FoundPlayersArray['+str(i)+']')
if uo.GetDistance(ID)<=FindDistance then
uo.Attack(ID)
uo.SetGlobal('FoundPointer',str(i+1))
return
endif
next
uo.Print('End of found list. Refresh list.')
InitGlobals() #Сброс вектора объектов при достижении конца
if Recurse>0 then
TargetNext(0,Recurse)
endif
else
uo.IgnoreReset()
FriendListIgnore()
uo.Set('finddistance',str(FindDistance))
FoundPlayers=0
for i=0 to 1
uo.FindType(Types[i],-1,'ground')
while uo.FindCount()
uo.SetGlobal('FoundPlayersArray['+str(FoundPlayers)+']',uo.GetSerial('finditem'))
FoundPlayers=FoundPlayers+1
uo.Ignore('finditem')
uo.FindType(Types[i],-1,'ground')
wend
next
uo.SetGlobal('FoundPlayers',str(FoundPlayers))
if Recurse>0 then
TargetNext(0,Recurse-1)
endif
endif
end sub
Вот что я когда-то писал, без участия клиентского макроса. Насчет работоспособности не буду ничего говорить, писал не себе, но в период тестов глюков не было, чем всё кончилось - не знаю.
Может поможет чем-то, посмотреть как реализован поиск.
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-10-26 14:54:10
by Mimiks
Вот что я когда-то писал, без участия клиентского макроса. Насчет работоспособности не буду ничего говорить, писал не себе, но в период тестов глюков не было, чем всё кончилось - не знаю.
Может поможет чем-то, посмотреть как реализован поиск.
Спс попробую разобраться.
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-11-03 15:29:27
by Mimiks
Juicy Fruit wrote:Вот что я когда-то писал, без участия клиентского макроса. Насчет работоспособности не буду ничего говорить, писал не себе, но в период тестов глюков не было, чем всё кончилось - не знаю.
Может поможет чем-то, посмотреть как реализован поиск.
Как я понял этот скрипт ищет вокруг существ по типу. Но проблема в том что под этот тип подпадают и Нпс и синие игроки. И он сразу атачит. Для пк может вполне сносно, но не для добропорядочных игроков. Как запилить сюда еще проверку на карму цели. по типу
Code: Select all
if uo.GetNotoriety("laststatus")>2 then
uo.print("attaking murderer "+uo.GetName("laststatus"))
uo.attack("laststatus")
И еще так же проблема в том что этот скрипт как я понял ищет только тип игроков - тоесть всякие монстры и прочее под этот тип не подпадают. С одной стороны хорошо - так как заточено под ПвП. С другой столоны было бы прикольно запилить сюда еще и мобов.
Хотя опять же если бы работало на ура чисто для пвп тоже было бы знатно. Тогда можно было бы для пвп использовать этот скрипт а для ПвЕ использовать руки + этот скрипт
Code: Select all
Sub AttackStat()
# uo.press(45)
Wait(100)
if uo.GetNotoriety("laststatus")>2 then
uo.print("attaking murderer "+uo.GetName("laststatus"))
uo.attack("laststatus")
#uo.cast("Strike","laststatus")
end if
end sub
Re: Правка скрипта на TargetNext из Клиента.
Posted: 2014-11-04 01:58:20
by Juicy Fruit
Для проверки на синего используй
Если желаешь искать всё живое
Code: Select all
uo.FindType(-1, -1, 'ground')
if uo.findcount() and uo.isnpc('finditem') then
нашлось что-то живое
endif