I find Gamestudio multiplayer easy to use, but when you seem to have such problems frequently, have you tried debugging your script? With the debugger you are not helpless, place breakpoints in the on_server and on_client events. Then you can see what they receive or send. Especially you can then see easily if its your client script or your server script that does not do what you want.
When you create an entity you must first wait until it exists on the network:
while (my.client_id != dplay_id) wait(1);
As long as client_id is not set you can not send anything with that entity. This is in the manual. It can be half a second. After client_id is set, you can send skills to any specific entity. This works without problem, at least in my project, I use it all the time.