Jump to content

Khan

Creator
  • Posts

    1,093
  • Joined

  • Days Won

    7

Everything posted by Khan

  1. Khan

    Skinner

    Like most, I have used all other skin-able plugins out their, each with their own headache or problems. Well I am extremely pleased at how well this skinner plugin handles its logic, not only being feature rich but also ensures compatibility with plugins! Theirs many reviews for this plugin all with glowing 5-stars, so it makes it hard to make this, I'll post the positives of it below. Best Performance. Best Compatibility with plugins, including stack plugins! Best one on the market at providing updates! Easy to use, just watch the videos! And on sale at $24.99! this is the perfect time to get your self a copy!
  2. Khan

    NoEscape

    @Rioelchavo I went ahead and added 1 & 2. Along with a few other additions I did. I am willing to discuss the rest with you in discord vc or dms, just shoot me a msg, my discord id is khan8615
  3. Khan

    NoEscape

    Thank you, I will look into doing these suggestions.
  4. Version 1.0.1

    65 downloads

    Records playtime, with option to separately record AFK time. Includes a reward system to give players points/money/cash for time played or by referring other players to your server. You can also create custom permissions to give VIP players point multipliers either by using the commands or by simply adding in more config options manually. Features: Discord Logging with a simple discord webhook. Last wipe data saving. Currencies. Afk & active tracking. Permissions. Multipliers. UI Leader Board. Cmds. Recommended Rust Settings Due to ImageLibary's cache avatar feature being broke I have coded in my own method to manually have ImageLibrary cache them.. For rust you will need ImageLibrary installed for the avatar images to work. Enable the Avatar Image Patch": true , And throw in your steam API Key " ", Permissions playtimerewards.admin -- Allows players to use ptr command Chat Commands /playtime -- Displays your name and your playtime /playtime Khan -- Display the playtime for the specified player /playtime top -- Display the top 10 play times in chat /playtime lastwipe -- Displays the last time the data was wiped /pt -- Brings up the Rust only UI Leader Board System Admin Commands playtimerewards.admin -- Requires the admin permissions to use /ptr add vip 10 -- Adds a new custom permission with multiplier value /ptr remove vip -- Removes a custom permission /ptr list -- Shows all available permissions Note: Permissions will automatically be prefixed with playtimerewards. Reward System The reward system can be used to issue currency to players based on their playtime. It has 2 reward style plugins to handle them. Permission System The permission system is there to give VIP players a multiplier for the rewards they are issued. The amount of points will be the default amount set in the config, multiplied by the number you set in the permission. For example, if you create a permission called "playtimerewards.vip" with a value of 1.5, and the amount of points is 5 (default amount), the user will get 7.5 points when issued a reward for playtime Referral System The referral system is simple. PlayerA invites PlayerB to the server. For the reward to be Deposited PlayerB simply has to type '/refer PlayerA'. Once he/she has done this PlayerA will be given points for inviting a player and PlayerB will be given points for joining from a referral Referred Player B Joined Server, Deposit Amount": 3, Referral Invite Sent Deposit Amount, After player B has joined is": 5, Once PlayerB has registered his/her referral they can never use the system again, however they can invite as many players as they want to claim referral rewards Developer API double? FetchPlayTime(string playerid) // Returns double playtime in seconds, or null if no data found double? FetchAfkTime(string playerid) // Returns double AFK time in seconds, or null if no data found int? FetchReferral(string playerid) // Returns int number of referrals, or null if no data found Configuration The settings and options can be configured in the PlayTimeRewards file under the config directory. The use of an editor and validator is recommended to avoid formatting issues and syntax errors. { { "1. Don't Edit This": { "LastWipe": "2021-05-29 19:05:14Z", "WasWiped": false, "WipeTime": "2021-05-29 19:05:14Z" }, "2. Discord Settings": { "1. Enable Discord Logging": false, "2. Discord Web Hook Url": "", "3. Embed Message Color": "#483D8B", "4. Include Plugin Image Name in discord messages": true, "5. Discord Plugin Image": "https://assets.umod.org/images/icons/plugin/60b0e6d6c8900.png", "6. Discord Plugin Name": "PlayTimeRewards" }, "3. Track Settings": { "1. Sets the Save Interval Timer": 15, "2. Enable Afk Time Tracking": true, "3. Enable Avatar Image Patch": true, "4. Avatar Image Patch Requires Steam API Key": "", "5. Ignore Specified Oxide Groups from getting rewards": [ "admin" ] }, "4. Reward Settings": { "1. Enable Rewards": true, "2. Use ServerRewards": false, "3. Use Economics": true, "4. Use Cash System": false, "Cash System Currency": "$", "5. Enable Referrals": true, "6. Enable Earning By Referrals": true, "7. Send Deposit Response": true, "8. PlayTime Deposit Timer": 3600, "9. PlayTime Deposit Amount": 5, "10. Referred Player Joined Deposit Amount": 3, "11. Referral Invite Sent Deposit Amount": 5 }, "5. Permission Multipliers": { "Multiplyer": 1.0, "SetPermission": "" } } Localization The default messages are in the PlayTimeRewards file under the lang/en directory. To add support for another language, create a new language folder (e.g. de for German) if not already created, copy the default language file to the new folder and then customize the messages. { "mia": "Unable to find player number or name {0} \n Try there display-name instead.", "playeraccepted": "Your referral has been accepted", "playerread": "{0} has acknowledged a referral from you", "playeraccepteddeposit": "Your referral has been accepted and you have received {0} points", "playeracceptedplayersreferaldeposit": "{0} has acknowledged a referral from you and you have received {1} points", "self": "You can not refer yourself!", "alreadydid": "You have already acknowledged a referral", "refsyntax": "/refer <playername> - Acknowledge a referral from <playername>", "permmultiplier": "permission | multiplier", "notaperm": "The permission {0} does not exist", "permremoved": "You have successfully removed the permission {0}", "missingvalue": "You must enter a multiplier", "alreadyperm": "The permission '{0}' already exists", "permadded": "You have successfully created a new reward multiplier. Permission: {0}, Multiplier {1}", "ptr": "Create custom permissions with reward multipliers for VIP players", "add": "/ptr add <permissionname> <multiplier> - Adds a new reward multiplier", "remove": "/ptr remove <permissionname> - Removes reward multiplier", "list": "/ptr list - List available permissions and their multipliers", "list1": "Permission {0}, multiplier {1} \n", "typo": "Unable to get your playtime", "natime": "Unable to get that players playtime", "sr": "RP", "economics": "Coins", "cash": "Cash", "cashsystem": "custom", "deposit": "{0} {1} have been deposited to your account!", "toptime": "Top Playtimes: ", "topscore": "You can see the top scoring playtimes by typing \n \"/playtime top (optional:number 1, 22, etc)\"", "lastwipe": "{0} Last wipe was {1}" }
    $14.99
  5. Khan

    Stack Modifier

    Yikes, okie whatever, at the end of the day mine should control stack logic not any other plugin which is the whole point of it. So maybe I return false to catch plugins trying to override logic when they shouldnt need to with mine installed.
  6. Khan

    Stack Modifier

    You have not messaged me since we last spoke in discord or in dms on codefling so not sure what your talking about. Also, if you are un-subbing from the hooks like you claim their wouldn't be any conflicts anyway, returning true or false does not matter for the CanCombineDroppedItem hook since it only checks if its not null instead of a bool. Wulf, cal and a few others had debates about how devs should return the value to over-ride the logic for !=null checked hooks & ultimately it didn't matter since typically only 1 plugin should be controlling stack logic anyways. I've always returned false to deny something because that is the logical sense. Theirs nothing wrong with it.
  7. Khan

    Stack Modifier

    Since in our last conversation you said you would add this update, so it would auto handle it inside your plugin hence why. People do not read the docs. & its a few lines of code for devs to add.
  8. Khan

    Stack Modifier

    @BetterDeadThanZed I've been working on an addon plugin for stack modifier, I'll see if I can wrap it up this weekend & get it submitted for approval.
  9. Khan

    Stack Modifier

    @ToxicRust Heli-signals needs to un-sub from all stack hooks when stack modifier is loaded/installed. I've messaged the dev in dms, just awaiting a response.
  10. Khan

    Death Modifier

    Version 1.4.14

    282 downloads

    Still using those old Restore Upon Death & Metabolism plugins? Well with death modifier you won't need those! For a price $ players can auto revive right where they left off inventory an all! Included with unlimited permissions, blacklist system, container limits, currency support & more! NOTES: 1. This plugin as of 1.2.0 now supports carbon. 2. Does not work while in vanish. 3. Does not work with the plugin on umod called Corpse Location 4. Toggling god mode on while at death screen will break the plugin for you. Features * Black List & Black list chat command for ban / unban of items. * Permission support ( requires a perm to use ). * Specified Containers via perms. * Charge Economics & Economics debt or Server-Rewards RP. * Respawns player at same location they died at. * Ability to control Metabolism on respawn. * Ability to allow players to set there own bed/bag spawn points. * If you don't have a permission it doesn't apply to you. * Currency response msg to player if it fails. * Help/info command. * If multiple permissions assigned it will default to first one in the config list they have. * You can create as many permissions as you want simply copy / paste the examples in the config to make more & edit. * Toggle on/off modes for players. * Capable of saving everything, including backpacks etc. Commands Note: Running these commands bans & unbans everything in your whole inventory ( wear, belt, main ) /bl ban perm perm2 etc ( Specify which perms are allowed to bypass the item ban ) Admin Perm Needed. ( deathmodifier.admin ) /bl unban ( Removes all banned items in your inventory ) Admin Perm Needed. ( deathmodifier.admin ) /di ( Shows the players what their current permission settings are in chat ) /dt ( allows players to toggle off or on the auto revive system ) Note: This will reset to being on when you re-connect back to the server or reload the plugin or do a reboot. Config { "Sets black-list command": [ "dmbl", "bl" ], "Sets help-info command": [ "deathinfo", "di" ], "Sets toggle command": [ "deathtoggle", "dt" ], "Kill Corpse when player uses a Death Modifier Respawn Option": true, "Sets how long until player's corpse De-Spawns, Default 300f (5-min), this affects how long they can AFK at death screen to use there respawn options.": 300.0, "Permissions": { "vip": { "Respawn Settings": { "Random Respawn or Spawn at Death Location, true = random": false, "Seconds for how long after respawn until you can take damage, 0 = disabled": 0, "Sets Respawn with death modifier cooldown in seconds, 0 = disabled": 0 }, "Sets allowed containers, Main = 0 | Belt = 1 | Wear = 2 | All = 3": [ 3 ], "Currency Settings": { "Sets default currency, 0 = disabled, 1 = Economics, 2 = ServerRewards": 0, "Sets price": 15.0, "Sets Increment penalty to apply only when they purchase a revive instead of adding for each death.": false, "Sets Increment penalty for quick repeated use, 0 = disabled": 5.0, "Resets Cost Increment after x seconds, 0 = disabled": 1800 }, "Sets Respawned Metabolism Level's": { "Enable Metabolism Modifications": true, "Sets Current Health: 0 = Random Health Level": 0.0, "Sets Max Health Level": 100.0, "Sets Current Water Hydration Level": 250.0, "Sets Max Water Hydration Level": 250.0, "Sets Current Hunger Level": 500.0, "Sets Max Hunger Level": 500.0 }, "Sets Allowed Respawn Options": { "SleepingBag": true, "Bed": false, "BeachTowel": false, "Camper": true }, "No Respawn Cool Downs": { "SleepingBag": true, "Bed": false, "BeachTowel": false, "Camper": false } }, "basic": { "Respawn Settings": { "Random Respawn or Spawn at Death Location, true = random": false, "Seconds for how long after respawn until you can take damage, 0 = disabled": 0, "Sets Respawn with death modifier cooldown in seconds, 0 = disabled": 0 }, "Sets allowed containers, Main = 0 | Belt = 1 | Wear = 2 | All = 3": [ 0, 2 ], "Currency Settings": { "Sets default currency, 0 = disabled, 1 = Economics, 2 = ServerRewards": 0, "Sets price": 15.0, "Sets Increment penalty to apply only when they purchase a revive instead of adding for each death.": false, "Sets Increment penalty for quick repeated use, 0 = disabled": 5.0, "Resets Cost Increment after x seconds, 0 = disabled": 1800 }, "Sets Respawned Metabolism Level's": { "Enable Metabolism Modifications": true, "Sets Current Health: 0 = Random Health Level": 0.0, "Sets Max Health Level": 100.0, "Sets Current Water Hydration Level": 250.0, "Sets Max Water Hydration Level": 250.0, "Sets Current Hunger Level": 500.0, "Sets Max Hunger Level": 500.0 }, "Sets Allowed Respawn Options": { "SleepingBag": false, "Bed": false, "BeachTowel": false, "Camper": false }, "No Respawn Cool Downs": { "SleepingBag": false, "Bed": false, "BeachTowel": false, "Camper": false } } }, "Black Listed Items with Skins and Permission bypass, use Commands to setup & update": {} }
    $24.99
  11. Khan

    Stack Modifier

    That's just the auto updater doing its job repairing your config. For whatever reason stack sizes on specific items got set to 0 or negative - digits which will break the items. So its also self repairing the server.
  12. Khan

    Stack Modifier

    @SlayersRust It has a built in auto updater function so yes it should just auto update without issues.
  13. Khan

    Stack Modifier

    Update 2.5.7 Fixes any issues with this wipes changes. If you have not yet done so, pls update.
  14. Khan

    Stack Modifier

    @ZEODE You have been out of town / away on vacation so I've been waiting for you to come back before trying to reach out to you. & frankly it's been so long that I've forgotten. "But unless people are putting incorrect vanilla names" ?? That field is natively null on vanilla items. If it is supposed to be a vanilla item that field should never be set. Ever. Also for the record umod release is abandoned / not maintained. I only support codefling release. I haven't logged into umod in over a year. If you really wanted to reach out to me about a plugin you could simply do so in discord or here on codefling but umod is not a platform I even look at.
  15. Khan

    Stack Modifier

    You need to have the permission to use the UI / commands. Called stackmodifier.admin did you make sure to grant that to your self?
  16. Khan

    Turret Modifier

    Version 1.0.3

    38 downloads

    Written with the best performance in mind turret modifier brings the ability for players to have different custom sentry, auto turrets & flame turrets each with different permissions as well as a global default one. It supports tc limits, auto auths, custom toggle on/of commands and restock command of turret ammo. You can make as many perms as you wish for different turret variants. Ideal for shop plugins, vending machines and more. With more features in the works / development. Features: * Multiple Ammo Types per turret * Ability to place turrets on any building surface. * Turret Limits * Auto Authorization support for Teams & TC * Turret Customization Support * Individual trap limits * commands to toggle turrets on / off * commands to refill the turrets with ammo on the player * More to come, look at config below for full feature list F1 / Console Commands tm.flame name or steamID perm or global amount spin<optional, Example: tm.flame give khan global 3 | tm.flame give khan global 3 spin tm.turret name or steamID perm or global amount spin<optional, Example: tm.turret give khan global 3 | tm.turret give khan global 3 spin tm.sentry name or steamID perm or global amount spin<optional, Example: tm.sentry give khan global 3 | tm.sentry give khan global 3 spin tm.clear ( removes all server instances of player placed sentry turrets ) Chat Commands /toggle <on> | <off> ( toggles all auto turrets with power on or off ) NOTE: restock command requires the player to have the ammo on them to work. /restock red 500 ( restocks all turrets within that TC area with the specified ammo type & ammount per turret ) /restock <default> | <black> | <blue> | <red> | <sam> Configuration { "Enables use of permission based settings": true, "Toggle Command for Turrets: Toggles on / off (set empty string to disable)": "toggle", "ReStock Command for Turrets: Specify Ammo & ReStock Inventory (set empty string to disable)": "restock", "Give Command Flame Turret": "tm.flame", "Give Command Auto Turret": "tm.turret", "Give Command Sentry": "tm.sentry", "Clear Sentry Command": "tm.clear", "SteamIDs that are excluded from build Limits": [], "Can Be Targeted Settings": { "SteamIDs that are excluded from being targeted": [] }, "Global Auto Turret": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 10, "Bullet Speed, vanilla = 200f": 200.0, "Turret Range, vanilla = 30": 30.0, "Turret Placement Health, vanilla = 1000": 1000.0, "Aim cone, vanilla = 5": 5.0, "Inventory Capacity, Available Ammo Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Auto Turret", "Player Auto Turret Permissions": { "toptier": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 15, "Bullet Speed, vanilla = 200f": 200.0, "Turret Range, vanilla = 30": 100.0, "Turret Placement Health, vanilla = 1000": 1500.0, "Aim cone, vanilla = 5": 2.0, "Inventory Capacity, Available Ammo Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Auto Turret" }, "midtier": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 13, "Bullet Speed, vanilla = 200f": 200.0, "Turret Range, vanilla = 30": 70.0, "Turret Placement Health, vanilla = 1000": 1300.0, "Aim cone, vanilla = 5": 2.0, "Inventory Capacity, Available Ammo Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Auto Turret" }, "lowtier": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 10, "Bullet Speed, vanilla = 200f": 200.0, "Turret Range, vanilla = 30": 50.0, "Turret Placement Health, vanilla = 1000": 1150.0, "Aim cone, vanilla = 5": 2.0, "Inventory Capacity, Available Ammo Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Auto Turret" } } }, "Global Sentry Turret": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Can take damage": true, "Give turret back on ground missing check": true, "Max Tool Cupboard Limit, 0 = no limit": 10, "Power Requirement, 0 = no power": 10, "Amount of ammo for one spray, 0 = no-ammo mode": 3, "Turret Range, vanilla = 30": 30.0, "Turret Placement Health, vanilla = 1000": 1000.0, "Aim cone, vanilla = 4": 4.0, "Inventory Capacity, Available Ammo Slots, Max = 36": 12, "Skin": 1587601905, "Display Name": "Sentry Turret", "Set Ammo Types, Rifle = 0 | Explosive = 1 | HV = 2 | Incendiary = 3 | SAM = 4 | All = 7": [ 0 ], "Player Sentry Turret Permissions": { "toptier": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Can take damage": true, "Give turret back on ground missing check": true, "Max Tool Cupboard Limit, 0 = no limit": 15, "Power Requirement, 0 = no power": 0, "Amount of ammo for one spray, 0 = no-ammo mode": 3, "Turret Range, vanilla = 30": 100.0, "Turret Placement Health, vanilla = 1000": 1500.0, "Aim cone, vanilla = 4": 2.0, "Inventory Capacity, Available Ammo Slots, Max = 36": 12, "Skin": 1587601905, "Display Name": "Sentry Turret", "Set Ammo Types, Rifle = 0 | Explosive = 1 | HV = 2 | Incendiary = 3 | SAM = 4 | All = 7": [ 7 ] }, "midtier": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Can take damage": true, "Give turret back on ground missing check": true, "Max Tool Cupboard Limit, 0 = no limit": 13, "Power Requirement, 0 = no power": 3, "Amount of ammo for one spray, 0 = no-ammo mode": 3, "Turret Range, vanilla = 30": 70.0, "Turret Placement Health, vanilla = 1000": 1300.0, "Aim cone, vanilla = 4": 2.0, "Inventory Capacity, Available Ammo Slots, Max = 36": 12, "Skin": 1587601905, "Display Name": "Sentry Turret", "Set Ammo Types, Rifle = 0 | Explosive = 1 | HV = 2 | Incendiary = 3 | SAM = 4 | All = 7": [ 0, 3, 2, 1 ] }, "lowtier": { "Authorize Team": true, "Authorize tc users": true, "Allow placement on Walls / Ceiling using spinners": true, "Can take damage": true, "Give turret back on ground missing check": true, "Max Tool Cupboard Limit, 0 = no limit": 10, "Power Requirement, 0 = no power": 6, "Amount of ammo for one spray, 0 = no-ammo mode": 3, "Turret Range, vanilla = 30": 50.0, "Turret Placement Health, vanilla = 1000": 1150.0, "Aim cone, vanilla = 4": 2.0, "Inventory Capacity, Available Ammo Slots, Max = 36": 12, "Skin": 1587601905, "Display Name": "Sentry Turret", "Set Ammo Types, Rifle = 0 | Explosive = 1 | HV = 2 | Incendiary = 3 | SAM = 4 | All = 7": [ 0, 3, 2 ] } } }, "Global Flame Turret": { "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 10, "Turret Flame Arc, vanilla = 45": 45.0, "Turret Trigger Duration, vanilla = 5": 5.0, "Turret Flame Range, vanilla = 7": 7.0, "Turret Flame Radius, vanilla = 4": 4.0, "Turret Fuel Per Sec, vanilla = 1": 1.0, "Turret Placement Health, vanilla = 1000": 1000.0, "Inventory Capacity, Available Fuel Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Flame Turret", "Player Flame Turret Permissions": { "toptier": { "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 15, "Turret Flame Arc, vanilla = 45": 45.0, "Turret Trigger Duration, vanilla = 5": 5.0, "Turret Flame Range, vanilla = 7": 100.0, "Turret Flame Radius, vanilla = 4": 4.0, "Turret Fuel Per Sec, vanilla = 1": 1.0, "Turret Placement Health, vanilla = 1000": 1500.0, "Inventory Capacity, Available Fuel Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Flame Turret" }, "midtier": { "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 13, "Turret Flame Arc, vanilla = 45": 45.0, "Turret Trigger Duration, vanilla = 5": 5.0, "Turret Flame Range, vanilla = 7": 70.0, "Turret Flame Radius, vanilla = 4": 4.0, "Turret Fuel Per Sec, vanilla = 1": 1.0, "Turret Placement Health, vanilla = 1000": 1300.0, "Inventory Capacity, Available Fuel Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Flame Turret" }, "lowtier": { "Allow placement on Walls / Ceiling using spinners": true, "Max Tool Cupboard Limit, 0 = no limit": 10, "Turret Flame Arc, vanilla = 45": 45.0, "Turret Trigger Duration, vanilla = 5": 5.0, "Turret Flame Range, vanilla = 7": 50.0, "Turret Flame Radius, vanilla = 4": 4.0, "Turret Fuel Per Sec, vanilla = 1": 1.0, "Turret Placement Health, vanilla = 1000": 1150.0, "Inventory Capacity, Available Fuel Slots, Max = 6": 6, "Skin": 0, "Display Name": "Custom Flame Turret" } } } }
    $24.99
  17. Khan

    Image Manager

    Version 1.1.2

    379 downloads

    Image Manager is a sleek and powerful tool for developers, offering a lightweight alternative to ImageLibrary. Its unique handling and plugin-specific callbacks make it exceptionally easy to use. Console Command: imagemanager.reset // can only be ran from server console/terminal I don't allow use client side. Features: Error Handling: Outputs special debug info for devs when something fails. It's able to self repair when the server sv.files have been deleted but a wipe hasn't occurred or vice versa. Stores images with unique identifiers to ensure reliable retrieval/removal. If unity request fails retries with www instead. Optimized Request Management: Utilizes batch processing to handle image caching requests efficiently. Auto Remove Data that isn't used past x Days: Default = 30, 0 = disabled. Sets batch limits on Images: Default = 30 & Avatars can do 100 at a time per request using steam API key. Keeps Previous Wipe Data thus reducing the need to redo everything each wipe. Groups requests into batches to optimize resource use and reduce overhead. Manages large volumes of connections without sacrificing performance. Handles high volumes of image caching requests during server wipes or mass player reconnections. Processes and caches avatar images quickly with coroutine-based execution. Manages concurrent requests from multiple plugins simultaneously without conflicts or slowdowns. Maintains responsiveness and efficiency in dynamic server environments. Plugin Communication: In addition to its core functionality, the system includes special logic to facilitate communication between plugins. Each plugin calling the image caching system is notified when its batch of requests is ready or finished, allowing it to proceed with its logic without waiting for all requests to complete. This feature enhances the flexibility and usability of the system, ensuring smooth integration with various plugins and workflows. Plugin Communication Example For Images: // Plugin Calls!? Whaaa.. :P This works with all Adding hook calls in this plugin. // Example plugin: GUIShop [PluginReference] private Plugin ImageManager; private List<string> _pluginImages = new List<string>(); private Dictionary<string, string> _guishopImages = new Dictionary<string, string>(); private void OnServerInitialized() { // This will add the images to the filesystem list for the callback if (ImageManager != null && ImageManager.IsLoaded) ImageManager?.Call("AddImages", _pluginImages, FileStorage.Type.jpg, "GUIShop"); } // why do we need this!? OnPluginLoaded for reload situations, or when plugin wasn't loaded yet. private void OnPluginLoaded(Plugin name) { if (ImageManager != null && name.Name == ImageManager.Name & ImageManager.IsLoaded) { Puts("ImageManager has been detected and GUIShop Images are now being Processed"); // This will add the images to the filesystem list for the callback ImageManager?.Call("AddImages", _pluginImages, FileStorage.Type.jpg, "GUIShop"); } } // this would be your custom call-back ( Why use this!? Because it can actually be faster so you can continue your code logic quicker ) void ImageManagerGUIShop(Dictionary<string, string> images) { _guishopImages = images; // this returns the sent URL as the KEY with the image as the value. } // now down in your GUI / UI you can do this ( same for avatars except the key is ulong ) public void Pic(ref CuiElementContainer container, string parent, string name, string anchorMin, string anchorMax, string url) { CuiRawImageComponent rawImage = new CuiRawImageComponent(); rawImage.Png = _guishopImages[url]; container.Add(new CuiElement { Parent = parent, Name = name, Components = { rawImage, new CuiRectTransformComponent { AnchorMin = anchorMin, AnchorMax = anchorMax } } }); } Plugin Communication Example for Avatars / Image Combo: private HashSet<string> _storeImages = new HashSet<string>(); private Dictionary<string, string> _storedImages = new Dictionary<string, string>(); private Dictionary<string, string> _storedAvatars = new Dictionary<string, string>(); private void OnServerInitialized() { ImageManager?.Call("AddImages", _storeImages.ToList(), FileStorage.Type.jpg, "GUIShop"); } private void OnPluginLoaded(Plugin name) { if (ImageManager != null && name.Name == ImageManager.Name) { Puts("ImageManager has been detected and Images are now being Processed"); ImageManager?.Call("AddImages", _storeImages.ToList(), FileStorage.Type.jpg, "GUIShop"); // plugin name "GUIShop" } } // your special made hook to listen for on your image request. private void ImageManagerRustID(Dictionary<string, string> received) { // you can filter which ones you want when you get the list back. example. foreach (var image in received) { if (_storeImages.Contains(image.Key)) { _storedImages[image.Key] = image.Value; _storeImages.Remove(image.Key); if (_storeImages.Count == 0) break; } } } // called when new avatars get cached so you can update as needed. void ImageManagerPlayerConnected(Dictionary<string, string> avatars) => _storedAvatars = avatars; // use for your gui example CuiRawImageComponent rawImage = new CuiRawImageComponent(); rawImage.Png = _storedAvatars[id]; //or call each time if you prefer.. (string)ImageManager?.Call("GetAvatar", id); // or image rawImage.Png = _storedImages[key] container.Add(new CuiElement { Parent = parent, Name = name, Components = { rawImage, new CuiRectTransformComponent { AnchorMin = anchorMin, AnchorMax = anchorMax } } }); API Hooks: // Avatars // Called when the plugin has initially loaded / compiled & finished/ready for use. void ImageManagerLoadedAvatars(Dictionary<string, string> avatars) // Triggered when new players connect with no stored pic yet. ( Is only called once finished storing in the event of multiple or mass player connections their Queued ) void ImageManagerPlayerConnected(Dictionary<string, string> avatars) // Triggered by 3rd party plugins doing stuff + PlayerConnected. void ImageManagerAdded(Dictionary<string, string> avatars) // called when avatars have been removed & returns the new full avatar list available. void ImageManagerRemoved(Dictionary<string, string> avatars) // Images // Called when the plugin has initially loaded / compiled & finished/ready for use. void ImageManagerLoadedImages(Dictionary<string, string> images) // Triggered by 3rd party plugins doing stuff. void ImageManagerAdded(Dictionary<string, string> images) // called when avatars have been removed & returns the new full avatar list available. void ImageManagerRemoved(Dictionary<string, string> images) API Calls: These are API CALLS which means you call them.. ImageManager?.Call("AddImages", _pluginImages, FileStorage.Type.jpg, "GUIShop"); // Example // new hook use this to specify individual image storage types. AddImages(Dictionary<string, FileStorage.Type> images, string plugin) // hook changed. AddImages(List<string> images, FileStorage.Type format, string plugin) // hook changed. Use this to specify 1 storage type for all images to save as. AddImage(string image, FileStorage.Type format, string plugin) GetImage(string image) // returns string GetImages(List<string> images) // returns Dictionary<string, string> RemoveImage(string image) RemoveImages(List<string> images) AddAvatar(ulong player, string url, string plugin) // url is optional if you want to provide custom image for player. AddAvatar(string player, string url, string plugin) // url is optional if you want to provide custom image for player. AddAvatars(Dictionary<string, string> players, string plugin) // url is optional if you want to provide custom image for player. GetAvatar(string player) // returns string GetAvatars(List<string> players) // returns Dictionary<string, string> RemoveAvatar(string player) RemoveAvatars(List<string> players) TODO: Add MYSQL Support to have 1 database available instead of each server instance. Add Discord support for Error Responses.
    Free
  18. Khan

    Stack Modifier

    @Watcher Yes, it does I will take a look at this on my test server here in about an hour when I get back & see if I can experience the same bug. I will build a farm and try seeing if corn / pumpkins stack with home grown ones to river-side ones.
  19. Khan

    Stack Modifier

    The reason comments get hidden is usually because I want you to make support tickets and respond to them instead of creating a bunch of spam on the discussion thread. Everyone has completely different stack bugs it would seem, so a fix for one owner is not the same for another. I like to keep this area open for stuff like suggestions, features or general discussion. I don't like to see comments with just error codes posted, doesn't help anything without any context and I don't want people thinking its okie to use older versions because they'll never get their servers fixed in the long run. I'm sorry if doing so made that confusing.
  20. Khan

    Stack Modifier

    @Watcher If you could msg me on discord @ khan8615 Or like respond to your support tickets then we can get the stack issues sorted out. You made support tickets and never responded to them, no matter how many times I did ( I responded 4 times on your last post ). But you have to speak to me or like nothing is gonna get fixed for you. Also, its not up to us to have 3rd party plugin support, majority of the issues are coming from codefling failing to review new plugins for improper code handling of stuff such as 'item creation' and ( 'item giving' not respecting the server stack sizes. ) They get paid to do that I don't yet I am constantly having to hunt down these plugins fix / report the issue to owners/devs. All because they don't stack for you. I do my best to reach out to problem plugin devs to let them know how to fix there works and work with them. But I have no control over if they do the fixes in their works or not. So in the end I am not to blame for anything, I've been doing my best to try and help you watcher but you don't even respond to your own support tickets so you make it impossible.
  21. Khan

    Stack Modifier

    Both RoadBradley & HeliSignals have failed display name checks. Or intentionally set them & as a result they won't stack with actual vanilla loot items from shops / other loot containers.
  22. Khan

    Stack Modifier

    @Bears My latest update has resolved any issues with furnaces & oil refineries not working with my Industrial Conveyor Patch. If you have any problems now it will be from a 3rd party plugin, pls let me know if it works alright for you now in 2.5.2 Pls verify your stack sizes set for resource items aren't set at 8 as well. Also I added a config toggle to disable the Industrial Conveyor Patch so if you do have a problem with it please disabled it inside the config save the config and reload the plugin & it will remove the Industrial Conveyor Patchs.
  23. Khan

    Stack Modifier

    @Bears that dev patched it recently are you on the latest update for Extended Industrial ?? Should work..

About Us

Codefling is the largest marketplace for plugins, maps, tools, and more, making it easy for customers to discover new content and for creators to monetize their work.

Downloads
2.4m
Total downloads
Customers
10.9k
Customers served
Files Sold
156.6k
Marketplace sales
Payments
3.4m
Processed total
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.