Скрипт на открывание дверей

Anything and all.

Moderators: Murderator+, Murderator

1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Edred, вот он:

Code: Select all

Sub OpenMyDoor( x1, y1 )
   ; Любые двери!
   ;
   UO.Set( 'finddistance', '2' )
   DIM ClosedDoor[4]
   DIM OpenedDoor[4]
   DIM ChangeX[4]
   DIM ChangeY[4]
   ; дверь 1-9
   ; левая створка
   ClosedDoor[0] = '0x06AD'
   OpenedDoor[0] = '0x06AE'
   ChangeX[0] = -1
   ChangeY[0] = -1
   ; правая створка
   ClosedDoor[1] = '0x06AF'
   OpenedDoor[1] = '0x06B0'
   ChangeX[1] = -1
   ChangeY[1] = 1
   ; дверь 7-3
   ; левая створка
   ClosedDoor[2] = '0x06A5'
   OpenedDoor[2] = '0x06A6'
   ChangeX[2] = 1
   ChangeY[2] = -1
   ; правая створка
   ClosedDoor[3] = '0x06A7'
   OpenedDoor[3] = '0x06A8'
   ChangeX[3] = -1
   ChangeY[3] = -1
   VAR i, flag = 0, SerFI, DoorX, DoorY, s
   VAR nemogu = "You can't reach that."
   # Поехали!
   DeleteJournal( nemogu )
   For i = 0 To 3
      UO.FindType( OpenedDoor[i], '-1', '1' )
      If UO.FindCount() > 0 Then
         DoorX = UO.GetX( 'finditem' ) + ChangeX[i]
         DoorY = UO.GetY( 'finditem' ) + ChangeY[i]
         GoToXY( str( DoorX ), str( DoorY ), '0', Timeout )
         CheckLag()
         UO.Print( 'Already open' )
         return
      Endif
   Next
   For i = 0 To 3
      UO.FindType( ClosedDoor[i], '-1', '1' )
      If UO.FindCount() > 0 Then
         SerFI = UO.GetSerial( 'finditem' )
         UO.OpenDoor()
         flag = 1
         wait(500)
         CheckLag()
         UO.FindType( OpenedDoor[i], '-1', '1' )
         If UO.FindCount() > 0 Then
            DoorX = UO.GetX( 'finditem' ) + ChangeX[i]
            DoorY = UO.GetY( 'finditem' ) + ChangeY[i]
            GoToXY( str( DoorX ), str( DoorY ), '0', Timeout )
            CheckLag()
            UO.Print( 'Allright' )
            return
         Else
            If UO.InJournal( nemogu ) Then
               GoToXY( str( x1 ), str( y1 ), '0', Timeout )
            Endif
            wait(1000)
            ; Не получилось мытьем, попробуем катаньем
            UO.Print( 'Use double click...' )
            s = 0
            repeat
               UO.UseObject( SerFI )
               wait( 1000 )
               CheckLag()
               s = s + 1
               UO.FindType( OpenedDoor[i], '-1', '1' )
            until UO.Findcount() OR s > 10
            If s > 10 Then
               return
            Endif
            DoorX = UO.GetX( 'finditem' ) + ChangeX[i]
            DoorY = UO.GetY( 'finditem' ) + ChangeY[i]
            GoToXY( str( DoorX ), str( DoorY ), '0', Timeout )
            CheckLag()
            UO.Print( 'Allright' )
            return
         Endif
      Endif
   Next
endsub

Но что-то тут мудрено для меня. Плюс там еще элементы ходилки, координаты там же... :oops:
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Это подход к двери, если чар стоит в таком месте, что дверь не открыть. Эта функция была сваяна для открывания дверей в магазинах в городе, это же беггинг. Функция полностью работоспособная, у меня пара чаров на этом скрипте полтора месяца по двум городам в фоне наяривала. С включенным "always run" (ходилка сделана через вызов скрипта в ИзиУО).

Почитай комменты в основном скрипте, там, по идее, должна быть идея разъяснена. Плюс должна быть version history
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

А из данного выше скрипта никак нельзя выдрать само открывание двери?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

1a2a3a4a5a6a wrote:А из данного выше скрипта никак нельзя выдрать само открывание двери?


Первый for...next выкинь, он отвечает за подход. Вот и все.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Re: Скрипт на открывание дверей

Post by Gromiz »

Господа, а как можно открыть определенную дверь?
есть у кого скрипт, поделитесь, пожалуйста?

проблема в том, что рядом стоят 2 двери и они одного типа. Открывается постоянно не та, которая нужна.

Code: Select all

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


Code: Select all

sub OpenGate()
   uo.Set('finddistance', 1)
   VAR Gate1 = '0x0843'
   VAR Gate2 = '0x0844'
   UO.FindType(Gate1,'-1','ground')
   if UO.FindCOunt('finditem') > 0 then
      UO.UseObject('finditem')
   endif
   wait(100)
   UO.FindType(Gate2,'-1','ground')
   if UO.FindCOunt('finditem') > 0 then
      UO.UseObject('finditem')
   endif
   UO.print('Gate')
end sub
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Re: Скрипт на открывание дверей

Post by Gromiz »

Mirage wrote:Открывай по ID одной строчкой :roll:

как так, разве есть подобие "opendoor" для id?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Скрипт на открывание дверей

Post by Mirage »

_info на закрытую дверь
ID вписываешь в

Code: Select all

sub opendoor()
      UO.UseObject('ID двери')
endsub

Плюс - откроет только нужную дверь. Минус - ему похрену закрыта дверь или открыта. :roll:
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Re: Скрипт на открывание дверей

Post by Gromiz »

Mirage wrote:Минус - ему похрену закрыта дверь или открыта. :roll:

не, для меня это плюс, еще и закрывает без лишних строчек и заморочек))

спасибо.
Post Reply