Page 1 of 1
рубка lumber 1 дерево не цикл
Posted: 2011-11-18 11:31:13
by Gromiz
требуется мелки скрипт на рубку, нашел примерный, обрезал все что не нужно, но есть нюанс который покоя не дает.
суть:
ели запускаем скрипт рядом с деревом, то он использует топор на дереве.
если рядом деревьев нет, то скрипт выключается.
если топора нет, то скрипт сигнализирует об этом и выключается.
цикла нет, т.е. нажимать надо каждый раз, если хотите "рубануть"
вот скрипт:
Code: Select all
sub FastLumber()
var X, Y, MaxRange = 2, k = 0
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if Tree(UO.GetX()+X, UO.GetY()+Y) then
UO.Warmode(0)
wait(100)
k=k+1
UO.WaitTargetTile(Tree(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
if UO.Count(0x0F43) || UO.Count(0x0F44) then
if UO.Count(0x0F43) then
UO.UseType(0x0F43)
else
UO.UseType(0x0F44)
endif
else
UO.Print('Нет топора')
return
endif
endif
next
next
end sub
сразу же после запуска скрипта рядом с деревом чар пытается обрубить сразу несколько деревьев, насколько я понял
Auto target cancelled {сообщение инжекта}
What do you want to use this on?
You must wait to perform another action
You decide not to chop wood for now.
Auto target cancelled {сообщение инжекта}
What do you want to use this on?
You must wait to perform another action
т.е. как я понял, он несколько раз пытается использовать топор.?
можете что-то еще посоветовать в дополнение?
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-18 13:27:03
by ZeroDX
Если в радиусе 2-ух клеток есть хотя бы 2 дерева - скрипт не будет ждать по вырубится первое, сразу начнёт рубить второе. Уменьши радиус до 1 и подходи к деревьям вплотную
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-18 13:56:04
by Gromiz
блин, логично же, спасибо
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-18 14:25:56
by Mirage
еще логичнее было бы вернуть вырезанную тобой паузу на месте - тогда скрипт приобрел бы вид чтото вроде такого:
Code: Select all
sub LumderStat()
var X, Y, MaxRange = 3, k
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if Tree(UO.GetX()+X, UO.GetY()+Y) then
k = 0
repeat
UO.Set('quiet','0')
UO.DeleteJournal()
UO.Warmode(0)
wait(100)
UO.WaitTargetTile(Tree(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
;ToHide()
;********************************
; Auto Tools
if UO.Count(0x0F43) || UO.Count(0x0F44) then
if UO.Count(0x0F43) then
UO.UseType(0x0F43); <-- Топор
else
UO.UseType(0x0F44); <-- Топор
endif
else
UO.Set('quiet','0')
UO.Print('А топора то нет!')
return
endif
k=k+1
repeat
wait(100)
until UO.InJournal("0xA20D|0xA2DE|0xA2E7|0xA308|0xA309|0xA30D|0xA311|0xA312|Вы положили|nothing|You put|Вы ударили по дереву|You hack at the tree|Тут нечего рубить|no logs|Вы не можете до этого достать|You can|reach this|Дерево слишком далеко|That is too far away|do much|Это кажется свободным для вашего удара|It appears immune to your blow|атакует")
UO.Set('quiet','0')
if k>10 then
UO.Print('Что-то крепкое попалось!11')
return
endif
until UO.InJournal("0xA20D|0xA2DE|0xA2E7|0xA308|0xA309|0xA30D|Тут нечего рубить|nothing|no logs|You can|Вы не можете до этого достать|Дерево слишком далеко|too far away|свободным для вашего удара")
endif
next
next
return 0
end sub
тогда он будет рубить дерево пока не срубит всю древесину либо не стукунет по 1 стволу 10 раз и тогда перейдет к следующему.
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-20 11:03:10
by Gromiz
не-не, вся фишка в этом и состоит, чтобы он 1 раз рубил

т.е.
подошел к дереву,
нажал кнопку скрипта,
он сам взял топор,
нашел дерево,
прицелился
и 1 раз рубанул
т.е. без цикла и вырубки дерева, грубо говоря более сложный вариант "ласт обжект + ласт таргет"
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-20 14:42:17
by Mirage
А зачем? Типо - "НЕ НЕ Я НЕ НА СКРИПТЕ!!!" ?

тогда в твоем первом варианте поставь return после всех usetype
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 13:51:17
by Gromiz
типо да.
на шарде добыча ресурсов запрещена,
+ при вырубке появляются энты, на убийство которых не написать скрипт
+ таблицы с задачами. которые надо решать
возможен только вариант ручной рубки.
поставил
return, а для чего его поставили? что-то не заметил различия
вот конечный скрипт, может кому понадобится:
Code: Select all
sub Lumberodnoderevo()
var X, Y, MaxRange = 1, k = 0
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
if Tree(UO.GetX()+X, UO.GetY()+Y) then
UO.Warmode(0)
wait(100)
k=k+1
UO.WaitTargetTile(Tree(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
if UO.Count(0x0F43) || UO.Count(0x0F44) then
if UO.Count(0x0F43) then
UO.UseType(0x0F43)
return
else
UO.UseType(0x0F44)
return
endif
else
UO.Print('нет топора')
return
endif
endif
next
next
end sub
Sub Tree(X,Y)
var i
DIM R[34]
R[1] = 3274;
R[2] = 3275;
R[3] = 3276;
R[4] = 3277;
R[5] = 3280;
R[6] = 3283;
R[7] = 3286;
R[8] = 3288;
R[9] = 3290;
R[10] = 3293;
R[11] = 3296;
R[12] = 3299;
R[13] = 3302;
R[14] = 3320;
R[15] = 3323;
R[16] = 3326;
R[17] = 3329;
R[18] = 3393;
R[19] = 3394;
R[20] = 3395;
R[21] = 3396;
R[22] = 3415;
R[23] = 3416;
R[24] = 3417;
R[25] = 3418;
R[26] = 3419;
R[27] = 3438;
R[28] = 3439;
R[29] = 3440;
R[30] = 3441;
R[31] = 3442;
R[32] = 3460;
R[33] = 3461;
R[34] = 3462;
for i = 1 to 34
if uo.privategettile( x, y, -1, R[i], R[i]) then
return R[i]
endif
next
return false
end sub
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 20:06:32
by Sirocco
Надежда умирает последней.
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 20:27:16
by Mirage
Gromiz wrote:поставил return, а для чего его поставили? что-то не заметил различия
твой первый вариант скрипта делал следующее:
Code: Select all
для массива деревьев (1-5 предположим)
если рядом есть дерево тогда
ударяем топором
и без паузы возвращаемся в первую строку
соответственно если рядом было 3 дерева то скрипт рубил 1 раз 1 потом СРАЗУ 2 потом СРАЗУ 3 и уже на 3 ждал удачного доруба.
Ретурны выкидывает на первом дереве. Хотя с ним не подойдет вариант с несколькими деревьями... ХЗ мне больше нравится вариант с журналом. Какая хрен разница за что сидеть если ты все равно СКРИПТОМ добываешь?
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 20:30:07
by ZeroDX
а в гз логи рубятся?
а ещё есть скрипты на "полуламбер". Дерево указываешь сам, скрипт просто его вырубает до конца и предлагает указать на новое дерево
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 20:33:27
by ZeroDX
и вообще играйте в игры на Frostbite 2
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 23:07:08
by Mirage
Че в них играть - я прошел обе конкурирующие игры. Одну за 4,7 другую за 6,1 часов. А ультима вечна...
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-21 23:10:24
by ZeroDX
как можно пройти он-лайн шутер? =) я пока в бэд компани 50 лвл не возьму, про бф3 даже не буду думать. нфс не порадовал совсем. жду асасинс крид 3
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-22 11:35:14
by Gromiz
Mirage wrote: Какая хрен разница за что сидеть если ты все равно СКРИПТОМ добываешь?
нет, не посадят, если сам рубишь, а вот если чар сам вырубает дерево до конца, то есть нюанс один и можно загреметь
Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-22 12:45:06
by Mirage
ты думаешь админу на шарде есть разница? Захочет посадит - и ты ничего не сможешь доказать

Re: рубка lumber 1 дерево не цикл
Posted: 2011-11-22 14:48:52
by Gromiz
да, повод всегда найти можно.