Поиск в инвентаре и спользование кирки или лопаты

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Nearga
Posts: 53
Joined: 2012-02-10 15:17:10

Поиск в инвентаре и спользование кирки или лопаты

Post by Nearga »

Code: Select all

uo.findtype('0x0f39', -1, 2) # search Shovel into backpack
            If UO.FindCount() > 0 Then
                UO.Useobject(UO.GetSerial('finditem'))
                uo.Print('Shovel is found')
            else
                uo.findtype('0x0e85', -1, 2) # search Pickaxe into backpack
                If UO.FindCount() > 0 Then
                    UO.Useobject(UO.GetSerial('finditem'))
                    uo.Print('Pickaxe is found')
                endif
            endif    
Ищем лопату, если находим - юзаем. Если нет - ищем кирку и юзаем ее, если находим. Может кому пригодится.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Mirage »

лопат и кирок обычно 2 вида - перевернутые имеют разные типы.
Я пользуюсь использованием по типу предмета

Code: Select all

      if UO.Count(Shovel1) then
         UO.UseType(Shovel1)
      else
         if UO.Count(Shovel2) then
            UO.UseType(Shovel2)
         else
            if UO.Count(Pickaxe1) then
               UO.UseType(Pickaxe1)
            else
               if UO.Count(Pickaxe2) then
                  UO.UseType(Pickaxe2)
               else
                  uo.charprint(printcolour, 'Нечем копать!')
                  MyTerminate()
               endif
            endif
         endif
      endif
для топоров:

Code: Select all

         if UO.Count(axe1) || UO.Count(axe2) then
            if UO.Count(axe1) then
               UO.UseType(axe1)
            else
               UO.UseType(axe2)
            endif
         else
            uo.charprint(printcolour, 'Нечем рубить!')
            MyTerminate()
         endif
PS
UO.Useobject(UO.GetSerial('finditem')) я уже говорил - масло масленное
UO.Useobject('finditem') достаточно
Nearga
Posts: 53
Joined: 2012-02-10 15:17:10

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Nearga »

Штука в том, что тут у тебя проверка идет при каждом копании.. а я изначально хотел в объект (или переменную) сохранить айдишник вещи (ищем 1 раз, потом всегда используем то, что обнаружили).

Если кому понадобится, айдишники на ДВР (врядли они меняются на других шардах, но мое дело предупредить :)
0x0e85 - кирка, черенком вправо
0x0e86 - кирка, черенком влево
0x0f39 - лопата, черенком вправо

второй лопаты нету, но смею предположить, что айдишник у нее 0x0f40
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by ZeroDX »

на некоторых шардах инструменты имеют привычку ломаться или, ещё хуже портится.
Nearga
Posts: 53
Joined: 2012-02-10 15:17:10

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Nearga »

То уже другое - я именно имел в виду вынести определение инструмента в отдельную функцию, которая присваивает айди инструмента в определенную переменную, которую потом юзает весь остальной код и ему пофиг, лопата там или нет.
А если инструмент сломался - можно опять вызвать эту же функцию, дабы она закинула туда новую лопату.
Итого, количество вызовов: 1 раз при старте + 1 за каждую сломаную вещь = 2-3 раза в день (шмотки, вроде, ломаются редко), вместо того, чтоб определять это перед каждым использованием. Современным компам, конечно же, пофиг, но всеже :)
Last edited by Nearga on 2012-02-27 23:39:42, edited 1 time in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Mirage »

Не бейте меня ногами - я был бухой когда это писал:

Code: Select all

VAR Shovel1	= '0x0F39'
VAR Shovel2	= '0x0F3A'
VAR Pickaxe1	= '0x0E85'
VAR Pickaxe2	= '0x0E86'
VAR axe1	= '0x0F43'
VAR axe2	= '0x0F44'
VAR FPole1	= '0x0DBF'
VAR FPole2	= '0x0DC0'

sub Mining()
	UO.SetGlobal('action','1')
	UO.SetGlobal('MaxRange','2')
	extraction()
end sub
sub Lumber()
	UO.SetGlobal('action','2')
	UO.SetGlobal('MaxRange','3')
	extraction()
end sub
sub Fishing()
	UO.SetGlobal('action','3')
	UO.SetGlobal('MaxRange','6')
	extraction()
end sub

; тут тело скрипта в котором присутствует следующее:

UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
Tools()

; ну и так далее...

Sub Tools()
	if val(uo.GetGlobal('action')) == 1 then
		if UO.Count(Shovel1) then
			UO.UseType(Shovel1)
			return
		else
			if UO.Count(Shovel2) then
				UO.UseType(Shovel2)
				return
			else
				if UO.Count(Pickaxe1) then
					UO.UseType(Pickaxe1)
					return
				else
					if UO.Count(Pickaxe2) then
						UO.UseType(Pickaxe2)
						return
					else
						uo.charprint(printcolour, 'Нечем копать!')
						MyTerminate()
					endif
				endif
			endif
		endif
	else
		if val(uo.GetGlobal('action')) == 2 then
			if UO.Count(axe1) || UO.Count(axe2) then
				if UO.Count(axe1) then
					UO.UseType(axe1)
					return
				else
					UO.UseType(axe2)
					return
				endif
			else
				uo.charprint(printcolour, 'Нечем рубить!')
				MyTerminate()
			endif
		else
			if UO.Count( FPole1 ) || UO.Count( FPole2 ) then
				if UO.Count( FPole1 ) then
					UO.UseType( FPole1 )
					return
				else
					UO.UseType( FPole2 )
					return
				endif
			else
				uo.charprint(printcolour, 'Нечем ловить рыбу!')
				MyTerminate()
			endif
		end if
	end if
end sub
Nearga
Posts: 53
Joined: 2012-02-10 15:17:10

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Nearga »

Универсальный солдат, епт :)

Может рыбу ловить, может копать и может не копать :)
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Kynep »

Nearga wrote:Если кому понадобится, айдишники на ДВР (врядли они меняются на других шардах, но мое дело предупредить :)
0x0e85 - кирка, черенком вправо
0x0e86 - кирка, черенком влево
0x0f39 - лопата, черенком вправо
Вообще то это не ИД, а типы предметов. Это разные вещи и путать их не нужно.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Поиск в инвентаре и спользование кирки или лопаты

Post by Mirage »

Code: Select all

VAR Shovel1   = '0x0F39'
VAR Shovel2   = '0x0F3A'
VAR Pickaxe1   = '0x0E85'
VAR Pickaxe2   = '0x0E86'
VAR axe1   = '0x0F43'
VAR axe2   = '0x0F44'
VAR FPole1   = '0x0DBF'
VAR FPole2   = '0x0DC0'
вот это типы добывающих предметов. Если только на шарде нет какой нибудь косы которой ловят рыбу.

PS после 39 идет не 40 а 3A. 16-тиричная система. :wink:
Post Reply