Page 1 of 1
Terminate & function main error и мултипроцессы
Posted: 2004-07-05 00:25:22
by ruso
Парочка вопросов возникла! +)
Есть проблема, как только я изменяю имя стартовой функции пример:
sub main()
...
end sub
меняю на
sub xxx()
...
end sub
сохраняю, выбираю в drop-boxе RUN FUNCTION - xxx
нажимаю кнопку RUN FUNCTION, мне выдаёт ошибку:
Line 5: FUNCTION NOT FOUND - xxx
потом при попытки запустить любой другой скрипт,
выдаёт ту же самую ошибку, изменяя только номер
последней линии. При чём я в drop-boxe выбираю
главную функцию для 1 скрипта - main.
---
Второй вопрос. +)
Как завершить нужный мне процесс ?
UO.terminate("main")
UO.terminate("all")
,terminate all
,terminate main
вроде как не работают или я не правильно пишу. =)
Posted: 2004-07-05 14:45:07
by ykka
FUNCTION NOT FOUND
И У МЕНЯ ТОЖЕ САМОЕ ХОТЯ Я УЖЕ ОБ ЭТОМ ПИСАЛ
ТОВАРИШ YOKKO СКАЗАЛ ЧТО ЕТО ПРОВОКАЦИЯ_)))
Posted: 2004-07-05 14:53:32
by Ugrum.
Posted: 2004-07-05 15:45:53
by ruso
Не работает!
Я сперва запустил этот скрипт:
sub main()
while not uo.dead()
uo.print("process")
wait(2000)
wend
end sub
потом запускаю второй скрипт:
sub main()
UO.Exec('terminate all')
end sub
Posted: 2004-07-05 15:47:41
by ruso
Вообще я не понимаю если нельзя изменять названия MAIN функций, то как же можно остановить нужный мне процесс из другого процесса ? Так как все процессы с именем main.
Posted: 2004-07-05 16:14:40
by Ugrum.
ruso wrote:Вообще я не понимаю если нельзя изменять названия MAIN функций, то как же можно остановить нужный мне процесс из другого процесса ? Так как все процессы с именем main.
Да почемуж нельзя то?
не только можно но и нужно.
вот попробуй так:
Code: Select all
sub Test()
var n=0
while not uo.dead()
uo.print("process")
wait(2000)
n=n+1
if n==5 then
uo.print("process terminate !!!")
UO.Exec('terminate all')
end if
wend
end sub
Re: Terminate & function main error
Posted: 2004-07-05 16:24:12
by Yoko
ruso wrote:выбираю в drop-boxе RUN FUNCTION - xxx
нажимаю кнопку RUN FUNCTION, мне выдаёт ошибку:
Line 5: FUNCTION NOT FOUND - xxx
У тебя старая модификация script.dll с ловушкой для невнимательных. Там лишний пробел дорисовывался, его надо было убирать вручную. Либо так делай либо перескачай с сайта.
ruso wrote:Как завершить нужный мне процесс ?
UO.terminate("main")
UO.terminate("all")
,terminate all
,terminate main
вроде как не работают или я не правильно пишу. =)
,terminate all
,terminate main
работают введённые с консоли
uo.exec("terminate main")
uo.exec("terminate all")
работают из скрипта
Posted: 2004-07-05 17:10:57
by Edred
Кстати, у меня в начале работы с инжектом был глюк - инжект не видел написанных мною скриптов. Оказалось, я писал
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Posted: 2004-07-05 17:24:48
by SVG
Edred wrote:Кстати, у меня в начале работы с инжектом был глюк - инжект не видел написанных мною скриптов. Оказалось, я писал
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Ну не знаю глюк ето или нет, но я его использую как плюс штоб не загромождать выбор запускаемых функций разными там проверочными функциями и т.д.
Posted: 2004-07-05 17:35:44
by ruso
Ugrum. wrote:ruso wrote:Вообще я не понимаю если нельзя изменять названия MAIN функций, то как же можно остановить нужный мне процесс из другого процесса ? Так как все процессы с именем main.
Да почемуж нельзя то?
не только можно но и нужно.
вот попробуй так:
Code: Select all
sub Test()
var n=0
while not uo.dead()
uo.print("process")
wait(2000)
n=n+1
if n==5 then
uo.print("process terminate !!!")
UO.Exec('terminate all')
end if
wend
end sub
Попробовал, не работает, просто идёт по кругу, и как бы не выполняет строчку UO.Exec('terminate all').
Может у меня с инжектом проблема ? +)
Posted: 2004-07-05 17:38:27
by ruso
С новой версией скрипт.длл всё заработало!!!
Всем спасибо за помощь! =)
--------------
Но возник ещё 1 вопрос, есть ли какая нибудь функция в инжекте, которая открывает msg-box в виндовсе поверх всех окон ?
Posted: 2004-07-05 21:42:47
by Yoko
вроде есть, посмотри scripting.txt
Posted: 2004-07-06 00:04:04
by Savage
sub ww()
MessageBox("asdf")
end sub
Posted: 2004-07-06 11:32:22
by Edred
SVG wrote:Edred wrote:Кстати, у меня в начале работы с инжектом был глюк - инжект не видел написанных мною скриптов. Оказалось, я писал
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Ну не знаю глюк ето или нет, но я его использую как плюс штоб не загромождать выбор запускаемых функций разными там проверочными функциями и т.д.
А такие скрипты только в список не попадают? Из других скриптов запускаются? Если так - то очень полезный совет...

спасибо
Posted: 2004-07-06 14:16:46
by SVG
Edred wrote:А такие скрипты только в список не попадают? Из других скриптов запускаются? Если так - то очень полезный совет...

спасибо
Да из других запускается нормально.
Posted: 2004-07-09 01:14:00
by ruso
Появились ещё пара вопросов!
Как взять содержимое моей переменной из другово процесса ?
И как запустить из одного скрипта, другой скрипт ?
Posted: 2004-07-09 12:42:48
by Lord Ruslan Nightmare
sub a()
uo.exec("exec b") #породит параллельный независимый процесс
c() #вызовет c просто как любую другую функцию
end sub
sub b()
end sub
sub c()
end sub
насчет переменных - только через глобальные
Posted: 2004-07-09 17:24:04
by ruso
А если у меня два скрипта в разных файлах, какой синтаксис для открытия и запуска второго скрипта ? (из первого процесса)
Насчёт глобальных переменных, можешь написать пример ?
Posted: 2004-07-09 19:20:23
by Lord Ruslan Nightmare
в разных файлах - хз, я всё в одном держу
Code: Select all
sub a()
var delay
uo.setglobal("global_var_a","NULL")
while ...
...
if ... then
...
uo.setglobal("global_var_a","1")
delay = uo.Timer()
while uo.getglobal("global_var_b") == "NULL" and uo.Timer() - delay < 1000
wait(100)
wend
uo.setglobal("global_var_b","NULL")
endif
wait(100)
wend
end sub
sub b()
uo.setglobal("global_var_b","NULL")
while ...
if uo.getglobal("global_var_a") == "1" then
...
uo.setglobal("global_var_b","1")
uo.setglobal("global_var_a","NULL")
endif
wait(100)
wend
end sub
В данном "примере" скрипты a и b работают паралельно. В какой-то момент скрипт a выставляет глобальную переменную, скрипт b это ловит и что-то начинает делать, а в это время скрипт a выполняет какие-то другие действия (в моём случае - просто ждет). В какой-то момент скрипт b выставляет вторую глобальную переменную, скрипт a это ловит и всё возвращается к тому, с чего началось.
Вообще, как-то это всё надумано...Просто у меня нечто подобное реализовано для двух параллельно работающих клиентов...И слегка попроще

Posted: 2004-07-09 20:27:11
by ruso
Огромное спасибо!!
Мне это надо для рубки и рекола от рипперов, что бы знать куда после рекола от риппера далше реколися и рубить. +)