Сервер KF2: букмарклет для ID карт из Мастерской
Чтобы вручную добавить на выделенный сервер Killing Floor 2 много карт из Мастерской, нужно копировать каждый ID и набирать названия карт. Этот инструмент сообщества, JavaScript-букмарклет, составляет такие строки сам с любой страницы Мастерской Steam, где есть список предметов, и вам остаётся вставить их в конфиг сервера.
Как пользоваться
- Скопируйте минифицированный букмарклет ниже и сохраните его как закладку в браузере (адрес закладки - сам код).
- Откройте любую страницу Мастерской Steam со списком предметов. В оригинале в пример дана страница ваших работ с параметром numperpage, например 30.
- Нажмите на закладку.
- Появится вопрос, выводить ли результат в консоль разработчика. Если не уверены, ответьте «Отмена»: тогда список заменит текущую страницу.
- Первый список скопируйте в
PCServer-KFEngine.ini. - Второй список скопируйте в
PCServer-KFGame.ini.
О структуре конфига и подписке на предметы Мастерской на сервере: выделенный сервер с Мастерской и SteamCMD.
Что выводится
Для каждой ссылки на предмет Мастерской с названием скрипт выводит:
- Секцию для
PCServer-KFEngine.ini: строки видаServerSubscribedWorkshopItems=<id>с названием предмета в комментарии. - Секцию для
PCServer-KFGame.ini: блок на каждую карту вида[<название> KFMapSummary]сMapName=<название>.
Букмарклет (минифицированный)
javascript:var gameString="ServerSubscribedWorkshopItems=",URIS=[];jQuery("a").each(function(){var URI=jQuery(this).attr("href"),title=jQuery(this).find(".workshopItemTitle").text();-1!=URI.search(/filedetails\/\?id=[0-9]+/i)&&""!=title&&URIS.push({URI:gameString+URI.substr(URI.search(/\d{4}\d+/i)),TITLE:title})}),window.confirm("Output in developer console? (If not, list will replace current page!)")?(console.log("// Start of section going into PCServer-KFEngine.ini:\n\n"),URIS.forEach(function(item,index){console.log(item.URI+" // "+item.TITLE)}),console.log("// End of PCServer-KFEngine.ini section!\n\n"),console.log("// Start of section going into PCServer-KFGame.ini:\n\n"),URIS.forEach(function(item,index){console.log("["+item.TITLE+" KFMapSummary]"),console.log("MapName="+item.TITLE+"\n")}),console.log("\n\n// End of PCServer-KFEngine.ini section!\n\n")):(document.write("// Start of section going into PCServer-KFEngine.ini:<br/><br/>"),URIS.forEach(function(item,index){document.write(item.URI+" // "+item.TITLE+"<br/>")}),document.write("<br/><br/>// End of PCServer-KFEngine.ini section!<br/><br/>"),document.write("// Start of section going into PCServer-KFGame.ini:<br/><br/>"),URIS.forEach(function(item,index){document.write("["+item.TITLE+" KFMapSummary]<br/>"),document.write("MapName="+item.TITLE+"<br/><br/>")}),document.write("// End of PCServer-KFEngine.ini section!<br/><br/>"));
Читаемая версия
var gameString = 'ServerSubscribedWorkshopItems=';
var URIS = [];
jQuery('a').each(function () {
var URI = jQuery(this).attr("href");
var title = jQuery(this).find('.workshopItemTitle').text();
if (URI.search(/filedetails\/\?id=[0-9]+/i) != -1 && title != "") {
URIS.push({ URI: gameString + URI.substr(URI.search(/\d{4}\d+/i)), TITLE: title });
}
});
if (window.confirm("Output in developer console? (If not, list will replace current page!)")) {
console.log('// Start of section going into PCServer-KFEngine.ini:\n\n');
URIS.forEach(function (item) { console.log(item.URI + " // " + item.TITLE); });
console.log('// End of PCServer-KFEngine.ini section!\n\n');
console.log('// Start of section going into PCServer-KFGame.ini:\n\n');
URIS.forEach(function (item) {
console.log('[' + item.TITLE + " KFMapSummary]");
console.log('MapName=' + item.TITLE + '\n');
});
} else {
// тот же вывод, но на страницу через document.write(...)
}
Советы
- Букмарклет использует jQuery, который уже загружен на страницах Steam.
- Проверьте выведенные названия карт: они взяты из заголовков Мастерской и могут отличаться от настоящих имён файлов карт. Если сервер не узнаёт карту, поправьте имя вручную.
- Запись KFMapSummary нужна только картам, которые должны быть в ротации, так что держите список аккуратным.
Вопросы и ответы
- Куда вставлять полученные строки?
- Первый список (ServerSubscribedWorkshopItems) идёт в PCServer-KFEngine.ini, второй (секции KFMapSummary с MapName) - в PCServer-KFGame.ini.
- На каких страницах работает букмарклет?
- На любой странице Мастерской Steam со списком предметов: страница коллекции или список ваших работ.