-
Posts
429 -
Joined
-
Last visited
-
Days Won
6
Content Type
Profiles
Warranty Claims
Downloads
Forums
Store
Services
Downloads Plus Support
DOWNLOADS EXTRA
Reels
Everything posted by crash
-
Version 1.3.0
4 downloads
[ ! ] The zip contains a DLL extension that goes into RustDedicated_Data/Managed. Some hosts do not allow uploading DLLs - check with your host first. [ ! ] NpcDialogue gives your NPCs the game's own conversation screen. Rust only draws that screen for the talks it ships with, so a custom NPC normally gets a chat message or a generic panel. NpcDialogue rebuilds it one to one, measured from the game's own UI files: the black letterbox bars, the name tag on the panel's top edge, the red X, the lines that type themselves out, the numbered answers and the blue-framed mission panel with its objectives, time limit, reward slots and COMPLETED button. Stand where an NPC should be, type /npcd add trader, and a talking NPC appears there. Inside a monument it is saved relative to it, so it comes back at every copy of that monument on every map and survives wipes. Its answers check things (a permission, a group, an item, money) and do things (charge or pay scrap, Economics or ServerRewards, give or take items, grant permissions), written as short lines in the config: pay 50, give largemedkit 1. Every check runs before anything happens, payments come first, and an answer that cannot finish undoes everything it did and hands back the very items it took. Developers get an API to register conversations, missions, conditions and actions at runtime, spawn NPCs and follow every conversation through hooks. Our other plugins use it too: the Case Battles key dealer and the Relics black market broker talk through it. Works on Oxide and Carbon No other plugin needed Needs CrashExtensions (included in the zip) 8 languages built in Jump to: Features · How an answer works · Screenshots · Commands · Permissions · Works with · Install · Configuration · Test server · FAQ · API Features For players The vanilla screen. Letterbox bars, name tag, red X, typed lines and numbered answers, with the colours, sizes and fonts of the game's own conversation. Missions that look like missions. The blue panel shows up to 4 objectives, a time limit, up to 6 reward items with their amounts and a COMPLETED button. Your language. English, German, Spanish, French, Italian, Portuguese, Russian and Ukrainian, with the game's own words for TIME, REWARDS and COMPLETED. It gets out of the way. The screen closes by itself when you walk away from the NPC, die, go down or disconnect, and a fast double click never pays twice. For server owners Talking NPCs where you stand. /npcd add <conversation> places one facing where you look. Inside a monument it is saved relative to it, so it stands at every copy of that monument, on every map, and survives wipes. Answers without code. Conditions hide a row (permission, group, item with skin, money, and ! in front to negate any of them). Actions do the work: pay, reward, give, take, grant and revoke. Safe by design. Every check runs first, payments run before anything else, and an answer that cannot finish undoes everything it did (the same items come back, wear and attachments included) and shows its "fail" speech. Your currency. Scrap by default, any other item, Economics or ServerRewards. Vanilla NPCs too. The real texts of the Boat Vendor, Stable Master, Airwolf Vendor, Fisherman and CZ-721 scientist come ready, and you can give any vanilla NPC a new conversation. One-shot rewards. Mark a claim with a permission so a gift can only be taken once. A broken config is never overwritten. The plugin saves a copy as NpcDialogue.json.broken and runs the defaults until you fix the file. Server commands on any answer, with {steamid} for the player, and sounds for refused and completed answers. For developers An API. Register conversations, missions, conditions and actions at runtime, spawn and remove NPCs, and open a screen you drive yourself. See the API. Hooks for every step. Start, pick and end of every conversation, plus a ready hook to register in. Clean unloads. Everything a plugin registers or spawns is dropped when it unloads. How an answer works The row shows or hides. An answer with Conditions shows only when every one of them passes. A condition that fails to run hides the row too. Checks first. When a player picks it, every action is checked before anything runs. Payments first. The debits are summed and taken first, then Economics or ServerRewards rewards, then other plugins' actions, then item gives, item rewards and permission changes. Inside each group the actions run in the order you wrote them. A failure undoes it all. If a step cannot finish, payments come back, rewards are taken back and the very items taken return to their slots; the refused sound plays and the answer's "fail" speech shows. A give or item reward bigger than 30 stacks never runs (the player sees only the "fail" speech): split it. If Economics or ServerRewards refuses a refund, it is kept in oxide/data/NpcDialogue_owed.json and paid the next time the player picks an answer or connects, also after a wipe. Then the conversation moves on to the next speech, or ends. After a purchase the next pick waits half a second, so a fast double click never buys twice. Then its server commands run. They cannot fail the answer: if a command does nothing (a plugin not loaded, a wrong id), what the actions took is not given back, so test a command once from the console first. The shipped trader conversation shows all of it: a large medkit for 50 scrap, 1000 wood for 40 scrap and a one-shot gift. This is its first answer as it sits in the config: "Text": "Sell me a large medkit. [PAY 50 SCRAP]", "Next speech id (empty = end conversation)": "sold", "Actions (all checked first, then run in order)": [ "pay 50", "give largemedkit 1" ], "Next speech id when an action cannot run (empty = stay)": "poor" Screenshots Every screen below is NpcDialogue running in Rust. A placed trader: answers that sell, buy and give The mission panel: objectives, time and rewards COMPLETED closes the mission Mission offers with their own icons Long speeches wrap and type out line by line In the player's language Commands /npcd add <conversation> [id] - place a talking NPC where you stand, facing where you look /npcd remove [id] - remove the NPC with that id, or the one next to you /npcd list - list the placed NPCs and the ones other plugins placed /npcd tp <id> - teleport to an NPC /npcd respawn - place every NPC again, reading the NPC list from the config file /npctalk [id] [speech] - preview a conversation: answers move between speeches but run no actions or commands All of them need admin or the npcdialogue.admin permission. Permissions npcdialogue.admin - /npcd and /npctalk. Staff only (admins can always) npcdialogue.gift - lets a player see the shipped trader's one-shot gift row npcdialogue.gift.claimed - written by the gift itself once it is taken. Do not grant it A permission that starts with npcdialogue. and is used in a conversation is registered for you. A typical setup: oxide.grant group admin npcdialogue.admin oxide.grant group vip npcdialogue.gift Works with Case Battles: the key dealer sells keys through NpcDialogue, and NpcDialogue comes free in the Case Battles zip Relics: the black market broker talks through NpcDialogue, and NpcDialogue comes free in the Relics zip Economics / ServerRewards: optional currency for payments, rewards and money conditions, scrap by default Any plugin with console commands: an answer can run server commands with {steamid}, so it can sell or give anything another plugin hands out Install Install the extension, once per server. Stop the server, copy Oxide.Ext.CrashExtensions.dll into RustDedicated_Data/Managed (Carbon: carbon/extensions) and start it again. The console prints Loaded extension CrashExtensions with its version. An older copy of the DLL is simply overwritten: it is one shared file for all our plugins. Install the plugin. Copy NpcDialogue.cs into oxide/plugins (Carbon: carbon/plugins). It compiles on its own and creates oxide/config/NpcDialogue.json. Try it. Grant npcdialogue.admin to your staff, stand somewhere in game, type /npcd add trader and talk to the NPC that appears. Then write your own conversations, missions and NPCs in the config and run oxide.reload NpcDialogue. Plugin does not compile? The extension is missing or too old: check the folder and restart again. On a hosting panel, upload the DLL with the file manager or SFTP, and keep a copy in case the panel resets that folder on an update. Configuration Everything lives in oxide/config/NpcDialogue.json. Config sections (click to expand) Conditions and actions Conditions: permission <perm>, group <group>, item <shortname> [amount] [skin], money <amount>. Put ! in front to negate one, for example !permission vip Actions: pay <amount>, reward <amount>, give <shortname> [amount] [skin], take <shortname> [amount] [skin], grant <perm>, revoke <perm> Without a skin, item and take count only plain items, so a skinned or renamed item is never taken by mistake One-shot rewards: mark the claim instead of revoking. Use the condition !permission npcdialogue.gift.claimed and the action grant npcdialogue.gift.claimed. A revoke cannot take a permission a group gives, so the plugin refuses it then Test server Available on the new Meowcraft test server. Find the Relics black market broker there and talk to him: his whole conversation runs through NpcDialogue. FAQ Q: I run NpcDialogue. What changes when I update? A: Replace NpcDialogue.cs and, if you update the extension too, restart once. Your config, your conversations, missions and placed NPCs load as they are. Q: Is it identical to the game's own screen? A: The layout, colours, fonts and the typing animation are measured from the game's files. A server cannot do three things: hide the vitals and hotbar while you talk, answer to the number keys and close on ESC. The red X closes the screen and the answers are clicked. Q: What happens to the vanilla NPCs? A: Nothing, until you ask. The default conversations hold the real texts of the Boat Vendor, Stable Master, Airwolf Vendor, Fisherman and CZ-721 scientist, and their purchase answers are text only until you give them actions or server commands. An override replaces that NPC's whole vanilla conversation, including what its answers did (buying boats, opening its shop, handing out missions), on every NPC that carries it. The console says what an override drops the first time it runs. Q: Do I need an economy plugin? A: No. Money is scrap unless you pick another item, Economics or ServerRewards in the Currency section. Q: Can another plugin use it? A: Yes, that is what the API is for. Register conversations, missions, conditions and actions when OnNpcDialogueReady fires, spawn NPCs, or open a screen you drive yourself. The Case Battles key dealer and the Relics black market broker do exactly that. Q: What if an NPC gets removed by another plugin? A: A placed NPC is put back by itself, checked every minute. If a spot keeps losing its NPC right after it spawns, the plugin stops that spot with one warning until you run /npcd respawn or reload it. Q: Does it contact any outside service? A: No. It makes no web requests and sends nothing about your server or your players. Q: Can I translate it? A: Eight languages are built in, and each player sees the language of their own game. Your own conversations and missions show exactly as you write them. Q: Does it work on Carbon? A: Yes. The extension goes into carbon/extensions instead of RustDedicated_Data/Managed, and everything else is the same. API / Hooks // Hooks void OnNpcDialogueReady() object CanNpcDialogueStart(BasePlayer player, string conversationId, BaseEntity npc) void OnNpcDialogueStarted(BasePlayer player, string conversationId, BaseEntity npc) object CanNpcDialoguePick(BasePlayer player, string conversationId, string speechId, int index) void OnNpcDialoguePicked(BasePlayer player, string conversationId, string speechId, int index) void OnNpcDialogueEnded(BasePlayer player, string conversationId) // API: NpcDialogue?.Call("Method", ...) bool API_StartConversation(BasePlayer player, string conversationId, BaseEntity npc = null, string speechId = null) bool API_ShowDialogue(BasePlayer player, string npcName, string text, List<string> responses, Action<BasePlayer, int> onResponse, Dictionary<string, object> mission = null, BaseEntity npc = null) void API_CloseDialogue(BasePlayer player) bool API_RegisterConversation(Plugin owner, string id, object data) bool API_RegisterMission(Plugin owner, string id, object data) bool API_RegisterCondition(Plugin owner, string name, Func<BasePlayer, string[], bool> check) bool API_RegisterAction(Plugin owner, string name, Func<BasePlayer, string[], bool> check, Action<BasePlayer, string[]> run, Action<BasePlayer, string[]> undo = null) NPCTalking API_SpawnNpc(Plugin owner, string id, Vector3 position, float yaw, string conversationId, string name = null, string prefab = null, Action<BasePlayer> onTalk = null) bool API_RemoveNpc(Plugin owner, string id) bool API_IsTalking(BasePlayer player) bool API_IsReady() Conversations and missions take a dictionary, an anonymous object, a JObject or JSON text with short keys: name, start, speeches; each speech id, text, mission, claim, responses; each response text, next, conditions, actions, failNext, commands, permission, missionIcon. An action fails by throwing from run; give it an undo that reverses run, and it is called when a later action of the same answer fails. An action without undo can only be the last plugin action of an answer: an answer that puts one before another plugin action does not run. onResponse gets the picked index, -1 when the player leaves, dies, falls asleep, is wounded or walks away (also when another plugin's dialogue replaces yours) and -2 for COMPLETED; call API_ShowDialogue again from the callback to continue. CanNpcDialogueStart runs while the dialogue is opening, so a handler cannot open one from inside it: open yours from NextTick. Register in OnNpcDialogueReady: everything a plugin registered is cleared when NpcDialogue or that plugin unloads. Questions, ideas or bug reports? Use the Support tab of this file or join our Discord.$4.99-
- #npcdialogue
- #npc dialogue
- (and 18 more)
-
Changed Status from Pending to Feature Request Changed Fixed In from Not set to Next Version
-
Hey! Thanks for the detailed reports, they helped a lot. All three are fixed for the next update (2.1.2): Upgrader targets: you were right, and I was wrong to call it intended: clicking a target row never reached the plugin properly, so the rows did nothing. That's fixed, and the list now shows every target and they're all clickable. If you pick a target from another upgrade group than the items you offered, the items that don't fit leave the offer by themselves. Upgrader getting stuck after an upgrade: found it. The target you upgraded into stayed picked and locked your storage to its upgrade group, even after closing the menu, so if none of your items shared that group nothing could be clicked until a reload. The target doesn't lock the storage anymore: picking an item from another group just clears the target. HUD rows: there's a new option in General: Show HUD rows above the health bar (free cases, Case Rain). Set it to false and reload the plugin to hide them.
- 5 comments
-
- 1
-
-
- #case battles
- #cases
- (and 17 more)
-
Hello! Sure, I will look into adding this feature today.
-
Changed Status from Work in Progress to Fixed Changed Fixed In from Not set to 3.1.0
-
Fixed in 3.1.0, out now. When the same item is split between your inventory and the backpack, the backpack half now merges into the inventory stack, so you get the slot back. It goes into the inventory on purpose, so you can still craft, build and reload with it. It happens when you pick something up with a full backpack (the item then takes the freed slot instead of showing FULL) and every time the backpack sorts. It is on by default; you can turn it off with "Merge split stacks between the inventory and the backpack" in the config. Thanks for the report!
-
Changed Status from Work in Progress to Fixed Changed Fixed In from Not set to 3.1.0
-
Good news: this is in 3.1.0, out now. There is a new "Bonus slots" list in the config: each entry is a permission and how many slots it adds. Every bonus a player has goes on top of their tier (Default or any VIP), on both backpacks, up to the 60-slot cap. It ships with autobackpacks.bonus.discord at +4, so you only need to grant that permission to the group your Discord link plugin uses: oxide.grant group discord autobackpacks.bonus.discord Players also see their bonus on their own tier card in the Capacity Tiers tab. Thanks for the idea!
-
Changed Status from Pending to Work in Progress
-
Changed Status from Pending to Work in Progress
-
Good catch. New pickups already top off stacks that are in the backpack, so if your inventory is full and you pick up scrap, it goes onto the scrap stack in the backpack instead of needing a new slot. What it doesn’t do yet is merge two stacks that are already split, one in your inventory and one in the backpack. Those stay separate, and that’s why the backpack shows as full. For now, drag one stack onto the other and they’ll combine. I’m adding automatic merging of partial stacks between your inventory and the backpack to the list for the next update.
-
Hey! Right now tiers don’t add up: each player gets the slots of the highest tier they have, so there’s no “+4 on top of whatever tier I’m in” option yet. You can get close with combined tiers. Make a “Discord” tier with the default slots + 4 (for example 32 large / 16 small), plus a “VIP + Discord” tier with VIP + 4 and a higher priority. Then have your Discord link plugin add players to an Oxide group that grants the Discord permission. The catch is that the plugin allows 8 tiers, so if you have lots of VIP tiers you can’t double all of them. I like the idea though, so I’m noting a proper “bonus slots” permission that stacks on top of any tier for a future update.
-
Version 1.0.2
15 downloads
[ ! ] The zip contains a DLL extension that goes into RustDedicated_Data/Managed. Some hosts do not allow uploading DLLs - check with your host before buying. [ ! ] Forge lets your players make their weapons and armour stronger, one level at a time. They pick an item, pick what to improve (damage, magazine size, durability or protection), put a stone in and see their exact chance before they click. A win levels the item up and renames it, like "Assault Rifle +7". A fail burns the stone, and from +5 it can cost a level, unless a ward was in the slot. The levels live on the item itself, so a forged rifle keeps its bonus when it is traded, looted, dropped, stored or carried through a restart. At +3, +6 and +9 the item opens gem sockets, and at +15 a prismatic socket that takes cursed gems. Thirteen gems in three grades and three cursed gems add headshot damage, lifesteal, thorns, a second wind and more, and seven resonances reward the right gems sitting together in one item. Stones, catalysts, wards and gems drop from crates, barrels and scientists, refine into better tiers and fuse into better grades. New players get a welcome card and a guided tour of the real window, and admins get a first-run setup with three presets that set the whole balance in one click. Works on Oxide and Carbon Needs CrashExtensions (included) 4 tracks, 4 stone tiers, 16 gems Casual, Standard and Hardcore presets Jump to: Features · Screenshots · Trailer · How a forge works · Commands · Permissions · Install · Configuration · Test server · FAQ Features For players One forge window. Your weapons and gear on the left, the item with its condition and sockets in the middle, the tracks, the materials and the success chance on the right. One button forges. Four tracks. DAMAGE (+4% per level, up to +10), MAGAZINE (+10% rounds per level, up to +5), DURABILITY (-8% wear per level, up to +5) and PROTECTION for gear (-2% attack damage taken per level, up to +10). Odds you can read. The chance is shown before you click, added up from the stone, the catalyst, forge heat and any VIP bonus, and the IF IT FAILS panel says exactly what a fail would cost. Four stone tiers. Rough, Refined, Flawless and Mythic. A better stone reaches higher (+4, +6, +8, +10) and has better odds at every level. Catalysts and wards. A catalyst adds +5, +10 or +15 points of chance. A ward keeps your level when a forge fails, and it is only used up when it actually saved something. Forge heat. Every failed forge makes that item's next try easier, up to a cap, so a bad run never feels like a dead loss. A win resets it. Stats that travel. Levels, heat and gems are stored on the item. Trade it, loot it, drop it or die with it: the bonus goes with it. Gem sockets. Sockets open at +3, +6 and +9, and a prismatic socket at +15. Thirteen gems in three grades, plus three cursed gems with a big upside and a real drawback. Resonances. The right pair of gems in one item unlocks a bonus: a headshot that gives the round back, animal kills that heal you, no gear wear from player hits, and four more. Gems you can see. When a gem triggers, everyone nearby sees it: a headshot bursts in sparks, lifesteal draws blood, a thorn clangs the shield and cuts the attacker, a saved round ejects a shell, Second Wind injects and sparkles, Bloodhound howls. Each effect is a list of prefabs in the config, with one switch for all of them. Refine and fuse. Three stones make one of the next tier, three gems make one of the next grade, with the chance shown before you roll. Codex and history. Every material and gem with its odds and where it drops on your server, and your last 50 forges with your success rate and best item. Easy to learn. A welcome card on the first open, a guided tour that lights up each part of the real window, a sockets tour and a help page with your server's own numbers. Outside the window. A chip over the belt with the levels of the forged item you hold, result toasts, and a warning card before you recycle a forged item, with a KEEP IT button. For server owners First-run setup. The first time an admin opens Forge, three presets (Casual, Standard, Hardcore) set the odds, failure rules, drop rates, costs and heat in one click, with the three compared side by side, plus a page of on and off switches. Your risk, your rules. Failure bands by target level decide what a fail costs: nothing but the materials, a level, double heat or, on hardcore servers, the item itself behind a second click. Drops you control. A chance per material for every loot container (elite, military and locked crates and barrels by default; add any container by its prefab name) and for scientist kills. Gems drop mostly Chipped, rarely Radiant. Any currency. The forge cost in scrap, Economics, ServerRewards or free. Recycling that cannot be farmed. A recycled forged item gives back a share of the stones its levels needed, always less than what went in, and a warning card shows the player what they would lose first. VIP bonus. Extra chance per permission, off until you add one. Admin view. Look up any online or sleeping player, see every forged item and its levels, change a level, reset an item or a player, and give materials. Every action is logged. Console and Tebex. forge.give hands out stones, catalysts, wards, extractors and gems from the server console, RCON or a Tebex package. Everything in the config. Every track, stone, catalyst, gem value, drop chance, cost, resonance, interface switch and sound, and every text in the lang file. Safe with other plugins. A name another plugin gave an item is left alone, an item whose data belongs to another plugin is never touched, and a broken config file is never overwritten. For developers OnForgeCompleted hook. Called after every forge with the player, the item uid, the track, its new level and the result (Success, Failed, Warded or Broken). See the FAQ. Screenshots Every screen below is Forge running in Rust. The forge: item, tracks, materials and the success chance A successful forge A failed forge: what was lost and the heat it built Sockets: gems, grades and resonances Refine: three stones into the next tier Stone codex: odds by level and where it drops Gem codex: every gem and its value by grade Resonances: the gems that work together History: every forge, refine and gem change How it works, with your server's numbers The guided tour lights up the real window The welcome card on the first open First-run setup: pick a preset Admin view: a player's forged items The chip over the belt shows the levels of the forged item you hold Trailer The Forge trailer (click to play, 55 seconds) How a forge works Pick an item and a track. Firearms take DAMAGE, MAGAZINE and DURABILITY (a gun that holds one round, like the Eoka, skips MAGAZINE); bows and melee weapons DAMAGE and DURABILITY; armour and clothing PROTECTION and DURABILITY. Each forge raises one track by one level, and the item's name shows the total ("Assault Rifle +7"). Add a stone. Its tier caps the level: Rough up to +4, Refined +6, Flawless +8, Mythic +10. A catalyst and a ward are optional. Read the chance. Default Mythic odds run from 100% at +1 down to 15% at +10, and heat adds +3 per failed try on that item, up to +15. Forge. By default the cost is 50 scrap plus 50 per target level. A win levels the track up at once. If it fails. Up to +4 only the materials burn. From +5 the track drops a level, and from +8 the heat gain doubles. A ward cancels the loss. On a Hardcore server an item can also break from +9, after a second click, and its attachments and ammo come back. Sockets. At +3, +6 and +9 the item opens a socket, and at +15 the prismatic one. A firearm can reach +20 in total, a bow, melee weapon or piece of gear +15. Commands /forge - open the forge. The name is configurable. /forgeadmin - the admin view, or the first-run setup until it is finished. /forge hud move - drag the held-item chip over the belt to a new place. /forge hud done saves the place, /forge hud reset puts it back. Admin From the server console, RCON, Tebex or a player with forge.admin (the player has to be online): forge.give <player> <material> [amount] - give stones, catalysts, wards, extractors or gems (for example forge.give <steamid> stone.mythic 3, or gem.vampire.2 for a Cut Vampire gem). forge.setlevel <player> <item uid> <track> <level> - set one track of an item: damage, magazine, durability or protection. forge.reset <player> [item uid] - clear the levels, heat and gems of a player's forged items, or of one item. forge.inspect <player> - list a player's forged items with their uid. forge.panel - open the admin view from the F1 console. Permissions forge.use - open the forge and forge items. forge.sockets - the SOCKETS tab: insert and extract gems. forge.refine - the REFINE tab: refine stones and fuse gems. forge.admin - the setup, the admin view and the console commands. Admins need forge.use too. A permission you add to the VIP bonus (for example forge.vip) - extra chance on every forge. A permission that starts with forge. is registered for you. A typical setup: oxide.grant user YOUR_STEAM_ID forge.admin oxide.grant group default forge.use oxide.grant group default forge.sockets oxide.grant group default forge.refine Install Install the extension, once per server. Stop the server, copy Oxide.Ext.CrashExtensions.dll into RustDedicated_Data/Managed (Carbon: carbon/extensions) and start it again. The console prints Loaded extension CrashExtensions with its version. An older copy of the DLL is simply overwritten: it is one shared file for all our plugins. Install the plugin. Copy Forge.cs into oxide/plugins (Carbon: carbon/plugins). It compiles on its own and creates its config. Grant the permissions above, give yourself forge.use and forge.admin, and type /forge. The first-run setup opens: pick a preset, pick your options, press FINISH SETUP. Plugin does not compile? The extension is missing or too old: check the folder and restart again. On a hosting panel, upload the DLL with the file manager or SFTP, and keep a copy in case the panel resets that folder on an update. Host does not allow DLL uploads? The zip has CrashExtInstaller.cs. Upload it next to the plugin and run crashext.install once in the server console: it downloads the extension from GitHub, checks its exact size and sha256 and puts it in place (on Oxide it loads right away, on Carbon it asks for one restart). It makes no web request until you run that command and never checks for updates. Configuration Everything lives in oxide/config/Forge.json, and the first-run setup sets the main parts in game. Player history is stored in oxide/data/Forge; the forge levels themselves are stored on the items. Config sections (click to expand) Test server Available on the new Meowcraft test server. Try Forge before you buy: join and type /forge in chat. client.connect 91.229.114.54:28015 FAQ Q: Do I need Economics or ServerRewards? A: No. The forge costs scrap by default. Economics and ServerRewards are optional, and the cost can also be turned off. Q: Do the levels stay on the item? A: Yes. Levels, heat and gems are stored on the item itself, so they follow it through trades, loot, boxes, deaths and restarts, and a skin change at the repair bench keeps them (a skin that would turn it into a different item is refused). Q: Is it pay-to-win? A: Only if you make it so. The VIP chance bonus is empty by default, and players get stones from loot, scientists, refining and recycling. Q: Can I make it harder or easier? A: Pick Casual, Standard or Hardcore in the first-run setup, then fine-tune any number in the config. Hand-edited odds, drops and costs are kept unless you ask the setup to put the preset's numbers back. Q: Can I give stones from my store? A: Yes. Run forge.give <steamid> <material> <amount> as the Tebex command while the player is online. Q: What happens when a forged item is recycled? A: The recycler gives back a share of the stones its levels needed (35% by default, rounded down), and its gems shatter. Before that, a warning card shows the player what they would lose and offers to move the item back. Q: Does it work on Carbon? A: Yes. The extension goes into carbon/extensions instead of RustDedicated_Data/Managed, and the plugin into carbon/plugins. Q: How do I translate it? A: English is built in. Edit oxide/lang/en/Forge.json, or copy it into another language folder and translate its values: each player reads their own game language. Q: Does it contact any outside service? A: Only to download its pictures (about 120 small images: icons, buttons and the stone and gem art) once from the Venux CDN, cdn.crashplugins.space, which your server then keeps. Nothing about your server or your players is sent. You do not need ImageLibrary. Q: How do other plugins react to a forge? A: Forge calls void OnForgeCompleted(BasePlayer player, ulong itemUid, string track, int level, string result) after every forge. track is damage, magazine, durability or protection, level is the track's new level and result is Success, Failed, Warded or Broken. Questions, ideas or bug reports? Use the Support tab of this file or join our Discord.$24.99 -
- 5 comments
-
- #case battles
- #cases
- (and 17 more)
-
Changed Status from Pending to Closed
- 1 reply
-
- 1
-
-
Changed Status from Pending to Closed
-
- 5 comments
-
Changed Status from Pending to Work in Progress
-
Hi pagan Your host blocks DLL uploads, so you don't have to upload the DLL at all. Use VenuxUpdater, my free installer. It downloads the extension onto your server itself, so you never upload a DLL through your host's file manager: Download VenuxUpdater.cs from https://venuxplugins.com/free/VenuxUpdater.cs Upload it to oxide/plugins/ (Carbon: carbon/plugins/). It is a .cs file, the same kind of file as the plugin itself, so your host should allow it. In the server console, run: venux.install It checks the download against our signature, loads the extension and starts Ore Spawn Controller. Then restart the server when convenient: the extension's core part only starts with the server. If you run Carbon, copy the DLL into carbon/extensions/ by hand instead, since this path is not tested on Carbon yet. VenuxUpdater makes no web request until you run a command (venux.install or venux.check) or switch one of its options on. venux.check tells you what is installed and what is current. Two things can still stop it, and both come from the host, not from the plugin: If the console says it cannot write into RustDedicated_Data/Managed, the host is locking that folder. Ask the host to allow writes there, or move to a host that does. If the server cannot reach api.venuxplugins.com over HTTPS, the download fails. Ask the host to allow outbound HTTPS. If you get stuck, send me the console lines from venux.install and i'll will look at them.
-
Version 2.1.2
25 downloads
[ ! ] The zip contains a DLL extension that goes into RustDedicated_Data/Managed. Some hosts do not allow uploading DLLs - check with your host before buying. [ ! ] Case Battles is case opening for Rust. Players open cases with scrap, Economics or ServerRewards money, with case keys, or for free on a cooldown, watch the spin slide across the items and land on the drop, and everything they win goes to a personal storage where they claim it into the inventory or sell it back. Battles put 2 to 4 players on the same list of cases, in 1v1, 2v2, 3-way or 4-way, and the highest total takes the whole pot (the lowest in crazy mode). House bots fill empty seats, private battles join by code, and anyone can watch. The upgrader trades items or currency for a better item at a chance shown on a dial before you press GO. Every roll is provably fair, and players can check any of them in the window. Version 2.1 adds your own currency (scrap with a skin id, or any item, with its own icon), a picture for every reward and upgrader rules for each drop. Version 2.0 added levels with free level cases, Case Rain that splits a server pot among the players who join, wipe seasons that pay the top 3 of every board in cases, a guided tour, Steam avatars on every board and seat, and a whole new window. Works on Oxide and Carbon Needs CrashExtensions (included in the zip) 20 cases and 3 level cases ready to go English, Spanish, Russian, Portuguese and German built in Jump to: Features · How it plays · Screenshots · Trailer · Included cases · Commands · Permissions · Works with · Install · Configuration · Test server · FAQ · API Features For players A spin for every open. Open up to 5 at once, or switch on quick open and skip straight to the drop. A demo spin shows a case for free and wins nothing. Case battles. 1v1, 2v2, 3-way and 4-way, up to 10 cases per battle, normal (highest total wins) or crazy (lowest total wins), public or private with a code. Join, watch, fill empty seats with house bots (the creator calls them), or recreate the battle in one click. The upgrader. Offer up to 6 items or currency, pick a target or a multiplier chip (x1.5 to x10), and see your exact chance on the dial before you spin. A storage of your own. Every drop waits there: claim it into your inventory or sell it back for 85% of its value. Provably fair. The hash of the server seed is shown before you roll, you can set your own client seed, and the FAIRNESS page checks any revealed roll against the drop table it was made with. Levels. Everything you open, battle and upgrade earns XP, and the level road hands out bronze, silver and gold level cases. Levels carry over between wipes. Case Rain. A small share of every paid open fills a pot. When it rains, players have 60 seconds to join and the pot is split between them. Wipe seasons. Three boards close at every wipe (best drop, profit, battles) and the top 3 of each get cases. Stats. Your own numbers, the server's, top drops and leaderboards. A live drop feed and toasts for the big drops on the server, and HUD rows for a running Case Rain, a ready free case and its cooldown. A guided tour the first time the window opens, replayed from the ? button. For server owners Your own currency. Scrap with a skin id as the currency, or any item you name, or Economics or ServerRewards. Give the currency its own icon by URL or file. A picture for every reward. Set an Image on any drop and it shows in the case, the results, storage, upgrader, battles, live feed and stats. Until it loads, players see the item icon. Upgrader rules. Per drop: never offered, never a target, and upgrade groups, so a pile of resources can't turn into a weapon. Sell keys and cases. casebattles.givecase and casebattles.givekey are made for your shop, Tebex or battle pass, offline players included. The GET KEYS button links to your store. A key dealer NPC. Place him with /cases dealer add. He sells keys in packs with bulk and VIP discounts and a daily limit (talks through NpcDialogue, included in the zip). In-game editor. /cases edit edits every case and its drops in game, so nobody has to touch a file. VIP hooks. Discount permissions on case prices, VIP prices at the key dealer, and per-case permissions such as the VIP case. Limits and locks. Daily and lifetime limits per case, minimum playtime, a lock after the wipe, and blocks while wounded, swimming, in a vehicle, building blocked, or combat and raid blocked (with NoEscape: while NoEscape isn't loaded, nobody can open or join a battle). Drops beyond items. A drop can be an item, a blueprint or a list of console commands (a rank, a kit, anything). Discord. Big drops and Case Rain posted to your webhook, from the rarity you choose. 5 languages. English, Spanish, Russian, Portuguese and German are built in, and each player sees the language of their own game. Wipe your way. Storage and keys survive the wipe by default, and so do levels. Each is one switch. For developers A hook and an API. OnCaseOpened and the API_* calls: give cases and keys, read a player's opens, keys and level, open the window on a tab or a case. See the API. Console and RCON commands. The give commands run from the server console and RCON, which is where your shop, quests and reward plugins point. How it plays Pick a case. Free ones run on a cooldown, the rest cost currency or keys. Every case shows its drops and their odds. Open. One to five at a time. The spin lands on a drop decided by your seeds before it starts. Keep or sell. Drops go to your storage. Claim them into your inventory or sell them back. Battle. Create or join a battle, everyone opens the same cases round by round, and the winner takes the pot. Upgrade. Put items or currency on the dial for a shot at something better. Progress. XP from every open, battle and upgrade raises your level, level cases wait on the level road, and the season boards pay out at the wipe. Check. Rotate your seed to reveal the old one and verify any roll on the FAIRNESS page. Screenshots Every screen below is Case Battles running in Rust. The case browser A case and its drops Two cases landed: total, cost and profit The battles lobby A battle room A battle winner The upgrader The storage Fairness and the roll verifier Stats The level road Season boards: the top 3 of each win cases Case Rain on the HUD while you play Case Rain live in the case browser A level-up with a level case Creating a 2v2 battle History, every roll with its fairness check The guided tour Trailer The Case Battles 2.0 trailer (click to play, 80 seconds) Included Cases 20 cases ship ready to open, with 7 rarities from Common to Gold and three keys (green, blue and red): Free on a cooldown - Daily Case (every 24 hours, after 30 minutes played) and Starter Case (every 4 hours, after 15 minutes played) For currency - Medic (250), Fuel (300), Miner (350), Farmer (400), Ammo (550), Builder (600), Tech (800), Mystery (1,500), Boom (5,000), VIP (5,000, for casebattles.vip) and Jackpot (6,500, 3 a day) For keys - Weapons (1 green), Diver (1 green), Airdrop (1 blue), Tactical (2 blue), Elite (1 red), Cobalt (2 red) and Legend (3 red, locked for the first 2 hours of a wipe) Level cases - Bronze, Silver and Gold, claimed from the level road at levels 5 to 50 A few of the drops at the top: the AK-47 blueprint in the Weapons Case, an auto turret blueprint in the Builder Case, 10,000 scrap in the Mystery Case, and 20 timed C4 in the Legend, Jackpot and Gold Level cases. A disabled Example Rewards case shows the other kinds of drop: blueprints, a reward paid by console command, and a VIP rank granted on the spot. Yours to change: every case lives in oxide/config/CaseBattles.json, plain JSON, and the in-game editor writes the same file. In-Game Editor No file editing needed. /cases edit opens every case in a list and an editor for its name, image, price or key, free cooldown, permission, daily and lifetime limits, playtime and wipe lock, rarity tier, badge and whether it is allowed in battles. Add drops from the item list or straight from your inventory (skin, name and amount kept), set their odds and values, and watch the case's expected value update as you go. Duplicate a case to start a new one. Players keep the live table until you press SAVE. Who can open it: players with casebattles.admin. Reward commands are edited in the config file only. Commands Players /cases - open the window (the command name is set in the config) /cases battles, /cases upgrader, /cases storage - open the window on that tab /cases join <code> - join a private battle /cases help - the command list in chat /rain - join a running Case Rain (the name is set in the config, and it only exists while Case Rain is on) Admin /cases edit [case] - the in-game case editor, optionally straight on one case /cases dealer add | remove | list - place a key dealer where you stand, remove one, or list them casebattles.givecase <player> <case> [amount] - give free opens of a case, the one to point your shop, Tebex or battle pass at casebattles.givekey <player> <key> [amount] - give case keys casebattles.givebalance <player> <amount> - give currency casebattles.rain [amount | add <amount> | stop | status] - start a Case Rain now (an amount tops the pot up first), add to the pot without starting one, stop a rain without paying (the pot is kept), or show the pot and the time to the next one The give and rain commands run from the server console and RCON as well. <player> is a SteamID64, online or not, or the exact name of an online player. Permissions casebattles.use - open cases, battles, the upgrader and the storage. Required, so grant it to your default group casebattles.admin - the editor, the key dealer, and the give and rain commands. Staff only, and give it to yourself too: being a server admin is not enough casebattles.discount1, casebattles.discount2, casebattles.discount3 - 5, 10 or 15% off case prices paid in currency. The highest one a player holds wins casebattles.dealer.vip1, casebattles.dealer.vip2 - 5 or 10% off keys at the key dealer, added to the bulk discount casebattles.vip - opens the VIP Case Every case can carry its own permission, and the discounts, dealer prices and demo spin permission are all set in the config. A typical setup opens everything to everyone and keeps the discounts and the VIP case for your VIPs: oxide.grant group default casebattles.use oxide.grant group vip casebattles.discount2 oxide.grant group vip casebattles.dealer.vip1 oxide.grant group vip casebattles.vip oxide.grant user <your steamid> casebattles.admin Works with NpcDialogue: included free in the zip: the key dealer talks through the game's own conversation screen Economics / ServerRewards: optional currency, scrap by default Tebex or any shop: sell keys and cases with casebattles.givekey and casebattles.givecase from the console or RCON BattlePass / DailySpin: give cases as rewards with a command or through the API NoEscape: optional: block opening and claiming while combat or raid blocked Carbon: same code path as Oxide Install Install the extension, once per server. Stop the server, copy Oxide.Ext.CrashExtensions.dll into RustDedicated_Data/Managed (Carbon: carbon/extensions) and start it again. The console prints Loaded extension CrashExtensions with its version. An older copy of the DLL is simply overwritten: it is one shared file for all our plugins. Install the plugin. Copy CaseBattles.cs into oxide/plugins (Carbon: carbon/plugins). It compiles on its own and creates its config, data and language files. Grant the permissions above. Nobody opens a case until casebattles.use is granted. Then type /cases in game: the tour shows you around, and /cases edit tunes the cases. Plugin does not compile? The extension is missing or too old: check the folder and restart again. On a hosting panel, upload the DLL with the file manager or SFTP, and keep a copy in case the panel resets that folder on an update. Updating from Case Battles 2.0? Replace CaseBattles.cs. Your config, cases, storage, keys and history carry over. The two new Currency keys show up once and are off by default. Pending credits saved without a currency stay unpaid, with a warning, until you settle them by hand. Updating from Case Battles 1.x? Replace CaseBattles.cs. The first load upgrades your config and keeps the old one as oxide/config/CaseBattles.json.v1.bak, and your cases, storage, keys and history carry over. The extension in the zip is the current build: copy it over the old one and restart once. Back up oxide/config/CaseBattles.json and oxide/data/CaseBattles first. Configuration Everything lives in oxide/config/CaseBattles.json, the cases included. Each player's storage, keys, level and history are in oxide/data/CaseBattles/players, and the battles, boards, seasons and the Case Rain pot in oxide/data/CaseBattles/global.json. Config sections (click to expand) Test server Available on the new Meowcraft test server. Join from the F1 console and type /cases: client.connect 91.229.114.54:28015 FAQ Q: I run Case Battles 1.x. What changes when I update? A: Replace CaseBattles.cs. The first load upgrades the config and keeps the old file as oxide/config/CaseBattles.json.v1.bak, and your cases, storage, keys and history carry over. Levels are on and the bronze, silver and gold level cases are added. Case Rain and season rewards start off, so turn them on in the config when you want them. The art stays classic (the 1.x pictures) until you set Art pack to venux. Q: Can the currency be a skin? A: Yes. Set Currency > Skin id and only scrap with that skin counts as currency. Scrap has no skins in Rust, so its wallet icon always shows plain scrap. To show a skin on the icon, use an item that has skins, or set your own picture with Icon image. Q: Do I need an economy plugin? A: No. Cases, battles and the upgrader run on scrap by default, or on any item you name. Economics or ServerRewards take one config line. Keys are separate: you give or sell them with casebattles.givekey, the key dealer or your shop. Q: Is it really provably fair? A: Yes. Every roll is HMAC-SHA256 of the player's server seed, client seed and a nonce. The hash of the server seed is shown before any roll, the player can set their own client seed, and rotating the seed reveals the old one. The FAIRNESS page recomputes any past roll against the drop table it was made with, not today's config. Q: Does it work on Carbon? A: Yes. The extension goes into carbon/extensions and the plugin into carbon/plugins, and everything else is the same. Q: Can I translate it? A: It already speaks five: English, Spanish, Russian, Portuguese and German are built into the plugin, and each player sees the language their game runs in. For another language, copy oxide/lang/en/CaseBattles.json to oxide/lang/<code>/CaseBattles.json and translate it. Q: What happens at a wipe? A: By default storage and keys are kept, and so are levels. The season boards close, the top 3 of every board get their prize cases, and a new season starts. One switch makes storage and keys start over at the wipe, another resets levels. Q: Do I need NpcDialogue? A: No, but it comes free in the zip. With NpcDialogue installed the key dealer talks through the vanilla conversation screen and sells keys there. Without it, talking to him opens the case window. Q: Can I sell cases or keys in my shop? A: Yes. Point your shop, Tebex or battle pass at casebattles.givecase or casebattles.givekey, and set your store link for the GET KEYS button in the config. Q: How heavy is it? A: Built for busy servers. Every spin plays on the player's own game, so it stays smooth whatever the server's frame rate, the window only sends what changed, and player files are saved with the server's own save. Q: Does it contact any outside service? A: It downloads its pictures (case art, keys and icons) from cdn.crashplugins.space and rust-cui.crashplugins.space, and your server caches them. Steam avatars are drawn by each player's own game, so the server fetches nothing from Steam. The optional Discord webhook is off until you set its URL; once set, it posts big drops and Case Rain with the player's name and profile links. Nothing else about your server or your players is sent. API / Hooks // Hook void OnCaseOpened(BasePlayer player, string caseId, int count) // API: CaseBattles?.Call<T>("Method", ...) // player: a BasePlayer, player.userID, or a SteamID64 as ulong or string // The give calls work for offline players and return false when nothing was given bool API_GiveCase(object player, string caseId, object amount = null, bool notify = true) bool API_GiveKeys(object player, string keyId, object amount = null, bool notify = true) int API_GetCaseOpens(object player, string caseId) int API_GetKeys(object player, string keyId) int API_GetLevel(object player) bool API_OpenUI(BasePlayer player, string tab = null, string caseId = null) // tab: cases, battles, upgrader, storage, stats Dictionary<string, string> API_GetCases() // case id -> display name Dictionary<string, string> API_GetKeyTypes() // key id -> display name Questions, ideas or bug reports? Use the Support tab of this file or join our Discord.$45.00- 5 comments
-
- #case battles
- #cases
- (and 17 more)
-
Hi! Not yet. Relics doesn’t read or write anything from SkillTree right now, so the two don’t connect. I can add a connection. The two directions that make the most sense: a SkillTree level-up gives Relics mastery XP (or a sealed crate), and relic actions like unwrapping, fusing and enchanting give SkillTree XP. Both would be config switches. Which one would help you most? If you run both already and see anything odd, tell me and I’ll check it.
- 4 comments
-
- #relics
- #artifacts
- (and 19 more)
-
Changed Status from Pending to Closed
-
Changed Fixed In to Next Version
-
Added in lastest update!
