Page 1 of 1

Пропуск

Posted: 2012-11-23 00:46:37
by tylllkah
Как сделать так, чтоб чар при открытии двери не пытался её открыть если она открыта и закрыть если она закрыта

Code: Select all

sub open door()
go(0001,0001, 0)
go(0002,0002, 0)
go(0003,0003, 0)
opendoor()
wait(100)
go(0004,0004, 0)
closedoor()
wait(100)
go(0005,0005, 0)
go(0004,0004, 0)
opendoor()
wait(100)
go(0003,0003, 0)
closedoor()
wait(100)
go(0002,0002, 0)
go(0001,0001, 0)
end sub


sub opendoor()
   var n
   Dim Door[30]
   Door[1]='0x085A'
   Door[2]='0x06A5'
   Door[3]='0x0854'
   for n=1 to 3
      if uo.countground(Door[n]) then
         uo.usefromground(Door[n])
      endif
   next
endsub
sub closedoor()
   var n
   Dim Door[30]
   Door[1]='0x085B'
   Door[2]='0x06A6'
   Door[3]='0x0855'
   
   for n=1 to 3
      if uo.countground(Door[n]) then
         uo.usefromground(Door[n])
      endif
   next
endsub

Re: Пропуск

Posted: 2012-11-23 07:49:22
by Mirage
Использовать не по ID а по типу предмет.
У открытых дверей тип отличается от закрытых, а ID сохраняется.

Re: Пропуск

Posted: 2012-11-23 10:39:18
by tylllkah
Mirage wrote:Использовать не по ID а по типу предмет.
У открытых дверей тип отличается от закрытых, а ID сохраняется.

стоп, дело в дверях, если она открыта он пытается ее открыть, как сделать так чтоб если она открыта он продолжал бежать дальше

Re: Пропуск

Posted: 2012-11-23 10:55:27
by Mirage
Ну у тебя в принципе правильно, но во первых нет пауз после действия - чар не успевает среагировать. Во вторых я делал примерно вот так.

Code: Select all

Sub OpenGate()
   var n
   Dim Door[3]
   Door[1]='0x085A'
   Door[2]='0x06A5'
   Door[3]='0x0854'
   uo.Set('finddistance', 1)
   for n=1 to 3
      UO.FindType(Door[n],'-1','ground')
      if UO.FindCount('finditem') > 0 then
         UO.UseObject('finditem')
         wait(100)
      endif
   next
end sub


Потому что такая связка будет использовать именно найденную дверь.
А связка
if uo.countground(Door[n]) then
uo.usefromground(Door[n])
не взаимосвязана. Если рядом будет 2 двери одного типа то он может найти одну а пытаться открыть другую => зациклится.