Page 1 of 1
Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 17:54:42
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
Ищем лопату, если находим - юзаем. Если нет - ищем кирку и юзаем ее, если находим. Может кому пригодится.
Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 20:53:37
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') достаточно
Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 22:38:11
by Nearga
Штука в том, что тут у тебя проверка идет при каждом копании.. а я изначально хотел в объект (или переменную) сохранить айдишник вещи (ищем 1 раз, потом всегда используем то, что обнаружили).
Если кому понадобится, айдишники на ДВР (врядли они меняются на других шардах, но мое дело предупредить

0x0e85 - кирка, черенком вправо
0x0e86 - кирка, черенком влево
0x0f39 - лопата, черенком вправо
второй лопаты нету, но смею предположить, что айдишник у нее 0x0f40
Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 22:58:34
by ZeroDX
на некоторых шардах инструменты имеют привычку ломаться или, ещё хуже портится.
Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 23:05:20
by Nearga
То уже другое - я именно имел в виду вынести определение инструмента в отдельную функцию, которая присваивает айди инструмента в определенную переменную, которую потом юзает весь остальной код и ему пофиг, лопата там или нет.
А если инструмент сломался - можно опять вызвать эту же функцию, дабы она закинула туда новую лопату.
Итого, количество вызовов: 1 раз при старте + 1 за каждую сломаную вещь = 2-3 раза в день (шмотки, вроде, ломаются редко), вместо того, чтоб определять это перед каждым использованием. Современным компам, конечно же, пофиг, но всеже

Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 23:11:04
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
Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-27 23:46:40
by Nearga
Универсальный солдат, епт

Может рыбу ловить, может копать и может не копать

Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-28 06:59:22
by Kynep
Nearga wrote:Если кому понадобится, айдишники на ДВР (врядли они меняются на других шардах, но мое дело предупредить

0x0e85 - кирка, черенком вправо
0x0e86 - кирка, черенком влево
0x0f39 - лопата, черенком вправо
Вообще то это не
ИД, а
типы предметов. Это разные вещи и путать их не нужно.
Re: Поиск в инвентаре и спользование кирки или лопаты
Posted: 2012-02-28 07:55:58
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-тиричная система.
