Terminate & function main error и мултипроцессы
Moderators: Murderator+, Murderator
Terminate & function main error и мултипроцессы
Парочка вопросов возникла! +)
Есть проблема, как только я изменяю имя стартовой функции пример:
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
вроде как не работают или я не правильно пишу. =)
Есть проблема, как только я изменяю имя стартовой функции пример:
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
вроде как не работают или я не правильно пишу. =)
Last edited by ruso on 2004-07-09 03:38:46, edited 1 time in total.
Code: Select all
UO.Exec('terminate all')
Ugrum. wrote:Code: Select all
UO.Exec('terminate all')
Не работает!
Я сперва запустил этот скрипт:
sub main()
while not uo.dead()
uo.print("process")
wait(2000)
wend
end sub
потом запускаю второй скрипт:
sub main()
UO.Exec('terminate all')
end sub
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
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")
работают из скрипта
Кстати, у меня в начале работы с инжектом был глюк - инжект не видел написанных мною скриптов. Оказалось, я писал
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Edred wrote:Кстати, у меня в начале работы с инжектом был глюк - инжект не видел написанных мною скриптов. Оказалось, я писал
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Ну не знаю глюк ето или нет, но я его использую как плюс штоб не загромождать выбор запускаемых функций разными там проверочными функциями и т.д.
Я где то рядом... 

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').
Может у меня с инжектом проблема ? +)
SVG wrote:Edred wrote:Кстати, у меня в начале работы с инжектом был глюк - инжект не видел написанных мною скриптов. Оказалось, я писал
Sub
...
Endsub
Заглавные буквы оказались решающими... Как только их заменил на маленькие - все заработало. Причем заглавные буквы в любых других командах и функциях прекрасно работают...
Ну не знаю глюк ето или нет, но я его использую как плюс штоб не загромождать выбор запускаемых функций разными там проверочными функциями и т.д.
А такие скрипты только в список не попадают? Из других скриптов запускаются? Если так - то очень полезный совет...

-
- Expert!
- Posts: 359
- Joined: 2004-04-25 11:11:07
- Contact:
-
- Expert!
- Posts: 359
- Joined: 2004-04-25 11:11:07
- Contact:
в разных файлах - хз, я всё в одном держу
В данном "примере" скрипты a и b работают паралельно. В какой-то момент скрипт a выставляет глобальную переменную, скрипт b это ловит и что-то начинает делать, а в это время скрипт a выполняет какие-то другие действия (в моём случае - просто ждет). В какой-то момент скрипт b выставляет вторую глобальную переменную, скрипт a это ловит и всё возвращается к тому, с чего началось.
Вообще, как-то это всё надумано...Просто у меня нечто подобное реализовано для двух параллельно работающих клиентов...И слегка попроще
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 это ловит и всё возвращается к тому, с чего началось.
Вообще, как-то это всё надумано...Просто у меня нечто подобное реализовано для двух параллельно работающих клиентов...И слегка попроще

Без труда не выловишь и рыбку из пруда,
А без пруда не выловишь её и с трудом...
А без пруда не выловишь её и с трудом...