Yoko
http://forum.yoko.com.ua/

Скрипт на открывание дверей
http://forum.yoko.com.ua/viewtopic.php?f=20&t=8077
Page 2 of 2

Author:  1a2a3a4a5a6a [ 2006-06-28 01:37:14 ]
Post subject: 

Edred, вот он:

Code:
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:

Author:  Edred [ 2006-06-28 01:42:10 ]
Post subject: 

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

Почитай комменты в основном скрипте, там, по идее, должна быть идея разъяснена. Плюс должна быть version history

Author:  1a2a3a4a5a6a [ 2006-06-28 11:48:27 ]
Post subject: 

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

Author:  Edred [ 2006-06-28 22:46:56 ]
Post subject: 

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


Первый for...next выкинь, он отвечает за подход. Вот и все.

Author:  Gromiz [ 2016-04-02 08:06:03 ]
Post subject:  Re: Скрипт на открывание дверей

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

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

Code:
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:
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

Author:  Mirage [ 2016-04-03 22:55:30 ]
Post subject:  Re: Скрипт на открывание дверей

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

Author:  Gromiz [ 2016-04-04 19:34:41 ]
Post subject:  Re: Скрипт на открывание дверей

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

как так, разве есть подобие "opendoor" для id?

Author:  Mirage [ 2016-04-05 00:34:41 ]
Post subject:  Re: Скрипт на открывание дверей

_info на закрытую дверь
ID вписываешь в
Code:
sub opendoor()
      UO.UseObject('ID двери')
endsub

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

Author:  Gromiz [ 2016-04-06 18:58:54 ]
Post subject:  Re: Скрипт на открывание дверей

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

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

спасибо.

Page 2 of 2 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/