Page 1 of 1
Необычный ламбер
Posted: 2006-06-23 14:34:36
by pumbey
Добрый день. Поискав немного ничего блихко похожего не нашел..
Скажу чесно писать с нуля сасмому просто лень (да покарают меня за это боги)
Вобщем проблемы 2.
Первая в том что деревья расположены довольно странно - но на нашем сервери такие вот скриптеры
а расположены они так
Code: Select all
* * * * * * * *
* *
* * * * * *
* * * *
* * * *
* * * *
* * * * * *
* *
* * * * * * * *
На нашем сервере их можно сажать тока внутри грандкастла
Хождение по ним вызывает некоторые сомнения - но и это пол беды..
2 я проблема в том что деревья не статичны! То есть то обьекты...
Если у кого то есть наброски по хождениб от предмета к предмету -буду очень благодарен..
Posted: 2006-06-23 15:08:21
by DerMeister =)
Раз объекты, значит у них есть type и id, и тут всё ясно. Теперь насчёт хождения: ты не рассказал где именно посыжены деревья (на крыше или во внутреннем саду (сорри, я ГК никогда не видел %( ) можешь даже лучше скритнчик запости).
Теперь всё зависит от "сложности" посадки деревьев... в простейшем случае подойдёт обыная ходилка (можно в неё добавить реколл по рунбуке).
ЗЫ: Чтобы не мучатся с ходилкой используй pinject(c) =_)
Posted: 2006-06-23 21:43:50
by Edred
Обычная тупая ходилка по точкам (парам координат), без обхода препятствий, таких на форуме море. Прописать массив позиций чара рядом с деревьями и массив сериалов деревьев (раз это объекты). И вперед с песнями.
Posted: 2006-06-23 23:35:12
by admir
странный админ сервера )наверно он так и не смог изменить статику и решил пойти простым путем )
Posted: 2006-06-24 00:03:10
by DerMeister =)
Да уж нет, наверно дело в том, что сажать деревья это роскошь и поэтому это разрешено только в гранд кастле!
ЗЫ: Зачем статику то менять? Все на ломанной вердате бегают... итак глюков хватает.
Posted: 2006-06-24 11:07:24
by Edred
Когда-то кто-то говорил мне о шарде, где дерево можно было сажать только в кастле и только одно

. Там скрипт был еще проще - чар стоял и рубил это дерево до упора, в промежутке заодно качая карпентри на уже вырубленных логах.

Posted: 2006-06-24 19:41:20
by pumbey
DerMeister =) wrote:Раз объекты, значит у них есть type и id, и тут всё ясно. Теперь насчёт хождения: ты не рассказал где именно посыжены деревья (на крыше или во внутреннем саду (сорри, я ГК никогда не видел %( ) можешь даже лучше скритнчик запости).
Теперь всё зависит от "сложности" посадки деревьев... в простейшем случае подойдёт обыная ходилка (можно в неё добавить реколл по рунбуке).
ЗЫ: Чтобы не мучатся с ходилкой используй pinject(c) =_)
Слетай на айсе стоит, Глянь

Posted: 2006-06-24 20:25:11
by DerMeister =)
pumbey wrote:DerMeister =) wrote:Раз объекты, значит у них есть type и id, и тут всё ясно. Теперь насчёт хождения: ты не рассказал где именно посыжены деревья (на крыше или во внутреннем саду (сорри, я ГК никогда не видел %( ) можешь даже лучше скритнчик запости).
Теперь всё зависит от "сложности" посадки деревьев... в простейшем случае подойдёт обыная ходилка (можно в неё добавить реколл по рунбуке).
ЗЫ: Чтобы не мучатся с ходилкой используй pinject(c) =_)
Слетай на айсе стоит, Глянь

=_) Дай руну, а то я хз как на айс добратся...
Posted: 2006-06-24 22:29:46
by pumbey
так.. Появились вторичные вопросы
И так. Данное дерево, или хз как этот саженец иминовать, таки выдает следуюшую инфу по себе
,info > target
Code: Select all
ID=0x621FF253 Type=0x0D98 TZGNOIF Name=an apple tree
Quantity: 1 Colour: 0x0000 Layer: 0 Has: 0
X=4095 Y=538 Z=0 C=0xFFFFFFFF F=0x00
,infotile > target
Но при этом при попытке таргетить тайл - no woods here!
Так как, скриптов рубки по тайлам куча (чего уж делать велосипед), но как заставить его узнавать что tile 3480 4095 535 0 - это же 0x621FF253...
Есть идеи?
Posted: 2006-06-24 22:33:04
by omi4
ага есть ....
хелп читать чаще
Code: Select all
waittargetground ловушка прицела на обьект в мире
Описание: waittargetground •
Синтакс: ,waittargetground type [color]
none uo.waittargetground(type,[color])
--------------------------------------------------------------------------------
Ищет на земле обьект по типу type (и цвету color если задано) после чего устанавливает на этот обьект ловушку прицела.
Следующий прицел, который будет запрошен сервером, будет направлен на этот обьект.
Posted: 2006-06-25 09:57:57
by Edred
pumbey wrote:Лана, подытоживаю, все либо знают "как" - но им лень рассказать - либо все "приблизительно вкурсе", по подробнее готовы обсуждать то, как я для удобства выразился...
Всем спасибо, предлогаю топ закрыть... ИМХО бесполезен уже..
Дык тебе же все объяснили давно, как это сделать.
Цикл, поиск (findtype) вокруг по типу дерева. Нашел - waittargetobject, рубишь, потом в игнор. Цикл продолжается. Когда ничего больше не найдено - перейти на новую точку. Чар соответственно ходит кругами в кастле. В какой-то точке разгружается в прилоченный сундук. Все просто до упора.
Posted: 2006-06-25 10:59:28
by Destruction
Так, не мучаем человека, я решил на коленках - скрипт сваять
1. Берём ходилку с обходом препятствий палана Walker(x, y)
2.
Code: Select all
sub Lumberjacking()
DIM tt[10]
; типы деревий
tt[0] = '0x0000'
tt[1] = '0x0000'
tt[2] = '0x0000'
tt[3] = '0x0000'
tt[4] = '0x0000'
tt[5] = '0x0000'
tt[6] = '0x0000'
tt[7] = '0x0000'
tt[8] = '0x0000'
tt[9] = '0x0000'
uo.set("finddistance",'32')
var i, j, k=0
repeat
rep:
uo.findtype(k,'-1','ground')
if not uo.findcount()
k = k + 1
if k < 9 then
goto rep
endif
endif
if not uo.findcount() && k > 9 then
k = 0
uo.ignorereset()
endif
uo.ignore("finditem")
repeat
uo.waittargetobject('finditem')
uo.useobject('тапор')
repeat
wait(100)
until uo.injournal('срубил|иль не срубил')
deljournal('срубил|иль не срубил')
until uo.injournal('нет деревий')
deljournal('нет деревий')
until false
endsub
PS: Раз 20 редактировал, что-то со мной не то.. Никаких гарантий за скрипт не даю.
Posted: 2006-06-25 22:09:14
by Destruction
viewtopic.php?t=8067
Блин, тереть ваще надо было

Posted: 2006-06-27 16:52:01
by pumbey
Так, сел и написал с нуля скрипт, вставил ходилку и пробую - ан куй - я не врубаюсь почему, но после сруба 1го дерева - он считает свой долг выполненым.. То ли в запаре толи я просто че то не допонимаю.
Code: Select all
var topor = "0x0F49"
sub main()
var i
Dim Lumb[51]
end sub
Последнее полученое сообщение - "кончили рубить"
ЗЫ, я понимаю что где то тупая ощибка - но где не понимаю..
Posted: 2006-06-27 18:51:10
by DerMeister =)
Code: Select all
UO.Print("кончили рубить")
next
end sub
Зачем тут
NEXT ??
Бррр.... Исправил значит... И всё равно не работает? Тогда попробуй
Dim Lumb[52]
Posted: 2006-06-27 19:15:24
by pumbey
DerMeister =) wrote:Code: Select all
UO.Print("кончили рубить")
next
end sub
Зачем тут
NEXT ??
Бррр.... Исправил значит... И всё равно не работает? Тогда попробуй
Dim Lumb[52]
А причем тут 52, это такой магической число?
Posted: 2006-06-27 19:38:15
by Edred
pumbey wrote:А причем тут 52, это такой магической число?
Это не магическое число, а количество элементов в твоем массиве. Потому что элементы массива нумеруются с 0. И то, что ты не используешь нулевой элемент, не означает, что его нет. RTFM.
А скрипт кривой:
Code: Select all
While true
for i = 1 to 51
# uo.DeleteJournal()
UO.Print("начинаем рубить по новой")
go_to( Lumb[i] )
UO.Print("Рубим дерево № "+str(i))
Mine( Lumb[i] )
while not uo.InJournal("stop") or not uo.InJournal("away")
wait(1000)
wend
Next
wend
Вызов Mine() - это рубка. А после выхода из рубки у тебя цикл ожидания на сообщение в журнале. Зачем? Это сообщение ты и так ждешь в самой Mine(). Зачем ждать еще раз?
Сообщения не обсуждаю - просто не знаю какие у вас на шарде сообщения. Телепаты в отпуске.
Ходилку тоже. Правильность ходилки проверить простым просмотром практически нереально.
Code: Select all
var derevo
derevo="waittargetobject "+ lumb
uo.DeleteJournal()
UO.Exec(derevo)
wait(1000)
UO.UseType(Topor)
Такого образца кода не видел уже давно. А может, вообще никогда.
Почему не так?
Code: Select all
uo.DeleteJournal()
UO.Waittargetobject(lumb)
UO.Usetype(Topor)
Ну и наконец, встает он у тебя из-за этого:
Code: Select all
while not uo.InJournal("stop") or not uo.InJournal("away")
тут надо
or заменить на
and.

Хотя (см. выше) эта проверка вообще на фиг не нужна.
Posted: 2006-06-27 19:49:31
by pumbey
Edred wrote:pumbey wrote:А причем тут 52, это такой магической число?
Это не магическое число, а количество элементов в твоем массиве. Потому что элементы массива нумеруются с 0. И то, что ты не используешь нулевой элемент, не означает, что его нет. RTFM.
А скрипт кривой:
Code: Select all
While true
for i = 1 to 51
# uo.DeleteJournal()
UO.Print("начинаем рубить по новой")
go_to( Lumb[i] )
UO.Print("Рубим дерево № "+str(i))
Mine( Lumb[i] )
while not uo.InJournal("stop") or not uo.InJournal("away")
wait(1000)
wend
Next
wend
Вызов Mine() - это рубка. А после выхода из рубки у тебя цикл ожидания на сообщение в журнале. Зачем? Это сообщение ты и так ждешь в самой Mine(). Зачем ждать еще раз?
Сообщения не обсуждаю - просто не знаю какие у вас на шарде сообщения. Телепаты в отпуске.
Ходилку тоже. Правильность ходилки проверить простым просмотром практически нереально.
Code: Select all
var derevo
derevo="waittargetobject "+ lumb
uo.DeleteJournal()
UO.Exec(derevo)
wait(1000)
UO.UseType(Topor)
Такого образца кода не видел уже давно. А может, вообще никогда.
Почему не так?
Code: Select all
uo.DeleteJournal()
UO.Waittargetobject(lumb)
UO.Usetype(Topor)
Ну и наконец, встает он у тебя из-за этого:
Code: Select all
while not uo.InJournal("stop") or not uo.InJournal("away")
тут надо
or заменить на
and.

Хотя (см. выше) эта проверка вообще на фиг не нужна.
НУ по поводу конструкции, помоемуц просто прикольно
а насчет 52 - действительно вы правы - тока все равно 51 - просто с добавкой 0..
Спасибо
Posted: 2006-06-27 20:45:29
by Edred
pumbey wrote:а насчет 52 - действительно вы правы - тока все равно 51 - просто с добавкой 0..
От 0 до 51 будет 52 элемента. В объявлении массива указывается размерность массива - то есть количество его элементов. Сколько из объявленных ты будешь потом использовать - твое личное дело. Но в том виде, как у тебя было сделано, при попытке рубить 51-ое дерево инжект либо упадет с ругательством, либо это дерево просто проигнориует. Хотя может и обработать, это зависит от версии скриптового модуля и фазы луны.
Posted: 2006-07-28 23:28:49
by Ex-Brodyaga
Блин, что за уроды спамят форум?