Resource icon

Paid DeathGuard v2.03

This resource is paid, and requires to be purchased
DeathGuard

DeathGuard is an advanced death investigation and recovery plugin for ARK: Survival Ascended servers and clusters.

It is designed to help server owners handle death claims faster, recover approved inventories safely, prevent duplication, and give admins clear evidence directly in Discord.

Features

Player Death Investigation

  • Sends detailed Discord death logs when a player dies
  • Shows victim info, killer info, damage type and death reason
  • Shows exact death location with teleport command
  • Shows biome, temperature, buffs and status effects
  • Shows server FPS, player ping and jitter
  • Tracks crash, disconnect, timeout and offline context
  • Helps admins decide if a death was fair, suspicious, bugged or recoverable

Inventory Snapshot System

  • Saves a full inventory snapshot when a player dies
  • Can save inventory, equipped armor and hotbar items
  • Supports item limits and retention settings
  • Supports SQLite or MySQL storage
  • Supports cluster tracking with server ID and map name
  • Optional timed inventory backups every X minutes
  • Timed backups can be limited by permission group

Discord Bot Integration

  • Interactive Discord embeds for death reports
  • View the saved inventory directly from Discord
  • Copy teleport command from the death message
  • Recover inventory with Discord buttons
  • Multi server dropdown for cluster recovery
  • Retry button for failed recoveries
  • Updates the original death message after recovery instead of spamming new messages

Inventory Recovery

  • Admins can recover inventories through Discord, RCON or console
  • Online players can receive recovered items instantly
  • Offline players can have recoveries saved as pending
  • Players can claim approved recoveries later with /recover
  • Optional same server recovery restriction
  • Optional auto recovery for selected players or permission groups

Anti Duplication Protection

  • Detects if the player already looted their own body
  • Detects if another player looted the death cache
  • Prevents full recovery when items were already taken
  • Removes recovered items from the death cache
  • Supports recovery blacklist for restricted items
  • Blacklist can block items like artifacts, element, tributes or custom items
  • Helps prevent item duplication from death recovery abuse

Player Recovery System

  • Optional player command system for self recovery
  • Players can list available deaths with /dgbodies
  • Players can recover a specific death with /dgrecover <id>
  • Players can claim approved recoveries with /recover
  • Access can be controlled by permission groups
  • Recovery cost can be different per permission group
  • Can be used as a VIP, supporter, shop or cluster quality of life feature

Shop Integration

  • Supports recovery as a shop item
  • Works with ArkShop
  • Works with WShop
  • Works with TokenBank
  • Can recover the most recent unrecovered death automatically
  • Useful for VIP packages, booster perks, supporter perks or point sinks


Advanced Death Detection

  • Detects PvP deaths
  • Detects turret deaths
  • Detects creature and modded creature kills
  • Detects lava, fire, poison and radiation deaths
  • Detects drowning, starvation, dehydration and suffocation
  • Detects world border deaths
  • Detects bleed, venom, gnash and other damage over time deaths
  • Detects crash, disconnect, timeout and offline related deaths
  • Supports custom kill zones for map hazards like black holes, cave pits or instant death areas

World Border Recovery

  • Can detect world border deaths
  • Can automatically recover items after world border deaths
  • Useful when the body or bag is destroyed by the map boundary

Offline Protection

  • Optional offline damage protection
  • Protects logged out players after a configurable grace period
  • Can also protect players after crashes or timeouts
  • Useful for PvE servers or protected offline systems

Tamed Dino Death Recovery

  • Tracks tamed dino deaths
  • Sends dino death reports to Discord
  • Shows species, gender, level, owner, tribe, killer and location
  • Shows dino status context like starving, drowning, torpor or exhaustion
  • Can recover the dead dino as a cryopod
  • Can include the dino inventory in the recovery
  • Supports multi server dino recovery through Discord

Translation Support

  • Supports translated Discord embeds
  • Supports translated buttons and status messages
  • Supports translated player messages
  • Supports translated death reasons, creatures, buffs, biomes and dino death logs

Cluster Ready

  • Built for multi server ARK clusters
  • Supports MySQL
  • Supports server ID and map tracking
  • Supports multi server recovery dropdowns
  • Supports player and dino recovery across configured servers
  • Works well for PvE, PvP, modded and large community clusters

Chat Commands

* /dgbodies
List available unrecovered deaths

* /dgrecover <id>
Recover a specific death snapshot if allowed

* /recover
Claim an approved pending recovery

* /recover list
Show pending recoveries

* /dgoptin
Join auto recovery if enabled

* /dgoptout
Leave auto recovery if enabled

RCON / Console Commands

* DeathGuard.Reload
Reload config.json without restarting the plugin

Player Death Recovery

* DeathGuard.ListDeaths <eos_id> [limit]
List recent death snapshots for a player

* DeathGuard.SnapshotInfo <snapshot_id>
Show full inventory breakdown of a death snapshot

* DeathGuard.RecoverInventory <eos_id> <snapshot_id>
Approve recovery, delivers instantly or marks as pending if offline

* DeathGuard.ForceRecoverInventory <eos_id> <snapshot_id>
Admin override that bypasses normal block conditions

* DeathGuard.ResetSnapshots <eos_id>
Clear old snapshots from a player's death list

* DeathGuard.Recover <eos_id> last
Recover the most recent unrecovered player death, intended for shop integration

Timed Inventory Snapshots

* DeathGuard.ListTimedSnapshots <eos_id> [limit]
List periodic inventory captures for a player

* DeathGuard.TimedSnapshotInfo <snapshot_id>
Show full inventory of a timed snapshot

* DeathGuard.RestoreTimedSnapshot <eos_id> <snapshot_id>
Restore a timed snapshot inventory to an online player

* DeathGuard.TriggerTimedSnapshot
Force a timed snapshot cycle for all online players now

Tamed Dino Recovery

* DeathGuard.ListDinoDeaths <eos_id>
List recent tamed dino deaths for player and tribe

* DeathGuard.RecoverDino [eos_id] <snapshot_id>
Deliver dino as cryopod, auto finds online tribe member when eos_id is omitted

* DeathGuard.ForceRecoverDino <eos_id> <snapshot_id>
Admin override for dino recovery that bypasses safety checks

Pricing
  • $40 USD First time 1 year
  • $10 USD per year after the first year for continued updates and support
  • License is per system or host up to 8 maps

DeathGuard gives server owners a complete system for death logs, inventory recovery, dino recovery, anti duplication protection and Discord based admin workflows.


JSON:
{
  "License": {
    "LicenseKey": "your-license-key-here"
  },

  "Mysql": {
    "UseMysql": false, //true = MySQL (recommended) | false = SQLite
    "MysqlHost": "localhost",
    "MysqlPort": 3306,
    "MysqlUser": "arkuser",
    "MysqlPass": "password",
    "MysqlDB": "deathguard",
    "DbPathOverride": "" //Custom SQLite path (empty = default)
  },

  "Discord": {
    "Enabled": true, //Master switch — gates BOTH player and dino notifications
    "BotApiKey": "DeathGuard2025SecureKey", //Must match the bot's ApiKey in its config.json
    "PlayerDeathWebhook": "http://localhost:8080/api/v1/death", //Discord webhook URL, or bot API URL if using the DeathGuard bot
    "DinoDeathWebhook": "http://localhost:8080/api/v1/dino-death", //Empty = no Discord message for dino deaths (deaths are still saved)
    "ExcludedBuffs": [ //Supports wildcards: "Buff_CS_*", "*_Debug_C", "*Internal*"
      "Buff_CS_*",
      "Buff_ClassicFlyers_*"
    ]
  },


  "Inventory": {
    "CaptureOnDeath": true,
    "SnapshotCooldownSeconds": 60, //Seconds between snapshots per player (0 = no cooldown)
    "MaxItemsToCapture": 0, //0 = unlimited | 300 = max 300 items total
    "IncludeEquipped": true, //false = skip armor, chibi, trophy, costume slots
    "IncludeHotbar": true, //false = skip items in hotbar slots 1-10
    "RetentionDays": 30, //0 = keep forever
    "StoreDeathReasonJson": false //Saves extra death details for advanced integrations (leave false unless needed)
  },

  "DinoDeaths": { //Tamed dino death tracking (captures cryopod snapshot on death)
    "Enabled": false, //Enables death tracking. Discord messages also require Discord.Enabled
    "RetentionDays": 30, //0 = keep forever
    "RecoverInventoryToPlayer": true, //true = return dino + all items to player; false = return dino only (items stay in database)
    "DestroyCorpseOnRecovery": true, //true = destroy dino corpse after recovered items removed from it
    "EnableDeathBagCleanup": true, //Also remove leftover death bags after the dino corpse disappears
    "ExcludedDinos": [ //Dinos to skip entirely — no tracking, no Discord.
      "Blueprint'/Game/PrimalEarth/Dinos/Dodo/Dodo_Character_BP.Dodo_Character_BP'"
    ]
  },

  "TimedSnapshots": { //Automatic inventory backups (separate from death snapshots)
    "Enabled": false,
    "IntervalMinutes": 30, //1-60 minutes
    "MaxSnapshotsPerPlayer": 5, //1-100
    "PermissionGroups": [] //Empty = all players. Set groups like ["VIP", "Donor"] to restrict
  },

  "KillZones": [ //Custom names for instant-death locations
    {
      "name": "Black Hole Astraeos", //Display name in logs and Discord
      "causer_class": "TogglePainVolume", //Don't change — identifies the damage source for this zone
      "coords": "-110943 -299354 -3650", //Use CCC console command ingame
      "radius": 300
    }
  ],


  "Recovery": { //Global recovery rules (applies to admin + player recovery)
    "DestroyBodyBagOnRecovery": true,
    "DestroyCorpseOnRecovery": true,
    "AutoRecoverWorldBorderDeaths": false, //Auto-restore on respawn after world border death
    "RequireSameServerForRecovery": false, //true = only recover on same server
    "AutoDeliverOnApproval": true, //true = items delivered immediately when admin approves and player is online and alive; false = player must use /recover
    "Blacklist": { //Block certain items from recovery
      "Enabled": false, //Admin commands (/recover) ignore blacklist
      "Items": [ //Use * as wildcard
        "Blueprint'/Game/PrimalEarth/CoreBlueprints/Resources/PrimalItemResource_Element.PrimalItemResource_Element'",
        "*PrimalItemArtifact*" //Any Artifact
      ]
    }
  },

  "PlayerRecovery": { //Player self recovery commands
    "Enabled": true,
    "ListCommand": "/dgbodies",
    "RecoverCommand": "/dgrecover",
    "UseToken": "", //Empty = points | "TokenType" = TokenBank
    "Permission": { //Player must be in at least one of these groups, otherwise access is denied
      "Legendary": 0,
      "Elite": 100,
      "Advanced": 250,
      "Supporter": 400,
      "Starter": 500
    },
    "DestroyBagOnRecovery": true,
    "MaxDeathAgeHours": 24 //0 = no limit
  },

  "AutoRecovery": { //Automatic recovery on respawn (opt-in)
    "Enabled": false,
    "OptInCommand": "/dgoptin",
    "OptOutCommand": "/dgoptout",
    "PermissionGroup": "DeathGuard", //Permission group for opt-in players
    "UseToken": "", //Empty = points | "TokenType" = TokenBank
    "Permission": { //Player must be in at least one of these groups, otherwise access is denied
      "Legendary": 0,
      "Elite": 100,
      "Advanced": 250,
      "Supporter": 400,
      "Starter": 500
    },
    "DestroyBagOnRecovery": true
  },

  "OfflineProtection": { //PvE ONLY! On PvP this blocks ALL damage including player kills
    "Enabled": false,
    "GracePeriodSeconds": 30 //Seconds after logout before protection activates (0 = instant)
  },


  "Localization": { //OPTIONAL - customize labels for your language
    "CurrencyName": "Points", //Shown when no TokenBank type configured
    "TimeFormat": { //Labels used in "2h 30m ago" time display
      "Hours": "h",
      "Minutes": "m",
      "Seconds": "s",
      "Ago": "ago"
    }
  },

  "Messages": {
    "PlayerIdError": { //Example with all fields - most are optional
      "Message": "[DeathGuard] Could not identify your player ID.",
      "TextColor": "Turquoise", //90+ colors: Red, Green, Gold, Turquoise, Cyan, etc.
      "BackgroundColor": "Black",
      "DisplayTime": 5.0, //Seconds visible
      "Scale": 1.2, //1.0 = normal, 1.5 = large
      "Position": "Center", //Left | Center | Right
      "AddToChat": false
    },
    "DatabaseNotAvailable": {
      "Message": "[DeathGuard] Database not available.",
      "TextColor": "Turquoise"
    },
    "PermissionsNotAvailable": {
      "Message": "[DeathGuard] Permissions system not available.",
      "TextColor": "Turquoise"
    },
    "RecoveryFailed": {
      "Message": "[DeathGuard] Recovery failed: {Error}",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "LoadRecoveryFailed": {
      "Message": "[DeathGuard] Failed to load recovery data.",
      "TextColor": "Turquoise"
    },
    "PaymentFailed": {
      "Message": "[DeathGuard] Payment failed. Please try again.",
      "TextColor": "Turquoise"
    },
    "OptInFailed": {
      "Message": "[DeathGuard] Failed to opt in. Please try again.",
      "TextColor": "Turquoise"
    },
    "OptOutFailed": {
      "Message": "[DeathGuard] Failed to opt out. Please try again.",
      "TextColor": "Turquoise"
    },

    "NoAccess": {
      "Message": "[DeathGuard] You don't have permission to use body recovery.",
      "TextColor": "Red"
    },
    "InsufficientFunds": { //{Currency}, {Cost}, {Balance}
      "Message": "[DeathGuard] Not enough {Currency}. Need {Cost}, you have {Balance}.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },

    "MustBeAlive": {
      "Message": "[DeathGuard] You must be alive to recover items.",
      "TextColor": "Turquoise"
    },
    "NoPendingDeaths": {
      "Message": "[DeathGuard] You have no pending deaths to recover.",
      "TextColor": "Turquoise"
    },
    "NoPendingRecoveries": {
      "Message": "[DeathGuard] No pending recoveries found.",
      "TextColor": "Turquoise"
    },
    "DeathNotFound": {
      "Message": "[DeathGuard] Death not found. Use /dgbodies to see your deaths.",
      "TextColor": "Turquoise"
    },
    "InvalidDeathId": {
      "Message": "[DeathGuard] Invalid death ID. Use /dgbodies to see your deaths.",
      "TextColor": "Turquoise"
    },
    "RecoverUsage": {
      "Message": "[DeathGuard] Usage: /dgrecover <death_id>",
      "TextColor": "Turquoise"
    },
    "NotYourDeath": {
      "Message": "[DeathGuard] This death does not belong to you.",
      "TextColor": "Turquoise"
    },
    "AlreadyRecovered": {
      "Message": "[DeathGuard] This death has already been recovered.",
      "TextColor": "Turquoise"
    },
    "SelfRetrieved": {
      "Message": "[DeathGuard] You already retrieved {Count} items from this death. Recovery blocked.",
      "TextColor": "Turquoise"
    },
    "ThirdPartyLooted": {
      "Message": "[DeathGuard] Another player already took items from your death bag. Recovery is not available.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "WrongServer": { //{Map} = server where death occurred
      "Message": "[DeathGuard] This death happened on a different server ({Map}). You can only recover it there.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },

    "RecoverySuccess": { //{Items} = number of items recovered
      "Message": "[DeathGuard] Recovered {Items} items!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "RecoverySuccessWithId": {
      "Message": "[DeathGuard] Recovered {Items} items from death #{DeathId}!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "RecoveryPartial": {
      "Message": "[DeathGuard] {Count} items could not be restored.",
      "TextColor": "Turquoise"
    },
    "InventoryRecovered": {
      "Message": "[DeathGuard] Your inventory has been recovered!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },

    "AutoRecoverySuccess": {
      "Message": "[DeathGuard] Auto-recovered {Items} items from your last death!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "AutoRecoveryWorldBorderSuccess": { //Scale/Position/DisplayTime not supported
      "Message": "[DeathGuard] Auto-recovered {Items} items from world border death!",
      "TextColor": "Green"
    },
    "AutoRecoveryInsufficientFunds": {
      "Message": "[DeathGuard] Auto-recovery failed: Not enough {Currency} (need {Cost}, have {Balance}).",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "AutoRecoveryPaymentFailed": {
      "Message": "[DeathGuard] Auto-recovery: Payment failed.",
      "TextColor": "Turquoise"
    },

    "AlreadyOptedIn": {
      "Message": "[DeathGuard] You are already opted in for auto recovery.",
      "TextColor": "Turquoise"
    },
    "AlreadyOptedOut": {
      "Message": "[DeathGuard] You are already opted out.",
      "TextColor": "Turquoise"
    },
    "OptInSuccess": {
      "Message": "[DeathGuard] You are now opted in for automatic death recovery!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "OptOutSuccess": {
      "Message": "[DeathGuard] You are now opted out from automatic death recovery.",
      "TextColor": "Turquoise"
    },

    "PendingRecoverySingular": {
      "Message": "[DeathGuard] You have a pending inventory recovery. Type /recover to claim.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "PendingRecoveryPlural": {
      "Message": "[DeathGuard] You have {Count} pending inventory recoveries. Type /recover to claim.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "MorePendingRecoveries": {
      "Message": "[DeathGuard] You have {Count} more pending recovery(s). Type /recover again.",
      "TextColor": "Turquoise"
    },

    "AdminApprovedRecovery": {
      "Message": "[DeathGuard] An admin approved your inventory recovery. Type /recover to claim.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "AdminDeliveredRecovery": { //{Items} = number delivered
      "Message": "[DeathGuard] An admin recovered {Items} items directly to your inventory!",
      "TextColor": "Green",
      "Scale": 1.3,
      "DisplayTime": 8.0
    },
    "AdminApprovedWrongServer": { //{Map} = server where death occurred
      "Message": "[DeathGuard] An admin approved your recovery, but you died on {Map}. Go there and type /recover.",
      "TextColor": "Gold",
      "DisplayTime": 8.0
    },

    "DeathListHeader": { //{Count} = total deaths
      "Message": "[DeathGuard] Your deaths ({Count}):",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "DeathListItem": { //{Id}, {Items}, {TimeAgo}
      "Message": "  #{Id}: {Items} items - {TimeAgo}",
      "TextColor": "Turquoise",
      "Scale": 1.1,
      "DisplayTime": 8.0
    },
    "DeathListFooterFree": {
      "Message": "Type /dgrecover <ID> to claim (FREE)",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "DeathListFooterFreeGroup": {
      "Message": "Type /dgrecover <ID> to claim (FREE - {Group})",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "DeathListFooterCost": { //{Cost}, {Currency}
      "Message": "Type /dgrecover <ID> to claim (costs {Cost} {Currency})",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "PendingListHeader": {
      "Message": "[DeathGuard] Pending recoveries ({Count}):",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "PendingListItem": {
      "Message": "  #{Index}: {Items} items - died {TimeAgo}",
      "TextColor": "Turquoise",
      "Scale": 1.1,
      "DisplayTime": 8.0
    },
    "PendingListFooter": {
      "Message": "Type /recover to claim the most recent one.",
      "TextColor": "Turquoise"
    }
  }
}
Author
Fonzie
Views
26
First release
Last update

Ratings

0.00 star(s) 0 ratings
Back
Top