Yoko

All sides of Injection
It is currently 2024-04-16 22:33:20

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 2014-10-26 06:56:44 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Здаравия желаю. Имеется скрипт, суть скрипта:
Юзаем кнопку забинженую в клиенте на TargetNext, проверяем статус цели.
Проверяем не NPC ли цель, если цель Нпс, то выводим сообщение о пропуске Нпс и юзаем кнопку из клиента еще раз.
Если же цель не Нпс, то выводим сообщение что цель зафиксирована и запускаем скрипт AttackStat():
В этом скрипте делает атаку по последнему статусу.
Проблема в том что в скриптинге не силен. Не могу решить повторение нажатия кнопки в местах отмеченных ***.
Буду очень благодарен за помощь. Возможно есть какие то пожелания или дополнения.
Заранее благодарю.

Code:
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


Top
   
PostPosted: 2014-10-26 08:58:34 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
uo.isNPC
Оно определяет не НПС/Игрок, а Существо/Предмет.
Если ты все 'uo.isNPC' пропустишь - у тебя не останется чаров для выбора.


Top
   
PostPosted: 2014-10-26 09:12:41 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Juicy Fruit wrote:
Code:
uo.isNPC
Оно определяет не НПС/Игрок, а Существо/Предмет.
Если ты все 'uo.isNPC' пропустишь - у тебя не останется чаров для выбора.

Хмм. А есть идеи через какую команду реализовать проверку на Нпс ???


Top
   
PostPosted: 2014-10-26 14:15:07 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Хорошо можно пойти другим путем я так понимаю можно не чекать Нпс или Нпс а скажем : uo.GetNotoriety("laststatus")<2 и если Статус больше 2 то AttackStat() а если меньше то проигрывало бы uo.press(45). Как реализовать подскажите.
Code:
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()


Top
   
PostPosted: 2014-10-26 14:21:10 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
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
Вот что я когда-то писал, без участия клиентского макроса. Насчет работоспособности не буду ничего говорить, писал не себе, но в период тестов глюков не было, чем всё кончилось - не знаю.
Может поможет чем-то, посмотреть как реализован поиск.


Top
   
PostPosted: 2014-10-26 14:54:10 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Quote:
Вот что я когда-то писал, без участия клиентского макроса. Насчет работоспособности не буду ничего говорить, писал не себе, но в период тестов глюков не было, чем всё кончилось - не знаю.
Может поможет чем-то, посмотреть как реализован поиск.

Спс попробую разобраться.


Top
   
PostPosted: 2014-11-03 15:29:27 
Offline

Joined: 2006-02-15 05:03:45
Posts: 23
Juicy Fruit wrote:
Вот что я когда-то писал, без участия клиентского макроса. Насчет работоспособности не буду ничего говорить, писал не себе, но в период тестов глюков не было, чем всё кончилось - не знаю.
Может поможет чем-то, посмотреть как реализован поиск.

Как я понял этот скрипт ищет вокруг существ по типу. Но проблема в том что под этот тип подпадают и Нпс и синие игроки. И он сразу атачит. Для пк может вполне сносно, но не для добропорядочных игроков. Как запилить сюда еще проверку на карму цели. по типу
Code:
if uo.GetNotoriety("laststatus")>2 then
      uo.print("attaking murderer "+uo.GetName("laststatus"))
      uo.attack("laststatus")

И еще так же проблема в том что этот скрипт как я понял ищет только тип игроков - тоесть всякие монстры и прочее под этот тип не подпадают. С одной стороны хорошо - так как заточено под ПвП. С другой столоны было бы прикольно запилить сюда еще и мобов.
Хотя опять же если бы работало на ура чисто для пвп тоже было бы знатно. Тогда можно было бы для пвп использовать этот скрипт а для ПвЕ использовать руки + этот скрипт
Code:
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


Top
   
PostPosted: 2014-11-04 01:58:20 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Для проверки на синего используй
Code:
uo.GetNotoriety("finditem")


Если желаешь искать всё живое
Code:
uo.FindType(-1, -1, 'ground')
if uo.findcount() and uo.isnpc('finditem') then
нашлось что-то живое
endif


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited