Page 1 of 1

нужно добавить

Posted: 2012-01-24 19:42:11
by rusa
проблема в том что типы совпадают и он бежит к челу который стоит за стеной
я так понимаю нужно добавить чтобы он ещё и по имени проверял UO.GetName


Code: Select all

var distance='10' # дистанция поиска мобов
   var corpser=1 # 1-резать труп # 0-не резать труп
   
sub main()
   var n, m, mob
   var tweapon=uo.getserial(uo.objatlayer('Rhand'))
   var tshield=uo.getserial(uo.objatlayer('Lhand'))
   
   Dim npc[10]
   npc[0]=1 # count
   npc[1]='0x0038'
   npc[2]=''
   npc[3]=''
   
   Dim loot[50]
   loot[0]=3 # count
   loot[1]='0x0F7E'
   loot[2]='0x0E76'
   loot[3]='0x0EED'
   
   uo.set('finddistance',distance)
   while 1
      for n=1 to npc[0]
         uo.findtype(npc[n],-1,'ground')
         if uo.findcount() then
            uo.useobject(tweapon)
            uo.useobject(tshield)
            wait(100)
            mob=uo.getserial('finditem')
            kill(mob)
            uo.useobject('lastcorpse')
            checklag()
            wait(1000)
            for m=1 to loot[0]
               while uo.getquantity('<'+loot[m])
                  uo.moveitem('<'+loot[m])
                  wait(700)
               wend
            next
            while uo.life<uo.str-20 and uo.count('0x0E21')
               uo.bandageself()
               wait(3500)
            wend
            if uo.count('0x0E20') then
               uo.waittargettype('0x1008')
               uo.usetype('0x0E20')
               wait(1000)
            endif
         endif
      next
      wait(1000)
   wend
endsub
sub kill(mob)
   var n
   checklag()
   for n=0 to 100
      uo.attack(mob)
      if uo.getdistance(mob)>1 then
         walkn(0,0,mob)
      endif
      if uo.injournal('Body of') then
         if corpser==1 then
            uo.waittargetobject('lastcorpse')
            wait(100)
            uo.usetype('0x0F51')
            wait(500)   
         endif
         return
      endif
      wait(1000)
   next
endsub

Re: нужно добавить

Posted: 2012-01-24 20:13:17
by ZeroDX
А что у однотипных npc разные имена?(как я понимаю это либо люди, либо орки какие-нибудь)
Если убиение сей твари производится в загоне, то проще ограничить по координатам. Допустим тварюгина координата x вне диапазона допустимых координатЪ (загон) [0;100] (края загона по координате х)

Code: Select all

mob=uo.getserial('finditem')
if uo.getx(mob) <= 100 and uo.getx(mob) >= 0 then
  if аналогичная проверка по у координате then
    kill(mob)
  else
    uo.ignore(mob)
  endif
else
  uo.ignore(mob)
endif

Поиск в журнале нашёл (sub kill()), а затирание строки из журнала нету.

Re: нужно добавить

Posted: 2012-01-24 21:05:49
by Scripts Writer
Боюсь, следующим сообщением будет "Парни, пишет 'Function аналогичная not found'".

Re: нужно добавить

Posted: 2012-01-25 00:54:43
by ZeroDX
ни кто и не заметил, что можно срезать пару строк :P

Code: Select all

mob=uo.getserial('finditem')
if uo.getx(mob) <= 100 and uo.getx(mob) >= 0 and uo.gety(mob) <= 100 and uo.gety(mob) >= 0 then
  kill(mob)
else
  uo.ignore(mob)
endif

Re: нужно добавить

Posted: 2012-01-26 21:25:46
by rusa
Отвечяю на поставленные вопросы

1) А что у однотипных npc разные имена? - Да! Допустим взять "Линч" и "Лорд Линч"
2) Если убиение сей твари производится в загоне - Да!
3) то проще ограничить по координатам - для меня не проще так-как немогу представить как это сделать
4) Поиск в журнале нашёл (sub kill()), а затирание строки из журнала нету. - работает без затирания


и ещё вот что хотелось бы добавить в эт скрипт

Code: Select all

Sub Stealth()
  var msg = 'have hidden|seem to hide', Time, Delay = 10
  While not UO.Hidden()
endif
    DelJournal(msg)
    Time = UO.Timer()
    UO.UseSkill('Hiding')
    Repeat
      Wait(100)
    Until UO.InJournal(msg) or UO.Hidden() or Time + Delay * 10 <= UO.Timer()
  Wend
Endsub

Re: нужно добавить

Posted: 2012-01-26 22:20:16
by Mirage
rusa wrote: 3) то проще ограничить по координатам - для меня не проще так-как немогу представить как это сделать

глаза подними - пример привели. надо поставить координаты углов загона

Re: нужно добавить

Posted: 2012-01-26 22:35:21
by rusa
тоесть вот так???

Code: Select all

if uo.getx(mob) <= 5360 and uo.getx(mob) >= 5367 and uo.gety(mob) <= 1353 and uo.gety(mob) >= 1344 then

Re: нужно добавить

Posted: 2012-01-26 23:05:45
by Nmy
что за скрипт? кто писал? что он делает?

когда я занималься ходилкой, давал время 20 секунд чтоб пройти к нпц, иначе улетал

Re: нужно добавить

Posted: 2012-01-26 23:21:14
by rusa
ого какие люди!!!!
у тебя же точь такойже фарм "моб"
точнее эт твой и есть

Re: нужно добавить

Posted: 2012-01-27 10:30:23
by ZeroDX

Code: Select all

Sub Stealth()
  var msg = 'have hidden|seem to hide', Time, Delay = 10
  While not UO.Hidden()
endif
    DelJournal(msg)
    Time = UO.Timer()
    UO.UseSkill('Hiding')
    Repeat
      Wait(100)
    Until UO.InJournal(msg) or UO.Hidden() or Time + Delay * 10 <= UO.Timer()
  Wend
Endsub

Откуда там endif? Добавлять нужно в ходилку, перед тем, как сделать шаг и после убийства моба. Ещё перед этим нужно отключать вармод, но это зависит от шарда, ибо есть такие, где в вармоде можно уходить в хайд). Ну и DelJournal() не забудь =).
Приятно видеть, что кто-то использует конкретно эту функцию :roll:
Наконец люди используют мои творения :cry:

Re: нужно добавить

Posted: 2012-01-27 10:59:50
by Nmy
viewtopic.php?f=20&t=15897

в скрипте walkn вроде таймер установлен?
If UO.GetDistance(Target)<2 OR LastTimer+100<UO.Timer() Then

не помню это 10 секунд или 100 секунд и он выходит

я это писал наверно лет 4 назад :oops:

Re: нужно добавить

Posted: 2012-01-27 11:02:05
by ZeroDX
10

Re: нужно добавить

Posted: 2012-01-27 12:59:48
by rusa
ZeroDX

до меня только сейчяс дощло только неуверен что координыты правильные указал . буду пробыват менять местами

покажи на что поменять или межу чем и чем нужно вставить

Code: Select all

mob=uo.getserial('finditem')
if uo.getx(mob) <= 5360 and uo.getx(mob) >= 5367 and uo.gety(mob) <= 1353 and uo.gety(mob) >= 1344 then
  kill(mob)
else
  uo.ignore(mob)
endif


с хайдом - стелс (пока ждёт респа)
тут понятно что долго возитя эт не надо
я проще сделаю
перед тем как бинты на себя кидать в ставлю While not UO.Hidden()

UO.DeleteJournal() есть в ходилке!!!
нестал полностью выкладывать скрипт посчитал ходилку ненужную

Re: нужно добавить

Posted: 2012-01-27 13:37:16
by ZeroDX

Code: Select all

var distance='10' # дистанция поиска мобов
   var corpser=1 # 1-резать труп # 0-не резать труп
   
sub main()
   var n, m, mob
   var tweapon=uo.getserial(uo.objatlayer('Rhand'))
   var tshield=uo.getserial(uo.objatlayer('Lhand'))
   
   Dim npc[10]
   npc[0]=1 # count
   npc[1]='0x0038'
   npc[2]=''
   npc[3]=''
   
   Dim loot[50]
   loot[0]=3 # count
   loot[1]='0x0F7E'
   loot[2]='0x0E76'
   loot[3]='0x0EED'
   
   uo.set('finddistance',distance)
   while 1
      for n=1 to npc[0]
         uo.findtype(npc[n],-1,'ground')
         if uo.findcount() then
            mob=uo.getserial('finditem')
            if uo.getx(mob) <= 5367 and uo.getx(mob) >= 5360 and uo.gety(mob) <= 1353 and uo.gety(mob) >= 1344 then
               uo.useobject(tweapon)
               uo.useobject(tshield)
               wait(100)
               kill(mob)
               uo.useobject('lastcorpse')
               checklag()
               wait(1000)
               for m=1 to loot[0]
                  while uo.getquantity('<'+loot[m])
                     uo.moveitem('<'+loot[m])
                     wait(700)
                  wend
               next
               while uo.life<uo.str-20 and uo.count('0x0E21')
                  uo.bandageself()
                  wait(3500)
               wend
               if uo.count('0x0E20') then
                  uo.waittargettype('0x1008')
                  uo.usetype('0x0E20')
                  wait(1000)
               endif
            else
              uo.ignore(mob)
            endif
         endif
      next
      wait(1000)
   wend
endsub
sub kill(mob)
   var n
   checklag()
   for n=0 to 100
      uo.attack(mob)
      if uo.getdistance(mob)>1 then
         walkn(0,0,mob)
      endif
      if uo.injournal('Body of') then
         if corpser==1 then
            uo.waittargetobject('lastcorpse')
            wait(100)
            uo.usetype('0x0F51')
            wait(500)   
         endif
         return
      endif
      wait(1000)
   next
endsub


вставил. в проверке по х поменял местами координаты

Re: нужно добавить

Posted: 2012-01-28 20:02:30
by rusa
вылетила ошибка в страке

uo.ignore(mob)

изменил

var distance='10' 10 на 30 стала работать

из 10 находит 8
2 просто невидит даже если моб меня долбит

Re: нужно добавить

Posted: 2012-01-28 20:08:30
by ZeroDX
Поправил в пред посте игнор. Засунул не в тот if