Page 1 of 1

Взять в руки\убрать с рук книгу

Posted: 2013-06-27 20:51:12
by CxC
Нарисовал скрипт:

Code: Select all

Sub main()
   var Book = '0x0EFA'
   if (uo.GetGraphic(uo.ObjAtLayer('Rhand')) <> Book) then
      uo.equip('Rhand','0x403E08F0')
   end if
...............


Если в руках оружие, то чар не берет книгу, а просто его скидывает. Если в руках нет ничего - берет книгу. Как умно исправить?
Был вариант

Code: Select all

Sub main()
   var Book = '0x0EFA'
   if (uo.GetGraphic(uo.ObjAtLayer('Rhand')) <> Book) then
      uo.unequip('Rhand')
      uo.equip('Rhand','0x403E08F0')
   end if
...............

не работает, только если поставить задержку в 400, что неприемлемо

Re: Взять в руки\убрать с рук книгу

Posted: 2013-06-27 20:59:42
by Incorrect User
Без задержки никак. Только ее можно сократить до минимума

Code: Select all

Sub main()
  var Book = "0x0EFA"
  if (uo.GetGraphic(uo.ObjAtLayer('Rhand')) <> Book) then
    uo.unequip('Rhand')
    repeat
      wait(10)
    until uo.GetGraphic(uo.ObjAtLayer('Rhand') == ""
    uo.equip('Rhand','0x403E08F0')
  end if
end sub

Re: Взять в руки\убрать с рук книгу

Posted: 2013-06-27 21:12:59
by Incorrect User
Даже, если подумать, uo.GetGraphic(uo.ObjAtLayer('Rhand')) <> Book если в руках ничего нет то тоже будет это условие и он будет выполнять uo.unequip('Rhand') В этом случае нужно

Code: Select all

Sub main()
  var Book = "0x0EFA"
  if uo.GetGraphic(uo.ObjAtLayer('Rhand') <> Book and uo.GetGraphic(uo.ObjAtLayer('Rhand') <> "" then
    uo.unequip('Rhand')
    repeat
      wait(10)
    until uo.GetGraphic(uo.ObjAtLayer('Rhand') == ""
  end if
    uo.equip('Rhand','0x403E08F0')
  end if
end sub
[/quote]

Re: Взять в руки\убрать с рук книгу

Posted: 2013-06-27 21:36:05
by CxC
спасибо. Обидно, что нет быстрого анэквипа

Re: Взять в руки\убрать с рук книгу

Posted: 2013-06-27 22:46:05
by Mirage
Вообще достаточно открыть help и переписать правильно ( :wink: ) команду:

Code: Select all

sub book() 
  uo.Equipt('Rhand',Book)
end sub

Сдергивает оружие и одевает книгу.
Если одет нубилук то вот так будет выглядеть:

Code: Select all

var Book = "0x0EFA"
sub main()
var x = uo.GetGraphic(uo.ObjAtLayer('Lhand'))
var y = uo.GetGraphic(uo.ObjAtLayer('Rhand'))
  if x <> '' then
    uo.unequip('Lhand')
    repeat
      wait(100)
    until x<>''
  end if
  if y <> Book then
    uo.unequip('Rhand')
    repeat
      wait(100)
    until y<>''
  uo.Equipt('Rhand',Book)
  end if
end sub



Задержка 300 минимальна для перемещения предметов на 56 сфере. Это вшито в сервере и не обойти.

Re: Взять в руки\убрать с рук книгу

Posted: 2013-06-28 12:04:21
by CxC
Mirage wrote:Задержка 300 минимальна для перемещения предметов на 56 сфере. Это вшито в сервере и не обойти.

с задержкой не вариант :) всем спасибо