Works with
Compatible add-ons, packages, or tools that pair well with this resource.
-
Better Chat Optional -
Economics Optional -
NTeleportation Optional -
Clans Optional -
Clans Optional -
Simple Status Optional -
Image Library Optional -
Admin Utilities Optional
About Karma
Karma is a configurable reputation/karma system for that rewards positive behavior (revive, heal, build/repair help, donation, passive peace, redemption) and punishes negative behavior (unprovoked kills, repeated kills, knocking players down, naked kills, raiding others).
It includes anti-abuse protections for teams/clans (maturity + recent-group grace), optional integrations (BetterChat, SimpleStatus, ImageLibrary, Clans, NTeleportation, Economics, Godmode, AdminUtilities, Vanish, BetterVanish), rank-based teleport restrictions, safe-zone hostility, metabolism effects, and an optional overhead Karma/rank display above players.
Key Features:
- Fully configurable positive and negative karma actions
- Anti-abuse protections for team/clan farming (maturity + grace windows)
- Improved PvP/self-defense tracking that preserves the original aggressor during a fight
- Optional teleport restrictions and safe-zone hostility based on rank
- Rank system with colors and metabolism effects (hunger/thirst)
- Rank-based command blocking and automatic permission grants
- Optional chat/UI integrations (BetterChat, SimpleStatus)
- Adaptive SimpleStatus foreground contrast for vanilla and Karma rank colors
- Optional overhead Karma/rank display with distance fading, visibility checks, and day/night brightness adjustment
- Dynamic optional integrations with automatic provider refresh and fallback handling
- Automatic legacy data migration and wipe-safe transient state cleanup
- Built-in Top/Bottom lists
- Optional API for other plugins
Permissions:
- karma.use - Allows player/group to use the /karma command.
- karma.others - Allows player/group to check other players (/karma check <name|steamid>).
Chat Commands:
- /karma - Shows help and what actions are currently enabled (requires karma.use).
- /karma check - Shows your karma + rank (requires karma.use).
- /karma check <name|steamid> - Shows karma + rank for another player (requires karma.others).
- /karma top - Shows top karma players (requires karma.use).
- /karma bottom - Shows lowest karma players (requires karma.use).
- /karma ranks - Shows configured positive/negative ranks and their effects (requires karma.use).
Server Commands:
- karma.fakeplayers
- karma.add <steamId64|name|testId> <amount>
- karma.remove <steamId64|name|testId> <amount>
- karma.set <steamId64|name|testId> <amount>
Debug/maintenance:
- karma.dump <steamid|name|testId>
- karma.redeem <steamid|name|testId>
- karma.caches
- karma.resetstate <steamid|name|testId>
- karma.cleartc
- karma.debug.set <steamid|name|testId> <karma>
Integrations:
Optional plugin integrations are detected dynamically when they are loaded or unloaded. Karma refreshes only the affected integration and reports provider changes without repeatedly printing the same console message.
- BetterChat - Optional karma rank prefix integration.
- SimpleStatus - Optional HUD status integration.
- ImageLibrary - Registers configured URL or local SimpleStatus icons and is re-resolved dynamically when loaded or unloaded.
- Clans - Optional external clan provider when Use clan plugin is enabled. Native Rust clan support remains separately configurable through Use clan.
- NTeleportation - Optional rank-based teleport restriction integration.
- Economics - Optional money donation detection.
- Godmode/AdminUtilities - Detects externally enabled GodMode before falling back to native Rust GodMode detection.
- Vanish/BetterVanish - Detects externally vanished players before falling back to native Rust vanish detection.
Configuration:
{
"General": {
"Save interval seconds (min 10)": 120,
"Save on server save": true,
"Debug": false,
"Reset on wipe": false,
"Reset karma on wipe to": 0,
"Announce rank changes in chat": true,
"Notify player when karma changes": true,
"Karma notify includes reason": true,
"Allow spawned players to affect Karma (testing only)": false,
"Use team": true,
"Use clan plugin": false,
"Use clan": false,
"Team maturity seconds for combat/raid grouping (0 = instant)": 60,
"Team stamp keep minutes (prevents false positives for offline teammates)": 360,
"Clan maturity seconds for combat/raid grouping (0 = instant)": 120,
"Clan stamp keep minutes (prevents false positives for offline clanmates)": 360,
"Positive actions: block if recently same team/clan (seconds)": 600,
"Safe zone hostile warning cooldown seconds (min 5)": 60,
"Karma hostile refresh seconds (max 15)": 5.0,
"Karma hostile seconds (max 3600)": 600.0,
"Drain metabolism tick seconds (min 1, max 30)": 5.0
},
"Combat logic": {
"Combat window seconds": 60,
"Min damage to count as aggression": 5.0,
"Ignore trap damage as first hit": true,
"Ignore bleed damage as first hit": true,
"Ignore radiation as first hit": true,
"Ignored first-hit initiator prefabs (paths)": [
"assets/prefabs/deployable/bear trap/beartrap.prefab",
"assets/prefabs/deployable/landmine/landmine.prefab",
"assets/prefabs/deployable/single shot trap/guntrap.deployed.prefab",
"assets/prefabs/deployable/floor spikes/spikes.floor.prefab",
"assets/prefabs/deployable/playerioents/teslacoil/teslacoil.deployed.prefab"
],
"Count projectile only": false,
"Consider victim team/clan aggression as self defense": true,
"Victim group aggression requires victim engaged": true,
"Victim engaged window seconds (min 1)": 12,
"Consider raid window as provocation": true
},
"Negative actions": {
"Unprovoked kill": {
"Enabled": true,
"Karma to remove": 6
},
"Self defense kill": {
"Enabled": false,
"Karma to remove": 1
},
"On same player repeated kills": {
"Enabled": true,
"Karma to remove": 8,
"Window minutes": 30,
"Free kills per pair": 1
},
"On knock down player": {
"Enabled": true,
"Karma to remove": 1
},
"Naked kill penalty": {
"Enabled": true,
"Karma to remove": 4,
"Detect": {
"Max clothing slots used": 1,
"Max weapons in belt": 0,
"Ignore if holding weapon": true,
"Ignore if has ranged weapon in belt": true,
"Max minutes since spawn (0=disabled)": 60
}
},
"On raid others": {
"Enabled": true,
"Karma to remove": 2,
"Max distance from tc": 120.0,
"Raid window seconds": 300,
"Cooldown seconds per tc": 300,
"Accumulate damage window seconds": 4,
"Min accumulated damage to count": 10.0
}
},
"Positive actions": {
"Self defense kill": {
"Enabled": false,
"Karma to add": 1
},
"Revive player": {
"Enabled": true,
"Karma to add": 4,
"Per target cooldown seconds": 900
},
"Heal other": {
"Enabled": true,
"Karma to add": 2,
"Min healed amount": 20.0,
"Per target cooldown seconds": 300,
"Accumulate heal window seconds (0 = per-scan delta)": 5,
"Heal attribution grace seconds": 2,
"Scan radius meters": 3.0,
"Scan every seconds": 1.0,
"Require recent damage seconds": 20
},
"Kill negative player": {
"Enabled": true,
"Karma to add": 2,
"Cooldown seconds per target": 600
},
"On kill while raid defending": {
"Enabled": false,
"Karma to add": 2,
"Max distance from own tc": 160.0,
"Raid window seconds": 900
},
"Help build for others": {
"Enabled": true,
"Karma to add": 1,
"Per target cooldown seconds": 1800
},
"Repair others builds": {
"Enabled": true,
"Karma to add": 2,
"Per target cooldown seconds": 1800
},
"On rescue monument": {
"Enabled": true,
"Karma to add": 3,
"Per target cooldown seconds": 900
},
"Passive peace bonus": {
"Enabled": true,
"Karma to add": 1,
"Award every minutes": 120
},
"Donation to naked": {
"Enabled": true,
"Karma to add": 2,
"Per target cooldown seconds": 1800
},
"Donate money": {
"Enabled": true,
"Karma to add": 1,
"Per target cooldown seconds": 1800,
"Minimum money amount": 10.0
},
"Redemption bonus": {
"Enabled": true,
"Karma to add": 4,
"Cooldown seconds": 43200,
"Require no player kills minutes": 180,
"Require no pvp damage minutes": 120,
"Require no raid damage minutes": 180,
"Require no combat minutes": 30
}
},
"Ranks": {
"Negative": [
{
"Name": "Troublemaker",
"Negative threshold": 25,
"Color": "#ffb300",
"Metabolism": {
"Hunger per tick": 1.0,
"Thirst per tick": 1.0
},
"Block teleport to home": false,
"Block teleport to tpr": true,
"Block teleport to town": false,
"Block teleport to outpost": false,
"Block teleport to bandit": false,
"Block teleport to island": false,
"Block teleport to tpb": false,
"Block teleport to deepsea": false,
"Block custom NTeleportation commands": false,
"Blocked chat commands (without /; examples: kit, shop)": [],
"Blocked console commands (examples: global.kill, graphics.fov)": [],
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": [],
"Hostile in safe zone": false
},
{
"Name": "Dishonorable",
"Negative threshold": 100,
"Color": "#ff7043",
"Metabolism": {
"Hunger per tick": 2.0,
"Thirst per tick": 2.0
},
"Block teleport to home": true,
"Block teleport to tpr": true,
"Block teleport to town": false,
"Block teleport to outpost": false,
"Block teleport to bandit": false,
"Block teleport to island": false,
"Block teleport to tpb": false,
"Block teleport to deepsea": false,
"Block custom NTeleportation commands": false,
"Blocked chat commands (without /; examples: kit, shop)": [],
"Blocked console commands (examples: global.kill, graphics.fov)": [],
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": [],
"Hostile in safe zone": false
},
{
"Name": "Bandit",
"Negative threshold": 200,
"Color": "#ff3d00",
"Metabolism": {
"Hunger per tick": 2.0,
"Thirst per tick": 2.0
},
"Block teleport to home": true,
"Block teleport to tpr": true,
"Block teleport to town": true,
"Block teleport to outpost": true,
"Block teleport to bandit": true,
"Block teleport to island": true,
"Block teleport to tpb": true,
"Block teleport to deepsea": true,
"Block custom NTeleportation commands": true,
"Blocked chat commands (without /; examples: kit, shop)": [],
"Blocked console commands (examples: global.kill, graphics.fov)": [],
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": [],
"Hostile in safe zone": true
},
{
"Name": "Nemesis",
"Negative threshold": 400,
"Color": "#b71c1c",
"Metabolism": {
"Hunger per tick": 3.0,
"Thirst per tick": 3.0
},
"Block teleport to home": true,
"Block teleport to tpr": true,
"Block teleport to town": true,
"Block teleport to outpost": true,
"Block teleport to bandit": true,
"Block teleport to island": true,
"Block teleport to tpb": true,
"Block teleport to deepsea": true,
"Block custom NTeleportation commands": true,
"Blocked chat commands (without /; examples: kit, shop)": [],
"Blocked console commands (examples: global.kill, graphics.fov)": [],
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": [],
"Hostile in safe zone": true
}
],
"Positive": [
{
"Name": "Friendly",
"Positive threshold": 25,
"Color": "#7cb342",
"Metabolism": {
"Hunger reduction percent": 20.0,
"Thirst reduction percent": 20.0
},
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": []
},
{
"Name": "Honorable",
"Positive threshold": 100,
"Color": "#43a047",
"Metabolism": {
"Hunger reduction percent": 30.0,
"Thirst reduction percent": 30.0
},
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": []
},
{
"Name": "Guardian",
"Positive threshold": 200,
"Color": "#1e88e5",
"Metabolism": {
"Hunger reduction percent": 40.0,
"Thirst reduction percent": 40.0
},
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": []
},
{
"Name": "Protector",
"Positive threshold": 400,
"Color": "#1565c0",
"Metabolism": {
"Hunger reduction percent": 60.0,
"Thirst reduction percent": 60.0
},
"Granted permissions (example entry: Name: VIP Kits, Permission: kits.vip)": []
}
]
},
"BetterChat": {
"Enabled": true,
"Format": "[{KarmaRank}]",
"Font size": 15
},
"SimpleStatus": {
"Enabled": true,
"Left side mode (karma|rank)": "karma",
"Hide when neutral": true,
"Use karma ranks color": false,
"Use vanilla tint": false,
"Use automatic label/value contrast with vanilla/rank colors": true,
"Status id": "karma.rank",
"Positive background": "#738D45",
"Negative background": "#C74A37",
"Neutral background": "#6B6B6B",
"Positive icon color": "#A3FE03",
"Negative icon color": "#782600",
"Neutral icon color": "#E0E0E0",
"Positive label color": "#FFFFFF",
"Negative label color": "#DEDEDE",
"Neutral label color": "#FFFFFF",
"Positive value color": "#FFFFFF",
"Negative value color": "#DEDEDE",
"Neutral value color": "#FFFFFF",
"Icon (/oxide/data/Karma/images/<name>.png for local)": "https://i.ibb.co/7tspt4MD/karma.png"
},
"Overhead rank display": {
"Enabled": true,
"Display mode (karma|points|rank)": "karma",
"Hide when neutral": false,
"Use karma ranks color": false,
"Use vanilla tint": true,
"Brighten colors during day": true,
"Day brightness multiplier (1.0 - 2.0)": 1.5,
"Dim colors at night": true,
"Night brightness multiplier (0.1 - 1.0)": 0.6,
"Positive color": "#96AA74",
"Negative color": "#D57769",
"Neutral color": "#E0E0E0",
"Font size": 14,
"Maximum distance": 20.0,
"Refresh interval seconds": 0.04
},
"Integrations": {
"Ignore players in Godmode (Vanilla God/Godmode)": true,
"Ignore vanished players (Vanilla Vanish/Vanish/BetterVanish)": true
}
}
SimpleStatus color behavior:
When Use vanilla tint or Use karma ranks color is enabled, Karma derives the foreground color from the active background instead of relying on a fixed color mapping. If Use automatic label/value contrast with vanilla/rank colors is enabled, the icon, label, and value use the same automatically resolved foreground color.
Overhead rank display:
The overhead display is independent from SimpleStatus and can show one of three values above nearby players:
- karma - Localized positive, negative, or neutral Karma text
- points - Numeric Karma points
- rank - Current Karma rank name
Use karma ranks color uses the configured rank color for non-neutral ranks. Otherwise, Use vanilla tint uses the built-in vanilla-style positive/negative/neutral colors; when both are disabled, the configured Positive color, Negative color, and Neutral color values are used.
The display uses distance fading and visibility/line-of-sight checks. Maximum distance is clamped to 5-30 meters and Refresh interval seconds is clamped to 0.03-0.10 seconds.
Wipe and data behavior:
Karma values are preserved across map wipes unless Reset on wipe is enabled. Combat, raid, cooldown, farming-protection, and other transient runtime state is cleared on every new map so old state cannot carry into the next wipe. Legacy Karma data is migrated automatically to the current data format.
Rank command and permission options:
Negative ranks can additionally configure blocked chat commands, blocked console commands, custom NTeleportation command blocking, and granted permissions. Positive ranks can also configure granted permissions.
Granted permission entries use Name and Permission values. Karma automatically synchronizes managed permissions when a player's rank changes.
Languages:
Karma includes two languages by default (English and Romanian), but you can add more in Oxide lang folder.
API Hooks:
int API_GetKarmaPoints(ulong userId) object API_GetRankInfo(ulong userId) string API_GetRankName(ulong userId) int API_GetRankType(ulong userId) void API_SetKarmaPoints(ulong userId, int value, string reason = null) void API_AddKarmaPoints(ulong userId, int amount, string reason = null) void API_RemoveKarmaPoints(ulong userId, int amount, string reason = null)