Page 1 of 1

start_script(commmand, who, par)

Posted: Wed Jan 31, 2007 5:36 am
by zandor
start_script(commmand, who, par)

to launch text command and pass parameters?

Posted: Wed Jan 31, 2007 6:34 am
by tekproxy
You may already know this but just in case, you use an array of paramaters. Start_Script("script", array{who, par}), and handle it accordingly in your script.

Code: Select all

program TextCmd(who, textcmd)
  if ( Lower(TypeOf(who) == "array" ) // it's being passed by a Start_Script()
    textcmd := who[2];
    who := who[1];
  endif

...
end program

Posted: Thu Feb 01, 2007 6:57 am
by zandor
Yes I know but a thing is a generic mode to launch EVERY textcmd command (more flexible) and another is a workaround to launch some textcmd with special parameter handling....

Anymore was a very stupid thing, none special.

Posted: Thu Feb 01, 2007 1:31 pm
by SMJ
The generic method is a better solution, because... well... it's generic.

Rather than alter the way the code works, adding an entire list of useless script launchers, why not just either:
  1. Externalize the code you want to launch, and use functions instead of launching another script?

    textcmd.src

    Code: Select all

    include "textcmd.inc";
    
    program _TextCmd(who, text)
        TextCmd(who,text);
    endprogram
    textcmd.inc

    Code: Select all

    function TextCmd(byref who, text)
        // Do stuff.
    endfunction
    MyFunctions.src

    Code: Select all

    include "textcmd.inc";
    
    program MyProgram(...)
        //...
        TextCmd(who,text);
        //...
    endprogram
  2. Write your own function so that the parameters are easier for you?

    textcmds.inc

    Code: Select all

    function LaunchTextCmd(command, byref who, text)
        StartScript(command, array{ who, text } );
    endfunction
    
    function testTCParms( byref first_parm, byref second_parm )
        if( TypeOf(first_parm) == "Array" )
            second_parm := first_parm[1];
            first_parm := first_parm[2];
        endif
    endfunction
    Every Text Command

    Code: Select all

    include "textcmds.inc";
    
    program TextCmd(who, text)
        testTCParms(who,text);
        // Do textcmd stuff.
    endprogram
Either way, it'll take a little bit of time; but if it can be done with a script without causing any trouble in performance, it should.