AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Plugins (https://forums.alliedmods.net/forumdisplay.php?f=108)
-   -   [CS:GO] Workshop Map Loader (v0.13.0, 2014-06-27) (https://forums.alliedmods.net/showthread.php?t=232878)

Nefarius 01-06-2014 06:37

[CS:GO] Workshop Map Loader (v0.13.0, 2014-06-27)
 
9 Attachment(s)
Workshop Map Loader
Advanced Workshop Map Loader and Game Type Adjuster

Description
This plugin searches for workshop maps in your servers map directory and assists the admin in handling those. It will also ensure that the current game mode will get automatically adjusted, if requested by the admin.

The plugin was developed for CS:GO and will not work in other games.

Features

Admin menu
The Top-Level menu is dynamically built depending on your servers' workshop maps and their community tags:

http://www0.xup.in/exec/ximg.php?fid=19801421

Each category hosts the corresponding map:

http://www0.xup.in/exec/ximg.php?fid=12963802

Note, that a map may appear in multiple categories depending of it's tags.

Vote menu
It's possible to interact with the stock MapChooser plugin or the MapChooser Extended plugin.

http://www0.xup.in/exec/ximg.php?fid=35241326

Commands
  • sm_wml brings up the map list (for Admins with at least changemap-Permissions)
  • sm_wml_reload refreshes the map list (useful to be triggered by the admin after the server has downloaded new workshop maps)
  • sm_wml_vote_now requests an instant next map vote
  • sm_wml_nominate_random_maps will nominate a given amount of random maps from the database for the next vote. It's behavior is controlled by the sm_wml_nominate_* Cvars.

Snippet for your adminmenu_custom.txt:
Code:

        "ServerCommands"
        {
                "Load Workshop Map"
                {
                        "cmd"                "sm_wml"
                        "admin"                "sm_changemap"
                }
                "Refresh Workshop Map List"
                {
                        "cmd"                "sm_wml_reload"
                        "admin"                "sm_changemap"
                }
                "Start Next Workshop Map Vote"
                {
                        "cmd"                "sm_wml_vote_now"
                        "admin"                "sm_changemap"
                }
        }

Cvars
This plugin generates it's config file in csgo/cfg/sourcemod/wml.cfg after first load.
  • sm_wml_version returns current plugin version
  • sm_wml_changemode will change the game mode corresponding to the selected category <1 = Enabled/Default, 0 = Disabled>
  • sm_wml_autoreload defines if the database content should be refreshed on plugin reload. It's recommended to turn it off after the first successful load for performance reasons <1 = Enabled/Default, 0 = Disabled>
  • sm_wml_armsrace_weapon defines the weapon in Armsrace mode where voting shall pop up if the first player acquired it <awp = Default>
  • sm_wml_nominate_all_maps defines if all maps shall be allowed to get into vote nomination rather than only maps matching the current game mode (e.g. in Casual there won't be Armsrace maps nominated) <1 = Enabled, 0 = Disabled/Default>
  • sm_wml_override_mapcycle creates and sets a custom mapcycle file on each mapchange with workshop maps matching the current game mode. This will allow excellent automated interaction with stock map management plugins <1 = Enabled/Default, 0 = Disabled>

Translations
  • English
  • German
  • Russian
  • Romanian

Plans/TODOs
Suggestions welcome!
  • More translations
  • Add map blacklist to exclude "broken" map IDs

Changelog
Spoiler


Upgrading
If you are upgrading from a version pre-0.3.x please process the following steps:
  • Remove directory sourcemod/data/sm_wml
  • Empty directory sourcemod/data/wml
  • Remove file cfg/sourcemod/sm_wml.cfg
If you have at least version 0.5.0 installed you can auto-update this plugin with the Updater plugin.

Optional Dependencies
  • If you haven't already, take a peek at the Updater so the plugin will be updated automatically. (recommended)
  • I recommend using it with MapChooser Extended if you like to utilize advanced voting.
  • You also might have a look at my Server Hibernate Fix plugin to avoid locking up your server on hibernation.

Installation/Requirements
  1. You should have at least SourceMod v1.5.3
  2. Your server must be running at least one of the following extensions:
  3. Write-Permissions to sourcemod/data directory.
  4. Write-Permissions to sourcemod/data/sqlite directory.
  5. Download latest archive from Github using the download link below.
  6. Extract the contents of WorkshopMapLoader-master into your servers csgo/addons/sourcemod directory.
  7. Restart your server or load the plugin by hand.
  8. Adjust the configuration file to your needs or just go with the defaults.
  9. Leave feedback! :)
Download latest ZIP archive with all necessary files
...or head over to the project site for more information

Important: this plugin can't be compiled on the Forum, please use the provided download link to get the ready-to-use plugin or source code to compile by yourself.

Demonstration

A small unspectacular demo video showing WML doing it's job:

TnTSCS 01-06-2014 10:36

Re: [CS:GO] Workshop Map Loader (v0.0.1)
 
Outstanding... was such a PITA to manually update the map files when we changed up our collection. This is going on my CS:GO servers STAT. Thank you!

...:: TnT Edit ::...

If only Valve offered some sort of xml page that had info on the collection (map names, update date, file size, mapId, etc). Then we could grab the list from that site with a different command so the list is populated with only maps from the collectionId

Nefarius 01-06-2014 11:03

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Thank you kindly, I already shipped the first update :) It fixes the "Unknown command: sm_wml_reload" client error message. I also added an example snippet for the admin menu in my first post.

Well, Valve indeed offers a lot through their Web API, I'll have a look...

Prechan 01-06-2014 11:15

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Smart idea !
A first menu with map type (like ar_, de_, ze_ ...) could be a good idea to spend less time in navigation don't you think ?

TnTSCS 01-06-2014 11:16

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Cool, hopefully one exists. The updated .sp still has version 0.0.1

Quote:

Originally Posted by Prechan (Post 2082031)
... A first menu with map type (like ar_, de_, ze_ ...) could be a good idea ...

+1

...:: TnT Edit ::...
Actually, you could just look at the information from the collectionIds site (http://steamcommunity.com/sharedfile...ollection#Here), it has all information in there. Tells you how many maps are in the collection
Code:

<div class="workshopItemDescriptionTitle">
        Items                        <span class="childCount">(12)</span>
</div>

And it gives information for each one, although the file name I couldn't find, but you could get that since you have the mapId,

Nefarius 01-06-2014 11:30

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Corrected the version number, thanks.

As for the suggestion: oh no, nested menus! :D Well, grouping the maps needs an unique identifier within the map name like the de_, cs_ and so on prefixes. This would imply that the workshop maintainer uses "standardized" names; everything else would reside in a sub menu like "Other". Any suggestions for the top menu item names? Like:
  • Arms Race Maps
  • Demolition Maps
  • Casual Maps
  • etc.
Is there a finite amount of "map types"? If so, would you please submit them?

EDIT: OK I'll read into the steam API.

Lordearon 01-06-2014 12:58

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Awesome job!

Nefarius 01-06-2014 17:17

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
3 Attachment(s)
Good god, finding this undocumented API took me ages but here we have it :)

Workshop Items through Steam Web API
Actually on host_workshop_map the server builds the following query:
Code:

https://api.steampowered.com/Service/PublishedFile/GetDetails/v1/?format=vdf&publishedfileids[0]=206674556&key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&minimal_details=1
Spoiler

where publishedfileids[0] is equal to the id Attribute in the Steam Community request:
Code:

http://steamcommunity.com/sharedfiles/filedetails/?id=206674556
With a valid Web API Auth Key we can submit a request and get the following:

https://forums.alliedmods.net/attach...1&d=1389045688

So far so good, I'll let this information flow into the further improvement of the plugin. Sadly I haven't yet found out where the supported Game Mode is stored, as it would make a nice criterion for categorizing the maps.

EDIT: Sleep suxx so I'm still on it and finally got rewarded for my patience it seems :) Here comes the real deal:

https://forums.alliedmods.net/attach...1&d=1389050021

Yay! Now, good night :D

TnTSCS 01-07-2014 10:12

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Outstanding - great find and thank you for looking for this - looking forward to seeing this integrated :)

Nefarius 01-07-2014 10:24

Re: [CS:GO] Workshop Map Loader (v0.0.2)
 
Well well well... It seems I got stuck at a pretty silly step: how does SourceMod networking work? I tried several extensions like Steamtools which refused to load complaining it couldn't find libvstdlib_srv.so plus the author doesn't support CS:S/GO. Then there is the cURL implementation, which complains I didn't pass a valid URL but couldn't find any obvious errors of mine. The provided example self test fails too. The Sockets extension has a bad reputation and would need to re-invent an HTTP client from zero. I'm running
Code:

SourceMod Version Information:
    SourceMod Version: 1.5.2
    SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.5.2)
    SourcePawn API: v1 = 4, v2 = 4
    Compiled on: Oct 29 2013 17:24:22
    Build ID: 3946:238c41726d73
    http://www.sourcemod.net/

and
Code:

Metamod:Source version 1.10.0
Build ID: 860:a58a1912f602
Loaded As: Valve Server Plugin
Compiled on: Aug 25 2013
Plugin interface version: 15:14
SourceHook version: 5:5
http://www.metamodsource.net/

Any Ideas?


All times are GMT -4. The time now is 01:27.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.