Page 1 of 1
Нужно юзать ближайший
Posted: 2006-12-04 21:22:32
by slonopotam
Вокруг много одинаковых итемов. Мне нужно юзать их типы, но только тех к которым я ближе. Попробовал такой вариант как поиск с увеличением финдистанс, получается долго очень. Может есть проще выход?
Posted: 2006-12-04 21:43:28
by DerMeister =)
Долго? В сравнении с чем? Такие слова как "больше", "меньше", "быстрее" это слова сравнения. Покажи с чем ты сравниваешь? Быть может на самом деле всё оч даже быстро...
И не мешало бы показать свой "код", что бы можно было качественно оценить скорость скрипта!
Posted: 2006-12-04 22:31:31
by slonopotam
Использовал этот с тремя биндами клавиш.
Code: Select all
sub start()
UO.Set('finddistance','1')
UO.FindType('0x0E7C','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x0E7C','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
sub start2()
UO.Set('finddistance','2')
UO.FindType('0x0E7C','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x0E7C','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
sub start3()
UO.Set('finddistance','3')
UO.FindType('0x0E7C','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x0E7C','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Попробовал финдистанс в массив взять, но похоже так нельзя
Code: Select all
sub start()
DIM P[3]
P[0] = '1'
P[1] = '2'
P[2] = '3'
VAR i
For i = 0 To 2
UO.Set('finddistance','P[ i ]')
UO.FindType('0x0E7C','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x0E7C','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Posted: 2006-12-04 22:41:30
by DerMeister =)
Мляяя.... я в ШОКЕ! ППЦ!
Во первых - аргумент finddistace - число, а не строка!
Во вторых можно просто:
Code: Select all
sub start()
For i = 0 To 10
UO.Set('finddistance',i)
repeat
UO.FindType('0x0E7C','-1','ground')
if uo.findcount then
UO.UseObject('finditem')
UO.Ignore('finditem')
endif
wait(100)
until uo.findcount == 0
next
UO.Ignorereset()
end sub
PSЖ я уже не говорю, про ошибки в коде!
Posted: 2006-12-04 22:47:15
by slonopotam
Есть кокой вариант юзать только ближайший тип, не используя массив? Или если с массивом то чтоб скрипт юзал только 1 раз.
К томуже в этом скрипте
Code: Select all
sub start()
DIM P[3]
P[0] = '1'
P[1] = '2'
P[2] = '3'
VAR i
For i = 0 To 2
UO.Set('finddistance',i)
repeat
UO.FindType('0x0E7C','-1','ground')
if uo.findcount then
UO.UseObject('finditem')
UO.Ignore('finditem')
endif
wait(100)
until uo.findcount == 0
next
UO.Ignorereset()
end sub
Выдает
Posted: 2006-12-04 23:07:37
by DerMeister =)
Нафига те массив я не пойму!
Ну ты кароче дурак? Тока чесно?
ЗЫ: UO.FINDCOUNT
()
ЗЗЫ: Я счас только на стелсе пишу, поэтому могу мелсие ошибки делать. Это мне прощается, а вот ты тупанул по полной.
Posted: 2006-12-04 23:17:05
by slonopotam
Я ток учусь, поэтому тупить мне можно
А как без массива сделать? Пытатся юзать поочереди при каждой дистанции??
Posted: 2006-12-04 23:25:45
by slonopotam
Объясню что хочу сделать. Через 4 часа начнется Cannon Fighting, это у нас на шарде турнир (битва на пушках).
Примерный конфиг предпологаемого скрипта.
В постоянном цикле поиск ядер на земле, если ядра нет в паке, то класть его туда.
Если ядро в паке, то искать свободную пушку (ближайшую). Используем пушку. Если прицела нет то ищем дальше. Если появился прицел, то ждем пока я кликом не пальну из нее.
Posted: 2006-12-04 23:40:45
by slonopotam
Тут есть существенная разница??
Code: Select all
sub P()
UO.Set('finddistance', '2')
UO.FindType('0x0F43', -1,'ground')
UO.UseType(str(0),'finditem')
end sub
Code: Select all
sub P()
UO.Set('finddistance', '2')
UO.UseFromGround( '0x0F43' )
end sub
Posted: 2006-12-05 00:00:33
by DerMeister =)
Ничего не знаю про
UO.UseFromGround( '0x0F43' ) - ничкогда не пользовался. И ЕЩЕ РАЗ: UO.Set('finddistance', 2) - второй параметр БЕЗ кавычек! Массив не нужен. на крафний случай есть str(2) {тоже саое, что и '2'}, поэтому можно в цикле
Code: Select all
for i=0 to 10 do
UO.Set('finddistance', i) ;{или, если очень хочется: UO.Set('finddistance', str(i))}
next
Posted: 2006-12-05 01:59:34
by Edred
DerMeister =) wrote:И ЕЩЕ РАЗ: UO.Set('finddistance', 2) - второй параметр БЕЗ кавычек!
Бред. Команде UO.Set все параметры передаются строками. В последних версиях инжекта он жрет и числа, но без гарантии.
Вообще, есть простое правило: все команды инжекта, имеющие консольный аналог в качестве аргументов должны получать строки. Единственное исключение (насколько мне помнится) - warmode. Именно поэтому последняя в хелпе прописана отдельно как консольная и как команда скриптов.
Года два назад Йоко писал в фиксах (на старом форуме, кажись), что он поправил и "теперь" команды должны жрать и числа. И предложил потестить, так как он этого не делал. Потом проект благополучно свернулся и потому я и говорю - передача таким командам десятичных или шестнадцатиричных чисел - это без гарантии работоспособности. Вообще, как показывает практика, это прямой и быстрый способ получить через некоторое время unhandled error in parser.