Yoko

All sides of Injection
It is currently 2024-04-19 23:02:17

All times are UTC+02:00




Post new topic  Reply to topic  [ 27 posts ]  Go to page 1 2 Next

Как вам идея?
Отлично - давно пора! 58%  58%  [ 7 ]
Данунах, и так неплохо.. 8%  8%  [ 1 ]
Эмм, а я и непонял, о чём тут речь.. 33%  33%  [ 4 ]
Total votes: 12
Author Message
PostPosted: 2006-04-15 22:48:21 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Появилась хорошая идея - сделай функцию FindItem(), мы её вызываем, а она возвращает поочерёдно все найденные предметы последним FindType().

Зачем? А чтобы не игнорить - в скриптах на варку, просто незаменимая вещь!

Это лёгкий вариант, грамотный вариант - сделать, чтобы FindType() возвращал идентификатор поиска, который задавать функции FindItem(), чтобы та брала результаты нужного поиска.

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

PS: Впринципе, можно продолжать извращаться - но мне надоело, хотя я с ультимой и завязал.


Last edited by Destruction on 2006-04-15 22:54:21, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2006-04-15 22:50:32 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Кул... :)
8) 8) 8)
Меня услышали :)


Top
   
 Post subject:
PostPosted: 2006-04-15 22:52:14 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Der wrote:
Кул... :)
8) 8) 8)
Меня услышали :)

Хз, твоего топика в этом разделе не видел и тем более предложений, как решить данную проблему.

PS: Я недавно постил несколько функций для создания псевдо-массивов. Я думаю те функции + глобальные переменные = скриптовое решение проблемы. Ща попробую.


Top
   
 Post subject:
PostPosted: 2006-04-15 22:55:11 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Destruction wrote:
Хз, твоего топика в этом разделе не видел и тем более предложений, как решить данную проблему.


Ну да, сорри, не на этом форуме постил :oops: :oops: :oops:

ВОт она: http://pinject.darkuo.ru/forum/viewtopic.php?t=9


Top
   
 Post subject:
PostPosted: 2006-04-15 23:02:07 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Destruction wrote:
PS: Я недавно постил несколько функций для создания псевдо-массивов. Я думаю те функции + глобальные переменные = скриптовое решение проблемы. Ща попробую.


Это ты про тему "глобальных" массивов?

Пока что возникла только одна мысль: а что если одновременно будут запущены 2 скрипта... не получится ли так, что они будут конфликтовать и пытатся писать в одиндаковые глоб. переменные?


Top
   
 Post subject:
PostPosted: 2006-04-15 23:23:54 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Der wrote:
а что если одновременно будут запущены 2 скрипта... не получится ли так, что они будут конфликтовать и пытатся писать в одиндаковые глоб. переменные?


Дык голова скриптописателю нужна не только чтобы в нее есть.


Top
   
 Post subject:
PostPosted: 2006-04-15 23:36:49 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Edred wrote:
Der wrote:
а что если одновременно будут запущены 2 скрипта... не получится ли так, что они будут конфликтовать и пытатся писать в одиндаковые глоб. переменные?


Дык голова скриптописателю нужна не только чтобы в нее есть.

Верно мыслишь, я не глупенький - создам еще один массив, в который буду писать идентификаторы :-)


Top
   
 Post subject:
PostPosted: 2006-04-15 23:37:36 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Edred wrote:
Der wrote:
а что если одновременно будут запущены 2 скрипта... не получится ли так, что они будут конфликтовать и пытатся писать в одиндаковые глоб. переменные?


Дык голова скриптописателю нужна не только чтобы в нее есть.


Во, точняк... :) ...а я только про шапку думал :) тогда да, всё будит окк...
Кстати, вопрос у меня есть: а почему бы не сделать так чтобы массивы можно было до сабов определять а то неудобно как-то...


Top
   
 Post subject:
PostPosted: 2006-04-15 23:39:58 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Ну так делайте кто мешает?;)


Top
   
 Post subject:
PostPosted: 2006-04-15 23:42:54 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Grin wrote:
Ну так делайте кто мешает?;)

Так понимаешь - игнорить всё равно придёться.

Надо кое, что проверить.

Проверил. Игнорить придёться, и если вдруг в одно время будет вызвано сразу два поиска - то выдет дребедень. Шанс низкий - но есть.


Top
   
 Post subject:
PostPosted: 2006-04-15 23:50:00 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
и дураку ясно что нужно игнорить;)
функция поиска останавлимвается на первом совпадении а анадо что бы было продолжение ;)
выход: калечить инжект;)


Top
   
 Post subject:
PostPosted: 2006-04-16 00:01:12 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Destruction wrote:
Проверил. Игнорить придёться, и если вдруг в одно время будет вызвано сразу два поиска - то выдет дребедень. Шанс низкий - но есть.


Лучшеб шанс был нулевой, т.к. геммор связанный с использованием промежуточных перменных несравним с тем геммором который будет есль случится дребедень :(


Top
   
 Post subject:
PostPosted: 2006-04-16 00:03:23 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Der wrote:
Destruction wrote:
Проверил. Игнорить придёться, и если вдруг в одно время будет вызвано сразу два поиска - то выдет дребедень. Шанс низкий - но есть.


Лучшеб шанс был нулевой, т.к. геммор связанный с использованием промежуточных перменных несравним с тем геммором который будет есль случится дребедень :(

Поверь, шана достаточно мал, что я врубил хоумсфер и отлаживаю скрипт. 8)


Top
   
 Post subject:
PostPosted: 2006-04-16 00:06:00 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
шанс мал?;)) Да стой скоростью с которой файндтайп обрабатывает всего 50 элементов%)
Шанс пересечься 0 если функция вызывается в одном потоке или хотябы последовательно... сделать синхронизацию как нех делать%)


Top
   
 Post subject:
PostPosted: 2006-04-16 00:10:22 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Grin wrote:
шанс мал?;)) Да стой скоростью с которой файндтайп обрабатывает всего 50 элементов%)
Шанс пересечься 0 если функция вызывается в одном потоке или хотябы последовательно... сделать синхронизацию как нех делать%)

Да мы и так синхронизируем -)

я уже FindType() написал, остались мелочи :-)


Top
   
 Post subject:
PostPosted: 2006-04-16 00:46:45 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Собственно то, что получилось:

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

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

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

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


2. Выполняем такой скрипт:
Code:
Sub main()
uo.setEasyUO(first_mem,"0")
endsub

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

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

Больше для использования скриптов ничего не надо, сами скрипты:
Code:
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)
while uo.getEasyUO(first_mem-1) == "1"
wait(10)
wend
uo.setEasyUO(first_mem-1,"1")
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
uo.setEasyUO(first_mem-1,"0")
endsub


Пример, с использованием этих скриптов:
Code:
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


Last edited by Destruction on 2006-04-26 10:23:51, edited 3 times in total.

Top
   
 Post subject:
PostPosted: 2006-04-16 00:52:24 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
"Убей свой реестр" :twisted:


Top
   
 Post subject:
PostPosted: 2006-04-16 00:58:03 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Grin wrote:
"Убей свой реестр" :twisted:

Гыгы, шустро ты успел.

В скрипте ошибка была - я её правил, а реестр - очень важно, хранение результатов пока силой не убьют. Это будет многим полезно.


Top
   
 Post subject:
PostPosted: 2006-04-16 00:58:23 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Der wrote:
Кстати, вопрос у меня есть: а почему бы не сделать так чтобы массивы можно было до сабов определять а то неудобно как-то...


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

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

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

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


Top
   
 Post subject:
PostPosted: 2006-04-16 01:02:27 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Destruction wrote:
а реестр - очень важно, хранение результатов пока силой не убьют. Это будет многим полезно.


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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 27 posts ]  Go to page 1 2 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 17 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited