Custom Action с функцией State возможно?

Так проверил - нет системы ни какой, или я её не могу уловить.
Масса скриптов работает и с выражениями в скобках этэкзит-а.
[DOUBLEPOST=1436522173,1436513332][/DOUBLEPOST]Ну вот,
Этот скрипт Работает -
PHP:
function wait_par()
(
    tr = GetTrack(0, 0);
    GetTrackUIVolPan(tr, vol, pan);
    vol == 1 ?
    (
    SetMediaTrackInfo_Value(tr, "D_PAN", 1);
    defer("wait_par()");
    ):(
        atexit("TrackFX_SetParam(tr, 0, 0, 100);");
);


);
wait_par();

Этот выдаёт ошибку на atexit-е -
PHP:
function wait_par()
(
    tr = GetTrack(0, 0);
    GetTrackUIVolPan(tr, vol, pan);
    vol == 1 ?
    (
    SetMediaTrackInfo_Value(tr, "D_PAN", 1);
    defer("wait_par()");
    ):(
        atexit("SetMediaTrackInfo_Value(tr, "D_PAN", 0);");
);


);
wait_par();

При этом если сделать так, то работает -
PHP:
function pan() (
SetMediaTrackInfo_Value(tr, "D_PAN", 0);
);

function wait_par()
(
    tr = GetTrack(0, 0);
    GetTrackUIVolPan(tr, vol, pan);
    vol == 1 ?
    (
    SetMediaTrackInfo_Value(tr, "D_PAN", 1);
    defer("wait_par()");
    ):(
        atexit("pan()");
);


);
wait_par();
[DOUBLEPOST=1436522778][/DOUBLEPOST]В общем, чтоб поставить точку пока - для 100% гарантии срабатывания любого кода внутри atexit - нужно применять function, описанную до atexit.
 
Так именно так и сказано в мануале,функция
В каком мануале?
Вообщето вот что сказано -
EEL: atexit("code")
Adds code to be executed when the script finishes or is ended by the user. Typically used to clean up after the user terminates defer() or runloop() code.

Code - это вроде что угодно.
 
Короче смотрите по Си,я ж не прогаммист,я понимаю как "выполнить ",где написано "код",это значит функция в основном.У меня при темпр >30 пропадает способносвть думать.Я люблю осень ,считайте это офтопом
 
@EUGEN27771, а как то можно чтоб state определялся при запуске рипера или проекта, есть скрипт но он работает с 3го раза только т.к. state не распознаеться сразу?
 
Последнее редактирование:
а как то можно чтоб state определялся при запуске рипера или проекта, есть скрипт но он работает с 3го раза только т.к. state не распознаеться сразу?
Чтоб state определить нужно запустить скрипт,попробуйте в самом начале
GetToggleCommandStateEx() поставить и от его состояния уже строить дальнейшую работу скрипта
 
Если вешать скрипт на старт проекта, то очень часто он срабатывает не верно.
Нужно делать Кастом Экшин из Акшинов Wait - подбирать время задержки, и собственно скрипта, который будет запускаться с задержкой от старта проекта.
Причина - при старте проекта Рипер занят очень многими вещами, а вы ему ещё и скрипт подсовываете....
 
@EUGEN27771, в самом начале так и есть

PHP:
get_action_context(#fn, sec, cmd);
state = GetToggleCommandStateEx(sec, cmd);//Current State
SetToggleCommandState(sec, cmd, state <= 0 ? 1 : 0);


срабатывает не верно.
это нехорошо, жаль рипер сам не может это делать как со стандартными экшенами
 
Ну,как @Aleksandr Oleynik, сказал,сделайте экшн и поставьте первым действием ожиданеие(Wait),что рипер сначала свои главные вопросы решил,а потом уже остальное
 

Сейчас просматривают