sub main() repeat <набор команд и условий> fgonext() - вызов процедуры (естественно пока она не окончиться то скрипт дальше не идет) until false end sub
sub control() while not uo.dead() if uo.life<100 then uo.exec('terminate main') wend end if
Так вот если в определенный момент времени условие в сабе control становиться истинным то саб main теминейтиться! пральна ? ДА! - НО!!
Если в этот момент процедура main вызвалал процедуру fgonext() и та в свою очередь еще не закончилась то терминейт main НЕ происходит!!
If UO.GetGlobal('Check')<>'on' Then UO.SetGlobal('Check','on') *Код* UO.SetGlobal('Check','off') Else UO.Print("Wait") End If
Спасиб всем!! Первый варинт болеее надежнее второго! хотя второй тоже норм но не дает гарнтии того что тот саб всетки потухнет.
Я решил траблу малость по другому.Хоть саб fgonext() и не виден как запущенный всерно делаю его терминейт перед терминейтом main и... алилуйя заработало =))
Askaneli wrote:Я не понял конечно почему не тушится Но раз уж не тушится, то можно через те же самые глобальные переменные и тушить процедуру.
Нукс расскажи мне ламеру =)))) как можно через те-же глобальные переменные потушить саб ?Ну к примеру при старте того саба что нуно потушить он задает гл.переменную=on в начале и off в конце саба! пральна?,так ты хотел устроить?
А дальше ?ну проверим мы гл.переменную и увидим что она "on" пытаемся ее терминейт! а до какого события будем слать терминейт сабу main, как ты узнаешь что она действительно в дауне ?!
flake wrote:цикл с вейтов, пока не измениться глобальная переменная.
Хорошо! к примеру после второго теминейта саб уйдет в даун и как теперь понять что он в дауне? - ведь сетглобал офф стоит в том сабе который мы собственно и тушим!, а если мы его потушили то собсна и сетглобал не пройдет и останеться = on! или ставить фор на на штук 10 циклов проверки после чего считать саб потушенным:cry:?
И еще нюанс! cаб main у меня циклический !!
Блин
Ну не бывает такого чтоб не тушилась процедура.
У меня большое количество скриптов где основная процедура в 5 строчек а всё делают дочерние, которые в свою очередь ещё вызывают процедуры.
Гашу главную скрипт весь останавливается.
Askaneli wrote:Блин Ну не бывает такого чтоб не тушилась процедура. У меня большое количество скриптов где основная процедура в 5 строчек а всё делают дочерние, которые в свою очередь ещё вызывают процедуры. Гашу главную скрипт весь останавливается.
Ну ты пойми!! яж не выдумываю! у мя тоже все именно так и построено!! да и вапче у всех норм кодеров так и должно быть =). Но сам факт есть факт !! причем я не говорю что она всегда не тухнет, но 50/50 потухнет или нет! И всетаки мне пришлость вписать в терминейт именно те сабы которые были вызваны мейном а потом только тушить сам мейн, и вот тогда все сто процентно!!
И еще чтоб не путать народ у меня основной саб не main а control .
Askaneli wrote:Блин Ну не бывает такого чтоб не тушилась процедура. У меня большое количество скриптов где основная процедура в 5 строчек а всё делают дочерние, которые в свою очередь ещё вызывают процедуры. Гашу главную скрипт весь останавливается.
Ну ты пойми!! яж не выдумываю! у мя тоже все именно так и построено!! да и вапче у всех норм кодеров так и должно быть =). Но сам факт есть факт !! причем я не говорю что она всегда не тухнет, но 50/50 потухнет или нет! И всетаки мне пришлость вписать в терминейт именно те сабы которые были вызваны мейном а потом только тушить сам мейн, и вот тогда все сто процентно!! И еще чтоб не путать народ у меня основной саб не main а control .
Ладно парни всем спасибо!! Те способы что все мы тут изложили это изврат!! не стабильный изврат! Я надеялся что у Yoko есть какая нить функция для проверки на живость саба но всерно парни всем СПС
З.Ы. Самый реальный форум по кодингу для УО. Только вот жаль что про RunUO мало кто что пишет .