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

open door
http://forum.yoko.com.ua/viewtopic.php?f=20&t=7944
Page 1 of 1

Author:  Bangbuss [ 2006-06-11 19:34:34 ]
Post subject:  open door

kak otkrivat` i zakrivat` srazu 2 dveri? u menja dom takoj i nado 6tob bistro mozhno bilo zakrit` 2 dveri srazu.

Author:  Edred [ 2006-06-11 22:56:31 ]
Post subject: 

В одном из моих скриптов есть такая функция, возьми ее за основу для своего скрипта:

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

Author:  ZWERb [ 2006-06-15 00:32:25 ]
Post subject: 

Встроенный макрос клиента!!!! OpenDoor(s)
Иногда проще пользоватца встроенными макросами клиента чем парить мозги над инжой =-)

Author:  Savage [ 2006-06-15 07:13:50 ]
Post subject: 

У дверей есть сериал и тип. Если это двери твоего дома то просто юзаешь сериал и проверяешь тип.

Author:  Savage [ 2006-06-15 07:14:33 ]
Post subject: 

опендоор может открыть самую неожиданную дверь :) так что не канает

Author:  Askaneli [ 2006-06-15 08:24:47 ]
Post subject: 

Причём стоя у дверей дома может открыть калитку которая дальше находится. Лучше всё таки сериал юзать и тип проверять ...

Author:  Edred [ 2006-06-15 21:48:25 ]
Post subject: 

Еще добавлю: если дверь двойная, opendoor() может открыть не ту половинку, перед которой стоит чар. И тогда, если чар на макре, зайдет он или нет - будет зависить от продвинутости ходилки...

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