RegisterKeyMapping silently fails to trigger commands registered server side

  • Client channel: Release
  • FXServer version: Tested on 5265 & 5658 (Windows)

Expected behavior:

  1. RegisterKeyMapping triggers commands registered client-side
  2. RegisterKeyMapping triggers commands registered server-side, and abides by ACE restrictions

Actual behavior:

  1. RegisterKeyMapping triggers commands registered client-side :white_check_mark:
  2. RegisterKeyMapping silently fails to trigger commands registered server-side :x:

Bug category:

  • Native

Repro

  1. Start resource
  2. Enter server with client
  3. Click the i key (registered by client to client command)
  4. Click the o key (registered by client to server command)
  5. Open client console (F8), see printout for client
  6. Open server console, no printout from server
  7. (Optional) Type +bugTestS into client console, see server console now has expected printout

RegisterKeyMapping bugreport.zip (852 Bytes)

-- fxmanifest.lua
game 'gta5'
fx_version 'cerulean'

client_script 'client.lua'
server_script 'server.lua'
-- server.lua
RegisterCommand('+bugTestS', function(source, args, rawCommand)
    print('Result from +bugTestS')
end, false)

RegisterCommand('-bugTestS', function() end, false)
-- client.lua
RegisterCommand('+bugTestC', function(source, args, rawCommand)
    print('Result from +bugTestC')
end, false)

RegisterCommand('-bugTestC', function() end, false)

-- Commands registered on client trigger just fine
RegisterKeyMapping('+bugTestC', 'bugTestC', 'keyboard', 'i')
-- Commands registered on server don't trigger at all, unless you write '+bugTestS' in the F8 console
RegisterKeyMapping('+bugTestS', 'bugTestS', 'keyboard', 'o')
1 Like

Somewhat intentional side effect of another fix - for server-only commands to work here again code needs some changes on server side as well (for command forwarding) as otherwise this’d lead to some weird behavior with ‘incorrectly bound’ commands spamming chat.

1 Like