When you call DestroySelf() on an object, it is destroyed on all connected clients, not just wherever you call it.
I am confused by what you are saying as well: "Sender will destroy, BUT I NEED destroy other player." What's a "sender" vs "other player"? Objects exist on all clients. When you tno.DestroySelf() on one client, all clients will see that object disappear. It doesn't matter if client A calls it or client B does, effect will be the same. It's good practice to only do it on the client that actually owns the object, however.
You are using tno.Send("Kill", otherTNO.owner); -- what this does is calls a function called "Kill" on the otherTNO.owner. This means that whatever is inside the Kill function will be executed
on the client that owns otherTNO.
The confusing part is that you seem to be trying to call a function on object A (tno) that should do something based on the owner of an object B (otherTNO). I am not sure why... Why not communicate through the object that you intend to work with (otherTNO)? Generally when you are trying to kill a game unit, you will have some kind of "Kill" function on the game unit's script itself. Calling this script should then call "tno.Send("OnKill", tno.owner, idOfPlayerThatKilledMe);" which will result in the owner calling its "OnKill" function, which can do such things as increment whatever stats you want followed by tno.DestroySelf().
public void Kill (int killerID)
{
tno.Send("OnKill", tno.owner, killerID);
}
[RFC]
void OnKill (int killerID)
{
Debug.Log(name + " killed by " + TNManager.GetPlayer(killerID).name);
tno.DestroySelf();
}