Add API documentation
This commit is contained in:
		
							parent
							
								
									a0e54ebd2f
								
							
						
					
					
						commit
						845a910117
					
				
							
								
								
									
										255
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										255
									
								
								README.md
									
									
									
									
									
								
							| @ -22,6 +22,8 @@ From here, you can simply require the package in any RAGE context: | |||||||
| 
 | 
 | ||||||
| ```javascript | ```javascript | ||||||
| const rpc = require('rage-rpc'); | const rpc = require('rage-rpc'); | ||||||
|  | 
 | ||||||
|  | rpc.register('hi', () => 'hello!'); | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### Option 2 | #### Option 2 | ||||||
| @ -30,6 +32,8 @@ In the `dist/` folder of this repository is a single minified JS file that you c | |||||||
| 
 | 
 | ||||||
| ```javascript | ```javascript | ||||||
| const rpc = require('./rage-rpc.min.js'); | const rpc = require('./rage-rpc.min.js'); | ||||||
|  | 
 | ||||||
|  | rpc.register('hi', () => 'hello!'); | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### Option 3 (Browser Only) | #### Option 3 (Browser Only) | ||||||
| @ -156,4 +160,253 @@ log("Hello again!").then(() => { | |||||||
| }); | }); | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Note that once any side of the game registers a procedure, any context can immediately start accessing it. You could call `rpc.callServer('log', message);` from any CEF instance or anywhere in the client without any further setup. | **Note:** Once any side of the game registers a procedure, any context can immediately start accessing it. You could call `rpc.callServer('log', message);` from any CEF instance or anywhere in the client without any further setup. | ||||||
|  | 
 | ||||||
|  | ## API | ||||||
|  | 
 | ||||||
|  | This library is universal to RAGE, which means you can load the same package into all 3 contexts: browser, client JS, and server JS. | ||||||
|  | 
 | ||||||
|  | There are only 7 functions that you can use almost anywhere around your game. However, depending on the current context, the usage of some functions might differ slightly. | ||||||
|  | 
 | ||||||
|  | ### Universal | ||||||
|  | 
 | ||||||
|  | #### register(name, callback) | ||||||
|  | 
 | ||||||
|  | Registers a procedure in the current context. | ||||||
|  | 
 | ||||||
|  | The return value of the `callback` will be sent back to the caller, even if it fails. If a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) is returned, it will finish before returning its result or error to the caller. | ||||||
|  | 
 | ||||||
|  | **The return value must be JSON-able in order to be sent over the network.** This doesn't matter if the procedure call is local. | ||||||
|  | 
 | ||||||
|  | ##### Parameters | ||||||
|  | 
 | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The unique identifier, relative to the current context, of the procedure. | ||||||
|  | * `callback` [function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) - The procedure. This function will receive 2 arguments. | ||||||
|  |     * `args` - The arguments that were provided by the caller. This parameter's type will be the same that was sent by the caller. `undefined` if no arguments were sent. | ||||||
|  |     * `info` [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) - Various information about the caller. | ||||||
|  |         * `id` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The internal ID used to keep track of this request. | ||||||
|  |         * `environment` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The caller's environment. Can be `cef`, `client`, or `server`. | ||||||
|  |         * `player` [Player](https://wiki.rage.mp/index.php?title=Server-side_functions#Player) - The caller. *Only exists in the server context if remotely called from `cef` or `client`.* | ||||||
|  | 
 | ||||||
|  | ##### Examples | ||||||
|  | 
 | ||||||
|  | ```javascript | ||||||
|  | rpc.register('hello', () => 'hi!'); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Returns `hi!` to the caller. | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ```javascript | ||||||
|  | rpc.register('getUser', async (id) => { | ||||||
|  |     const user = await someLongOperationThatReturnsUserFromId(id); | ||||||
|  |     return user; | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Waits for the returned [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) to finish before returning the resolved user to the caller. | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ```javascript | ||||||
|  | rpc.register('echo', (message, info) => { | ||||||
|  |     console.log(`${info.player.name} via ${info.environment}: ${message}`); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | *Server-side example only.* The passed argument will be logged to the console along with the caller's name and the environment which they called from. | ||||||
|  | 
 | ||||||
|  | #### unregister(name) | ||||||
|  | 
 | ||||||
|  | Unregisters a procedure from the current context. It will no longer take requests unless it is re-registered. | ||||||
|  | 
 | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The unique identifier, relative to the current context, of the procedure. | ||||||
|  | 
 | ||||||
|  | #### call(name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered in the current context. | ||||||
|  | 
 | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the previously registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Can be of any type, since `call` does not traverse the network. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | ```javascript | ||||||
|  | rpc.register('hi', () => 'hello!'); | ||||||
|  | 
 | ||||||
|  | rpc.call('hi').then(result => { | ||||||
|  |     // result = hello! | ||||||
|  |     console.log(result); | ||||||
|  | }).catch(err => { | ||||||
|  |     console.error(err); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
|  | 
 | ||||||
|  | #### callServer(name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered on the server. | ||||||
|  | 
 | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the previously registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Must be JSON-able if the current context is not the server. Use an array or object to pass multiple arguments. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | Server-side: | ||||||
|  | ```javascript | ||||||
|  | rpc.register('getWeather', () => mp.world.weather); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Client-side OR Browser OR Server: | ||||||
|  | ```javascript | ||||||
|  | rpc.callServer('getWeather').then(weather => { | ||||||
|  |     mp.gui.chat.push(`The current weather is ${weather}.`); | ||||||
|  | }).catch(err => { | ||||||
|  |     // handle error | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
|  | 
 | ||||||
|  | ### Server-side | ||||||
|  | 
 | ||||||
|  | #### callClient(player, name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered on a specific client. | ||||||
|  | 
 | ||||||
|  | * `player` [Player](https://wiki.rage.mp/index.php?title=Server-side_functions#Player) - The player to call the procedure on. | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | Client-side: | ||||||
|  | ```javascript | ||||||
|  | rpc.register('toggleChat', toggle => { | ||||||
|  |     mp.gui.chat.show(toggle); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Server-side: | ||||||
|  | ```javascript | ||||||
|  | mp.players.forEach(player => { | ||||||
|  |     rpc.callClient(player, 'toggleChat', false); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
|  | 
 | ||||||
|  | #### callBrowsers(player, name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered in any CEF instance on a specific client. | ||||||
|  | 
 | ||||||
|  | Any CEF instance can register the procedure. The client will iterate through each instance and call the procedure on the first instance that it exists on. | ||||||
|  | 
 | ||||||
|  | * `player` [Player](https://wiki.rage.mp/index.php?title=Server-side_functions#Player) - The player to call the procedure on. | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | Browser: | ||||||
|  | ```javascript | ||||||
|  | rpc.register('toggleHUD', toggle => { | ||||||
|  |     // if jQuery is your thing | ||||||
|  |     $('#hud').toggle(toggle); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Server-side: | ||||||
|  | ```javascript | ||||||
|  | mp.players.forEach(player => { | ||||||
|  |     rpc.callClient(player, 'toggleChat', false); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
|  | 
 | ||||||
|  | ### Client-side | ||||||
|  | 
 | ||||||
|  | #### callBrowser(browser, name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered in a specific CEF instance. | ||||||
|  | 
 | ||||||
|  | * `browser` [Browser](https://wiki.rage.mp/index.php?title=Client-side_functions#Browser) - The browser to call the procedure on. | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | Browser: | ||||||
|  | ```javascript | ||||||
|  | rpc.register('getInputValue', () => { | ||||||
|  |     // if jQuery is your thing | ||||||
|  |     return $('#input').val(); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Client-side: | ||||||
|  | ```javascript | ||||||
|  | const browser = mp.browsers.at(0); | ||||||
|  | 
 | ||||||
|  | rpc.callBrowser(browser, 'getInputValue').then(value => { | ||||||
|  |     mp.gui.chat.push(`The CEF input value is: ${value}`); | ||||||
|  | }).catch(err => { | ||||||
|  |     // handle errors | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
|  | 
 | ||||||
|  | ### CEF or Client-side | ||||||
|  | 
 | ||||||
|  | #### callBrowsers(name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered in any CEF instance on a specific client. | ||||||
|  | 
 | ||||||
|  | Any CEF instance can register the procedure. The client will iterate through each instance and call the procedure on the first instance that it exists on. | ||||||
|  | 
 | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | Browser: | ||||||
|  | ```javascript | ||||||
|  | rpc.register('toggleHUD', toggle => { | ||||||
|  |     // if jQuery is your thing | ||||||
|  |     $('#hud').toggle(toggle); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Client-side OR Browser: | ||||||
|  | ```javascript | ||||||
|  | rpc.callBrowsers('toggleChat', false); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
|  | 
 | ||||||
|  | #### callClient(name, args) | ||||||
|  | 
 | ||||||
|  | Calls a procedure that has been registered on the local client. | ||||||
|  | 
 | ||||||
|  | * `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure. | ||||||
|  | * `args?` - Optional arguments to pass to the procedure. Must be JSON-able if the current context is not this client. Use an array or object to pass multiple arguments. | ||||||
|  | 
 | ||||||
|  | ##### Example | ||||||
|  | 
 | ||||||
|  | Client-side: | ||||||
|  | ```javascript | ||||||
|  | rpc.register('toggleChat', toggle => { | ||||||
|  |     mp.gui.chat.show(toggle); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Client-side OR Browser: | ||||||
|  | ```javascript | ||||||
|  | rpc.callClient('toggleChat', false); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown. | ||||||
		Reference in New Issue
	
	Block a user