[Source Engine] Создание загрузочной папки

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Всем привет.
В данной статье вы узнаете:
  1. Знакомство с файлом gameinfo.txt.
  2. Создание загрузочной папки с пользовательским (нестандартным) контентом (альтернатива папки custom на Counter-Strike: Source - Orange Box)
Введение:
В игре Counter-Strike: Source - Orange Box для выделенных серверов существует достаточно удобная система загрузки пользовательского контента игрокам. Суть его заключается в том, что используется в корне cstrike (папка custom), которая позволяет удобно загружать игрокам файлы.
Все что требуется от администратора, это создать в ней (папке custom), папку с любым названием, и уже в ней загружать все необходимые файлы, которые администратор хочет передать игрокам (конечно с сохранением иерархии файлов).
И этот способ имеет большое количество плюсов:
  1. Отделение пользовательского контента от стандартного;
  2. Более структурирования иерархия файлов на игровом сервере;
  3. Удобочитаемость и нахождение того или иного файла.
И конечно встаёт вопрос для администраторов игровых серверов, которым данный способ загрузки пригляделся, :"а почему бы мне не использовать такое ? Ведь это как никак всё таки удобно и достаточно практично".

В данной теме я объясню, как использовать такой приём на любой игре, которая использует движок Source (версия в данном случае абсолютно не важна).

Знакомство с файлом gameinfo.txt
Итак, первое с чего мы начнём, так это со знакомства с данным файлом. Его расположение находится в корне папки вашего мода/игры, то есть:
  • Для игры Counter-Strike: Source, папка будет cstrike/
  • Для игры Team Fortress 2, папка будет tf2/
  • и так далее
Открыв данный файл любым текстовым редактором, мы увидим в нём следующее (на примере взята игра Counter-Strike: Global Offensife)

C-подобный:
"GameInfo"
{
    game    "Counter-Strike: Global Offensive"
    title    "COUNTER-STRIKE'"
    title2    "GO"
    type multiplayer_only
    nomodels 1
    nohimodel 1
    nocrosshair 0
    bots 1
    hidden_maps
    {
        "test_speakers"        1
        "test_hardware"        1
    }
    nodegraph 0
    SupportsXbox360 1
    SupportsDX8    0
    GameData    "csgo.fgd"


    FileSystem
    {
        SteamAppId                730        // This will mount all the GCFs we need (240=CS:S, 220=HL2).
        ToolsAppId                211        // Tools will load this (ie: source SDK caches) to get things like materials\debug, materials\editor, etc.
     
        //
        // The code that loads this file automatically does a few things here:
        //
        // 1. For each "Game" search path, it adds a "GameBin" path, in <dir>\bin
        // 2. For each "Game" search path, it adds another "Game" path in front of it with _<langage> at the end.
        //    For example: c:\hl2\cstrike on a french machine would get a c:\hl2\cstrike_french path added to it.
        // 3. For the first "Game" search path, it adds a search path called "MOD".
        // 4. For the first "Game" search path, it adds a search path called "DEFAULT_WRITE_PATH".
        //

        //
        // Search paths are relative to the base directory, which is where hl2.exe is found.
        //
        // |gameinfo_path| points at the directory where gameinfo.txt is.
        // We always want to mount that directory relative to gameinfo.txt, so
        // people can mount stuff in c:\mymod, and the main game resources are in
        // someplace like c:\program files\valve\steam\steamapps\<username>\half-life 2.
        //
        SearchPaths
        {
            Game                |gameinfo_path|.
            Game                csgo
        }
    }
}

В данной статье я не буду рассматривать, что означает та или иная строка в данном файле, а поясню только то, что необходимо из данного файла для Dedicated Server (Выделенного сервера).
Ниже написано содержимое файла gameinfo.txt, которое необходимо для сервера (то есть все остальное можно смело удалить из него):
C-подобный:
GameInfo
{
    FileSystem
    {
        SearchPaths
        {
            Game |gameinfo_path|.
            Game csgo
        }
    }
}

Создание загрузочной папки с пользовательским контентом
После того, как мы "облегчили" файл gameinfo.txt, то можно приступать к необходимым действиям, то есть создавать загрузочную папку.

Внимание: способ создания загрузочной папки практически удентичен тому, что предоставлено в Counter-Strike: Source - Orange Box.

Для начала нам необходимо создать эту загрузочную папку, для этого перейдите в корень сервера (где расположена папка bin/hl2/...). И теперь следуйте следующему алгоритму:
  1. Создайте папку (в моём случае я создам папку с именем custom), и откройте её.
  2. Соблюдая иерархию, создайте папки, в которых будут использоваться пользовательские файлы (в моём случае я буду создавать следующие папки):
  3. Загрузите необходимые файлы в созданные директории
Теперь возвращаемся к работе с gameinfo.txt
Чтобы заставить движок Source читать наши файлы добавьте после строчки:
Game |gameinfo_path|.

Строчку в следующем формате:
C-подобный:
Game <название папки с пользовательским контентом>
Кавычки конечно же не нужны.

Осталось перезагрузить сервер и проверить работу нашей папки с пользовательским контентом.

Внимание: Чтобы проверить работу на стороне сервера введите в серверную консоль консольную команду path.

Вывод данной консольной команды должен показать следующий результат:
C-подобный:
"/путь до корня сервера/название папки с пользовательским контентом/" "GAMEBIN"
"/путь до корня сервера/название папки с пользовательским контентом/" "GAME"

  • Если данные строчки находятся в выводе команды path, то вы все правильно сделали и движок подключил папку;
  • Если данных строк вы не наблюдаете в выводе команды path, то проверьте содержимое файла gameinfo.txt на ошибки или или проверьте правильность названия пользовательской папки.
P.S. За основу статьи взяты игры
  • Counter-Strike: Sourc (Source Engine 2004)
  • Counter-Strike: Source - Orange Box
  • Counter-Strike: Global Offensive
Внимание: если у вас есть желание поддержать материально вы можете накинуть лишнюю копеечку за мои труды :)
  • WebMoney: R148271209216
  • Yandex Деньги: 410013796650046 (также привязан по мобильному номеру телефона)
  • Qiwi Кошелёк/Мобильный Телефон: +79052499839
Мои статьи:
Всем спасибо за внимание.
 
Последнее редактирование:

Webman

Nevermind
Сообщения
803
Реакции
330
Папка custom будет располагаться директорией выше значит, чем в OrangeBox?
Т.е. в OrangeBox так: server/cstrike/custom/
В других играх: server/custom/ ?
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Да, все верно, название папки не имеет значение.
 

nerfy11

Участник
Сообщения
9
Реакции
0
а как запустить кс го через другую папку, способ должен быть примерно таким же, только вот у меня не получается это провернуть, цель запустить кс го через отдельную папку, в которой лежат другой конфиг, gameinfo.txt и другие файлики, можете помочь?
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
@nerfy11, никак. Если папку поменять с csgo на zhopago, то клиента будет кикать с причиной различия названий папок.
 

nerfy11

Участник
Сообщения
9
Реакции
0
@nerfy11, никак. Если папку поменять с csgo на zhopago, то клиента будет кикать с причиной различия названий папок.
ну не знаю, есть специальные панели, которые делают, что-то подобное (скрин ниже), и запускают игру, через другие папки, на скрине можно увидеть csgo_1231241, цифры это id32 аккаунта
Сообщения автоматически склеены:

@nerfy11, никак. Если папку поменять с csgo на zhopago, то клиента будет кикать с причиной различия названий папок.
@RusJJ, тут суть не о замене уже имеющейся папки csgo, а о создании других, и подмене данных конфига
 

Вложения

  • 1620740947688.png
    1620740947688.png
    4.1 КБ · Просмотры: 31

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
@nerfy11, ну вообще сделать это можно с помощью аргумента -game для запуска srcds.
На Windows, например, будет так: srcds.exe -game csgo_12345 **все аргументы**
В таком случае ДОЛЖНО читать все файлы относительно папки csgo_12345. На хостингах, может быть, всё сделано Симлинками (на Windows - Junction Point, не вспомню как называется), но это мои догадки. По идее работать не должно, так как клиенту пересылается это всё и при несоответствии отключается. Но попробовать можно, конечно же.
 

nerfy11

Участник
Сообщения
9
Реакции
0
@RusJJ, мне кажется мы уже близки к разгадке, способ с параметром -game csgo_12345678 частично работает, он действительно запускает конфиг из той папки, что нужно, но почему-то после не подцепляет основной конфиг с игрой и ее настройками, получается такая картина(скрин ниже), по логике в папке gameinfo.txt указан дальнейший путь на основную папку csgo, но почему-то он не хочет цеплять основной конфиг игры и выдает такую ошибку
Сообщения автоматически склеены:

@nerfy11, ну вообще сделать это можно с помощью аргумента -game для запуска srcds.
На Windows, например, будет так: srcds.exe -game csgo_12345 **все аргументы**
В таком случае ДОЛЖНО читать все файлы относительно папки csgo_12345. На хостингах, может быть, всё сделано Симлинками (на Windows - Junction Point, не вспомню как называется), но это мои догадки. По идее работать не должно, так как клиенту пересылается это всё и при несоответствии отключается. Но попробовать можно, конечно же.
и по поводу хостингов, суть в том, что мне это нужно не для хостинга, а для запуска кс го на своем пк, просто у меня очень много аккаунтов, и мне нужно, что бы каждый аккаунт запускался по определенному конфигу и с определенными параметрами, которые я выставляю в папочку csgo_12345678 и уже он перед запуском игры их подхватывал, а после запускал все остальное по дефолту
Сообщения автоматически склеены:

@RusJJ, что можно еще придумать, что бы после запуска он сначала цеплял csgo_12345678, а уже после основной кфг кс го, и запускал игру нормально?
 

Вложения

  • 1620750055563.png
    1620750055563.png
    4.2 КБ · Просмотры: 28
Последнее редактирование:

БлагоЯр

Участник
Сообщения
898
Реакции
86
Папка custom будет располагаться директорией выше значит, чем в OrangeBox?
Т.е. в OrangeBox так: server/cstrike/custom/
В других играх: server/custom/ ?
У меня вот так работает
Game+Mod csgo/custom
просто custom не ловит.
Но при этом лайфхак, как в CSS уже не работает, по типу, что в кастом произвольное название и там уже структура. Например в CSS работало так
custom/MyCFG/cfg/config.cfg
То в CSGO уже только так
custom/cfg/config.cfg

ПС. Вальв пишет, но это не работает в CSGO

// Mount the custom folder's sub-folders and VPKs. Game |GameInfo_Path|custom/*
 
Последнее редактирование:
Сверху Снизу