Action Relay "Set Channel and Send Signal" does not work for multiplayer clients in cockpit
Solved
The Action Relay's block action "Set channel and send signal" does not work for multiplayer clients with the action on a cockpit hotbar.
In the Example world provided:
- 2 grids are present: 1 with a cockpit, 1 with a light.
- Connect 2 players, 1 as host and 1 as client. Place both players in the same faction.
- Take ownership of all grids, share all grids with faction.
- Enter the cockpit as the host and press 1 a few times. Observe that the light is toggled.
- Leave the cockpit on the host.
- Enter the cockpit as the client.
- Press 1. Observe that the light does not toggle. Press 5 (Send Signal, without set channel). Observe that the light is toggled.
- Set the channel to something else on the cockpit grid.
- Press 1 again on the cockpit hotbar as the client. Notice that the channel is set to 1 correctly, but the action is not triggered. Press 5 again to observe that the action is triggered.
Expected behavior:
The client and the host see the same behavior: Pressing 1 toggles the light without pressing any other buttons.
Actual behavior:
The client sets the channel but does not send the signal.
Repro rate: 5/5, over multiple worlds.
Files:
Action Relay MP...
This also reproduces on Dedicated Server.
It does not reproduce if you use a Button Panel or Timer Block, which makes sense - the Cockpit Hotbar executes on the client, but the Button Panel and Timer Block execute on the host.
I looked deeper into this with DNSpy and well, the button correctly raises a Multiplayer Event
But Set and Send does not correctly raise an event:
Instead, it directly calls SendSignal which checks to see if the caller is a server - this of course fails on the client.
The resolution looks like it's pretty simple: raise the event (as shown in the first screenshot) in the Set and Send hotbar action instead of directly calling SendSignal on the sender component.
This also reproduces on Dedicated Server.
It does not reproduce if you use a Button Panel or Timer Block, which makes sense - the Cockpit Hotbar executes on the client, but the Button Panel and Timer Block execute on the host.
I looked deeper into this with DNSpy and well, the button correctly raises a Multiplayer Event
But Set and Send does not correctly raise an event:
Instead, it directly calls SendSignal which checks to see if the caller is a server - this of course fails on the client.
The resolution looks like it's pretty simple: raise the event (as shown in the first screenshot) in the Set and Send hotbar action instead of directly calling SendSignal on the sender component.
I have the same price blen in single play and on Dedicated servers “keen official servers”
I have the same price blen in single play and on Dedicated servers “keen official servers”
Hello, engineer!
Thank you for reaching our forum with this issue and letting us know about it.
Issue was successfully reproduced on our side and put into our internal system.
Kind Regards
Keen Software House: QA Department
Hello, engineer!
Thank you for reaching our forum with this issue and letting us know about it.
Issue was successfully reproduced on our side and put into our internal system.
Kind Regards
Keen Software House: QA Department
Hello Engineer,
We’re pleased to inform you that this issue has been resolved in version 205.
As such, we’ll be closing this thread.
If you encounter any other issues with the game, please don’t hesitate to start a new thread here on the forum—we’re always happy to assist!
Happy engineering!
Kind regards,
Keen Software House - QA Department
Hello Engineer,
We’re pleased to inform you that this issue has been resolved in version 205.
As such, we’ll be closing this thread.
If you encounter any other issues with the game, please don’t hesitate to start a new thread here on the forum—we’re always happy to assist!
Happy engineering!
Kind regards,
Keen Software House - QA Department
Replies have been locked on this page!