FindItem() - даёшь функцию!

Requests of new features and reports on bugs needs to be fixed

Moderators: Murderator+, Murderator

Как вам идея?

Отлично - давно пора!
7
58%
Данунах, и так неплохо..
1
8%
Эмм, а я и непонял, о чём тут речь..
4
33%
 
Total votes: 12

Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Edred wrote:
Destruction wrote:а реестр - очень важно, хранение результатов пока силой не убьют. Это будет многим полезно.


Как-нить сделай чистку реестра подходящей утилей (только не нортоном), потом дефрагментируй его - и, увидев насколько у тебя быстрее начнут работать винды, ты быстренько отучишься забивать реестр всякой дрянью...

Знаешь, у меня винды летают только так, тем более, я не себе ведь пишу :wink:
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

оно и видно что не для себя;)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Grin wrote:оно и видно что не для себя;)

И ваще, я написал где чистить :wink:

Кому не надо хранить результаты в реестре - тот переправит под себя, это же элементарно, не так ли?
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Destruction wrote:Собственно то, что получилось:

Описание:
number FindType(string)
Передаётся один параметр - в нём всё указываем, кроме findtype (как при обычном uo.exec('findtype')).
Возвращает идентификатор произведённого поиска.

number FindCount(number)
Передаём один параметр - идентификатор нужного поиска.
Получаем количество найденных элементов.

string FindItem(number,number)
Передаём два параметра: 1 - номер найденного предмета, 2 - идентификатор поиска.
Получаем ID найденного предмета.

1. В начало скрипта пишем такое:

Code: Select all

var first_mem = 100000 ; стартовое число, для хранения результатов поиска.


2. Выполняем такой скрипт:

Code: Select all

Sub main()
uo.setEasyUO(first_mem,"0")
endsub

Если во время выполнения скрипта Injection сообщил об отсутствии директории EasyUO в реестре - создайте директорию и выполните скрипт еще раз.

3. Если Вы хотите, чтобы результаты поисков были доступны в дальнейшем - пропустите этот пункт.
Переименуйте функцию из п.2 в "autostart" и включите галочку "Autostart" в закладке Injection Main, в таком случае информация о поиске после перезапуска Injection будет перезаписываться.

Больше для использования скриптов ничего не надо, сами скрипты:

Code: Select all

Sub FindCount(tar)
return strlen(uo.getEasyUO(tar))/10
endsub

Sub FindItem(num,tar)
return MID(uo.getEasyUO(tar),num*10,10)
endsub

Sub FindType(find)
var i, tmp=""
uo.exec("findtype "+find)
if uo.findcount() then
repeat
tmp = tmp + uo.getSerial("finditem")
uo.ignore("finditem")
uo.exec("findtype "+find)
until not uo.findcount()
for i=0 to strlen(tmp)/10-1
uo.ignore(MID(tmp,i*10,10),"off")
next
i = val(uo.getEasyUO(first_mem))+first_mem+1
uo.setEasyUO(i,tmp)
uo.setEasyUO(first_mem,str(val(uo.getEasyUO(first_mem))+1))
return i
else
return false
endif
endsub


Пример, с использованием этих скриптов:

Code: Select all

sub main()
var i
var s = FindType("'-1' '-1' 'backpack'")
if FindCount(s) then
for i=0 to FindCount(s)-1
uo.textprint(FindItem(i,s))
next
endif
endsub

Скрипт найдёт все вещи в бекпеке и запишет информацию в текстовое окно.

PS: Для тех, кто любит чистить реестр, путь в реестре: HKEY_CURRENT_USER\Software\EasyUO




не для новичков. Пишите уроки 6-7... а то планка uo.FindType, uo.UseObject выше не поднимается .
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Edred wrote:
Der wrote:Кстати, вопрос у меня есть: а почему бы не сделать так чтобы массивы можно было до сабов определять а то неудобно как-то...


Я думаю, тебе может помочь вот такая "фича" (кстати, я в своих скриптах это использую активно):

DIM массив[размер], массив[размер]...

- задание массива. Обращение к элементам: имя_массива[номер_элемента]. Нельзя писать имя_массива1 = имя_массива2 для присвоения содержимого одного массива другому.
Обращение к отдельным буквам в строке - так же, как к эл-там массива:
переменная[номер_буквы]. Номер - от 0, в случае выхода за конец строки - ошибка.

Замечания по поводу массивов
Массивы можно передавать в качестве параметров функциям. При этом передается САМ массив, а не его копия!!! Т.е. все действия внутри функции над элементами массива будут производиться над первоначальным массивом. Возвращать массивы из функций НЕЛЬЗЯ!!!


:) Ну и где же сдесь "фича" ? Это я и так знаю...
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Der wrote::) Ну и где же сдесь "фича" ? Это я и так знаю...


А фича, по твоему, это то, что ты не знаешь? Я не телепат знать что ты знаешь или не знаешь. А передачу массива функции в качестве параметра можно использовать для создания виртуального глобального массива. В главной процедуре создаешь массив, в остальные функции, куда необходимо, передаешь параметром. Вот тебе и глобальный массив.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Несколько модифицировал скрипт - он теперь поиск запускает поочереди, чтобы наложений не вышло.
Post Reply