I checked, and it turns out that the bug is that
when called on a dedicated server, animationphase is always 0. Since the action is checked on the player's machines, you're right, it is fine.
So in your case, I would suggest making a invisible something on the model, and make an animation for it. That would be the easiest solution.
The problem with trying to make a variable based off of the position is that:
1) A position consists of like a 8-digit number with a decimal
2) You have no way of doing the reverse: that is, finding which boat belongs to which variable
---------------------
Here is a method that MIGHT work, although I'd still recommend using animations or CoC NS:
Each boat adds itself to a global array:
ROB_boats = ROB_boats + [this]
So the array would look something like this after the mission starts:
ROB_boats = [boat1, boat2, boat3...]
The condition for the action to deploy another boat looks something like this:
this in ROB_boats
This means that as long as the boat is in the global array, you can deploy another boat from it. Therefore, if you deploy another boat from, say, boat2, that means you need to remove boat2 from the ROB_boats array on
every client.
So in your deployment/action script, you would need to add something like this:
ROB_boat_deployed = [_boat, ROB_boats] call indexOf
publicvariable "ROB_boat_deployed"
IndexOf is a simple function to find the index of a variable within an array. Grab it
here.
Finally, you would have a single looping script (no matter how many boats are in the mission), running on all clients, which looks like this:
#top
ROB_boat_deployed = -1
@ ROB_boat_deployed >= 0
ROB_boats = ROB_boats - [ROB_boats select ROB_boat_deployed]
? count ROB_boats > 0 : goto "top"
This script removes the boat at index "ROB_boat_deployed" from the ROB_boats array; that is, the boat that just deployed another boat. Remember; we can't 'publicvariable' arrays. So what we are doing here is just 'publicvariabling' an index (number).