A little modification of the code - but if you did remove the three -l and got "unknown command" errors, you either mixed up something with the brackets, or you didn't load the file properly to "soldatbot"

To play safe:
1) remove (e.g. unload) the previously given script and your "own" soldatserver-kick-script as well
2) add the script below to the remotes of the "bot" client: Alt-R opening the scripts editor, in tab "remote" create a new file and paste all the code below
3) put the name of your channel for #YOURCHANNEL (line 1)
4) "save" or "save as ..." the new file and close the scripts editor
5) make sure remotes are enabled: type /remote on
6) make sure "com" isn't locked in this client. go to tools -> options -> other -> lock: if the box "com" is checked at "disable commands", uncheck it.
7) make sure the bot-client running this script is opped in the channel you put for #YOURCHANNEL

Code:
on @*:text:!kick *:#YOURCHANNEL:{
  var %app = soldatserver.exe
  if ($2 isop $chan) { notice $nick Ops cannot be kicked. }
  elseif ($2 !ison $chan) { notice $nick $2 is not at $chan $+ . }
  elseif (!$3) { notice $nick Syntax Error: !kick <name> <reason> }
  else {
    kick $chan $2-
    if ($isrun(%app) == $true) {
      sendtoapp %app /kick $2- {ENTER}
      notice $nick $2 has been kicked out of the game.
    }
    else { notice $nick %app isn't running. }
  }
}

alias -l sendtoapp {
  if ($2) {
    if ($com(sta)) { .comclose sta }
    .comopen sta WScript.Shell 
    noop $com(sta,AppActivate,3,*bstr,$1)
    .comclose sta $com(sta,SendKeys,3,*bstr,$2-)
    showmirc -s
  }
}

alias -l isrun {
  if (($isid) && ($1 != $null)) {
    if ($com(isrun_a)) { .comclose isrun_a }
    if ($com(isrun_b)) { .comclose isrun_b }
    .comopen isrun_a WbemScripting.SWbemLocator
    if (!$com(isrun_a)) { return }
    .comclose isrun_a $com(isrun_a,ConnectServer,3,dispatch* isrun_b)
    if (!$com(isrun_b)) { return }
    .comclose isrun_b $com(isrun_b,ExecQuery,3,string,SELECT ProcessId FROM Win32_Process WHERE Name = $qt($1) $+ ,dispatch* isrun_a)
    if (!$com(isrun_a)) { return }
    noop $com(isrun_a,Count,3)
    var %return = $iif(($com(isrun_a).result),$true,$false)
    .comclose isrun_a
    return %return
  }
}


Now, if a user types "!kick <somenick> <somereason>", he should reveive one of the possible notices: ops cant be kicked/<nick> is not at <chan>/<nick> has been kicked/soldatserver isnt running

If he's receiving the "isnt running" message and you're sure soldatserver.exe IS running at the system of the "botclient", try again after changing the 2nd line:
Code:
  var %app = soldatserver.exe
to
Code:
  var %app = soldatserver


As I don't have a soldatserver.exe, I tested with cmd.exe, and it worked like expected smile

_____________
EDIT:
looking at the topic you put in one of the screens above: if you want to restrict the !kick command to ops or voices only, add above this line:
Code:
if ($2 isop $chan) { notice $nick Ops cannot be kicked. }
that line (limiting !kick to ops):
Code:
if ($nick !isop $chan) { return }
or that line: (limiting !kick to voices)
Code:
if ($nick !isvoice $chan) { return }