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

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
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
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 выкинь, он отвечает за подход. Вот и все.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
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
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

Открывай по ID одной строчкой :roll:
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