Нужно юзать ближайший

Ask for help

Moderators: Murderator+, Murderator

Post Reply
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Нужно юзать ближайший

Post by slonopotam »

Вокруг много одинаковых итемов. Мне нужно юзать их типы, но только тех к которым я ближе. Попробовал такой вариант как поиск с увеличением финдистанс, получается долго очень. Может есть проще выход?
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Долго? В сравнении с чем? Такие слова как "больше", "меньше", "быстрее" это слова сравнения. Покажи с чем ты сравниваешь? Быть может на самом деле всё оч даже быстро...
И не мешало бы показать свой "код", что бы можно было качественно оценить скорость скрипта!
DerMeister сейчас на нейрале!
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post 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
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post 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Ж я уже не говорю, про ошибки в коде!
DerMeister сейчас на нейрале!
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post 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


Выдает

Code: Select all

Variable undefined - UO.FINDCOUNT
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

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

Выдает

Code: Select all

Variable undefined - UO.FINDCOUNT


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

ЗЫ: UO.FINDCOUNT()

ЗЗЫ: Я счас только на стелсе пишу, поэтому могу мелсие ошибки делать. Это мне прощается, а вот ты тупанул по полной.
DerMeister сейчас на нейрале!
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Я ток учусь, поэтому тупить мне можно :)
А как без массива сделать? Пытатся юзать поочереди при каждой дистанции??
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

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

В постоянном цикле поиск ядер на земле, если ядра нет в паке, то класть его туда.
Если ядро в паке, то искать свободную пушку (ближайшую). Используем пушку. Если прицела нет то ищем дальше. Если появился прицел, то ждем пока я кликом не пальну из нее.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post 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
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post 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
DerMeister сейчас на нейрале!
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

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


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

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

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