Свой сервер

Сервер KF2: букмарклет для ID карт из Мастерской

Чтобы вручную добавить на выделенный сервер Killing Floor 2 много карт из Мастерской, нужно копировать каждый ID и набирать названия карт. Этот инструмент сообщества, JavaScript-букмарклет, составляет такие строки сам с любой страницы Мастерской Steam, где есть список предметов, и вам остаётся вставить их в конфиг сервера.

Как пользоваться

  1. Скопируйте минифицированный букмарклет ниже и сохраните его как закладку в браузере (адрес закладки - сам код).
  2. Откройте любую страницу Мастерской Steam со списком предметов. В оригинале в пример дана страница ваших работ с параметром numperpage, например 30.
  3. Нажмите на закладку.
  4. Появится вопрос, выводить ли результат в консоль разработчика. Если не уверены, ответьте «Отмена»: тогда список заменит текущую страницу.
  5. Первый список скопируйте в PCServer-KFEngine.ini.
  6. Второй список скопируйте в 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 со списком предметов: страница коллекции или список ваших работ.