Skip to content

Commit

Permalink
feat(docs): add documentation for the respawn system
Browse files Browse the repository at this point in the history
  • Loading branch information
SergeyShorokhov committed Jan 23, 2024
1 parent 83b725a commit 8b1e9cd
Show file tree
Hide file tree
Showing 9 changed files with 304 additions and 0 deletions.
Binary file added docs/assets/spawns-editor-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/spawns-editor-views.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions docs/en/Customizing/Spawn-system/convertation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
### Description of the Process

1) When entering `redm_convert_spawns`, the system searches for the folder `/amxmodx/configs/csdm/spawns`.

2) It looks for files with the mask `<map_name>.spawns.cfg` and opens each file for conversion.

3) By opening each file, the system reads the spawn configuration line by line, following the format described above in the old system. Each line should have **10 parameters**, and invalid lines will be skipped.

4) While reading each line, an object is formed with the converted parameters corresponding to the new system.

5) After reading all the lines, the generated array of objects is written to the file `data/redm/converted/<map_name>.spawns.json`. The map name is taken from the name of the old spawn configuration file.

Successful conversion is confirmed by an informational message in the server console:
```js
Editor_ConvertSpawns: Successfully convert `15` old spawn files.
```
???+ note
During the conversion process, errors or warnings may occur (unable to open file for reading/writing, unable to create a folder, etc.), which will be explicitly reflected in the server console and log files.

### Using the Converted Files
To use the converted respawn configurations, **it is necessary to move** all the files from `data/redm/converted/<map_name>.spawns.json` to `data/redm/<map_name>.spawns.json`.

The converted respawn configurations placed in the directory described above can then be edited using the built-in ReDeathmatch system using the command `redm_edit_spawns`.
32 changes: 32 additions & 0 deletions docs/en/Customizing/Spawn-system/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Editing Respawn Configurations with ReDeathmatch

ReDeathmatch has a built-in editor for editing respawn configurations. This editor can be accessed by using a command with the necessary permissions (by default, the `f` flag) on behalf of the player.

When the editing mode is activated, the spawn point configuration file is loaded into the system's memory, and all further interactions happen ONLY with the virtual object. Once the editing of the respawn points is completed, the virtual object overwrites the configuration file with the new respawn configuration.

### Enabling Editing

To call the respawn editor menu, use the following command:
```js
redm_edit_spawns
```

Upon successful execution of the command, the following will happen:

1) The admin menu will be displayed to the player:

![Menu example](../../../assets/spawns-editor-menu.png)

2) If any spawn points already exist in the configuration files, they will be displayed:

![Spawn points visualization](../../../assets/spawns-editor-views.png)

In case of any errors, the system will notify them in the server console or player console, as well as through an informational message in the chat.

### Disabling Editing
Disabling the respawn editing system is done with the same command used for enabling it:
```js
redm_edit_spawns
```

Disabling the spawn editor menu will hide the spawn points and overwrite the spawn configuration file.
92 changes: 92 additions & 0 deletions docs/en/Customizing/Spawn-system/systems-compare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
### Old format

Mods that inherit the old configuration system:

- CSDM by BAILOPAN
- ReCSDM by ReHLDS Team
- CSDM-ReAPI by Vaqtincha
- CSDM-ReAPI by wopox1337

Location of spawn configuration files:
```cpp
amxmodx/
└── configs/
└── csdm/
└── spawns/
└── *.spawns.cfg
```

The old respawn system has the following format:
```cpp title="de_dust.spawns.cfg"
-723 487 51 4 -35 0 0 -1 -35 0
363 457 51 5 -126 0 0 -2 -126 0
742 -341 51 3 131 0 0 -1 131 0
...
```

Description of parameters:

| origin X | origin Y | origin Z | angle X | angle Y | angle Z | team | viewAngle X | viewAngle Y | viewAngle z |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| -2198 | -538 | 179 | 8 | -34 | 0 | 0 | -3 | -34 | 0 |

Some old formats may only have the following parameters:

- Origin X, Origin Y, Origin Z
- Angle X, Angle Y, Angle Z

Drawbacks of the old format:

- Insufficient data precision;
- Inability to extend the format while maintaining backward compatibility;
- Difficulty in manually adjusting parameters due to undocumented format;
- Presence of unnecessary parameters that do not affect gameplay (Z-axis);
- Limitation on respawn points.

Compilation of old spawns:

- [AlliedMods topic](https://forums.alliedmods.net/showthread.php?t=49537)

### New format

Location of spawn configuration files:
```js
amxmodx/
└── data/
└── redm/
└── *.spawns.json
```

The configuration of ReDeathmatch respawn files is different and uses the `JSON5` data format:
```json title="de_dust2.spawns.json"
{
"spawns": [
{
"team": 0,
"group": "a",
"origin": [
-879.96875,
-1007.96875,
192.01966857910156
],
"angle": [
-1.5692138671875,
42.60498046875
],
"vAngle": [
4.7076416015625,
42.60498046875
]
},
...
]
}
```

The new format of configuration has advantages over the old system:

- Ability to extend the configuration without losing backward compatibility;
- Following the widely accepted `JSON5` standard for ease of use even outside ReDeathmatch;
- High precision float data.

The new format of configuration is necessary considering the advantages of the new format and the drawbacks of the old one. The insufficient precision of the old format prevented adding spawn points in "tight" areas, where there might be a need to place the player in a sitting position or close to other objects.
27 changes: 27 additions & 0 deletions docs/ru/Customizing/Spawn-system/convertation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

В ReDeathmatch существует команда `redm_convert_spawns`.

### Описание процесса

1) При вводе `redm_convert_spawns` система ищет папку `/amxmodx/configs/csdm/spawns`.

2) Ищет файлы по маске `<map_name>.spawns.cfg` и открывает каждый файл для конвертации.

3) Открывая каждый файл система считывает конфигурацию спавнов построчно, согласно описанному выше формату старой системы. Каждая строка должна иметь **10 параметров**, не валидные строки будут пропущены.

4) Считывая каждую строку формируется объект с конвертированными параметрами, соответствующими параметрам новой системы.

5) По итогу чтения всех строк сформированный массив объектов записывается в файл `data/redm/converted/<map_name>.spawns.json`. Имя карты берётся исходя из наименования старого файла конфигурации спавнов.

Успешную конвертацию подтверждает информационное сообщение в консоль сервера:
```js
Editor_ConvertSpawns: Succefully convert `15` old spawn files.
```
???+ note
В ходе выполнения конвертации могут возникнуть ошибки или предупреждения (невозможно открыть файл для чтения\записи, невозможно создать папку и т.д.), которые будут явно отражены в консоли сервера, а так же файлах логов.

### Использование сконвертированных файлов
Для использования конвертированных respawn-конфигураций **необходимо переместить** все файлы из `data/redm/converted/<map_name>.spawns.json`
в `data/redm/<map_name>.spawns.json`.

Сконвертированные respawn-конфигурации, помещённые в директорию, описанную выше в дальнейшем возможны для редактирования с помощью встроенной в ReDeathmatch системы с использованием команды `redm_edit_spawns`.
31 changes: 31 additions & 0 deletions docs/ru/Customizing/Spawn-system/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
ReDeathmatch имеет встроенный редактор respawn-конфигураций вызываемой командой от имени игрока с необходимыми правами (по умолчанию `f` флаг) для использования команды.

При активации редактирования файл с конфигурацией spawn-точек считывается в память системы, и дальнейшее взаимодействие происходит ТОЛЬКО с виртуальным объектом. По окончанию работы с respawn-точками виртуальный объект перезаписывает файл с новой respawn-конфигурацией.

## Включение редактирования

Команда для вызова меню редакторирования респавнов:
```js
redm_edit_spawns
```

Успешное выполнение команды:

1) Покажет игроку-администратору меню:

![Menu example](../../../assets/spawns-editor-menu.png)

2) Включит отображение точек, если таковые уже имеются в конфигурационных файлах:

![Spawn points visualisation](../../../assets/spawns-editor-views.png)


В случае возникновения ошибок система оповестит в консоли сервера или консоли игрока, а так же в чате информационным сообщением.

## Выключение редактирования
Выключение системы редактирования спавнов происходит той же командой, что и включения:
```js
redm_edit_spawns
```

Меню редактирования спавнов выключается, отключается видимость спавн-точек, а так же происходит перезапись файла конфигурации spawn-точек.
91 changes: 91 additions & 0 deletions docs/ru/Customizing/Spawn-system/systems-compare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
### Старый формат respawn-файлов

Моды, наследующие старую систему конфигураций:

- CSDM by BAILOPAN
- ReCSDM by ReHLDS Team
- CSDM-ReAPI by Vaqtincha
- CSDM-ReAPI by wopox1337

Расположение файлов конфигурации спавнов:
```cpp
amxmodx/
└── configs/
└── csdm/
└── spawns/
└── *.spawns.cfg
```

Старая система респавнов имеет следующий формат:
```cpp title="de_dust.spawns.cfg"
-723 487 51 4 -35 0 0 -1 -35 0
363 457 51 5 -126 0 0 -2 -126 0
742 -341 51 3 131 0 0 -1 131 0
...
```

Описание параметров:

| origin X | origin Y | origin Z | angle X | angle Y | angle Z | team | viewAngle X | viewAngle Y | viewAngle z |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| -2198 | -538 | 179 | 8 | -34 | 0 | 0 | -3 | -34 | 0 |

Некоторые старые форматы могут иметь только следующие параметры:

- Origin X, Origin Y, Origin Z
- Angle X, Angle Y, Angle Z

Недостатки старого формата:

- Недостаточная точность данных;
- Невозможность расширять формат с сохранением обратной совместимости;
- Сложность ручной подстройки параметров из за недокументируемого формата;
- Наличие излишних параметров, которые не влияют на геймплей (Z-оси);
- Лимит respawn-точек.

Сборка старых спавнов:

- [AlliedMods topic](https://forums.alliedmods.net/showthread.php?t=49537)

### Новый формат respawn-файлов
Расположение файлов конфигурации спавнов:
```js
amxmodx/
└── data/
└── redm/
└── *.spawns.json
```

Конфигурация respawn-файлов ReDeathmatch отличается, имеет `JSON5` формат данных:
```json title="de_dust2.spawns.json"
{
"spawns": [
{
"team": 0,
"group": "a",
"origin": [
-879.96875,
-1007.96875,
192.01966857910156
],
"angle": [
-1.5692138671875,
42.60498046875
],
"vAngle": [
4.7076416015625,
42.60498046875
]
},
...
]
}
```

Новый формат конфигурации имеет преимущества перед старой системой:

- Возможность расширения конфигурации без потери обратной совместимости;
- Следование общепринятому стандарту `JSON5` для удобства работы даже вне ReDeathmatch;
- Высокая точность float-данных.

Новый формат конфигурации является необходимостью, учитывая перечисленные достоинства нового формата и недостатки старого. Недостаточная точность старого форматат не позволяла добавлять спавн-точки в "тесных" местах, допустим где имеется необходимость расположить игрока изначально в сидячем положении или вблизи к другим объектам.
8 changes: 8 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ nav:
- 'en/Customizing/commands.md'
- 'en/Customizing/convars.md'
- 'en/Customizing/plugins.md'
- 'Respawn system':
- 'About': 'en/Customizing/Spawn-system/index.md'
- 'Format description': 'en/Customizing/Spawn-system/systems-compare.md'
- 'Convertation': 'en/Customizing/Spawn-system/convertation.md'
- 'Working with documentation': 'en/Work-with-documentation.md'
- '🇷🇺 RU':
- 'Обзор': 'ru/index.md'
Expand All @@ -103,6 +107,10 @@ nav:
- 'Команды': 'ru/Customizing/commands.md'
- 'Консольные переменные': 'ru/Customizing/convars.md'
- 'Набор плагинов': 'ru/Customizing/plugins.md'
- 'Система спавнов':
- 'Введение': 'ru/Customizing/Spawn-system/index.md'
- 'Описание форматов': 'ru/Customizing/Spawn-system/systems-compare.md'
- 'Конвертирование': 'ru/Customizing/Spawn-system/convertation.md'
- 'Работа с документацией': 'ru/Work-with-documentation.md'

markdown_extensions:
Expand Down

0 comments on commit 8b1e9cd

Please sign in to comment.