start_script(commmand, who, par)

Archive of the older Feature Request Forum Posts
Locked
zandor
New User
Posts: 14
Joined: Sat Feb 04, 2006 10:13 am

start_script(commmand, who, par)

Post by zandor »

start_script(commmand, who, par)

to launch text command and pass parameters?
User avatar
tekproxy
Forum Regular
Posts: 352
Joined: Thu Apr 06, 2006 5:11 pm

Post 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
zandor
New User
Posts: 14
Joined: Sat Feb 04, 2006 10:13 am

Post 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.
SMJ
Grandmaster Poster
Posts: 113
Joined: Wed May 10, 2006 5:15 pm

Post 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.
Locked