Page 1 of 1

интересная функция

Posted: 2004-11-21 23:42:18
by flames
Суть проблемы. Мне необходимо написать функцию на проверку наличия посторонних итемов на экране. Например чар стоит посреди леса, если появляется другой игрок или итем, например кто нибудь скинул на землю топор, лопату, логи, впрочем любой итем (из под хайда), или просто кто нибудь поставил дом, то скрипт переходит в состояние паузы. Если кто то сталкивался с такой проблемой, пожалуйста, дайте функцию, чтобы я с ней разобрался, или хотя бы намекните на осуществление.

Posted: 2004-11-21 23:56:48
by Yoko
обрати внимание на
,findtype -1 -1 ground

Posted: 2004-11-23 14:28:35
by flames

Code: Select all

sub test()
 uo.set('finddistance','3')
 repeat
 uo.ignore('0x001E320B','0x0190','0x07D3')
 uo.findtype('-1','-1','ground')
  if  uo.findcount()>0 then
   uo.serverprint('1')
   wait(2000)
   ELSE
   uo.serverprint('0')
   wait(2000)
  endif
 until uo.dead()
end sub

Posted: 2004-11-23 15:57:27
by Yoko
flames wrote:

Code: Select all

 uo.ignore('0x001E320B','0x0190','0x07D3')

примечание: у [yhlp_ignore] один параметр, остальные игнорируются
если этой командой ты исключал из поиска на земле своего чара, то проще это сделать как uo.ignore("self")

Posted: 2004-11-24 00:11:32
by flames
Спасибо за подсказку. Также я сталкнулся с проблемой, что в процессе выполнения макроса, эта функция находит некоторые обьекты, которых нет на самом деле, тоесть я узнаю их координаты, тип, но на этом месте нет никакого итема, попытки сграбить его ни к чему не приводят, хотя функция его находит, причем если запустить ее с другого клиента, то этот итем не находится (также после релогина). В чем может быть причина такой проблемы? Если не трудно, подскажите.

Posted: 2004-11-24 09:57:26
by Yoko
обьясняю. не дошли руки до выяснения причин определённого глюка:

когда некоторые вещи исчезают с земли, они всё равно остаются в памяти инжекта.

в одном из своих скриптов мне пришлось добавлять подчищающий кусок, который определял, если такое случилось, то подчищал базу данных вещей через [yhlp_forget] и перезапрашивал предметы по [yhlp_resend]

Posted: 2004-11-26 17:41:21
by flames

Code: Select all

sub test() 
 uo.set('finddistance','3')
  repeat
   uo.ignore('self')
   uo.findtype('-1','-1','ground')
    if  uo.findcount()>0 then
     uo.resend()
     uo.findtype('-1','-1','ground')
      if  uo.findcount()>0 then
       uo.textopen()
       uo.textprint(uo.getserial('finditem'))
       uo.textprint(str(uo.getx('finditem')))
       uo.textprint(str(uo.gety('finditem')))
       wait(5000)
      end if
      ELSE
      wait(5000)
    endif
  until uo.dead()
end sub

Posted: 2004-11-26 18:42:06
by Yoko
это не удаляет заглючившие вещи из мира, а так же зря напрягает трафик и сервер

Posted: 2004-11-26 20:27:02
by flames
Видимо тогда придется каждый раз при выявления постороннего предмета, проверять все ли в порядке и если да, то игнорить найденый итем. Глупо, но другого выхода я не вижу, учитывая мои более чем скромные знания в скриптописании. Попутно придется развиваться и пытаться решить проблему, потому что это обязательно, иначе вся моя затея теряет смысл. (немогу я понять этого, стою посреди шахты, запускаю функцию, ничего не находит в течении часа-двух, потом бац и находит, хотя я просто стоял на месте)

Posted: 2004-11-26 20:29:03
by Yoko
да примерно так. только удалять не заглючивший итем, а все итемы нужных типов на земле вокруг, с помощью [yhlp_forget], потом делать ресенд