Search the Community
Showing results for tags 'developer'.
-
Version 2.8.0
74 downloads
Description FileWatcher monitors your server’s config and lang JSON files and automatically reloads the affected plugin when changes are detected. This is aimed at faster iteration while developing or tuning plugins — edit JSON, save, and the plugin reloads itself. Features Config + Lang monitoring - Watches */config/*.json - Watches */lang/**.json (including subfolders) Safe reload behavior - Debounce (1s): prevents multiple reloads while a file is still being written - Reload cooldown (20s): prevents reload loops and spam - Ignore list: exclude specific plugins from being reloaded - Always ignores FileWatcher itself Stability - If the watcher throws errors, it auto-restarts itself after 5 seconds Debug mode - Optional debug output for watcher init, file changes, cooldown/debounce decisions, etc. Commands /fwstatus Shows watcher status (Config/Lang on/off) and ignored count. Admin only. Permissions No Oxide permission is used. Access is gated by player.IsAdmin. Config { "Watch config folder": true, "Watch lang folder": true, "Ignored plugins": [ "PermissionManager" // This is an example. ], "Debug mode": false } load, run, enjoy$3.55 -
Version 2.1.3
58 downloads
Collect votes from supported server-list providers, keep provider identities correctly separated, and turn verified vote totals into points or optional server rewards. At a glance Poll Top-Serveurs, Top-Games, and Rust-Servers.net from one configurable service. Keep Top-Serveurs and Top-Games nickname ledgers separate until an administrator binds each nickname to a Steam ID. Use the authenticated Steam ID returned by Rust-Servers.net when its Steam ranking feed supplies one. Expose a stable points API for player-facing integrations. Optionally mirror accepted points into Custom Rewards or Economics. Preserve accepted vote data before invoking an optional external reward effect. How it helps Vote System centralizes provider polling and attribution so server owners can build voting rewards without treating an untrusted display name as a Steam owner. Each provider has separate configuration, points, interval, and storage boundaries. Key features Three independently enabled provider configurations. Empty tokens and disabled providers by default. Minimum polling interval enforcement and bounded point multipliers. Provider-specific nickname-to-Steam bindings for Top-Serveurs and Top-Games. Authenticated Steam ledger for Rust-Servers.net. Checked point arithmetic and durable wipe generations. Optional Custom Rewards and Economics effects. Clear warnings for unbound votes and post-save effects that require administrator review. How it works Top-Serveurs and Top-Games historical feeds return a provider nickname but do not authenticate its Steam owner in the vote list. Vote System records that nickname's vote, then applies owner-scoped points only when the administrator has configured a binding for that provider. Rust-Servers.net is different: the configured request asks for Steam ranking, and only a valid steamid returned by the provider enters the authenticated Steam ledger. A nickname-only row is rejected. votesystem.wipe The administrator console command begins a durable wipe generation, captures a fresh Rust-Servers.net baseline when that provider is enabled, and resumes polling only after the new state is stored. Requirements and compatibility Rust server using Oxide or Carbon. Provider account and token for every feed you choose to enable. Optional Custom Rewards for owner-point mirroring and reward UI integrations. Optional Economics for deposits. Vote Reward is an optional separate product that supplies the familiar player chat commands and opens the Custom Rewards UI. Provider accounts, availability, rules, and pricing are owned by their respective provider. They are not included with Vote System. Review the current provider terms and any free access or charges before enabling a feed. Setup Install VoteSystem.cs in the framework plugin directory. Keep all providers disabled while reviewing the generated configuration. Obtain each API token directly from the provider and store it only in the server configuration. For Top-Serveurs or Top-Games, add reviewed nickname-to-Steam bindings before expecting owner-scoped points. Decide whether Custom Rewards and Economics should be enabled; disable any integration you do not use. Back up the oxide/data/VoteSystem directory. Enable one provider at a time and watch the server log for validation or attribution warnings. Commands and permissions CommandPurposeAuthorization votesystem.wipeStart a durable vote-baseline resetRust administrator or votesystem.admin votesystem_wipeHistorical compatibility alias for the same operationRust administrator or votesystem.admin Vote System has no player chat command. Install Vote Reward only if you want the historical /vote-style command layer. Configuration highlights The following example keeps all providers disabled until tokens, bindings, and integrations have been reviewed: { "Data Version": 2, "Plugin Extensions": { "CustomRewards": { "Enabled": true, "Custom Rewards Template Name": "VoteSystem" }, "Economics": { "Enabled": false, "Multiplicator": 100 } }, "Vote Servers Settings": { "TopServer": { "Enabled": false, "API Token": "", "Points by vote": 1, "Nickname to Steam ID bindings": { "provider nickname": "76561198000000000" }, "Routine Settings": { "Check Interval (seconds)": 30 } } } } Bindings are provider-specific. Multiple nicknames may map to one Steam ID, but changing a binding later reallocates that nickname ledger's existing balance. Review ownership before enabling the provider and avoid later reassignment. Practical tutorials Tutorial: enable Top-Serveurs safely Back up oxide/data/VoteSystem. Add the Top-Serveurs token and keep the provider disabled. Add every known provider nickname to Nickname to Steam ID bindings. Confirm each value is the intended 17-digit Steam ID. Set a positive points value and an interval of at least 15 seconds. Enable Top-Serveurs and monitor the first responses. Treat an unbound-vote warning as an attribution task; the vote is stored but creates no owner-scoped reward. Tutorial: enable Rust-Servers.net Configure the provider token and keep the shipped Steam-ranking URL. Verify that Steam OpenID voting is enabled on the provider side. Leave nickname bindings empty; Rust-Servers.net attribution uses the returned authenticated Steam ID. Enable the provider and confirm that invalid or nickname-only rows are rejected. Run the administrator wipe command only when you intend to capture a new baseline. Recovery tutorial Stop polling before recovery. Restore the last known-good oxide/data/VoteSystem backup, including the wipe epoch and player vote files, then reload the plugin. Do not merge nickname and Steam ledgers or rename files to force ownership. Provider data and privacy Vote System sends the configured provider URL, server token, and request parameters to the selected provider. It receives vote identities and counts defined by that provider's response. It does not send Custom Rewards catalogues, Economics balances, server chat, or unrelated player data. Tokens remain in local configuration and should be redacted from logs and support messages. Vote ledgers remain on the server. The plugin does not provide a provider account or change a provider's privacy policy. Limits and failure behavior Providers are disabled when configuration is invalid. Unsafe identities, malformed JSON, stale periods, negative values, and arithmetic overflow are rejected. An unbound Top-Serveurs or Top-Games vote is stored but has no owner-scoped effect. Accepted state is stored before optional hooks or Economics deposits. A failed optional effect is not retried automatically because retrying could duplicate a deposit; the log supplies a reconciliation key. Provider caching, rate limits, outages, and response changes remain external to the plugin. Troubleshooting A provider stays disabled: verify its token, URL, interval, and positive points value. Top votes are stored but points remain zero: add the missing provider-specific nickname binding. Rust-Servers.net rows are rejected: confirm the feed returns a valid authenticated steamid and uses Steam ranking. Economics did not deposit: check the reconciliation warning before making a manual adjustment. Polling does not resume after a wipe: restore or repair the wipe state and obtain a valid Rust-Servers.net baseline. FAQ Are display names matched automatically? No. Top-Serveurs and Top-Games require administrator bindings. Numeric-looking nicknames are not treated as Steam IDs. Does every accepted vote grant an Economics deposit? Only when the provider identity is owner-scoped, Economics is enabled, and the deposit call succeeds after the vote is stored. Was every real provider validated live? No. A real provider request was not executed for every supported provider during the final historical validation. Support Use the Codefling support section with the plugin version, framework, provider name, redacted error, and whether the identity was a provider nickname or authenticated Steam ID. Never include provider tokens or full player ledgers.$4.99 -
Version 2.0.4
171 downloads
Turn player engagement into a clear, visual reward journey with configurable catalogues, secure claims, and administrator-controlled delivery. At a glance Create independent reward types with their own points, catalogue, commands, permission, language, and visual theme. Let players browse paginated rewards, see locked or claimed states, and claim eligible rewards from an in-game UI. Deliver items, server commands, permission grants, and group grants through one reviewed reward definition. Keep point ownership compatible with integrations such as Vote System while retaining administrator control. Recover safely from reloads and partial delivery without replaying completed actions. How it helps Custom Rewards gives server owners one reusable reward layer instead of a separate UI and claim implementation for every event. Each reward type can represent voting, playtime, seasonal progress, VIP benefits, or another server-owned points source. Key features Multiple reward catalogues, each stored in its own JSON file. Configurable show commands and dynamic customrewards.<type>.use access. Common, Rare, Epic, and Legendary presentation with configurable colours. Per-page browsing with visible available, locked, and claimed states. Server-side eligibility checks repeated when a reward is claimed. Item, command, permission, and group actions. Owner-scoped point APIs for integrations. Durable claim progress and administrator-visible reconciliation when an external action has an uncertain result. Safe migration of supported legacy player data. Player workflow An administrator enables a reviewed reward type and grants its use permission. The player runs one of that type's configured chat commands. The UI displays the current catalogue and the player's claim state. The player changes page if needed and selects an eligible reward. The server validates points, prerequisites, and claim state again before delivery. The visible screen distinguishes rewards that are available, already claimed, or unavailable. Administrators decide which commands display each catalogue and which groups can access it. How it works Each file in oxide/data/CustomRewards_rewards/ defines one reward type. Its filename is the exact type used by permissions and integrations. Player balances and claim progress are stored separately so an interrupted delivery can resume without repeating confirmed actions. customrewards_give VoteSystem 76561198000000000 5 The example grants five owner points to the VoteSystem reward type. Run administrator commands from the server console or with the administrative permission. Requirements and compatibility Rust server using Oxide or Carbon. The standalone CustomRewards.cs file from this product. No required plugin dependency. Optional integrations must use the documented compatibility APIs and the same reward-type name. Setup Back up existing oxide/data/CustomRewards_* files. Install CustomRewards.cs in the framework plugin directory. Let the plugin create oxide/data/CustomRewards_rewards/. Copy and rename the supplied example configuration for each reward type you need. Review every item name, server command, permission change, group change, image URL, and eligibility rule. Set Enabled to true only after that review. Grant customrewards.<type>.use and test the configured show command with a non-administrator account. Commands and permissions CommandPurposeAuthorization Reward-type show commandsOpen the configured catalogue UIAdministrator or customrewards.<type>.use customrewards_give <type> <player> <quantity>Add points to one playercustomrewards.admin customrewards_wipe_owner <type> <owner>Remove one owner's contribution from a balancecustomrewards.admin customrewards_wipe_all <type>Clear all balances for one reward typecustomrewards.admin customrewards_changepageInternal player paging actionPublic, arguments validated by the server customrewards_claimInternal player claim actionPublic, eligibility rechecked by the server The historical CustomRewards.Admin and CustomRewards.<Type>.Use forms remain accepted for existing installations. Configuration highlights New reward types are disabled by default. Start with a small catalogue and a test-only permission: { "Enabled": false, "Commands for show UI": ["vote_rewards"], "UI Settings": { "Max Reward By Page": 5, "Show Description": true }, "Rewards Settings": { "Rewards List": [ { "Rarity (Common - Rare - Epic - Legendary)": "Common", "Quantity": 100, "Item Shortname (optional)": "wood", "Server command (optional)": [], "Grant Permissions :": [], "Grant Groups :": {}, "Needed Permissions :": {}, "Needed Groups :": {} } ] } } Only %steamid% is accepted as a command placeholder. Keep reward configuration restricted to trusted administrators because configured commands and access changes are privileged actions. Practical tutorials Example: create a voting catalogue Create VoteSystem.json in oxide/data/CustomRewards_rewards/. Set a safe show command such as vote_rewards. Add one low-value test reward and leave the type disabled. Reload Custom Rewards and resolve every validation error. Grant customrewards.votesystem.use to a test group. Enable the type, add test points, open the UI, and claim the reward. Add the remaining catalogue only after the complete test succeeds. Example: integrate another points source Use the owner-points API with a stable owner name. Keep the reward type identical in both plugins, check that it is enabled, and open the UI through the structured UI method so a failure can be reported without exposing an incomplete screen. Troubleshooting The show command is unknown: confirm the reward type is enabled and its command is unique. The UI says access is denied: grant customrewards.<type>.use or test with an administrator. A catalogue does not load: review the first validation error for invalid actions, empty rewards, unsafe placeholders, or contradictory access rules. A claim is pending review: inspect the administrator diagnostic before retrying; do not edit player data to bypass an uncertain external action. Images do not appear: verify direct HTTPS image URLs and keep custom URLs under administrator control. FAQ Can two reward types use different themes? Yes. Each reward-type file owns its catalogue, UI settings, colours, commands, and access permission. Can a reward combine actions? Yes. One reward can contain an item plus reviewed commands, permission grants, or group grants. Each action is tracked separately during delivery. Does Custom Rewards require Vote System? No. Vote System is an optional points source. Custom Rewards can run with administrator grants or another compatible integration. Support Use the Codefling support section with the plugin version, framework, reward-type name, the first relevant error, and a redacted configuration excerpt. Never include API tokens or private player data.$5.99 -
[PluginReference] private Plugin TemporaryPermissions; There are 30 methods: IsReady User's Permissions: GrantUserPermission RevokeUserPermission UserHasPermission GrantActiveUsersPermission GrantAllUsersPermission RevokeActiveUsersPermission RevokeAllUsersPermission UserGetAllPermissions UserGetPermissionByExpiry UserGetAllPermissionsByExpiry ActiveUsersGetAllPermissions AllUsersGetAllPermissions User's Groups: AddUserGroup RemoveUserGroup UserHasGroup AddActiveUsersGroup AddAllUsersGroup RemoveActiveUsersGroup RemoveAllUsersGroup UserGetAllGroups ActiveUsersGetAllGroups AllUsersGetAllGroups Group's Permissions: GrantGroupPermission RevokeGroupPermission GroupHasPermission GrantAllGroupsPermission RevokeAllGroupsPermission GroupGetAllPermissions AllGroupsGetAllPermissions IsReady: Used to check if the TemporaryPermissions plugin is loaded and ready to work. The IsReady method returns true if it is ready, or null if it is not. (bool)TemporaryPermissions?.Call("IsReady");//Calling the IsReady method. If the result is not null(bool true), the plugin is ready. GrantUserPermission: Used to grant a temporary permission to a player. Returns true if the grant was successful. To call the GrantUserPermission method, you need to pass 5 parameters, 3 of which are optional: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>permName - The name of the permission; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the permission will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date; <bool>checkExistence - Optional. Whether to check for the existence of the permission. (bool)TemporaryPermissions?.Call("GrantUserPermission", player.UserIDString, "realpve.vip");//Calling the GrantUserPermission method without specifying the third parameter, to grant temporary permission until the wipe. (bool)TemporaryPermissions?.Call("GrantUserPermission", player.UserIDString, "realpve.vip", 0);//Calling the GrantUserPermission method with the specified number less than 1, to grant temporary permission until the wipe. (bool)TemporaryPermissions?.Call("GrantUserPermission", player.UserIDString, "realpve.vip", 3600, true, true);//Calling the GrantUserPermission method with the specified number of seconds to add. (bool)TemporaryPermissions?.Call("GrantUserPermission", player.UserIDString, "realpve.vip", expireDate, assignedDate, true);//Calling the GrantUserPermission method with the specified DateTime for the end and start of the temporary permission. RevokeUserPermission: Used to revoke a temporary permission from a player. Returns true if the revoke was successful. To call the RevokeUserPermission method, you need to pass 2 parameters: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>permName - The name of the permission. (bool)TemporaryPermissions?.Call("RevokeUserPermission", player.UserIDString, "realpve.vip"); UserHasPermission: Used to check if a player has a temporary permission. Returns true if the player has the specified temporary permission. To call the UserHasPermission method, you need to pass 2 parameters: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>permName - The name of the permission. (bool)TemporaryPermissions?.Call("UserHasPermission", player.UserIDString, "realpve.vip"); GrantActiveUsersPermission: Used to temporarily grant a permission to all online players. Returns the <int>number of successful grants of temporary permissions to players. To call the GrantActiveUsersPermission method, you need to pass 3 parameters, 2 of which is optional: <string>permName - The name of the permission; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the permission will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date. (int)TemporaryPermissions?.Call("GrantActiveUsersPermission", "realpve.vip");// Calling the GrantActiveUsersPermission method without specifying the second parameter, to grant all online players temporary permission until the wipe. (int)TemporaryPermissions?.Call("GrantActiveUsersPermission", "realpve.vip", 0);//Calling the GrantActiveUsersPermission method with the specified number less than 1, to grant all online players temporary permission until the wipe. (int)TemporaryPermissions?.Call("GrantActiveUsersPermission", "realpve.vip", 3600, true);//Calling the GrantActiveUsersPermission method with the specified number of seconds to add. (int)TemporaryPermissions?.Call("GrantActiveUsersPermission", "realpve.vip", expireDate, assignedDate);//Calling the GrantActiveUsersPermission method with the specified DateTime for the end and start of the temporary permission. GrantAllUsersPermission: Used to grant a temporary permission to all players. Returns the <int>number of successful grants of temporary permissions to players. To call the GrantAllUsersPermission method, you need to pass 3 parameters, 2 of which is optional: <string>permName - The name of the permission; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the permission will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date. (int)TemporaryPermissions?.Call("GrantAllUsersPermission", "realpve.vip");//Calling the GrantAllUsersPermission method without specifying the second parameter, to grant all players temporary permission until the wipe. (int)TemporaryPermissions?.Call("GrantAllUsersPermission", "realpve.vip", 0);//Calling the GrantAllUsersPermission method with the specified number less than 1, to grant all players temporary permission until the wipe. (int)TemporaryPermissions?.Call("GrantAllUsersPermission", "realpve.vip", 3600, true);//Calling the GrantAllUsersPermission method with the specified number of seconds to add. (int)TemporaryPermissions?.Call("GrantAllUsersPermission", "realpve.vip", expireDate, assignedDate);//Calling the GrantAllUsersPermission method with the specified DateTime for the end and start of the temporary permission. RevokeActiveUsersPermission: Used to revoke a temporary permission from all online players. Returns the <int>number of successful revokes of temporary permissions to players. To call the RevokeActiveUsersPermission method, you need to pass 1 parameter: <string>permName - The name of the permission. (int)TemporaryPermissions?.Call("RevokeActiveUsersPermission", "realpve.vip"); RevokeAllUsersPermission: Used to revoke a temporary permission from all players. Returns the <int>number of successful revokes of temporary permissions to players. To call the RevokeAllUsersPermission method, you need to pass 1 parameter: <string>permName - The name of the permission. (int)TemporaryPermissions?.Call("RevokeAllUsersPermission", "realpve.vip"); UserGetAllPermissions: Used to retrieve all temporary permissions of a player. Returns a Dictionary<string, DateTime[]> where the key is the permission name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. To call the UserGetAllPermissions method, you need to pass 1 parameter: <string>playerID - The player's Id. (Dictionary<string, DateTime[]>)TemporaryPermissions?.Call("UserGetAllPermissions", player.UserIDString); UserGetPermissionByExpiry: Used to get the expiration date of a player's temporary permission, considering the temporary permission for the group they may belong to. The latest date is taken. Returns a DateTime[]: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. To call the UserGetPermissionByExpiry method, you need to pass 2 parameters: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>permName - The name of the permission. (DateTime[])TemporaryPermissions?.Call("UserGetPermissionByExpiry", player.UserIDString, "realpve.vip"); UserGetAllPermissionsByExpiry: Used to get the expiration date of all temporary permissions for a player, considering the temporary permissions for the group they may belong to. The latest date is taken. Returns a Dictionary<string, DateTime[]> where the key is the permission name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. To call the UserGetAllPermissionsByExpiry method, you need to pass 1 parameter: IPlayer or BasePlayer or <string>playerID - The player object or their Id. (Dictionary<string, DateTime[]>)TemporaryPermissions?.Call("UserGetAllPermissionsByExpiry", player.UserIDString); ActiveUsersGetAllPermissions: Used to retrieve all temporary permissions of all online players who have temporary permissions. Returns a Dictionary<string, Dictionary<string, DateTime[]>> where the key is userID and the value is another Dictionary<string, DateTime[]>, where the key is the permission name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. (Dictionary<string, Dictionary<string, DateTime[]>>)TemporaryPermissions?.Call("ActiveUsersGetAllPermissions"); AllUsersGetAllPermissions: Used to retrieve all temporary permissions of all players who have temporary permissions. Returns a Dictionary<string, Dictionary<string, DateTime[]>> where the key is userID and the value is another Dictionary<string, DateTime[]>, where the key is the permission name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. (Dictionary<string, Dictionary<string, DateTime[]>>)TemporaryPermissions?.Call("AllUsersGetAllPermissions"); AddUserGroup: Used to temporarily add a player to a group. Returns true if the addition was successful. To call the AddUserGroup method, you need to pass 5 parameters, 3 of which are optional: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>groupName - The name of the group; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the group will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date; <bool>checkExistence - Optional. Whether to check for the existence of the group. (bool)TemporaryPermissions?.Call("AddUserGroup", player.UserIDString, "vip");//Calling the AddUserGroup method without specifying the third parameter to temporarily add a player, to a group until the wipe. (bool)TemporaryPermissions?.Call("AddUserGroup", player.UserIDString, "vip", 0);//Calling the AddUserGroup method with the specified number less than 1, to temporarily add a player to a group until the wipe. (bool)TemporaryPermissions?.Call("AddUserGroup", player.UserIDString, "vip", 3600, true, true);//Calling the AddUserGroup method with the specified number of seconds to add. (bool)TemporaryPermissions?.Call("AddUserGroup", player.UserIDString, "vip", expireDate, assignedDate, true);//Calling the AddUserGroup method with the specified DateTime for the end and start of the temporary permission. RemoveUserGroup: Used to remove a temporary group from a player. Returns true if the removal was successful. To call the RemoveUserGroup method, you need to pass 2 parameters: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>groupName - The name of the group. (bool)TemporaryPermissions?.Call("RemoveUserGroup", player.UserIDString, "vip"); UserHasGroup: Used to check if a player has a temporary group. Returns true if the player has the specified temporary group. To call the UserHasGroup method, you need to pass 2 parameters: IPlayer or BasePlayer or <string>playerID - The player object or their Id; <string>groupName - The name of the group. (bool)TemporaryPermissions?.Call("UserHasGroup", player.UserIDString, "vip"); AddActiveUsersGroup: Used to temporarily add a group to all online players. Returns the <int>number of successful additions of the temporary group to players. To call the AddActiveUsersGroup method, you need to pass 3 parameters, 2 of which is optional: <string>groupName - The name of the group; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the group will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date. (int)TemporaryPermissions?.Call("AddActiveUsersGroup", "vip");//Calling the AddActiveUsersGroup method without specifying the second parameter to temporarily add all online players to a group until the wipe. (int)TemporaryPermissions?.Call("AddActiveUsersGroup", "vip", 0);//Calling the AddActiveUsersGroup method with the specified number less than 1, to temporarily add all online players to a group until the wipe. (int)TemporaryPermissions?.Call("AddActiveUsersGroup", "vip", 3600, true);//Calling the AddActiveUsersGroup method with the specified number of seconds to add. (int)TemporaryPermissions?.Call("AddActiveUsersGroup", "vip", expireDate, assignedDate);//Calling the AddActiveUsersGroup method with the specified DateTime for the end and start of the temporary permission. AddAllUsersGroup: Used to temporarily add a group to all players. Returns the <int>number of successful additions of the temporary group to players. To call the AddAllUsersGroup method, you need to pass 3 parameters, 2 of which is optional: <string>groupName - The name of the group; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the group will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date. (int)TemporaryPermissions?.Call("AddAllUsersGroup", "vip");//Calling the AddAllUsersGroup method without specifying the second parameter to temporarily add all players to a group until the wipe. (int)TemporaryPermissions?.Call("AddAllUsersGroup", "vip", 0);//Calling the AddAllUsersGroup method with the specified number less than 1, to temporarily add all players to a group until the wipe. (int)TemporaryPermissions?.Call("AddAllUsersGroup", "vip", 3600, true);//Calling the AddAllUsersGroup method with the specified number of seconds to add. (int)TemporaryPermissions?.Call("AddAllUsersGroup", "vip", expireDate, assignedDate);//Calling the AddAllUsersGroup method with the specified DateTime for the end and start of the temporary permission. RemoveActiveUsersGroup: Used to remove a temporary group from all online players. Returns the <int>number of successful removals of temporary groups from players. To call the RemoveActiveUsersGroup method, you need to pass 1 parameter: <string>groupName - The name of the group. (int)TemporaryPermissions?.Call("RemoveActiveUsersGroup", "vip"); RemoveAllUsersGroup: Used to remove a temporary group from all players. Returns the <int>number of successful removals of temporary groups from players. To call the RemoveAllUsersGroup method, you need to pass 1 parameter: <string>permName - The name of the permission. (int)TemporaryPermissions?.Call("RemoveAllUsersGroup", "vip"); UserGetAllGroups: Used to retrieve all temporary groups of a player. Returns a Dictionary<string, DateTime[]> where the key is the group name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the group. If the expiration date is set to default, it means the group is valid until the wipe. To call the UserGetAllGroups method, you need to pass 1 parameter: <string>permName - The name of the permission. (Dictionary<string, DateTime[]>)TemporaryPermissions?.Call("UserGetAllGroups", player.UserIDString); ActiveUsersGetAllGroups: Used to retrieve all temporary groups of all online players who have temporary groups. Returns a Dictionary<string, Dictionary<string, DateTime[]>> where the key is userID and the value is another Dictionary<string, DateTime[]>, where the key is the group name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the group. If the expiration date is set to default, it means the group is valid until the wipe. (Dictionary<string, Dictionary<string, DateTime[]>>)TemporaryPermissions?.Call("ActiveUsersGetAllGroups"); AllUsersGetAllGroups: Used to retrieve all temporary groups of all players who have temporary groups. Returns a Dictionary<string, Dictionary<string, DateTime[]>> where the key is userID and the value is another Dictionary<string, DateTime[]>, where the key is the group name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the group. If the expiration date is set to default, it means the group is valid until the wipe. (Dictionary<string, Dictionary<string, DateTime[]>>)TemporaryPermissions?.Call("AllUsersGetAllGroups"); GrantGroupPermission: Used to grant a temporary permission to a group. Returns true if the grant was successful. To call the GrantGroupPermission method, you need to pass 5 parameters, 3 of which are optional: <string>groupName - The name of the group; <string>permName - The name of the permission; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the permission will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date; <bool>checkExistence - Optional. Whether to check for the existence of the permission. (bool)TemporaryPermissions?.Call("GrantGroupPermission", "vip", "realpve.vip");//Calling the GrantGroupPermission method without specifying the third parameter, to grant temporary permission until the wipe. (bool)TemporaryPermissions?.Call("GrantGroupPermission", "vip", "realpve.vip", 0);//Calling the GrantGroupPermission method with the specified number less than 1, to grant temporary permission until the wipe. (bool)TemporaryPermissions?.Call("GrantGroupPermission", "vip", "realpve.vip", 3600, true, true);//Calling the GrantGroupPermission method with the specified number of seconds to add. (bool)TemporaryPermissions?.Call("GrantGroupPermission", "vip", "realpve.vip", expireDate, assignedDate, true);//Calling the GrantGroupPermission method with the specified DateTime for the end and start of the temporary permission. RevokeGroupPermission: Used to revoke a temporary permission from a group. Returns true if the revoke was successful. To call the RevokeGroupPermission method, you need to pass 2 parameters: <string>groupName - The name of the group; <string>permName - The name of the permission. (bool)TemporaryPermissions?.Call("RevokeGroupPermission", "vip", "realpve.vip"); GroupHasPermission: Used to check if a group has a temporary permission. Returns true if the group has the specified temporary permission. To call the GroupHasPermission method, you need to pass 2 parameters: <string>groupName - The name of the group; <string>permName - The name of the permission. (bool)TemporaryPermissions?.Call("GroupHasPermission", "vip", "realpve.vip"); GrantAllGroupsPermission: Used to temporarily grant a permission to all groups. Returns the <int>number of successful grants of temporary permissions to groups. To call the GrantAllGroupsPermission method, you need to pass 3 parameters, 2 of which is optional: <string>permName - The name of the permission; <int>secondsToAdd or <DateTime>expireDate - Optional. The time in seconds to add, or the end date. If a number less than 1 is specified, or if this parameter is not specified, the permission will be valid until the wipe; <bool>fromNow or <DateTime>assignedDate - Optional. true/false to specify whether the seconds should be added to the current date or to the existing time, or an exact assignment date. Defaults to the current date. (int)TemporaryPermissions?.Call("GrantAllGroupsPermission", "realpve.vip");//Calling the GrantAllGroupsPermission method without specifying the second parameter, to grant all groups temporary permission until the wipe. (int)TemporaryPermissions?.Call("GrantAllGroupsPermission", "realpve.vip", 0);//Calling the GrantAllGroupsPermission method with the specified number less than 1, to grant all groups temporary permission until the wipe. (int)TemporaryPermissions?.Call("GrantAllGroupsPermission", "realpve.vip", 3600, true);//Calling the GrantAllGroupsPermission method with the specified number of seconds to add. (int)TemporaryPermissions?.Call("GrantAllGroupsPermission", "realpve.vip", expireDate, assignedDate);//Calling the GrantAllGroupsPermission method with the specified DateTime for the end and start of the temporary permission. RevokeAllGroupsPermission: Used to revoke a temporary permission from all groups. Returns the <int>number of successful revokes of temporary permissions to groups. To call the RevokeAllGroupsPermission method, you need to pass 1 parameter: <string>permName - The name of the permission. (int)TemporaryPermissions?.Call("RevokeAllGroupsPermission", "realpve.vip"); GroupGetAllPermissions: Used to retrieve all temporary permissions of a group. Returns a Dictionary<string, DateTime[]> where the key is the permission name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. To call the GroupGetAllPermissions method, you need to pass 1 parameter: <string>groupName - The name of the group. (Dictionary<string, DateTime[]>)TemporaryPermissions?.Call("GroupGetAllPermissions", "vip"); AllGroupsGetAllPermissions: Used to retrieve all temporary permissions of all groups that have temporary permissions. Returns a Dictionary<string, Dictionary<string, DateTime[]>> where the key is the group name and the value is another Dictionary<string, DateTime[]>, where the key is the permission name and the value is an array of 2 DateTimes: the first date is the assignment date and the second date is the expiration date of the permission. If the expiration date is set to default, it means the permission is valid until the wipe. (Dictionary<string, Dictionary<string, DateTime[]>>)TemporaryPermissions?.Call("AllGroupsGetAllPermissions");
-
Experienced Rust Plugin Developer Available Hello everyone, I am a professional software developer from Germany with over 3 years of experience in Rust plugin development. In addition to my plugin work, I have a solid background in software development, which allows me to create efficient, high-quality, and well-optimized code tailored to your specific needs. What I Offer: Custom Rust plugins designed to meet your exact requirements Optimization and improvement of existing plugins Bug fixing and performance enhancements Ongoing support and maintenance Why Choose Me: 3+ years of hands-on Rust plugin development experience Strong problem-solving skills and attention to detail Fluent in English for clear and effective communication Reliable, fast, and professional service I am open to both short-term and long-term projects. If you’re looking for someone who can deliver high-quality Rust plugins efficiently, feel free to reach out. Let's discuss how I can help with your project. You can contact me via Discord: janny.p Looking forward to working with you! Best regards, Janny aka CommandoSoldat
-
Version 2.0.6
871 downloads
Rust Snippets Rust Snippets are designed to enhance the coding experience for Rust plugin developers. It streamlines the programming workflow, eliminating the need to repeatedly visit forums or perform repetitive tasks. Rust Snippets integrates all Rust plugin hooks directly into Visual Studio, allowing developers to code on the fly with embedded comments for each hook. Expect regular updates. Shortcuts Setup: Initializes a default Oxide plugin setup. Harmony: Sets up a default Harmony Oxide plugin. Config: Sets up a basic config file. Language: Sets up a basic language file. ChatCommand: Creates a basic ChatCommand. ConsoleCommand: Creates a basic ConsoleCommand. Permissions: Configures basic permissions. Hook Snippets The remaining shortcuts are related to various Rust plugin hooks. Typing "On" or "Can" triggers a dropdown with all available hooks. These hooks currently include all hooks from https://umod.org/documentation/games/rust Tutorial Included in the download is a comprehensive readme that guides users through the setup process. The instructions are easy to follow, ensuring a smooth onboarding experience. Feel free to reach out with any questions. Credits Special thanks to @Billy Joe for the initial idea. Although he didn't continue his work, his contributions inspired me to carry on. Be sure to check out his previous work, he produced some excellent content. I hope I could make your life easier with these snippetsFree -
Version 1.2.0
15 downloads
A webhosting always required. This website is for developers to manage their licenses It doesn't automatically license your plugins, but it talks about how to license it in the documentation. The system works with the IP address of the server where the plugin will run, not with the license key. Documentation content Already Licensed A Sample Plugin Information on how to license a plugin Information about api returns$20.00- 9 comments
-
- 1
-
-
- #drm
- #plugin protection
-
(and 3 more)
Tagged with:
-
Version 1.2.4
798 downloads
Purpose Create some custom plugins for the Rust game using Carbon Oxide Test the plugins with a local server Update the dependencies with a simple script Getting started Download this repository somewhere on your computer (windows only) Run the Workplace_Installer.bat script Open the Plugins.sln solution with Visual Studio or Rider You're done! Update the Frameworks & Server To update the Workplace run Workplace_Updater.bat script This script will call all the update scripts under Scripts\ This action is only requiered on force wipe. However you can run the script by hand if you want to update a specific part of the workplace. It might be usefull when a new version of Carbon or Oxide is released. Please note that the Rust Server will update itself automatically when you start it with the rustserver\Server_Launcher script. Manager the Server To start the server run rustserver\Server_Launcher.bat script Feel free to edit the script to change the server settings. To install Carbon/Oxide on the server run rustserver\Framework_Installer.bat script You will be asked to choose the framework you want to install. To copy all the plugins to the server run rustserver\Plugin_Loader.bat script You will be asked to choose on witch framework you want to load the plugins. Note that Oxide plugins will be loaded enven if you choose Carbon* Extensions There are currently 3 Oxide extensions automatically downloaded: Chaos Discord RustEdit You can simply add more by adding them to the modding\ folder or by editing the Scripts\Extensions.txt file. Carbon extensions are also supported. Documentations I recommend you to read the documentations of the frameworks or browse some existing plugins to understand how they work: Carbon Oxide Rust Server Tools & Versions - .NET Framework 4.8.1 - (C#10) Credits - Author: HandyS11Free- 1 review
-
- 3
-
-
- #rust
- #developer
-
(and 2 more)
Tagged with:
-
Version 1.0.4
435 downloads
Features Be a template for your own plugin Store the last connection time of a player Store the number of death of a player Permissions myplugin.admin - Allows player to use the /myplugin command Commands myplugin help - Displays some help Configuration Default configuration: { "Default Chat Avatar (steamId)": 0 } Localization Default English localization: { "PluginMissing": "The plugin \"SomePlugin\" was not found. Check on UMod: https://umod.org/plugins/someplugin", "NoPermission": "You are not allowed to run this command!", "HelpMessage": "Some useful help!", "UnknownCommand": "Unknown command!" } Hooks DateTime? GetLastConnectionTime(ulong userId) // Return the last connection time (DateTime?) of a player or null if the player is not found int? GetNumberOfDeath(ulong userId) // Return the number (int?) of death of a player or null if the player is not found Credits YourName - AuthorFree -
-
Hello! I'm David and I've been running rust services for over a year now! I've built up a client base and decided to reopen up my services discord with my close friend Shady4u! You might know him from sone of his products like simple splitter or simple symmetry. With summer coming up we're running full steam ahead with the possibility of you getting anything you need made within one community. Join the services discord: here
-
- 1
-
-
- #services
- #development
-
(and 5 more)
Tagged with:
-
I am new to c# but i can do some basic stuff for your server and also i have been working on server configurations, optimization and map making since 2 years . If you are looking for an admin to manage stuff or you need a server to be configured or optimized you can shoot me a pm. If you want to see my previous work you can dm me on discord : Qube#9311 Thank you
-
Hello All, My name is Billy Joe and have been programming in Rust for the past 2 and a half years, doing commission work for a whole ton of clients/community's. I have found some free time to get some more work done, and am looking for serious clients. If you are interested all details needed are down below, please only add me if you are serious and ready to pay. Details: Payment Type: Paypal Pay Amount: $35/hr - I will give you a time estimate based on what you are wanting. Discord: Billy Joe#2213 Hope to hear from you, Billy Joe
-
- 2
-
-
- #developer
- #for hire
-
(and 2 more)
Tagged with:
-
I want to get a list of all the mines placed by the player, entity.GetComponentsInChildren<Landmine>() returns me only landmine[0] And I still don't know how to track the pressing of the RF transmitter and the player who pressed it(
-
Version 1.0.3
675 downloads
Ruster.NET Addons is a service that allows plugin developers to create and server owners to upgrade and change Ruster.NET in almost any way possible. This plugin provides API and hook support that gives you access to interactions users make in Ruster.NET, from creating your own DM bots with custom commands, to use all the modular panels Ruster.NET provides for your own purposes. Read documentation here or get Addons on this tag. Features API Access Open / close users' browser Open modals with custom (required) fields Open color picker Get users or a specific user Check if users are admins, moderators, verified, developer or a bot Create your own users with custom profile pictures and user configurations (for bots) Get friends of users Get friend requests Get posts for a specific feed or user Get marketplace or advert posts Get blocked users Send or handle friend requests for an user Pin/unpin posts Like/dislike posts Get feed information, such as feed title, type, owner Create posts and publish them on feeds or users' profiles Get or create conversations between users Send messages to players Mark message status (read/unread), and much more. Hook Access On coupons added or removed On language change On custom nickname update On wallet withdraw On restock On hashtag filter On post created/removed On post viewed/closed On post with audio played/stopped On DM sent, and much more. Type Examples Feed Post Marketplace Listing Story Coupon Transaction User Gif Flipbook Modal Field Licensed Item Gift Card User Configuration User Notification Conversation Direct Message Emoji Friend Request Hashtag Business Card Bot Bot Command Check the documentation for more in-depth examples and what you can do so far in Ruster.NET and Ruster.NET Addons.Free-
- 1
-
-
- #rust
- #ruster.net
-
(and 7 more)
Tagged with:
-
Hello there, I am looking to hire a Developer, to fully develop a Rust Game Server. At this current moment in-time, little Development progress has been made in any regard, due to lack of experience of myself. I have all the necessary components required to be able to make this Server, including a Dedicated Server. In addition to this, there is a spacious budget for Paid Plugins, etc. A little bit about me, and my Community; I come from the background of FiveM, to which I currently own a Community of nearly 10,000 strong, with an active player base, of nearly 64 players, every night! I am potentially looking to expand our horizons into the Rust Community too. However, I lack the experience in Rust to be able to confidently Develop a Game Server. We have all the assets required to be able to confidently run the Server, in exception to Development experience. To conclude, I am looking for an experience Developer, preferably with experience of building Rust Game Server's to be able to complete this project for me, and oversee its operation for a short-period of time. If you feel like this opportunity would suit you, please contact me, via this thread, and we can further talks to Discord. Cheers.
-
Hi, I have a few projects I would like to have worked on and can use some help. Looking for a Rust developer who has a portfolio of work, communicates well, is consistent and is excited about developing Rust plugins! Please reach out to me on Discord at Bumfuzzler#8705 or reply here or course. Thanks!