Page 1 of 21 12311 ... LastLast
Results 1 to 15 of 311

Thread: Bad Company Manager (ApiMod for Servers)

  1. #1
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1

    Bad Company Manager (ApiMod for Servers)

    Source Code

    Web Interface Project

    For the precompiled binary:
    Bad Company Manager - Version 2.2.0 for 7d2d A16.4 b8

    Version 2.2.3 for 7d2d A16.4 b8

    All commands are prefixed with bc- by default.

    In the Mods/BCM/DefaultConfig folder is a Commands.xml file that allows you to change the command text, and in the sub folders are the help and description text files for each command that is displayed in game.

    Any command that doesn't have a text file will display the class name of the command for the description, and an empty help file by default. I have plans for an auto help generator based on command aliases and allowable params, but that's down the list at this stage.

    Current Commands
    (See second post for an examples of the output)

    bc-help - BCHelp, this command will return the full list of commands added by BCM, and some details on common /options

    Output from the bc-help command:
    Code:
    ***Bad Company Commands***
    bc-help => (BCM) BCHelp - Provides a list of all active BCM commands, and info about /options
    bc-settings, set => (BCM) Settings - Command to set and clear values from the settings persistent cache
    bc-trash => (BCM) Mem Trash - Runs Garbage Collection to try and free up Memory on the server
    bc-api => (BCM) BroadcastAPI - Command for server managers to subscribe to data feeds from the server
    bc-co => (BCM) Chunk Observer - Command for controlling dynamic chunk observers and loading chunk areas
    bc-task => (BCM) BCTask
    bc-test => (BCM) Test - Catchall command for testing new features
    bc-lp => (BCM) Players - Provides extensive information about all players
    bc-pdf, bc-pfinfo => (BCM) Player Files - Player data file information, such as steamid, last online, last write.
    bc-loc, loc, pos => (BCM) Location - Gets your current position and stores it in cache for use in other commands
    bc-admins => (BCM) Admins - Provides information on admins, bans, whitelist, and other admin details
    bc-gs => (BCM) Players Gamestages - Alias for BCPlayers
    bc-id, bc-lpids => (BCM) Players Ids - Alias for BCPlayers
    bc-pos, bc-lppos => (BCM) Players Positions - Alias for BCPlayers
    bc-le => (BCM) Entities - Provides information about all entities in the game
    bc-chunks, bc-cc => (BCM) Active Chunks - Information about the chunks loaded by the server
    bc-time => (BCM) Time - Provides server time, ticks, fps, clients, entities
    bc-getspawn => (BCM) Get Spawn - Gets a valid spawn point at the given x,z. Also loads the chunk.
    bc-assets => (BCM) Assets - Provides info on game resources and assets
    bc-go => (BCM) Game Objects - Provides detailed information about the game objects such as blocks, items and recipes
    bc-lhcd, bc-hcd => (BCM) Hub Cell Data - A list of all prefabs in a given Hub Cell
    bc-version => (BCM) Versions - Information about the mods installed on the server
    bc-geb, bc-gebuff => (BCM) Give Buffs to Entities - Buffs the entity or type of entity with the given buff
    bc-gpb, bc-gpbuff => (BCM) Give Buffs to Players - Buffs the remote player with the given buff
    bc-gpq, bc-gpquest => (BCM) Give Quests To Players - Grants the remote player the given quest
    bc-setskill, setskill => (BCM) Set Skills On Players - Allows you to directly set skill levels on a player while they are online
    bc-reb, bc-debuff, bc-rembuff => (BCM) Remove Buffs From Entities - Removes a buff from an entity or type of entity
    bc-rpb, bc-rpbuff => (BCM) Remove Buffs From Players - Removes a buff from an online player
    bc-rpq, bc-rpquest => (BCM) Remove Quests From Players - Removes an in progress quest from the player
    bc-remove, remove => (BCM) Remove - Removes the selected entities from the game by unloading them
    bc-spawn, spawn => (BCM) Spawn - Spawns entities with definable targets and groups/classes and horde counts
    bc-showspawn, manager => (BCM) Horde Spawners - Gets information about the spawn manager system such as active spawns and spawncounts
    bc-tele, move => (BCM) Teleport - Move target entity etc to a new location
    bc-sleeper, sleeper => (BCM) Sleeper - Display and manipulate the sleeper volumes in prefabs
    bc-wblocks, block => (BCM) World Blocks - Insert, report on, and swap blocks within the area
    bc-import, import => (BCM) Import - Loads a prefab from disk into the world, and activates sleeper spawns
    bc-export, export => (BCM) Export - Creates a tts prefab file of the defined location
    bc-visitregion, visit => (BCM) Visit Region - Visits the region given and reveals the map
    bc-te, tile => (BCM) Tile Entity - Perform actions on the tile entities (loot containers and doors) in the area
    bc-reset => (BCM) BCReset
    ***Options***
    /log => Send the command output to the log file
    /chat => Send the command output to chat
    /console => Override command default settings for /log or /chat
    /color=FFFFFF => Specify a color for text sent to chat
    /details => For commands that support it, will give more details on items returned
    /nodetails => Override command default settings for /details
    /online => For ListPlayers commands it will display only online players (default shows all players)
    /offline => For ListPlayers commands it will display only offline players
    /all => Override command default settings for /online or /offline
    ***Output Format Options***
    /1l => Returns json output on a single line (for server managers)
    /pp => Returns json output with print pretty enabled (default: on)
    /vectors => Returns all BCM Vectors as x y z objects rather than single string
    /csvpos =>  Converts all Vector3 co-ords to csv seperated (default is space seperated)
    /worldpos => Converts all Vector3 co-ords to Map Co-ords
    /strpos => Override command default settings for /csvpos or /worldpos
    Plans
    * Add localisation configuraton commands
    * Chat hooks to allow for running all commands from chat instead of console
    * Extensive plans for entity spawning systems and event management
    * (partially implemented) A fully featured web interface that allows for viewing all of this data live, and eventually the ability to manipulate many parts of the game from a remote web browser (no telnet required).
    * Full data tracking of inventory, position, quests, buffs, crafting, and other stats over time.

    Credits
    Alloc, danilocoppi, dmustanger, and djkrose provided great inspiration, thanks to them for their efforts!
    Last edited by StompyNZ; 5 Days Ago at 11:51 PM. Reason: 16.4 b8

  2. #2
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Output Examples

    An example of the ListPlayers command:

    https://gist.github.com/StompyNZ/2ba...55da91d1adaf0d
    Last edited by StompyNZ; 09-16-2017 at 11:25 PM.

  3. #3
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Known Issues

    Buffs that were on the player when they join a server do not get listed in the live player data. This is an issue with the TFP code that I havn't been able to find a workaround for. (Hence the list of live buffs, and saved buffs)

    Some stats, such as players bags only update when there is a loot change, or every 30 seconds. When you loot an item the player data is saved, but if you move an item from bag to worn (armor etc) then the equiped items updates immediately, but the bag list has to wait until the player is saved.

    Some stats are not stored in the .ttp file, and need to be pushed to the persistant container so that they can be retrieved when a player is offline

    Command playername and entityid lookups only work when that player is online. SteamId will work at all times.
    Last edited by StompyNZ; 09-16-2017 at 11:26 PM.

  4. #4
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Going to be renaming this to Bad Company Manager as it is quickly expanding out beyond just a few console commands.

    I have created a command framework that I'm fairly happy with. It allows you to specify the console commands details via a text file without recompiling the dll, and both the description and help files are in text files, with a subfolder for different languages so it has localisation for the command help as an option. When its done you will be able to specify the default language for the server, but individual players will be able to specify their preference if they want.

    I'll be uploading the source in the next few days once I get some more of the framework nailed down, then I can really start working on the new commands.

  5. #5
    Guppycurian Forum Whore Guppycur's Avatar
    Join Date
    Apr 2014
    Location
    Houston-ish, Texas
    Posts
    16,166
    Rep Power
    1
    Awesome blossom.

  6. #6
    Tracker BeatKidz's Avatar
    Join Date
    Oct 2015
    Location
    East Coast USA
    Posts
    237
    Rep Power
    1
    Great work. I wrote a command that has been EXTREMLY helpful for server admin work. Its just a simple "Who owns this" command for secure doors and chests So i can easily figure out who's chest i'm in. I took a look at coppies unlockall command to figure out the basics.

  7. #7
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Quote Originally Posted by BeatKidz View Post
    Great work. I wrote a command that has been EXTREMLY helpful for server admin work. Its just a simple "Who owns this" command for secure doors and chests So i can easily figure out who's chest i'm in. I took a look at coppies unlockall command to figure out the basics.
    Yeah between Allocs, Coppis, and Server tools there are some nice examples of how to do a lot of things. Other bits took a fair bit of trail and error to see what worked.

    Finding the right place for different stats etc was a mission, bit I have most of it sorted now. I'm in the process of breaking it down into seperate model files for each bit so its modular and I can grab the bits I need for each command without having to duplicate code.

    The first useful command I'll be looking at after the purely infomational commands is a quest updated tracker (for Guppy). It will provide a list of quest changes over time, and can pop a log/console message out when changes are spotted.

    I'm thinking of having a heartbeat ticker that runs in the background and triggers the checks periodically for events that are tied to it.

  8. #8
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Updated with new version and mod rename.

  9. #9
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Mostly finished a new component (uploaded to source) that adds a timer that allows actions to be performed at set intervals.

    The system has a Heartbeat object that has a pulse and configurable beats per minute (new System.xml file in config)
    The system also has Synapses and Neurons. The Synapse defines 1 or more Neurons that will be fired at set intervals. Currently, the synapses can be adjusted in the config for enabled/disabled, and how many beats between each firing. I will be adjusting the code a bit so that which neurons are attached to a synapse is configurable as well.

    The default heartbeat is 60 bpm, and the first synapse I'm working on is the quest monitor for GuppyCur that pops a message into the log when a players quest list changes.

    The Neurons will require some c# coding, however, some of them will be able to make use of config files, such as the spawning ones.

    This is the basis of the system I will be using to create the dynamic spawning system that allows the default spawning system to be entirely replaced.

  10. #10
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Mostly have the quest monitor working, but something isnt quite right when used on a fresh presistent data container, so will need to keep working on it.

    For a break I have made a command to return a list of all prefabs from the hub cell data in a single cell, or all cells, or filters by text. The version that searches the full list is very HDD intensive so takes about 15 seconds to run on my local machine, but since the data is static i will add a saved file that contains the data to reduce the subsequent lookups.

    https://docs.google.com/spreadsheets...t#gid=13099823 is a google doc with some examples of the data it gives you.

    ListHubCellData.cs is the code for anyone that is interested. I will make a new release with a compiled dll in a day or two once I get my questmonitor command working correctly.

  11. #11
    Guppycurian Forum Whore Guppycur's Avatar
    Join Date
    Apr 2014
    Location
    Houston-ish, Texas
    Posts
    16,166
    Rep Power
    1
    What's up with those y coordinates. That's odd.

  12. #12
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Quote Originally Posted by Guppycur View Post
    What's up with those y coordinates. That's odd.
    I'm clamping the height to make a flat world for prefab building

    <module name="clampOutput" type="ClampOutput">
    <property name="sourceModule" value="scaleBiasOutput"/>
    <property name="bounds" value="1,1"/>
    <!-- <property name="bounds" value="-28,190"/>-->
    </module>

    If you look at the vanilla tab is has a lot more variation in the y co-ord

  13. #13
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    Lot of changes uploaded to source. I'll tidy up a few things and Finish the List Game Objects commands and add a param to filter results and do the 1.1.0 release with a dll tomorrow.

    Managed get a memory efficient cache working for the hub cell data results, so only the first use after a server reboot will be slow, after that its less than 1 second even ruturning the entire 6000+ prefab list.

    I've unified most of the commands and added /options for affecting the output such as /log /chat /csv /nl /color /worldpos /csvpos and a few command specific ones (like /current for the hub cell data command)

    doing bc-lhcd /nl /chat isnt advised

  14. #14
    Guppycurian Forum Whore Guppycur's Avatar
    Join Date
    Apr 2014
    Location
    Houston-ish, Texas
    Posts
    16,166
    Rep Power
    1
    Geesh...

  15. #15
    Colony Founder StompyNZ's Avatar
    Join Date
    Apr 2015
    Posts
    3,589
    Rep Power
    1
    I think it might even be possible to add dynamic changes to various game objects then call the save method and save the xml back out to the server xml's. This has some real potential.

    I'm going to be playing with randomly generated archetypes and entities today to see whats possible there too.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •