Yoko
http://forum.yoko.com.ua/

Нужно юзать ближайший
http://forum.yoko.com.ua/viewtopic.php?f=3&t=10314
Page 1 of 1

Author:  slonopotam [ 2006-12-04 21:22:32 ]
Post subject:  Нужно юзать ближайший

Вокруг много одинаковых итемов. Мне нужно юзать их типы, но только тех к которым я ближе. Попробовал такой вариант как поиск с увеличением финдистанс, получается долго очень. Может есть проще выход?

Author:  DerMeister =) [ 2006-12-04 21:43:28 ]
Post subject: 

Долго? В сравнении с чем? Такие слова как "больше", "меньше", "быстрее" это слова сравнения. Покажи с чем ты сравниваешь? Быть может на самом деле всё оч даже быстро...
И не мешало бы показать свой "код", что бы можно было качественно оценить скорость скрипта!

Author:  slonopotam [ 2006-12-04 22:31:31 ]
Post subject: 

Использовал этот с тремя биндами клавиш.
Code:
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:
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

Author:  DerMeister =) [ 2006-12-04 22:41:30 ]
Post subject: 

Мляяя.... я в ШОКЕ! ППЦ!
Во первых - аргумент finddistace - число, а не строка!
Во вторых можно просто:
Code:
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Ж я уже не говорю, про ошибки в коде!

Author:  slonopotam [ 2006-12-04 22:47:15 ]
Post subject: 

Есть кокой вариант юзать только ближайший тип, не используя массив? Или если с массивом то чтоб скрипт юзал только 1 раз.
К томуже в этом скрипте

Code:
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


Выдает
Code:
Variable undefined - UO.FINDCOUNT

Author:  DerMeister =) [ 2006-12-04 23:07:37 ]
Post subject: 

Нафига те массив я не пойму!

Quote:
Выдает
Code:
Variable undefined - UO.FINDCOUNT


Ну ты кароче дурак? Тока чесно? :evil:

ЗЫ: UO.FINDCOUNT()

ЗЗЫ: Я счас только на стелсе пишу, поэтому могу мелсие ошибки делать. Это мне прощается, а вот ты тупанул по полной.

Author:  slonopotam [ 2006-12-04 23:17:05 ]
Post subject: 

Я ток учусь, поэтому тупить мне можно :)
А как без массива сделать? Пытатся юзать поочереди при каждой дистанции??

Author:  slonopotam [ 2006-12-04 23:25:45 ]
Post subject: 

Объясню что хочу сделать. Через 4 часа начнется Cannon Fighting, это у нас на шарде турнир (битва на пушках).
Примерный конфиг предпологаемого скрипта.

В постоянном цикле поиск ядер на земле, если ядра нет в паке, то класть его туда.
Если ядро в паке, то искать свободную пушку (ближайшую). Используем пушку. Если прицела нет то ищем дальше. Если появился прицел, то ждем пока я кликом не пальну из нее.

Author:  slonopotam [ 2006-12-04 23:40:45 ]
Post subject: 

Тут есть существенная разница??
Code:
sub P()
UO.Set('finddistance', '2')
UO.FindType('0x0F43', -1,'ground')
UO.UseType(str(0),'finditem')
end sub

Code:
sub P()
UO.Set('finddistance', '2')
UO.UseFromGround( '0x0F43' )
end sub

Author:  DerMeister =) [ 2006-12-05 00:00:33 ]
Post subject: 

Ничего не знаю про UO.UseFromGround( '0x0F43' ) - ничкогда не пользовался. И ЕЩЕ РАЗ: UO.Set('finddistance', 2) - второй параметр БЕЗ кавычек! Массив не нужен. на крафний случай есть str(2) {тоже саое, что и '2'}, поэтому можно в цикле
Code:
for i=0 to 10 do  
UO.Set('finddistance', i) ;{или, если очень хочется: UO.Set('finddistance', str(i))}
next

Author:  Edred [ 2006-12-05 01:59:34 ]
Post subject: 

DerMeister =) wrote:
И ЕЩЕ РАЗ: UO.Set('finddistance', 2) - второй параметр БЕЗ кавычек!


Бред. Команде UO.Set все параметры передаются строками. В последних версиях инжекта он жрет и числа, но без гарантии.

Вообще, есть простое правило: все команды инжекта, имеющие консольный аналог в качестве аргументов должны получать строки. Единственное исключение (насколько мне помнится) - warmode. Именно поэтому последняя в хелпе прописана отдельно как консольная и как команда скриптов.

Года два назад Йоко писал в фиксах (на старом форуме, кажись), что он поправил и "теперь" команды должны жрать и числа. И предложил потестить, так как он этого не делал. Потом проект благополучно свернулся и потому я и говорю - передача таким командам десятичных или шестнадцатиричных чисел - это без гарантии работоспособности. Вообще, как показывает практика, это прямой и быстрый способ получить через некоторое время unhandled error in parser.

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/