Jump to content
rimblock

Changing AI unit locality from server to specific client possible ?.

Recommended Posts

I would like to create a unit on the server and then pass it to a specific client as the commands that need to be run against it need to be local to a specific players client instance.

Is there a way to pass ai unit ownership to a client via SQF or is there an activity that automatically passes ownership (like getting in to a vehicle as a drive passes ownership of that vehicle to the drivers client).

Thanks.

Share this post


Link to post
Share on other sites
I would like to create a unit on the server and then pass it to a specific client as the commands that need to be run against it need to be local to a specific players client instance.

Why do it this way? If you create a unit from a client, it will be local to that client.

https://community.bistudio.com/wiki/Locality_in_Multiplayer#Basic_Rules Rule #5

Share this post


Link to post
Share on other sites
Can make ai join your group this should do it theoretically.

Ok, if you are in group of one then presumabily you would also be the leader. Adding the AI to the group would add it as a group member ?. switching the player from the unit it is controlling to the new AI would leave the previous unit as the leader or would leadership move with the player ?.

Also, according to the Wiki there seems to be reports that you cannot just kill the old unit as it affects scores (and possibly more) so you have to hide them away.

Why do it this way? If you create a unit from a client, it will be local to that client.

https://community.bistudio.com/wiki/Locality_in_Multiplayer#Basic_Rules Rule #5

Yep, the creater is the owner. Got that. The thing is that I am trying to stop the client from creating units if possible.

That looks to be the command that may just sort it out. Thanks for that.

Sorry for being a little unclear. I wanted to avoid the "try this script" sort of canned replies.

The preference is to create a new unit on the server for the player to control and load it up with the players gear and then pass ownership over to the client to do the move with selectplayer. I would like to limit the clients ability to create units, add weapons / backpacks etc where reasonibly possible. This is for a multiplayer mod.

All the scripts I have come across for switching players to different units are client centric which is why I didn't really want a canned solution.

Many thanks for all the info to all.

Share this post


Link to post
Share on other sites

That looks to be the command that may just sort it out. Thanks for that.

Sorry for being a little unclear. I wanted to avoid the "try this script" sort of canned replies.

The preference is to create a new unit on the server for the player to control and load it up with the players gear and then pass ownership over to the client to do the move with selectplayer. I would like to limit the clients ability to create units, add weapons / backpacks etc where reasonibly possible. This is for a multiplayer mod.

All the scripts I have come across for switching players to different units are client centric which is why I didn't really want a canned solution.

Many thanks for all the info to all.

You should have explained this from the start. You don't need any command to change ownership, selectPlayer changes unit locality automatically.

Share this post


Link to post
Share on other sites
Also, according to the Wiki there seems to be reports that you cannot just kill the old unit as it affects scores (and possibly more) so you have to hide them away.

deleteVehicle

Share this post


Link to post
Share on other sites
You should have explained this from the start. You don't need any command to change ownership, selectPlayer changes unit locality automatically.

Sure but the notes in the Wiki entry have the following (concern in bold)...

3) After switching to a unit that's not local, the unit will remain local to you after switching back. For example, if we have units A and B, and a client starts as unit A and unit B is AI under server control. If you switch to unit B, it will take some time, but eventually you can control the movement of unit B

If it will take some time to switch then maybe it is better to pass control over to the relevent client before switching. If it not longer takes any amount of time the player is likely to notice then maybe the Wiki could do with a new note.

I can potentially build and equip the AI unit on the server, pass ownership over to the client then fire a PVC to get the cleint to spawn a script to check for ownership and then move the player to the new AI.

If you feel this will be slower than equiping the AI unit on the server, firing a PVC to get the client to spawn a script to move the player to the new AI and confirm onwership is with the client then it would be great to hear.

I am just trying to find various alternatives and by asking the question the way I did I got to hear about 'setOwner' which will most likely be very helpful later on in my conversion project so doubly helpful.

---------- Post added at 01:46 ---------- Previous post was at 01:43 ----------

Does this negate any issues of deleting your original player unit as noted in the selectplayer wiki entry ?.

But you have to remember that your old unit will stay with your Identity. Dies the old unit, the stats count it.

Thanks

Share this post


Link to post
Share on other sites

setOwner is server only command and you wanted client command if I'm not mistaken. Also that wiki note could be in relation to older games, many things have changed. You should always try it for yourself, even Arma 3 is getting optimised so what is on wiki can be slightly different.

Share this post


Link to post
Share on other sites
setOwner is server only command and you wanted client command if I'm not mistaken. Also that wiki note could be in relation to older games, many things have changed. You should always try it for yourself, even Arma 3 is getting optimised so what is on wiki can be slightly different.

Sure and my query was to create on the server then push to the client.

Just wanted a few options if possible. Will probably try both and see which works better.

Thanks for the advise.

Share this post


Link to post
Share on other sites
Does this negate any issues of deleting your original player unit as noted in the selectplayer wiki entry ?.

I'm not sure what you mean by this, but deleting your old player will take care of the issue of you losing points when it gets killed (because it can never get killed)

Share this post


Link to post
Share on other sites
I'm not sure what you mean by this, but deleting your old player will take care of the issue of you losing points when it gets killed (because it can never get killed)

Ok, I see. The issue occurs if the original unit is 'killed' rather than deleted (ie. deletion does not kill and remove, it just removes).

Good to know. thanks.

Share this post


Link to post
Share on other sites
Ok, I see. The issue occurs if the original unit is 'killed' rather than deleted (ie. deletion does not kill and remove, it just removes).

Good to know. thanks.

Important to note that a deleted unit still satisfies the "!alive" condition (may be unrelated, but eh).

Edited by JShock

Share this post


Link to post
Share on other sites
Important to note that a deleted unit still satisfies the "!alive" condition (may be unrelated, but eh).

As this is for player unit model change I suspect this maybe ok.

If the peocess is to move the player to the new model (unit) and then uncouple the old unit from the game (delete EH etc) and then delete the unit then the unit should not be referenced in future as the conversion I am working on is player rather than unit centric.

Thanks for everyone input.

Share this post


Link to post
Share on other sites

What was the final solution? How to transfer the AI unit created on the server to the client?

Share this post


Link to post
Share on other sites
1 hour ago, simicsko said:

What was the final solution? How to transfer the AI unit created on the server to the client?


Use setGroupOwner (on server, after you created your unit)

  • Like 1

Share this post


Link to post
Share on other sites

Read the notes on the Biki as they pertain to your situation. 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×