Magnumk's Wishlist
-
Chat Styles (Names, Messages & Prefixes)
By xNullPointer95 in Plugins
xChatStyles
xChatStyles adds smooth gradient colors to player names, prefixes, and chat messages, giving your server a premium, modern look without clutter or spam.
It’s clean, readable, and designed to enhance chat - not overpower it.
It lets you customize how players appear in chat using animated-looking color gradients. Perfect for VIPs, staff, donators, or special roles. No flashy UI. No complicated setup. Just beautiful chat.
⭐ Features
🎨 Gradient Names & Messages
Smooth color gradients instead of flat colors, but you can also use a solid color Player names Chat messages Prefixes (VIP, Admin, etc.) Looks great without hurting readability Styled Mentions (@PLAYERNAME) 🏷️ Multiple Prefix Support
Players can have more than one prefix Each prefix can have its own color style 👑 Great for VIP & Donator Perks
Instantly makes VIP ranks feel premium Visual reward without gameplay imbalance Easy to sell as a cosmetic perk 🪙 Trade System for Prefixes (REQUIRES Economics if you want to use trade feature)
⚡Server Friendly
No lag or spam Optimized to run smoothly on live servers Works quietly in the background 🔑 Supports permission-based style, not just permanent chat style.
🌍 xChatStyles Web Editor
📌 Plugin Preview
🔐 Permissions (Custom Tab)
xchatstyles.customtab - Ability to see the "Custom" Tab in /xcs xchatstyles.customprefix - Ability to see and select "Prefix" in "Custom" Tab xchatstyles.custommessagecolor - Ability to see and select "Message" in "Custom" Tab xchatstyles.customusernamecolor - Ability to see and select "Username" in "Custom" Tab
💬 Chat Commands (Player)
/xcs - Opens the Ui /xcs <PLAYERNAME/STEMAID> - Opens the Ui with the view of the target player and you can remove owned styles from that user.
💬 Chat & Console Commands (Admin)
/* Add chat styles without permission */ /addprefix <STEAMID> <PREFIXNAME> <#HEX> <#HEX> <#HEX>... /addmessagecolor <STEAMID> <#HEX> <#HEX> <#HEX>... /addusernamecolor <STEAMID> <#HEX> <#HEX> <#HEX>... /addall <STEAMID> <PREFIXNAME> <#HEX> <#HEX> <#HEX>... [This will add a prefix with provided color(s), message style with provided color(s) and username style with provided color(s) with just 1 command.] /* Add chat styles without permission */ /* Add chat styles WITH permission */ /addprefix <xchatstyles.PERMISSIONNAME> <PrefixName> <#HEX> <#HEX> <#HEX> ... /addall <xchatstyles.PERMISSIONNAME> <PrefixName> <#HEX> <#HEX> <#HEX> ... /addmessagecolor <xchatstyles.PERMISSIONNAME> <#HEX> <#HEX> <#HEX> ... /addusernamecolor <xchatstyles.PERMISSIONNAME> <#HEX> <#HEX> <#HEX> ... /* Add chat styles WITH permission */ ---> As long as the player has permission, they can select it with /xcs ---> Automatically removed when permission is revoked ---> Permission-Based ChatStyles has (Permission) indicator in /xcs ---> The permission must start with 'xchatstyles.*'. Example: /addall <xchatstyles.vip> VIP <#HEX> <#HEX> <#HEX> ... /*********************************************************************************************************/ /* Use 1 #HEX Color (Example: #fcba03) for a single color, use multiple #HEX Colors for a color gradient */ /* */ /* Example: /addprefix 76561198412496844 OMEGA #32a852 #71a67f */ /* */ /*********************************************************************************************************/ /removeprefix <steamid> <index|PrefixName> /removemessagecolor <steamid> <index> /removeusernamecolor <steamid> <index>
⏳ Recommended Plugin for >TIMED< PERMISSION:
⚙️ Config
{ "MaxPrefixes": 3, "DefaultUsernameColor": "#55aaff", "DefaultMessageColor": "#ffffff", "DefaultSize": 15, "AllowSelectingDuplicatePrefixNames": true, "NotifyOnStyleReceived": true, "PrefixBrackets": "[]", "ShowPrefixBracketsWithSizeTag": true, "Trade": { "AllowTrading": false, "PlayerCanSellPermissionBasedPrefix": false, "UseCurrencySign": true, "CurrencySign": "$", "AnnounceNewPrefixSaleGlobally": true, "AnnouncePrefixPriceUpdateGlobally": true }, "PermissionStyles": {} } -
Copter Weapons
Overview:
This plugin allows players to mount weapons to their player Helicopters. Players can configure their weapons by simply inserting them into the corresponding inventory slots of a box on the back of the copter. Ammo for the weapons is also stored in this box in ammo slots that are shared between all of the weapons. Players can also equip their copters with flares, a radar set, and other utilities which will be added in the future.
Operation
Using the plugin is very straightforward and intuitive: just drop weapons in the spots you want em, then go! The default key binds mimic the attack helicopter, so players don’t get confused:
Fire Weapon: LMB
Fire Flare: RMB
Switch Weapon: Sprint
Switch Ammo/Reload : Duck
Switch Radar Target: Use
Lock target/Activate Seeker: Reload
Configuration
The config is very long and can be confusing to navigate. The plugin will automatically create the default config when you first run it. The dictionary of weapons always gets written on top, so you will need to scroll to the very bottom in order to find the general plugin settings.
Here are some of the settings that can be changed (this is subject to change as I plan to add much more functionality over the coming months):
"DebounceTimeSeconds": 4.0, (The amount of time a button will be inactive after pressing)
"DisplayOutOfAmmoMessage": true,
"DisplaySelectedWeaponMessage": true,
"UnlimitedAmmo": false, (Makes server projectile weapons not require ammo, but doesn’t work on most weapons. If you want an unlimited ammo version, please look for Minicopter Combat)
"DisablePermissionCheck": true, (enables permissions for each weapon)
"ApplyToScrapCopter": true, (Does a weapon box spawn on the back of all minicopters)
"ApplyToMinicopter": true,
"FlareFiredSfx": "assets/prefabs/weapons/grenade launcher/effects/attack.prefab",
"SwitchWeaponSfx": "assets/prefabs/deployable/dropbox/effects/submit_items.prefab",
"AlarmSfx": "assets/prefabs/locks/keypad/effects/lock.code.unlock.prefab",
"ReloadSfx": "assets/prefabs/npc/autoturret/effects/reload.prefab",
"CounterMeasureDespawnTime": 5.0,
"WeaponSwitchDelay": 2.0,
"AmmoSwitchDelay": 1.0,
"FirePrimaryButton": 1024, (This is where you can set your keybinds. The values represent binarys for a facepunch Enum that represents each client input. Refer to the button table below.)
"FireFlareButton": 2048,
"SwitchWeaponButton": 128,
"SwitchAmmoButton": 64,
"RadarSelectButton": 256,
"TargetLockButton": 8192,
"EnableScrapcopterGibs": false, (turns off gib spawning for better server performance)
"GibsDespawnTimerOverride": 0.0,
"DisableFire": false,
"HideUnauthorizedWeapons": true, (This option doesn’t quite work as intended yet. It will show players the weapons they don’t have access to due to not having the oxide permission for that weapon in the weapon selection menu while flying. Right now, setting this to false shows all weapons that exist for the plugin.)
Buttons
• FORWARD = 2,
• BACKWARD = 4,
• LEFT = 8,
• RIGHT = 16
• JUMP = 32
• DUCK = 64
• SPRINT = 128
• USE = 256
• FIRE_PRIMARY = 1024
• FIRE_SECONDARY = 2048
• RELOAD = 8192
• FIRE_THIRD = 134217728
- #copter
- #helicopter
- (and 10 more)
-
Courier NPCs
Bring your Rust server to life with Courier NPCs — AI bots that travel across the map carrying valuable loot. Hunt them down for rewards, but be careful — they may not go down without a fight.
Features:
📦 Traveling Couriers
• NPCs spawn with random loot from your config and start travel to point.
• At destination, couriers either despawn or dropping a stash.
• Setup health, damage rates, spawn frequency, and other.
• Configure spawn loadouts — weapons, clothes, and loot for delivery.
• Each courier can carry a backpack with its own separate loot.
⚔️ Dynamic Combat
• Configurable combat behaviour:
Friendly (doesn't attack, continues to run) Defensive (defends if attacked) Aggressive (attacks first) • Uses ranged and melee weapons in fights.
• Couriers can deploy mines, bear traps, and other traps while traveling.
• Couriers heal themselves during and outside of combat using configurable health thresholds.
🗺️ Flexible Spawn System
• Multiple spawn modes available — random map position, road/beach position, or SpawnsDatabase points.
• Spawn and destination modes can be mixed for varied and unpredictable routes.
• Couriers can prefer road-based pathfinding or take off-road routes.
📺 See It in Action! Watch The Video
🛠️ Commands ("couriernpcs.admin" permission):
/cnpc vis - shows all couriers on server /cnpc killall - kills all couriers /cnpc tp - teleports all couriers to you 📃 Configuration:
{ "Bots settings": [ { "Enable bot?": true, "How many of these bots can be spawned?": 1, "Bot name (leave empty for random)": "Leon", "Respawn timer (min 3 seconds)": { "Min": 600.0, "Max": 1800.0 }, "Configure the position of the courier's birth. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": false }, "Random road position mode": { "Enable this mode?": true }, "Random spawn position mode": { "Enable this mode?": false }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Configure the position of the courier's final path. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": false }, "Random road position mode": { "Enable this mode?": true }, "Random spawn position mode": { "Enable this mode?": false }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Maximum health": 500.0, "What spawns on death (PlayerCorpse, NpcCorpse, Backpack)": "PlayerCorpse", "How many items will be destroyed when Backpack is selected (0 - 100%)": 0.0, "Backpack setup": { "Should I give out a backpack?": true, "Backpack item": { "Item shortname or ID": "largebackpack", "Item skin": 0 }, "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": [] } ] }, "Wear settings": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "hazmatsuit.kick", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] } ] }, "Belt customization (add weapons, ammo, medicine, traps that the bot can use here)": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "smg.mp5", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Item settings": { "Item shortname or ID": "ammo.pistol", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "legacy bow", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "arrow.wooden", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 300.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "salvaged.cleaver", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "syringe.medical", "Item skin": 0 }, "Random amount": { "Min": 300.0, "Max": 300.0 }, "Attachments": [] } ] }, "Inventory settings": { "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": [] } ] }, "List of items that won't drop on death (applies if the inventory is not locked)": [ { "Item shortname or ID": "smg.mp5", "Item skin": 0 } ], "Courier behavior settings": { "Time for a brain tick (0.01 - 1)": 0.1, "Combat setup (weapons, ammunition, should be given in the belt inventory)": { "Use ammunition from equipment?": true, "The bot's character when meeting players - Aggressive, Friendly, Defensive": "Aggressive", "The bot's character when meeting npc - Aggressive, Friendly, Defensive": "Defensive", "The bot's character when meeting animal - Aggressive, Friendly, Defensive": "Defensive", "Damage settings": { "Damage multiplier for players": 1.0, "NPC damage multiplier": 1.0, "Damage multiplier for animals": 1.0, "Courier damage multiplier from players": 1.0, "Courier damage multiplier from NPCs": 1.0, "Animal damage multiplier for the courier": 1.0 } }, "Treatment settings (medications should be issued in the belt inventory)": { "Percentage of health to enter the healing state (% 50 - 90)": 75.0, "Percentage of health to enter healing state during combat (% 1 - 50)": 30.0, "Use the medicines from the equipment?": true }, "Setting up traps (mines and traps should be given in the belt inventory)": { "Enable this setting?": true, "Use mines and traps from equipment?": false, "Trap usage check timer (min 60 sec.)": { "Min": 300.0, "Max": 300.0 }, "Chance of using a trap (% 0 - 100)": { "Min": 50.0, "Max": 50.0 }, "Life time (0 - will exist until restart)": 3600.0 }, "Setting up movement to the finishing position": { "Allow searching for routes by roads first?": true, "Speed of movement to the finish (Slowest, Slow, Normal, Fast)": "Fast" }, "Setting up behavior when reaching the finish position": { "Use stash mode?": true, "Use suicide mode?": true, "Movement speed while searching for a hiding place (Slowest, Slow, Normal, Fast)": "Fast", "Setting up a stash": { "Stash setup (bot will put items in the stash)": { "Enable?": true, "Hide stash?": true, "Life time (0 - will exist until restart)": 3600.0 }, "Box setup (bot will put items in the box)": { "Enable?": false, "Use small box?": true, "Box skin": 0, "Life time (0 - will exist until restart or until it dies)": 3600.0, "Another container prefab (you can leave it empty)": "" } } } }, "Controller settings": { "Time for a controller tick (0.01 - 0.2)": 0.05, "Allow turrets to attack the courier?": true } }, { "Enable bot?": true, "How many of these bots can be spawned?": 1, "Bot name (leave empty for random)": "Denis", "Respawn timer (min 3 seconds)": { "Min": 600.0, "Max": 1800.0 }, "Configure the position of the courier's birth. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": true }, "Random road position mode": { "Enable this mode?": true }, "Random spawn position mode": { "Enable this mode?": true }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Configure the position of the courier's final path. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": true }, "Random road position mode": { "Enable this mode?": true }, "Random spawn position mode": { "Enable this mode?": true }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Maximum health": 150.0, "What spawns on death (PlayerCorpse, NpcCorpse, Backpack)": "PlayerCorpse", "How many items will be destroyed when Backpack is selected (0 - 100%)": 0.0, "Backpack setup": { "Should I give out a backpack?": true, "Backpack item": { "Item shortname or ID": "smallbackpack", "Item skin": 0 }, "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": [] } ] }, "Wear settings": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "hazmatsuit.pilot", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] } ] }, "Belt customization (add weapons, ammo, medicine, traps that the bot can use here)": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "rifle.m39", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Item settings": { "Item shortname or ID": "ammo.rifle", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 300.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "trap.bear", "Item skin": 0 }, "Random amount": { "Min": 5.0, "Max": 10.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "trap.landmine", "Item skin": 0 }, "Random amount": { "Min": 5.0, "Max": 10.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "syringe.medical", "Item skin": 0 }, "Random amount": { "Min": 300.0, "Max": 300.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "largemedkit", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] } ] }, "Inventory settings": { "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": [] } ] }, "List of items that won't drop on death (applies if the inventory is not locked)": [ { "Item shortname or ID": "rifle.m39", "Item skin": 0 } ], "Courier behavior settings": { "Time for a brain tick (0.01 - 1)": 0.1, "Combat setup (weapons, ammunition, should be given in the belt inventory)": { "Use ammunition from equipment?": true, "The bot's character when meeting players - Aggressive, Friendly, Defensive": "Defensive", "The bot's character when meeting npc - Aggressive, Friendly, Defensive": "Defensive", "The bot's character when meeting animal - Aggressive, Friendly, Defensive": "Defensive", "Damage settings": { "Damage multiplier for players": 1.0, "NPC damage multiplier": 1.0, "Damage multiplier for animals": 1.0, "Courier damage multiplier from players": 1.0, "Courier damage multiplier from NPCs": 1.0, "Animal damage multiplier for the courier": 1.0 } }, "Treatment settings (medications should be issued in the belt inventory)": { "Percentage of health to enter the healing state (% 50 - 90)": 75.0, "Percentage of health to enter healing state during combat (% 1 - 50)": 30.0, "Use the medicines from the equipment?": true }, "Setting up traps (mines and traps should be given in the belt inventory)": { "Enable this setting?": true, "Use mines and traps from equipment?": true, "Trap usage check timer (min 60 sec.)": { "Min": 300.0, "Max": 300.0 }, "Chance of using a trap (% 0 - 100)": { "Min": 50.0, "Max": 50.0 }, "Life time (0 - will exist until restart)": 3600.0 }, "Setting up movement to the finishing position": { "Allow searching for routes by roads first?": false, "Speed of movement to the finish (Slowest, Slow, Normal, Fast)": "Fast" }, "Setting up behavior when reaching the finish position": { "Use stash mode?": true, "Use suicide mode?": true, "Movement speed while searching for a hiding place (Slowest, Slow, Normal, Fast)": "Fast", "Setting up a stash": { "Stash setup (bot will put items in the stash)": { "Enable?": true, "Hide stash?": true, "Life time (0 - will exist until restart)": 3600.0 }, "Box setup (bot will put items in the box)": { "Enable?": false, "Use small box?": true, "Box skin": 0, "Life time (0 - will exist until restart or until it dies)": 3600.0, "Another container prefab (you can leave it empty)": "" } } } }, "Controller settings": { "Time for a controller tick (0.01 - 0.2)": 0.1, "Allow turrets to attack the courier?": true } }, { "Enable bot?": true, "How many of these bots can be spawned?": 1, "Bot name (leave empty for random)": "Paul", "Respawn timer (min 3 seconds)": { "Min": 600.0, "Max": 1800.0 }, "Configure the position of the courier's birth. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": true }, "Random road position mode": { "Enable this mode?": true }, "Random spawn position mode": { "Enable this mode?": true }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Configure the position of the courier's final path. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": true }, "Random road position mode": { "Enable this mode?": true }, "Random spawn position mode": { "Enable this mode?": true }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Maximum health": 150.0, "What spawns on death (PlayerCorpse, NpcCorpse, Backpack)": "PlayerCorpse", "How many items will be destroyed when Backpack is selected (0 - 100%)": 0.0, "Backpack setup": { "Should I give out a backpack?": true, "Backpack item": { "Item shortname or ID": "smallbackpack", "Item skin": 0 }, "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": [] } ] }, "Wear settings": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "hazmatsuit.diver", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] } ] }, "Belt customization (add weapons, ammo, medicine, traps that the bot can use here)": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "rifle.lr300.space", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "ammo.rifle", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 300.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "trap.bear", "Item skin": 0 }, "Random amount": { "Min": 5.0, "Max": 10.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "trap.landmine", "Item skin": 0 }, "Random amount": { "Min": 5.0, "Max": 10.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "syringe.medical", "Item skin": 0 }, "Random amount": { "Min": 300.0, "Max": 300.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "largemedkit", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] } ] }, "Inventory settings": { "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": [] }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": [] } ] }, "List of items that won't drop on death (applies if the inventory is not locked)": [ { "Item shortname or ID": "rifle.lr300.space", "Item skin": 0 } ], "Courier behavior settings": { "Time for a brain tick (0.01 - 1)": 0.1, "Combat setup (weapons, ammunition, should be given in the belt inventory)": { "Use ammunition from equipment?": false, "The bot's character when meeting players - Aggressive, Friendly, Defensive": "Defensive", "The bot's character when meeting npc - Aggressive, Friendly, Defensive": "Defensive", "The bot's character when meeting animal - Aggressive, Friendly, Defensive": "Defensive", "Damage settings": { "Damage multiplier for players": 1.0, "NPC damage multiplier": 1.0, "Damage multiplier for animals": 1.0, "Courier damage multiplier from players": 1.0, "Courier damage multiplier from NPCs": 1.0, "Animal damage multiplier for the courier": 1.0 } }, "Treatment settings (medications should be issued in the belt inventory)": { "Percentage of health to enter the healing state (% 50 - 90)": 75.0, "Percentage of health to enter healing state during combat (% 1 - 50)": 30.0, "Use the medicines from the equipment?": true }, "Setting up traps (mines and traps should be given in the belt inventory)": { "Enable this setting?": true, "Use mines and traps from equipment?": true, "Trap usage check timer (min 60 sec.)": { "Min": 300.0, "Max": 300.0 }, "Chance of using a trap (% 0 - 100)": { "Min": 50.0, "Max": 50.0 }, "Life time (0 - will exist until restart)": 3600.0 }, "Setting up movement to the finishing position": { "Allow searching for routes by roads first?": false, "Speed of movement to the finish (Slowest, Slow, Normal, Fast)": "Fast" }, "Setting up behavior when reaching the finish position": { "Use stash mode?": true, "Use suicide mode?": true, "Movement speed while searching for a hiding place (Slowest, Slow, Normal, Fast)": "Fast", "Setting up a stash": { "Stash setup (bot will put items in the stash)": { "Enable?": true, "Hide stash?": true, "Life time (0 - will exist until restart)": 3600.0 }, "Box setup (bot will put items in the box)": { "Enable?": false, "Use small box?": true, "Box skin": 0, "Life time (0 - will exist until restart or until it dies)": 3600.0, "Another container prefab (you can leave it empty)": "" } } } }, "Controller settings": { "Time for a controller tick (0.01 - 0.2)": 0.1, "Allow turrets to attack the courier?": true } }, { "Enable bot?": true, "How many of these bots can be spawned?": 1, "Bot name (leave empty for random)": "Mike", "Respawn timer (min 3 seconds)": { "Min": 600.0, "Max": 1800.0 }, "Configure the position of the courier's birth. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": false }, "Random road position mode": { "Enable this mode?": false }, "Random spawn position mode": { "Enable this mode?": true }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Configure the position of the courier's final path. (configure several modes for random selection)": { "Random map position mode": { "Enable this mode?": true }, "Random road position mode": { "Enable this mode?": false }, "Random spawn position mode": { "Enable this mode?": false }, "Mode of selection of a position from the Spawns.cs plugin": { "Enable this mode?": false, "File name with positions": "" } }, "Maximum health": 500.0, "What spawns on death (PlayerCorpse, NpcCorpse, Backpack)": "PlayerCorpse", "How many items will be destroyed when Backpack is selected (0 - 100%)": 0.0, "Backpack setup": { "Should I give out a backpack?": true, "Backpack item": { "Item shortname or ID": "kriegbackpack", "Item skin": 0 }, "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": null } ] }, "Wear settings": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "hazmatsuit.arcticsuit", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, "Belt customization (add weapons, ammo, medicine, traps that the bot can use here)": { "Lock container? (true - after death loot won't drop)": true, "List of items": [ { "Item settings": { "Item shortname or ID": "rifle.ak.ice", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "knife.combat", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [] }, { "Item settings": { "Item shortname or ID": "largemedkit", "Item skin": 0 }, "Random amount": { "Min": 300.0, "Max": 300.0 }, "Attachments": [] } ] }, "Inventory settings": { "Lock container? (true - after death loot won't drop)": false, "List of items": [ { "Chance (% 0 - 100)": 10.0, "Item settings": { "Item shortname or ID": "rifle.sks", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": [ { "Item settings": { "Item shortname or ID": "weapon.mod.silencer", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null } ] }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "minigun", "Item skin": 0 }, "Random amount": { "Min": 1.0, "Max": 1.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 20.0, "Item settings": { "Item shortname or ID": "ammo.shotgun.slug", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 5.0, "Item settings": { "Item shortname or ID": "explosives", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 500.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 90.0, "Item settings": { "Item shortname or ID": "wood", "Item skin": 0 }, "Random amount": { "Min": 2000.0, "Max": 5000.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "stones", "Item skin": 0 }, "Random amount": { "Min": 1000.0, "Max": 2000.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 80.0, "Item settings": { "Item shortname or ID": "metal.fragments", "Item skin": 0 }, "Random amount": { "Min": 500.0, "Max": 1000.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 70.0, "Item settings": { "Item shortname or ID": "sulfur", "Item skin": 0 }, "Random amount": { "Min": 200.0, "Max": 500.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 60.0, "Item settings": { "Item shortname or ID": "scrap", "Item skin": 0 }, "Random amount": { "Min": 100.0, "Max": 200.0 }, "Attachments": null }, { "Chance (% 0 - 100)": 50.0, "Item settings": { "Item shortname or ID": "metal.refined", "Item skin": 0 }, "Random amount": { "Min": 50.0, "Max": 100.0 }, "Attachments": null } ] }, "List of items that won't drop on death (applies if the inventory is not locked)": [ { "Item shortname or ID": "rifle.ak.ice", "Item skin": 0 } ], "Courier behavior settings": { "Time for a brain tick (0.01 - 1)": 0.1, "Combat setup (weapons, ammunition, should be given in the belt inventory)": { "Use ammunition from equipment?": false, "The bot's character when meeting players - Aggressive, Friendly, Defensive": "Aggressive", "The bot's character when meeting npc - Aggressive, Friendly, Defensive": "Aggressive", "The bot's character when meeting animal - Aggressive, Friendly, Defensive": "Defensive", "Damage settings": { "Damage multiplier for players": 1.0, "NPC damage multiplier": 1.0, "Damage multiplier for animals": 1.0, "Courier damage multiplier from players": 1.0, "Courier damage multiplier from NPCs": 1.0, "Animal damage multiplier for the courier": 1.0 } }, "Treatment settings (medications should be issued in the belt inventory)": { "Percentage of health to enter the healing state (% 50 - 90)": 75.0, "Percentage of health to enter healing state during combat (% 1 - 50)": 30.0, "Use the medicines from the equipment?": true }, "Setting up traps (mines and traps should be given in the belt inventory)": { "Enable this setting?": true, "Use mines and traps from equipment?": false, "Trap usage check timer (min 60 sec.)": { "Min": 300.0, "Max": 300.0 }, "Chance of using a trap (% 0 - 100)": { "Min": 50.0, "Max": 50.0 }, "Life time (0 - will exist until restart)": 3600.0 }, "Setting up movement to the finishing position": { "Allow searching for routes by roads first?": true, "Speed of movement to the finish (Slowest, Slow, Normal, Fast)": "Fast" }, "Setting up behavior when reaching the finish position": { "Use stash mode?": true, "Use suicide mode?": true, "Movement speed while searching for a hiding place (Slowest, Slow, Normal, Fast)": "Fast", "Setting up a stash": { "Stash setup (bot will put items in the stash)": { "Enable?": true, "Hide stash?": true, "Life time (0 - will exist until restart)": 3600.0 }, "Box setup (bot will put items in the box)": { "Enable?": true, "Use small box?": true, "Box skin": 0, "Life time (0 - will exist until restart or until it dies)": 3600.0, "Another container prefab (you can leave it empty)": "" } } } }, "Controller settings": { "Time for a controller tick (0.01 - 0.2)": 0.05, "Allow turrets to attack the courier?": true } } ] }
-
Techtree
The plugin has been revamped. Customize the Techtree however you like. It will replace the vanilla one by default, but this option can be changed in the configuration.
You have two options:
Replace the vanilla tech tree and customize it. Keep the vanilla tech tree and create a completely customized tech tree.
Feature
TechTree customizable TechTree by Workbenchlevel Multiple rewards (ChatCommand / ConsoleCommand / Economics) Item custom support Reward if tree is all unlocked (in datafiles) No command to open Automatic replace the vanilla tree or press the Use key R on the Workbench to open Multilingual support CUI Editor
CUI Editor
Permissions
techtree.use // Grants permission to use the tech tree techtree.unlock.free // Grants permission to unlock everything for free techtree.unlock.instant // Grants permission to bypass unlock time
Information
Default vanilla tree are created on plugin load Automatic import of new nodes added by Facepunch Vanilla blueprints are managed directly by the plugin. To manage custom blueprints, please use the available APIs.
❗If you want to remove a vanilla node from your TechTree, you must first backlist it, otherwise it will be automatically added back the next time the plugin is reloaded. An option is available for this. ❗I recommend modifying the tree only when players are not using it to avoid synchronization issues.
General Settings
{ "Settings": { "Wipe Player Data at Wipe": true, "Time For Unlock Node": 1.0, "Selected Theme": "Default", "Use Permissions ?": false, "Use Economics ?": false, "Replace tree vanilla ? Open with [R] if false": true } }
Techtree Data
ID: ID of the node. Vanilla ID: default ID for facepunch Parent: List of parent node required to unlock this node. Image URL or Item: Image used, via URL or in-game item (ID/Skin). Type: Type of Image (URL or Item). Value: Url (string) if URL or ItemID and SkinID if Item. Grid Position: Node position on the grid (x, y). Player Info: information displayed on the UI Name: In-game name for this node. Lang: Dictionary for multilingual support Description: Short description of the node. Lang: Dictionary for multilingual support Price: Cost to unlock this node. Curency: Resource needed to pay the price (ID/Skin). ItemID SkinID Rewards: List of rewards obtained after unlocking. Type: Type of reward (ChatCommand, ConsoleCommand or Economics). Value: Value or command associated with the reward (string).
"TechTree": [ { "ID": 40046421, "Vanilla ID": 84, "Parent": [ 1865581242 ], "Image URL or Item": { "Type": "Item", "Value": { "Item ID": 2090395347, "Skin ID": 0 } }, "Grid Position": { "x": 3.5, "y": 6.5 }, "Player Info": { "Ingame Name": { "Lang": {} }, "Description": { "Lang": {} } }, "Price": 30, "Curency": { "Item ID": -932201673, "Skin ID": 0 }, "Rewards": [ { "Type": "ChatCommand", "Value": "say Congratulations!" }, { "Type": "ConsoleCommand", "Value": "c.grant user playerID perm.use" }, { "Type": "Economics", "Value": "6500" } ] }, ], "Extra": { "Reward On All Node Unlocked": [ { "Type": "ChatCommand", "Value": "say Congratulations, you all unlocked!" }, { "Type": "Economics", "Value": "20000" } ] }
Image configuration exemple
With URL :
"Image URL or Item": { "Type": "Url", "Value": "https://imgur.com/SRGgaKX.png" }, With ITEM :
"Image URL or Item": { "Type": "Item", "Value": { "Item ID": -1966748496, "Skin ID": 0 } },
Lang
{ "CLOSE": "Close", "EDITMODE": "Edit mode", "PLAYERMODE": "Player mode", "SAVE": "Save", "ADD": "Add", "REMOVE": "Remove", "MODIFY": "Modify", "CANCEL": "Cancel", "CONFIRM": "Confirm", "SELECT": "Select", "NONE": "None", "GRIDSETTING": "Grid Setting", "NOTAVAILABLE": "Not yet available", "TOTALREQUIRED": "Total required", "OPEN": "[R] OPEN", "Workbench_1": "LEVEL 1", "Workbench_2": "LEVEL 2", "Workbench_3": "LEVEL 3", "Engineering": "ENGINEERING", "NO PERM": "You don't have permission.", "EXCLUDE": "Exclude from vanilla sync", "EXCLUDED_NODES": "Excluded Nodes", "NO_EXCLUDED_NODES": "No excluded nodes", "EXCLUDE_RESTORED": "{0} nodes restored", "EXCLUDE_ADDED": "{0} nodes excluded", "EXCLUDE_ALL": "Exclude All", "CLEAR_ALL": "Clear All", "DELETE_ALL_NODES": "Delete All Nodes", "UPDATE_GRID": "Update Grid", "NODES_DELETED": "{0} nodes deleted", "RESET_TO_VANILLA": "Reset to Vanilla", "ARE_YOU_SURE": "Are you sure ?", "DISABLE_FUTURE_IMPORTS": "Disable future vanilla imports", "FUTURE_IMPORTS_DISABLED": "Future vanilla imports are now disabled", "FUTURE_IMPORTS_ENABLED": "Future vanilla imports are now enabled", "OPEN_BUTTON": "Open tech tree", "SAVING_APPLY_TOOLTIP": "Saving apply", "RESET_VANILLA_TOOLTIP": "Tech tree reset to vanilla defaults", "EXCLUDE_TOOLTIP": "Excludes this vanilla node from automatic imports. Useful for permanently removing a vanilla node from your tech tree.", "REWARD_TOOLTIP": "Use the “playerID” tag in your command if you need to specify a player. ex: c.grant user playerID perm.use.", "LANG_TOOLTIP": "“Default” will use the default text for the item; otherwise, the added language will be used.", "DISABLE_IMPORTS_TOOLTIP": "Prevents any new vanilla nodes from being automatically imported. Useful for freezing the configuration or preventing Facepunch updates.", }
Api
(Dictionary<string, object>) API_GetPlayerData(BasePlayer player) // Return key "workbench" and Dictionary value { string, List<int> } (bool) API_SetPlayerData(BasePlayer player, Dictionary<string, object> apiData) // Return bool (bool) API_ClearPlayerWorkbenchData(BasePlayer player, Workbench workbench) // Return bool (bool) API_ClearPlayerData(BasePlayer player) // Return bool
Hook
// Called before a tech tree node is unlocked. private object OnNodeUnlock(Workbench workbench, Dictionary<string, object> node, BasePlayer player) { Puts("OnNodeUnlock has been called!"); return null; } // Called before a tech tree node is unlocked. private object OnNodeUnlock(BasePlayer player, Dictionary<string, object> node, Dictionary<string, object> treeData) { Puts("OnNodeUnlock has been called!"); return null; } // Called when a tech tree node is unlocked. private void OnNodeUnlocked(Workbench workbench, Dictionary<string, object> node, BasePlayer player) { Puts("OnNodeUnlocked has been called!"); } // Called when a tech tree node is unlocked. // Same behavior as OnNodeUnlocked but returns the list of notes directly. private void OnPathNodeUnlocked(Workbench workbench, List<object> nodes, BasePlayer player) { Puts("OnPathNodeUnlocked has been called!"); }
Api and Hook Doc
Dictionary<string, object> node: "id" : int "vanillaId" : int? "price" : int "parents" : List<int> "isVanilla" : bool "currency" : Dictionary<string, object> => "itemId" : int "skinId" : ulong Dictionary<string, object> treeData: "workbench" : Workbench "nodes" : List<Dictionary<string, object>> Dictionary<string, object> playerData: "workbench" : Dictionary<string, object> "Workbench_1" : List<int> "Workbench_2" : List<int> "Workbench_3" : List<int> "Engineering" : List<int> ########### Dictionary<string, object> API_GetPlayerData(BasePlayer player) return: { "workbench" : { "Workbench_1" : [123, 456, 789], "Workbench_2" : [111, 222], "Workbench_3" : [], "Engineering" : [333] } } Usage: [PluginReference] Plugin TechTree; var playerData = TechTree?.Call("API_GetPlayerData", player) as Dictionary<string, object>; ########### bool API_SetPlayerData(BasePlayer player, Dictionary<string, object> apiData) return: bool usage: var data = TechTree?.Call("API_GetPlayerData", player) as Dictionary<string, object>; var workbench = data["workbench"] as Dictionary<string, object>; workbench["Workbench_1"] = new List<object> { 123, 456 }; workbench["Engineering"] = new List<object>(); bool success = (bool)TechTree?.Call("API_SetPlayerData", player, data);
Contact
Send me a private message on Codefling Send me a message on Discord: gd.kenni -
RustCuiEditor - Visual CUI creator
Rust CUI Editor
Visual Interface Designer for Rust
Stop writing UI code blindly. Design your CUI interfaces visually and export ready-to-use code in seconds.
What is this?
Rust CUI Editor is a desktop application for creating Rust game UI (CUI) interfaces using a visual drag-and-drop editor. Instead of writing dozens of lines of CuiHelper code and constantly reloading your plugin to see the result, you design everything visually and get clean, working code instantly.
Video demonstration 2.0.0 Version (At the moment the version is already newer with new features)
Elements
Panel
Image (URL/sprite)
Label (with outline)
Button
InputField
ScrollView
Countdown
Draggable
Slot
NeedsCursor / NeedsKeyboard
Layout
Horizontal Layout Group
Vertical Layout Group
Grid Layout Group
Content Size Fitter
LayoutElement
Visual
Drag elements on canvas
Resize with 8 handles
Multi-selection
Marquee select
Anchor/offset system
Element rotation
Inline text editing
Element locking
Alignment
Left / Center / Right
Top / Middle / Bottom
Stretch to parent
Match Width/Height
Distribute evenly
🆕 Find & Replace
Search and replace element properties across the entire project at once. No need to click through each element manually.
► Search by text content, color value, sprite, or material
► Filter results by element type
► Replace single matches or all at once
► Full undo support for bulk replacements
🆕 Inspect Element
Dedicated inspection window for any selected element. Shows all properties in structured form alongside the raw CUI JSON output.
► All component properties in one place
► Raw CUI JSON with one-click copy
► Useful for debugging and quick exports
► Opens with shortcut or right-click menu
🆕 Snapshots
Save named project states at any point and restore them without losing your current work. Snapshots are completely separate from undo history.
► Create named snapshots before risky changes
► Restore any snapshot at any time — current work is preserved
► Stored in a .snapshots folder next to the project file
► Independent from undo/redo stack
🆕 Wrap in Parent
You've built a header with a label and a close button, then realize you forgot to add a background panel behind them. Select all elements, right-click, Wrap in Parent — done. Nothing moves.
► Works with any selection of elements
► New parent is sized to the bounding box of the selection
► All anchors recalculate automatically
► Wrap into Panel, Button, Image, or ScrollView
🆕 Themes
Dark Theme
Default dark interface.
Easy on the eyes during long sessions.
Light Theme
Full light mode across all panels,
dialogs, and overlays. Toggle in settings.
🆕 Plugin Import
Load CUI elements directly from an existing .cs plugin source file. The parser reconstructs the full element tree for visual editing.
► Parses CuiHelper and CuiElementContainer patterns
► Resolves local variables and string constants
► Handles loops and repeated element generation
► Substitutes lang message references with preview text
► Works on any Oxide/Carbon plugin file
🆕 Built-in Reference
A built-in help system with searchable articles covering the entire CUI system. No need to leave the editor to look something up.
► Articles for every element type and property
► Covers layers, ScrollView, blur materials, anchors, offsets, fonts
► Shortcut reference with all editor hotkeys
► Live demo canvas inside each article
► One-click "Add to project" from any example
🆕 Performance Rewrite
Canvas
GPU rendering
Scene bitmap cache
Static layer cache
SKPicture cache
SKPaint pooling (50+ allocs/frame saved)
Text layout cache
Typeface cache
Pan without full re-render
Element Tree
Debounced rebuild on rapid changes
Bulk update batching
Fast flat selection cache O(n)
ThumbnailBrush cache
Detach() memory leak fixed
Color Picker
Real-time updates while dragging
Only the affected element redraws
No full scene invalidation
🆕 Live Preview
See your UI exactly as it appears in-game, right inside the editor. Every element is fully rendered with correct Rust scaling, colors, sprites, and fonts. No need to reload your plugin to check the result.
Rendering
Panels & Images
Labels with fonts
Rich Text support
Sprite tinting
FadeIn / FadeOut
Interactive
Button hover & press
ScrollView with inertia
Elastic bounce
Auto-hiding scrollbars
Live Countdown
Drag & Drop
Draggable elements
Slot filter matching
MoveToAnchor snap
Element swapping
KeepOnTop z-order
Tools
Element Inspector
Grid overlay
Outlines view
Auto-sync with editor
Screenshot to PNG
All CuiDraggableComponent properties are supported in preview: LimitToParent, MaxDistance, AllowSwapping, DropAnywhere, DragAlpha, ParentPadding, ParentLimitIndex, AnchorOffset, and more.
► Pick up Draggable elements and drop them into Slots
► Filter matching ensures only compatible elements snap
► Swap elements between occupied slots
► Inspector overlay shows element info on hover (shortcut: I)
► Grid and outline overlays for layout debugging (G / O)
► Background selector: dark, light, or any game screenshot
► Auto-sync keeps preview updated as you edit
► Export preview as PNG screenshot (S)
🆕 Smart Hook Generation
When your project uses Draggable or Slot elements, the export automatically generates ready-to-use hook methods with proper logic:
► OnCuiDraggableDrag with if/switch blocks for each draggable
► OnCuiDraggableDropped with switch by slot name
► Comments with accepted elements and filter values
► Works in both Snippet and Plugin export modes
🆕 Developer Tools
Professional plugin development toolkit with four dedicated tabs:
Plugin Settings
Author & version
Chat/console commands
Auto-show hooks
Permissions list
Plugin references
Generate Unload
Lang System
Multi-language support
Visual translation table
Per-element lang keys
lang.GetMessage() export
Canvas preview
ImageLibrary
Image key/URL table
Per-element ImageLib key
GetImage() helper
Auto OnServerInitialized
Auto plugin reference
Templates
Reusable code templates
Custom method generation
Placeholder system
Per-project settings
🆕 Localization System
Full multi-language support for your plugins. Assign lang keys to any text element, manage translations visually, and export with automatic lang.GetMessage() calls.
► Add unlimited languages (en, ru, de, fr, etc.)
► Visual translation table - edit all strings in one place
► Toggle between raw text and lang key per element
► Canvas shows resolved translations in real-time
► Exported code includes full LoadDefaultMessages with all languages
🆕 ImageLibrary Integration
Manage image assets directly in the editor. Define image keys and URLs, assign them to elements, and get clean export code with automatic ImageLibrary loading.
► Image key/URL table in Dev Tools
► ImageLib Key property on Image elements
► Export generates GetImage() helper method
► Plugin export auto-adds OnServerInitialized with image loading
► Automatic [PluginReference] ImageLibrary in export
🆕 Syntax Highlighting
► C# syntax highlighting in Export window
► JSON syntax highlighting in Export window
► Color-coded keywords, strings, numbers, comments
► Optimized for large code blocks
🆕 SVG Design Import
Import your designs directly from professional design tools:
Figma
export to SVG and import
Illustrator
Adobe AI/SVG support
Inkscape
free vector editor
Any SVG
standard format
► Automatic source detection optimizes parsing for each tool
► Smart layer hierarchy preservation
► Automatic element type detection (btn_, lbl_, img_, panel_)
► Correct parent-child coordinate conversion
🆕 Figma Plugin & Tools
New "Tools" folder included with the editor:
► CuiHelper Plugin for Figma - export designs directly to C# code
► Sample SVG designs - ready-to-import examples for testing and learning
► Documentation - setup guide for Figma plugin
🆕 Smart Resize Mode
Default Mode
Resize by changing Anchor values
Perfect for responsive layouts that
scale with screen size
Shift + Resize
Resize by changing Offset values
Perfect for pixel-perfect positioning
Orange handles indicate active mode
🆕 Inline Text Editing
► Double-click any text element to edit it directly on canvas
► No need to switch to the property panel, just click and type
► Press Enter or click outside to confirm changes
Guides, Grid & Smart Snapping
► Draggable guides from rulers
► Customizable grid with snap
► Smart guides - auto-snap to edges
► Distance indicators while dragging
Multiple Backgrounds
Preview your UI on actual game screenshots:
Game view Inventory Loot container Crafting Map Transparent
Export Formats
Generate ready-to-use code in three formats:
C# (CuiHelper)
container.Add(new CuiPanel { RectTransform = { AnchorMin = "0.3 0.3", AnchorMax = "0.7 0.7" }, Image = { Color = "0.1 0.1 0.1 0.9" } }, "Overlay", "MyPanel"); JSON
[{ "name":"MyPanel", "parent":"Overlay", "components":[...] }] Full Plugin
Complete .cs file with:
• using statements
• class definition
• commands & permissions
• Lang & ImageLib integration
• all UI code
Import Existing Code
Already have CUI code? Import it!
► Paste JSON array
► Paste C# CuiHelper code
► Import from PSD files
► Import from SVG files (Figma, Illustrator, Inkscape)
► Import from .cs plugin source files
The editor parses your code and recreates all elements for visual editing.
Project Management
► Save/Load project files
► Multiple tabs for different projects
► Recent projects with thumbnails
► Per-project settings
► Close confirmation for unsaved changes
Property Editor
Full control over every element property:
► Position (anchors + offsets)
► Colors with Rust format (0-1 RGBA)
► Fonts and text alignment
► Sprite/material selection
► Outline settings
► Fade in/out animations
► Button commands
► Input field parameters
► ScrollView settings
► Rotation and pivot point
Element Hierarchy
► Layer-based structure (Overlay, Hud, HudMenu)
► Parent-child relationships
► Drag & drop reordering
► Visibility toggle
► Lock elements to prevent accidental edits
► Rename with double-click
► Hover a tree node to highlight it on canvas
Additional Tools
Measure Tool
measure distances on canvas
Style Picker
copy style between elements
Sprite Library
browse Rust sprites
Color Picker
Rust format preview
Quality of Life
► Unlimited undo/redo
► Copy/paste/duplicate elements
► Copy/paste style
► Keyboard shortcuts for everything
► Multiple preset resolutions
► Smooth multiplicative zoom
► Auto-fit canvas to window
► Dark and light themes
► English & Russian localization
► Automatic update notifications
System Requirements
► Windows 10/11
► .NET 8.0 Runtime (bundled)
Installation
1. Download and extract the archive
2. Run RustCUIEditor.exe
3. Start creating!
Questions or support issues?
Contact me via CodeFling messages.
- #cui
- #cui editor
-
(and 2 more)
Tagged with: