mirror of
https://github.com/JonnyBro/beatrun.git
synced 2024-12-29 05:13:02 +05:00
Localization support (#93)
This commit is contained in:
parent
d8ac322ee3
commit
e0b58041cf
51 changed files with 1240 additions and 322 deletions
29
BeatrunAnimInstaller_Source/README.md
Normal file
29
BeatrunAnimInstaller_Source/README.md
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# ENGLISH
|
||||||
|
|
||||||
|
# Animations Installer Source Code
|
||||||
|
|
||||||
|
Here you can find source code of the animations installer.\
|
||||||
|
I don't know why you will ever need that but we put it here so you can be sure we don't supply malware with our fork.
|
||||||
|
|
||||||
|
## How To Use
|
||||||
|
|
||||||
|
Please refer to this [README](../beatrun/README.md).
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ) - Creator of this installer.
|
||||||
|
|
||||||
|
# RUSSIAN
|
||||||
|
|
||||||
|
# Исходный код установщика анимаций
|
||||||
|
|
||||||
|
Здесь находятся исходники нашего установщика анимаций.\
|
||||||
|
Я не знаю зачем это вам, но мы оставили их здесь чтобы вы могли убедиться что мы не распространяем вирусы в нашем форке.
|
||||||
|
|
||||||
|
## Как использовать
|
||||||
|
|
||||||
|
Прочитайте этот файл [README](../beatrun/README.md).
|
||||||
|
|
||||||
|
## Благодарность
|
||||||
|
|
||||||
|
* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ) - Создатель установщика.
|
92
README.md
92
README.md
|
@ -1,80 +1,96 @@
|
||||||
# Beatrun | Community version
|
# Beatrun | Community edition
|
||||||
|
|
||||||
Infamous parkour addon for Garry's Mod, fully open sourced and maintained by the community.
|
* [Русский](./README_ru.md)
|
||||||
|
|
||||||
This version does not include malicious modules, code or networking. What it does contain is:
|
Infamous parkour addon for Garry's Mod, fully open sourced and maintained by the community (me 😞).
|
||||||
* Lua modules for Discord Rich Presence
|
|
||||||
* Lua modules for Steam Presence
|
|
||||||
* Network connectivity for courses (activates only when you load or upload courses, and by default `courses.beatrun.ru` is used)
|
|
||||||
|
|
||||||
**All of this is optional and you may remove all of it.**\
|
> [!IMPORTANT]
|
||||||
Modules are located [here](/lua/bin/) and courses database functionality is [here](/beatrun/gamemodes/beatrun/gamemode/cl/CoursesDatabase.lua).<br><br>
|
> You will not find here any malicious modules, code or networking! We have modules and networking for:
|
||||||
**PLEASE READ ALL BEFORE ASKING QUESTIONS ON OUR SERVER!**
|
>
|
||||||
|
> * Discord Rich Presence.
|
||||||
|
> * Steam Presence.
|
||||||
|
> * Custom Courses Database.
|
||||||
|
>
|
||||||
|
> **All of this is optional and you can remove all of it.**\
|
||||||
|
> Modules are located [here](/lua/bin/) and courses database functionality is [here](/beatrun/gamemodes/beatrun/gamemode/cl/CoursesDatabase.lua).\
|
||||||
|
> You can find source code for modules in [Credits](#credits) section.
|
||||||
|
|
||||||
|
**PLEASE READ EVERYTHING BEFORE ASKING QUESTIONS ON OUR SERVER!**
|
||||||
|
|
||||||
|
## (Recommended) Automatic Installation (Windows only)
|
||||||
|
|
||||||
# (Prefered) Installation (Automatic | Windows only)
|
|
||||||
Run the command below in Powershell.
|
Run the command below in Powershell.
|
||||||
> (Win + R > `powershell` > command in question)
|
> [!NOTE]
|
||||||
|
> Win + R > `powershell`
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
iex (iwr "beatrun.ru/install.ps1" -UseBasicParsing)
|
iex (iwr "beatrun.ru/install.ps1" -UseBasicParsing)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Installation (Manual)
|
## Manual Installation
|
||||||
|
|
||||||
1. Download this repository [here](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip).
|
1. Download this repository [here](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip).
|
||||||
2. Delete the `beatrun` folder in *addons* if you have one!
|
2. **Delete the `beatrun` folder in *your_game_folder/garrysmod/addons* if you have one.**
|
||||||
3. Extract the `beatrun` folder to *your_game_folder/garrysmod/addons*.
|
3. Extract the `beatrun` folder to *your_game_folder/garrysmod/addons*.
|
||||||
4. Extract the `lua` folder to *your_game_folder/garrysmod*.
|
4. Extract the `lua` folder to *your_game_folder/garrysmod*.
|
||||||
* `lua` folder contains modules for Discord Rich Presense and Steam Presence. They are optional. You can find their source code in the [credits](https://github.com/JonnyBro/beatrun?tab=readme-ov-file#credits-3) section<br><br>
|
|
||||||
|
|
||||||
## Animations
|
## Animations
|
||||||
You can use "**BeatrunAnimInstaller**" (located in `beatrun` [here](https://github.com/JonnyBro/beatrun/tree/master/beatrun)) for custom animations. Currently there's:
|
|
||||||
* Beatrun Reanimated project
|
|
||||||
* Original but fixed animations<br><br>
|
|
||||||
|
|
||||||
Start the executable and press a key on your keyboard with the number of the animation you want to install (if nothing's changed, close the game and run the program as admin).<br>
|
Please refer to this [README](/beatrun/README.md).
|
||||||
Installer's source can be found [here](/BeatrunAnimInstaller).
|
|
||||||
|
|
||||||
## Changes and fixes done by the community
|
## Changes and fixes done by the community
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> There are many undocumented changes and fixes in this version, you better look at the commits for more specific changes.
|
||||||
|
|
||||||
* Jonny_Bro is hosting [custom online courses database](https://courses.beatrun.ru), which is also free and [open source](https://github.com/relaxtakenotes/beatrun-courses-server/) 🤯!
|
* Jonny_Bro is hosting [custom online courses database](https://courses.beatrun.ru), which is also free and [open source](https://github.com/relaxtakenotes/beatrun-courses-server/) 🤯!
|
||||||
* Added a new gamemode - *Deathmatch*, it's like Data Theft, but you collect kills not cubes! (it's way more fun I promise)
|
* Implemented a new gamemode - **Deathmatch** (it's way more fun than Data Theft I promise).
|
||||||
* Added an in-game config menu - You can find it in the tool menu, in the *Beatrun* Category!\
|
* Implemented "Proper" Kick Glitch just like in [original ME](https://www.youtube.com/watch?v=zK5y3NBUStc).
|
||||||
|
* Added an in-game config menu - you can find it in the tool menu, in the *Beatrun* Category.\
|
||||||
**All** of the Beatrun settings can be changed in the configuration menu.
|
**All** of the Beatrun settings can be changed in the configuration menu.
|
||||||
|
* Settings on the map selection screen.
|
||||||
|
* Localization support.\
|
||||||
|
For now Russian and English are supported.
|
||||||
* Added the ability to get off of ladders.
|
* Added the ability to get off of ladders.
|
||||||
* Allowed jumping while slowwalking (🤷).
|
|
||||||
* Done various tweaks to the Time Trials Menu (F4).
|
|
||||||
* Added an arrow that shows the next checkpoint.
|
* Added an arrow that shows the next checkpoint.
|
||||||
* Added a ConVar to allow Overdrive usage on the server - `Beatrun_AllowOverdriveInMultiplayer`.
|
* Added a ConVar to allow Overdrive usage on the server - `Beatrun_AllowOverdriveInMultiplayer`.
|
||||||
* Added a ConVar to toggle between old and new (like in ME) Kick-Glitch - `Beatrun_OldKickGlitch`.
|
* Added a ConVar to toggle between old and new Kick Glitch - `Beatrun_OldKickGlitch`.
|
||||||
* Added some ConVars to change HUD colors - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`.
|
* Added some ConVars to change HUD colors - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`.
|
||||||
* Added a ConVar to allow players to spawn props without admin rights - `Beatrun_AllowPropSpawn`.
|
* Added a ConVar to allow players to spawn props and weapons without admin rights - `Beatrun_AllowPropSpawn`.
|
||||||
* Added a ConVar to disable grapple ability - `Beatrun_DisableGrapple`.
|
* Added a ConVar to disable grapple ability - `Beatrun_DisableGrapple`.
|
||||||
* Added a ConVar to allow QuickTurn with any weapon or only with *Runner Hands* - `Beatrun_QuickturnHandsOnly`.
|
* Added a ConVar to allow QuickTurn with any weapon or only with *Runner Hands* - `Beatrun_QuickturnHandsOnly`.
|
||||||
* Implemented Discord Rich Presence using open source tools (See [credits](https://github.com/JonnyBro/beatrun?tab=readme-ov-file#credits-3)).
|
|
||||||
* Added small camera punch when diving.
|
* Added small camera punch when diving.
|
||||||
* Added the ability to remove ziplines that created with *Zipline Gun* - `RMB`.
|
* Added the ability to remove ziplines that created with *Zipline Gun* - `RMB`.
|
||||||
* Fixed some playermodels show up as ERROR.
|
* Implemented Discord Rich Presence using [open source](#credits) module.
|
||||||
* SteamID in the right corner is no longer present.
|
|
||||||
|
|
||||||
## Notable changes and fixes done by the community
|
## Notable changes and fixes done by the community
|
||||||
|
|
||||||
|
* Your SteamID in the right corner is no longer present.
|
||||||
|
* Fixed some playermodels show up as ERROR.
|
||||||
|
* Done various tweaks to the Courses Menu (F4).
|
||||||
|
* Allowed jumping while walking (🤷).
|
||||||
* Fixed leaderboard sorting in gamemodes.
|
* Fixed leaderboard sorting in gamemodes.
|
||||||
* Fixed grapple usage in courses and gamemodes.
|
* Fixed grapple usage in courses and gamemodes.
|
||||||
* Fixed a crash in DataTheft when touching data bank.
|
* Fixed a crash in Data Theft when touching Data Bank.
|
||||||
* Fixed an error on course load.
|
* Fixed an error on course loading.
|
||||||
* Fixed collisions issues. (PvP damage not going through in gamemodes other than Data Theft)
|
* Fixed collisions issues. (PvP damage not going through in gamemodes other than Data Theft)
|
||||||
* Added Proper Kick Glitch ([Like in original ME](https://www.youtube.com/watch?v=zK5y3NBUStc)). (cry about prediction errors l0l)
|
|
||||||
* Tweaked safety roll, now you can roll under things.
|
* Tweaked safety roll, now you can roll under things.
|
||||||
|
* Tweaked some grapple related stuff. Now it moves with the entity it was attached to and other players can see the rope.
|
||||||
* Made it possible to dive to your death =).
|
* Made it possible to dive to your death =).
|
||||||
* Added some grapple related stuff. Now it moves with the entity it was attached to and other players can see the rope.
|
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
- [ ] Gamemodes menu. (idk how to properly implement this for know)
|
|
||||||
|
|
||||||
# Related
|
* [ ] Loadouts creation menu for Data Theft and Deathmatch. (idk how to properly implement this for know).
|
||||||
* [beatrun-anims](https://github.com/JonnyBro/beatrun-anims) - Decompiled and reworked Beatrun animations.
|
|
||||||
|
|
||||||
# Credits <3
|
## Related
|
||||||
* All contributors.
|
|
||||||
|
* [Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims).
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
* [All contributors](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3.
|
||||||
* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - He made that piece of shit.
|
* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - He made that piece of shit.
|
||||||
* [relaxtakenotes](https://github.com/relaxtakenotes) - Made all of this possible.
|
* [relaxtakenotes](https://github.com/relaxtakenotes) - Made all of this possible.
|
||||||
* [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated project.
|
* [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project.
|
||||||
* [Discord Rich Presence](https://github.com/fluffy-servers/gmod-discord-rpc) by Fluffy Servers.
|
* [Discord Rich Presence](https://github.com/fluffy-servers/gmod-discord-rpc) by Fluffy Servers.
|
||||||
* [Steam Presence](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) by YuRaNnNzZZ.
|
* [Steam Presence](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) by YuRaNnNzZZ.
|
||||||
|
|
96
README_ru.md
Normal file
96
README_ru.md
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
# Beatrun | Версия от сообщества
|
||||||
|
|
||||||
|
* [English](./README.md)
|
||||||
|
|
||||||
|
Печально известный паркур-аддон для Garry's Mod, с полностью открытым исходным кодом и поддерживаемый сообществом (мной 😞).
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> У нас вы не найдёте вредоносного кода, модулей или сетевого кода! У нас есть модули и сетевой код, который используется для:
|
||||||
|
>
|
||||||
|
> * Discord Rich Presence.
|
||||||
|
> * Steam Presence.
|
||||||
|
> * Пользовательская онлайн база курсов.
|
||||||
|
>
|
||||||
|
> **Всё это необязательно и может быть удалено.**\
|
||||||
|
> Модули находятся [тут](/lua/bin/) и функционал онлайн базы курсов доступен [здесь](/beatrun/gamemodes/beatrun/gamemode/cl/CoursesDatabase.lua).\
|
||||||
|
> Исходный код модулей можно найти в [благодарностях](#благодарности).
|
||||||
|
|
||||||
|
**ПОЖАЛУЙСТА, ПРОЧТИТЕ ВЕСЬ ДОКУМЕНТ ПЕРЕД ТЕМ КАК ЗАДАВАТЬ ВОПРОСЫ НА НАШЕМ СЕРВЕРЕ!**
|
||||||
|
|
||||||
|
## (Рекомендуемое) Автоматическая установка (только для Windows)
|
||||||
|
|
||||||
|
Запустите команду ниже в Powershell.
|
||||||
|
> [!NOTE]
|
||||||
|
> Win + R > `powershell`
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
iex (iwr "beatrun.ru/install.ps1" -UseBasicParsing)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ручная установка
|
||||||
|
|
||||||
|
1. Скачайте данный репозиторий по данной [ссылке](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip).
|
||||||
|
2. **Удалите старую папку `beatrun` по пути *путь_к_игре/garrysmod/addons* если она у вас имеется.**
|
||||||
|
3. Извлеките папку `beatrun` по пути *путь_к_игре/garrysmod/addons*.
|
||||||
|
4. Извлеките папку `lua` по пути *путь_к_игре/garrysmod*.
|
||||||
|
|
||||||
|
## Анимации
|
||||||
|
|
||||||
|
Пожалуйста, обратитесь к данному [README](/beatrun/README.md).
|
||||||
|
|
||||||
|
## Изменений сделанные сообществом
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> Множество изменений и исправлений не задокументированы, обратитесь к списку коммитов для более подробного списка изменений.
|
||||||
|
|
||||||
|
* Jonny_Bro держит [пользовательскую онлайн базу курсов](https://courses.beatrun.ru), которая так же бесплатна и имеет [открытый исходный код](https://github.com/relaxtakenotes/beatrun-courses-server/) 🤯!
|
||||||
|
* Реализован новый режим - **Deathmatch** (намного веселее чем Data Theft, честно).
|
||||||
|
* Реализован "правильный" Kick Glitch прямо как в [оригинальной ME](https://www.youtube.com/watch?v=zK5y3NBUStc).
|
||||||
|
* Добавлено меню настроек в игре - его можно найти в списке инструментов, в категории *Beatrun*.\
|
||||||
|
Вам доступны **все** настройки Beatrun из данного меню.
|
||||||
|
* Меню настроек при выборе карты.
|
||||||
|
* Поддержка локализации.\
|
||||||
|
На данный момент доступны Русский и Английский языки.
|
||||||
|
* Добавлена возможность слезания с лестниц.
|
||||||
|
* Добавлена стрелка указывающая на следующую контрольную точку.
|
||||||
|
* Добавлена переменная которая разрешает использование Overdrive на сервере - `Beatrun_AllowOverdriveInMultiplayer`.
|
||||||
|
* Добавлена переменная которая позволяет переключится между старым и новым Kick Glitch - `Beatrun_OldKickGlitch`.
|
||||||
|
* Добавлено несколько переменных позволяющих настроить цвета HUD - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`.
|
||||||
|
* Добавлена переменная которая разрешает игрокам без админ прав создавать пропы и оружие - `Beatrun_AllowPropSpawn`.
|
||||||
|
* Добавлена переменная которая позволяет переключить работу крюка-кошки - `Beatrun_DisableGrapple`.
|
||||||
|
* Добавлена переменная которая позволяет переключить использование Quickturn только с *Runner Hands* или с любым оружием - `Beatrun_QuickturnHandsOnly`.
|
||||||
|
* Добавлен небольшой толчёк камеры при нырянии.
|
||||||
|
* Добавлена возможность удаления зиплайнов созданных *Zipline Gun* - `ПКМ`.
|
||||||
|
* Реализована поддержка Discord Rich Presence используя модуль с [открытым исходным кодом](#благодарности).
|
||||||
|
|
||||||
|
## Другие изменения и исправления
|
||||||
|
|
||||||
|
* Ваш SteamID больше не показывается в углу экрана.
|
||||||
|
* Исправлено отображение некоторых моделей игрока как ERROR.
|
||||||
|
* Сделано несколько изменений в меню выбора курсов (F4).
|
||||||
|
* Разрешены прыжки во время ходьбы (🤷).
|
||||||
|
* Исправлена сортировка в таблице лидеров.
|
||||||
|
* Исправлено использование крюка-кошки в режимах и курсах.
|
||||||
|
* Исправлен краш при соприкосновении с Data Bank в Data Theft.
|
||||||
|
* Исправлена ошибка загрузки курсов.
|
||||||
|
* Исправлены ошибки коллизий. (PvP урон не проходил нигде, кроме Data Theft)
|
||||||
|
* Изменён кувырок, теперь можно кувыркаться под объектами.
|
||||||
|
* Изменена крюк-кошка. Теперь вы движетесь вместе с объектом к которому она прицеплена и её видят другие игроки.
|
||||||
|
* Теперь можно нырнуть и умереть =).
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
* [ ] Меню выбора снаряжения для Data Theft и Deathmatch (не знаю пока как это реализовать).
|
||||||
|
|
||||||
|
## Может быть полезно
|
||||||
|
|
||||||
|
* [Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims).
|
||||||
|
|
||||||
|
## Благодарности
|
||||||
|
|
||||||
|
* [Все участники](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3.
|
||||||
|
* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Создатель этого куска дерьма.
|
||||||
|
* [relaxtakenotes](https://github.com/relaxtakenotes) - Если бы не он, этого проекта бы не существовало.
|
||||||
|
* [MTB](https://www.youtube.com/@MTB396) - Создатель Beatrun Reanimated Project.
|
||||||
|
* [Discord Rich Presence](https://github.com/fluffy-servers/gmod-discord-rpc) от Fluffy Servers.
|
||||||
|
* [Steam Presence](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) от YuRaNnNzZZ.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
37
beatrun/README.md
Normal file
37
beatrun/README.md
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# ENGLISH
|
||||||
|
|
||||||
|
# Animations Installer
|
||||||
|
|
||||||
|
You can use **BeatrunAnimInstaller** (located literally here) to change animations. Currently we have:
|
||||||
|
|
||||||
|
1. `Beatrun Reanimated Project` animations.
|
||||||
|
2. Original but fixed animations.
|
||||||
|
|
||||||
|
## How To Use
|
||||||
|
|
||||||
|
1. Start the executable.
|
||||||
|
2. Press a key on your keyboard with the number of the animation you want to install.\
|
||||||
|
If nothing is changed, close the game and/or try run the program with admin priveleges.
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
Please refer to this [README](../BeatrunAnimInstaller_Source/README.md).
|
||||||
|
|
||||||
|
# RUSSIAN
|
||||||
|
|
||||||
|
# Установщик анимаций
|
||||||
|
|
||||||
|
Используйте **BeatrunAnimInstaller** (который расположен прямо тут) чтобы менять анимации. На данный момент у нас имеются:
|
||||||
|
|
||||||
|
1. Анимации из `Beatrun Reanimated Project`.
|
||||||
|
2. Оригинальные анимации с правками и фиксами.
|
||||||
|
|
||||||
|
## Как использовать
|
||||||
|
|
||||||
|
1. Запустите исполняемый файл.
|
||||||
|
2. Нажмите цифру желаемых анимаций на клавиатуре.\
|
||||||
|
Если ничего не изменилось, закройте игру и/или запустите файл от имени администратора.
|
||||||
|
|
||||||
|
## Исходный код
|
||||||
|
|
||||||
|
Прочитайте этот файл [README](../BeatrunAnimInstaller_Source/README.md).
|
|
@ -3,5 +3,270 @@
|
||||||
"base" "base"
|
"base" "base"
|
||||||
"title" "Beatrun"
|
"title" "Beatrun"
|
||||||
"maps" "^br_"
|
"maps" "^br_"
|
||||||
|
"category" "other"
|
||||||
"menusystem" "1"
|
"menusystem" "1"
|
||||||
|
|
||||||
|
"settings"
|
||||||
|
{
|
||||||
|
1
|
||||||
|
{
|
||||||
|
"name" "physgun_limited"
|
||||||
|
"text" "limit_physgun"
|
||||||
|
"help" "If enabled, the Physics Gun will not be able to pick up certain map entities"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
2
|
||||||
|
{
|
||||||
|
"name" "sbox_weapons"
|
||||||
|
"text" "enable_weapons"
|
||||||
|
"help" "If enabled, each player will receive default Half-Life 2 weapons on each spawn"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "1"
|
||||||
|
"singleplayer" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
3
|
||||||
|
{
|
||||||
|
"name" "sbox_godmode"
|
||||||
|
"text" "allow_god_mode"
|
||||||
|
"help" "If enabled, all players will be invincible"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "0"
|
||||||
|
"singleplayer" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
4
|
||||||
|
{
|
||||||
|
"name" "sbox_playershurtplayers"
|
||||||
|
"text" "players_damage_players"
|
||||||
|
"help" "If enabled, players will be able to hurt each other"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
5
|
||||||
|
{
|
||||||
|
"name" "sbox_maxprops"
|
||||||
|
"text" "max_props"
|
||||||
|
"help" "Maximum props a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "200"
|
||||||
|
}
|
||||||
|
|
||||||
|
6
|
||||||
|
{
|
||||||
|
"name" "sbox_maxragdolls"
|
||||||
|
"text" "max_ragdolls"
|
||||||
|
"help" "Maximum ragdolls a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "10"
|
||||||
|
}
|
||||||
|
|
||||||
|
7
|
||||||
|
{
|
||||||
|
"name" "sbox_maxvehicles"
|
||||||
|
"text" "max_vehicles"
|
||||||
|
"help" "Maximum vehicles a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "4"
|
||||||
|
}
|
||||||
|
|
||||||
|
8
|
||||||
|
{
|
||||||
|
"name" "sbox_maxeffects"
|
||||||
|
"text" "max_effects"
|
||||||
|
"help" "Maximum effect props a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "200"
|
||||||
|
}
|
||||||
|
|
||||||
|
9
|
||||||
|
{
|
||||||
|
"name" "sbox_maxballoons"
|
||||||
|
"text" "max_balloons"
|
||||||
|
"help" "Maximum balloons a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "100"
|
||||||
|
}
|
||||||
|
|
||||||
|
10
|
||||||
|
{
|
||||||
|
"name" "sbox_maxcameras"
|
||||||
|
"text" "max_cameras"
|
||||||
|
"help" "Maximum cameras a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "10"
|
||||||
|
}
|
||||||
|
|
||||||
|
11
|
||||||
|
{
|
||||||
|
"name" "sbox_maxnpcs"
|
||||||
|
"text" "max_npcs"
|
||||||
|
"help" "Maximum NPCs a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "10"
|
||||||
|
}
|
||||||
|
|
||||||
|
12
|
||||||
|
{
|
||||||
|
"name" "sbox_maxsents"
|
||||||
|
"text" "max_entities"
|
||||||
|
"help" "Maximum entities a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "100"
|
||||||
|
}
|
||||||
|
|
||||||
|
13
|
||||||
|
{
|
||||||
|
"name" "sbox_maxdynamite"
|
||||||
|
"text" "max_dynamite"
|
||||||
|
"help" "Maximum dynamites a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "10"
|
||||||
|
}
|
||||||
|
|
||||||
|
14
|
||||||
|
{
|
||||||
|
"name" "sbox_maxlamps"
|
||||||
|
"text" "max_lamps"
|
||||||
|
"help" "Maximum lamps a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "3"
|
||||||
|
}
|
||||||
|
|
||||||
|
15
|
||||||
|
{
|
||||||
|
"name" "sbox_maxlights"
|
||||||
|
"text" "max_lights"
|
||||||
|
"help" "Maximum lights a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "5"
|
||||||
|
}
|
||||||
|
|
||||||
|
16
|
||||||
|
{
|
||||||
|
"name" "sbox_maxwheels"
|
||||||
|
"text" "max_wheels"
|
||||||
|
"help" "Maximum wheels a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "50"
|
||||||
|
}
|
||||||
|
|
||||||
|
17
|
||||||
|
{
|
||||||
|
"name" "sbox_maxthrusters"
|
||||||
|
"text" "max_thrusters"
|
||||||
|
"help" "Maximum thrusters a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "50"
|
||||||
|
}
|
||||||
|
|
||||||
|
18
|
||||||
|
{
|
||||||
|
"name" "sbox_maxhoverballs"
|
||||||
|
"text" "max_hoverballs"
|
||||||
|
"help" "Maximum hoverballs a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "50"
|
||||||
|
}
|
||||||
|
|
||||||
|
19
|
||||||
|
{
|
||||||
|
"name" "sbox_maxbuttons"
|
||||||
|
"text" "max_buttons"
|
||||||
|
"help" "Maximum buttons a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "50"
|
||||||
|
}
|
||||||
|
|
||||||
|
20
|
||||||
|
{
|
||||||
|
"name" "sbox_maxemitters"
|
||||||
|
"text" "max_emitters"
|
||||||
|
"help" "Maximum emitters a single player can create"
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "20"
|
||||||
|
}
|
||||||
|
|
||||||
|
21
|
||||||
|
{
|
||||||
|
"name" "gmod_maxammo"
|
||||||
|
"text" "gmod_maxammo"
|
||||||
|
"help" "Forces amount of maximum ammo reserves for all weapons of each player. Values 0 and below mean use weapon's ammo type maximum ammo setting instead."
|
||||||
|
"type" "Numeric"
|
||||||
|
"default" "9999"
|
||||||
|
"singleplayer" "1"
|
||||||
|
"dontcreate" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
22
|
||||||
|
{
|
||||||
|
"name" "gmod_suit"
|
||||||
|
"text" "gmod_suit"
|
||||||
|
"help" "Set to non zero to enable Half-Life 2 aux suit power stuff."
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "0"
|
||||||
|
"singleplayer" "1"
|
||||||
|
"dontcreate" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
23
|
||||||
|
{
|
||||||
|
"name" "sbox_noclip"
|
||||||
|
"text" "allow_noclip"
|
||||||
|
"help" "If enabled, players will be able to use noclip"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
24
|
||||||
|
{
|
||||||
|
"name" "mp_falldamage"
|
||||||
|
"text" "realistic_falldamage"
|
||||||
|
"help" "Enable realistic fall damage"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "0"
|
||||||
|
"singleplayer" "1"
|
||||||
|
"dontcreate" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
25
|
||||||
|
{
|
||||||
|
"name" "sbox_bonemanip_npc"
|
||||||
|
"text" "bone_manipulate_npcs"
|
||||||
|
"help" "If enabled then manipulating NPC bones will be allowed"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
26
|
||||||
|
{
|
||||||
|
"name" "sbox_bonemanip_player"
|
||||||
|
"text" "bone_manipulate_players"
|
||||||
|
"help" "If enabled then manipulating Player bones will be allowed"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
27
|
||||||
|
{
|
||||||
|
"name" "sbox_bonemanip_misc"
|
||||||
|
"text" "bone_manipulate_others"
|
||||||
|
"help" "If enabled then manipulating the bones of other entities will be allowed"
|
||||||
|
"type" "CheckBox"
|
||||||
|
"default" "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
28
|
||||||
|
{
|
||||||
|
"name" "sbox_persist"
|
||||||
|
"text" "persistent_mode_menu"
|
||||||
|
"help" "If not empty, enables 'Make Persistent' option when you right click on props while holding C, allowing you to save them across sessions. Changing this convar will save existing persistent props, cleanup the whole map and load props from given file."
|
||||||
|
"type" "Text"
|
||||||
|
"default" ""
|
||||||
|
"singleplayer" "1"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,233 @@
|
||||||
|
# Misc
|
||||||
|
beatrun.misc.ok=OK
|
||||||
|
beatrun.misc.noclipdetected=Noclip Detected! Respawn to restart the course
|
||||||
|
beatrun.misc.checkconsole=Check console!
|
||||||
|
|
||||||
|
# AddonWarning
|
||||||
|
beatrun.addonwarning.warntext=NOTICE\nPlease disable the following addons before playing\nor submitting any issues to GitHub:
|
||||||
|
beatrun.addonwarning.quitbutton=Quit to Main Menu
|
||||||
|
beatrun.addonwarning.play=Play
|
||||||
|
beatrun.addonwarning.conflictfound=CONFLICTING ADDONS FOUND
|
||||||
|
|
||||||
|
# BuildModeHUD
|
||||||
|
beatrun.buildmodehud.info=Index: %s\nSelected: %s\nAngle: %s
|
||||||
|
beatrun.buildmodehud.props=Menu / Props
|
||||||
|
beatrun.buildmodehud.entities=Menu / Entities
|
||||||
|
beatrun.buildmodehud.drag=Drag (G)
|
||||||
|
beatrun.buildmodehud.copy=Copy (SHIFT+D)
|
||||||
|
beatrun.buildmodehud.delete=Delete (DEL/BCKSPC)
|
||||||
|
beatrun.buildmodehud.highlight=Highlight (T)
|
||||||
|
beatrun.buildmodehud.select=Select
|
||||||
|
beatrun.buildmodehud.zipline=Zipline (SHIFT = 2-Way)
|
||||||
|
|
||||||
|
# All ConVars
|
||||||
|
beatrun.convars.hudxp=Show total XP near nickname
|
||||||
|
beatrun.convars.hudsway=Display HUD swaying
|
||||||
|
beatrun.convars.huddynamic=Hide HUD when moving
|
||||||
|
beatrun.convars.hudhidden=Hides most of the HUD
|
||||||
|
beatrun.convars.hudreticle=Display a reticle
|
||||||
|
beatrun.convars.hudtextcolor=HUD Text Color\nDefault: 255 255 255 255
|
||||||
|
beatrun.convars.hudcornercolor=HUD Corner Color\nDefault: 20 20 20 100
|
||||||
|
beatrun.convars.hudfloatxpcolor=HUD Floating XP Color\nDefault: 255 255 255 255
|
||||||
|
beatrun.convars.nametags=Display nametags above players
|
||||||
|
beatrun.convars.apikey=API key
|
||||||
|
beatrun.convars.domain=Domain of the courses database
|
||||||
|
beatrun.convars.viewbob=Viewbob Intensity
|
||||||
|
beatrun.convars.viewbobstabilization=Turn on to reduce motion sickness by making viewbobbing keep the player's look position centered
|
||||||
|
beatrun.convars.fov=Changes player's Field Of View
|
||||||
|
beatrun.convars.cpsave=Respawning during a course will go back to the last hit checkpoint
|
||||||
|
beatrun.convars.faststart=Faster start countdown
|
||||||
|
beatrun.convars.disablegrapple=Disables grapple ability
|
||||||
|
beatrun.convars.puristmode=Purist mode is a clientside preference that severely weakens the ability to strafe while in the air, which is how ME games handle this.\n0 = No restrictions\n1 = Reduced move speed in the air
|
||||||
|
beatrun.convars.quickturnground=Enables quickturning with secondary attack while on the ground
|
||||||
|
beatrun.convars.quickturnhandsonly=Enables quickturning with "Runner Hands" only
|
||||||
|
|
||||||
|
# HUD
|
||||||
|
beatrun.hud.course=Course: %s
|
||||||
|
beatrun.hud.freeplay=Freeplay
|
||||||
|
beatrun.hud.lvl=Lvl: %s
|
||||||
|
beatrun.hud.infector=Infector
|
||||||
|
|
||||||
|
# Menu_Course
|
||||||
|
beatrun.coursemenu.trials=Courses - %s
|
||||||
|
beatrun.coursemenu.buildmode=Toggle Build Mode
|
||||||
|
beatrun.coursemenu.freeplay=Return to Freeplay
|
||||||
|
|
||||||
|
# CoursesDatabase
|
||||||
|
beatrun.coursesdatabase.cantuploadfreeplay=Can't upload in Freeplay
|
||||||
|
beatrun.coursesdatabase.upload1=You're trying to upload a course with the name %s on map %s.
|
||||||
|
beatrun.coursesdatabase.upload2=Use Beatrun_Confirm to continue or Beatrun_Cancel to cancel.
|
||||||
|
beatrun.coursesdatabase.update1=You are trying to update a course with this code %s to course with name %s on map %s.
|
||||||
|
|
||||||
|
# Tools Menu
|
||||||
|
beatrun.toolsmenu.client=Client
|
||||||
|
beatrun.toolsmenu.server=Server
|
||||||
|
|
||||||
|
# Tools Menu Courses Section
|
||||||
|
beatrun.toolsmenu.courses.name=Courses
|
||||||
|
beatrun.toolsmenu.courses.desc=Courses Settings
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.faststart=Fast Start
|
||||||
|
beatrun.toolsmenu.courses.faststartdesc=Faster countdown at the start of the course
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.checkpointsave=Save at Checkpoint
|
||||||
|
beatrun.toolsmenu.courses.checkpointsavedesc=Respawn at last hit checkpoint in courses
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.database=Database Domain
|
||||||
|
beatrun.toolsmenu.courses.databasedesc=Domain/IP of the database\nDefault: courses.beatrun.ru
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.changeapikey=Change API Key
|
||||||
|
beatrun.toolsmenu.courses.enterapikey=Enter your API key
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.savecourse=Save Currently Running Course to a File
|
||||||
|
beatrun.toolsmenu.courses.namesavecourse=Enter a name for your course
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.loadcourse=Load a Course from the Online Database
|
||||||
|
beatrun.toolsmenu.courses.enterloadcourse=Enter course code
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.uploadcourse=Upload Currently Running Course to the Database
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.updatecourse=Update a Course on the Database
|
||||||
|
beatrun.toolsmenu.courses.updatecoursehelp=Updates a course on the database with the currently running one
|
||||||
|
|
||||||
|
# Tools Menu HUD Section
|
||||||
|
beatrun.toolsmenu.hud.name=HUD
|
||||||
|
beatrun.toolsmenu.hud.desc=HUD Settings
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.dynamic=Dynamic HUD
|
||||||
|
beatrun.toolsmenu.hud.dynamicdesc=Hides HUD when moving
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.sway=HUD Sway
|
||||||
|
beatrun.toolsmenu.hud.swaydesc=Toggles HUD swaying
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.reticle=Show Reticle
|
||||||
|
beatrun.toolsmenu.hud.reticledesc=Shows a dot in the center of the screen
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.nametags=Show Nametags
|
||||||
|
beatrun.toolsmenu.hud.nametagsdesc=Toggles nametags above players
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.hudxp=Show HUD XP
|
||||||
|
beatrun.toolsmenu.hud.hudxpdesc=Show total XP near your nickname
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.wind=Wind Effect
|
||||||
|
beatrun.toolsmenu.hud.winddesc=Wind noises when running
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.fov=FOV
|
||||||
|
beatrun.toolsmenu.hud.fovdesc=You need to respawn after changing your FOV!
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.hidden=Hide HUD
|
||||||
|
beatrun.toolsmenu.hud.hiddendesc=0 - Shown\n1 - Gamemode only\n2 - Hidden
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.textcolor=HUD Text Color
|
||||||
|
beatrun.toolsmenu.hud.cornercolor=HUD Corner Color
|
||||||
|
beatrun.toolsmenu.hud.floatxpcolor=HUD Floating XP Color
|
||||||
|
|
||||||
|
# Tools Menu Viewbob Section
|
||||||
|
beatrun.toolsmenu.viewbob.name=Viewbob
|
||||||
|
beatrun.toolsmenu.viewbob.desc=Viewbob Settings
|
||||||
|
|
||||||
|
beatrun.toolsmenu.viewbob.stabilization=Viewbob Stabilization
|
||||||
|
beatrun.toolsmenu.viewbob.stabilizationdesc=Turn on to reduce motion sickness by making viewbobbing keep the player's look position centered
|
||||||
|
beatrun.toolsmenu.viewbob.intensity=Viewbob Intensity
|
||||||
|
|
||||||
|
# Tools Menu Gameplay Section
|
||||||
|
beatrun.toolsmenu.gameplay.name=Gameplay
|
||||||
|
beatrun.toolsmenu.gameplay.desc=Gameplay Settings
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.quickturnground=Quickturn Ground
|
||||||
|
beatrun.toolsmenu.gameplay.quickturngrounddesc=Enables quickturning with secondary attack while on the ground
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.quickturnhandsonly=Quickturn Hands Only
|
||||||
|
beatrun.toolsmenu.gameplay.quickturnhandsonlydesc=Enables quickturning with "Runner Hands" only
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.puristmode=Purist Mode
|
||||||
|
beatrun.toolsmenu.gameplay.puristmodedesc=Purist mode is a clientside preference that severely weakens the ability to strafe while in the air, which is how Mirror's Edge games handle this.\nDisabled = No restrictions\nEnabled = Reduced move speed in the air
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.disablegrapple=Disable Grapple Ability
|
||||||
|
beatrun.toolsmenu.gameplay.disablegrappledesc=Disables grapple ability
|
||||||
|
|
||||||
|
# Tools Menu Misc Section
|
||||||
|
beatrun.toolsmenu.misc.name=Misc
|
||||||
|
beatrun.toolsmenu.misc.desc=Misc Settings
|
||||||
|
|
||||||
|
beatrun.toolsmenu.misc.propspawn=Prop Spawning
|
||||||
|
beatrun.toolsmenu.misc.propspawndesc=Allows players without admin rights to spawn props, entities and weapons
|
||||||
|
|
||||||
|
beatrun.toolsmenu.misc.overdrivemp=Overdrive in Multiplayer
|
||||||
|
beatrun.toolsmenu.misc.overdrivempdesc=Allows Overdrive usage on the server
|
||||||
|
|
||||||
|
# Tools Menu Moves Section
|
||||||
|
beatrun.toolsmenu.moves.name=Moves
|
||||||
|
beatrun.toolsmenu.moves.desc=Moves Settings
|
||||||
|
beatrun.toolsmenu.moves.help=You Can Dive with Ctrl + RMB While Midair!\nOverdrive Toggles with E + LMB.
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.speedlimit=Speed Limit
|
||||||
|
beatrun.toolsmenu.moves.speedlimitdesc=Changes player's speed limit\nDefault: 325
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.forcepuristmode=Force Purist Mode
|
||||||
|
beatrun.toolsmenu.moves.forcepuristmodedesc=Forces Purist Mode to be enabled for all players
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.realisticwallrunning="Realistic" wallrunning
|
||||||
|
beatrun.toolsmenu.moves.realisticwallrunningdesc=You don't lose speed when starting wallrunning when disabled
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.kickglitch=Kick Glitch
|
||||||
|
beatrun.toolsmenu.moves.kickglitchdesc=Toggles Kick Glitch Move\nLMB when Wallrunning and Then Jumping Right After
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.kickglitchversion=Kick Glitch Version
|
||||||
|
beatrun.toolsmenu.moves.kickglitchversiondesc=Enabled - Old version\nDisabled - New version\nNew version uses mechanic from ME that spawns a small platform under a player
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.quakejump=Quake Jump
|
||||||
|
beatrun.toolsmenu.moves.quakejumpdesc=Toggles Quake Jump Move\nPress RMB Right After Side Step
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.sidestep=Side Step
|
||||||
|
beatrun.toolsmenu.moves.sidestepdesc=Toggles Side Step Move\nA/D + RMB
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.disarm=Disarm
|
||||||
|
beatrun.toolsmenu.moves.disarmdesc=Toggles Ability to Disarm NPC\nPress "%s" on an NPC
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.divesettings=Dive Settings
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugeki=Totsugeki
|
||||||
|
beatrun.toolsmenu.moves.totsugekidesc=Toggles Totsugeki Move\nDive Right After Quake Jump
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugekispam=Totsugeki Spam
|
||||||
|
beatrun.toolsmenu.moves.totsugekispamdesc=Toggles Ability to Spam Totsugeki
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugekiheading=Totsugeki Heading
|
||||||
|
beatrun.toolsmenu.moves.totsugekiheadingdesc=Allows to Totsugeki on X axis (up/down)
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugekidirection=Totsugeki Direction
|
||||||
|
beatrun.toolsmenu.moves.totsugekidirectiondesc=Allows to Totsugeki into Another Direction\nCombined with Spam and Heading Allows You to Fly =)
|
||||||
|
|
||||||
|
# Tools Menu Gamemodes Section
|
||||||
|
beatrun.toolsmenu.gamemodes.name=Gamemodes
|
||||||
|
beatrun.toolsmenu.gamemodes.desc=Gamemodes Settings
|
||||||
|
beatrun.toolsmenu.gamemodes.error=Another gamemode is running!
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gamemodesc.infection=Toggle Infection Gamemode
|
||||||
|
beatrun.toolsmenu.gamemodesc.datatheft=Toggle Data Theft Gamemode
|
||||||
|
beatrun.toolsmenu.gamemodesc.deathmatch=Toggle Deathmatch Gamemode
|
||||||
|
|
||||||
|
# Checkpoints
|
||||||
|
beatrun.checkpoints.countdown1=Ready
|
||||||
|
beatrun.checkpoints.countdown2=Steady
|
||||||
|
beatrun.checkpoints.countdown3=GO!
|
||||||
|
beatrun.checkpoints.speedometer= %s km/h
|
||||||
|
|
||||||
|
# DataTheft
|
||||||
|
beatrun.datatheft.name=Data Theft (%s)
|
||||||
|
beatrun.datatheft.start=Data Theft! Kill players to collect data, deposit data in banks
|
||||||
|
|
||||||
|
# Deathmatch
|
||||||
|
beatrun.deathmatch.name=Deathmatch
|
||||||
|
beatrun.deathmatch.start=Deathmatch! Kill players to get points!
|
||||||
|
|
||||||
|
# Infection
|
||||||
|
beatrun.infection.name=Infection
|
||||||
|
beatrun.infection.start=Infection! Touch other players to infect them\n%s player(s) will become infected in %ss
|
||||||
|
beatrun.infection.nosurvivors=None...
|
||||||
|
beatrun.infection.infected=was infected!
|
||||||
|
beatrun.infection.infectedby=has infected
|
||||||
|
beatrun.infection.award=You were awarded 200 XP for surviving!
|
||||||
|
beatrun.infection.awardinfected=You were awarded 100 XP for spawning as an infected!
|
||||||
|
beatrun.infection.end=The game has ended!\nSurvivors: %s\nRestarting in 15s
|
|
@ -0,0 +1,233 @@
|
||||||
|
# Misc
|
||||||
|
beatrun.misc.ok=Ок
|
||||||
|
beatrun.misc.noclipdetected=Обнаружен NoClip! Нажмите R чтобы начать заного
|
||||||
|
beatrun.misc.checkconsole=Проверьте консоль!
|
||||||
|
|
||||||
|
# AddonWarning
|
||||||
|
beatrun.addonwarning.warntext=ВНИМАНИЕ\nПожалуйста, отключите данные аддоны перед игрой\nили созданием сообщений на GitHub:
|
||||||
|
beatrun.addonwarning.quitbutton=Выйти в меню
|
||||||
|
beatrun.addonwarning.play=Играть
|
||||||
|
beatrun.addonwarning.conflictfound=НЕСОВМЕСТИМЫЕ АДДОНЫ ОБНАРУЖЕНЫ
|
||||||
|
|
||||||
|
# BuildModeHUD
|
||||||
|
beatrun.buildmodehud.info=Указатель: %s\nВыбрано: %s\nУгол: %s
|
||||||
|
beatrun.buildmodehud.props=Меню / Пропы
|
||||||
|
beatrun.buildmodehud.entities=Меню / Энтити
|
||||||
|
beatrun.buildmodehud.drag=Переместить (G)
|
||||||
|
beatrun.buildmodehud.copy=Копировать (SHIFT+D)
|
||||||
|
beatrun.buildmodehud.delete=Удадлить (DEL/BCKSPC)
|
||||||
|
beatrun.buildmodehud.highlight=Подсветить (T)
|
||||||
|
beatrun.buildmodehud.select=Выбрать
|
||||||
|
beatrun.buildmodehud.zipline=Зиплайн (SHIFT = двухсторонний)
|
||||||
|
|
||||||
|
# All ConVars
|
||||||
|
beatrun.convars.hudxp=Показать весь опыт рядом с ником
|
||||||
|
beatrun.convars.hudsway=Отображать покачивание HUD
|
||||||
|
beatrun.convars.huddynamic=Скрыть HUD при движении
|
||||||
|
beatrun.convars.hudhidden=Скрыть HUD
|
||||||
|
beatrun.convars.hudreticle=Показать точку
|
||||||
|
beatrun.convars.hudtextcolor=Цвет текста в HUD\nDefault: 255 255 255 255
|
||||||
|
beatrun.convars.hudcornercolor=Цвет края в HUD\nDefault: 20 20 20 100
|
||||||
|
beatrun.convars.hudfloatxpcolor=Цвет всплывающего XP в HUD\nDefault: 255 255 255 255
|
||||||
|
beatrun.convars.nametags=Показать ники над игроками
|
||||||
|
beatrun.convars.apikey=API ключ
|
||||||
|
beatrun.convars.domain=Домен онлайн базы курсов
|
||||||
|
beatrun.convars.viewbob=Интенсивность покачивания камеры
|
||||||
|
beatrun.convars.viewbobstabilization=Включите чтобы снизить покачивание камеры центрируя её
|
||||||
|
beatrun.convars.fov=Угол обзора игрока
|
||||||
|
beatrun.convars.cpsave=Респавн в курсах отправляет на последнюю контрольную точку
|
||||||
|
beatrun.convars.faststart=Быстрый отчёт в начале курса
|
||||||
|
beatrun.convars.disablegrapple=Переключить крюк-кошку
|
||||||
|
beatrun.convars.puristmode=Режим Purist это клиентский параметр который сильно снижает движение игрока в стороны будучи в воздухе, прямо как в оригинальное ME.\n0 = Нет ограничений\n1 = Снижает движение игрока в воздухе в стороны
|
||||||
|
beatrun.convars.quickturnground=Переключить Quickturn будучи на земле
|
||||||
|
beatrun.convars.quickturnhandsonly=Переключить Quickturn только с "Runner Hands"
|
||||||
|
|
||||||
|
# HUD
|
||||||
|
beatrun.hud.course=Курс: %s
|
||||||
|
beatrun.hud.freeplay=Свободная игра
|
||||||
|
beatrun.hud.lvl=Лвл: %s
|
||||||
|
beatrun.hud.infector=Заражённый
|
||||||
|
|
||||||
|
# Menu_Course
|
||||||
|
beatrun.coursemenu.trials=Курсы - %s
|
||||||
|
beatrun.coursemenu.buildmode=Переключить режим строительства
|
||||||
|
beatrun.coursemenu.freeplay=Вернуться в свободную игру
|
||||||
|
|
||||||
|
# CoursesDatabase
|
||||||
|
beatrun.coursesdatabase.cantuploadfreeplay=Нельзя загружать во время свободной игры
|
||||||
|
beatrun.coursesdatabase.upload1=Вы пытаетесь загрузить курс с названием %s на карте %s.
|
||||||
|
beatrun.coursesdatabase.upload2=Используйте Beatrun_Confirm чтобы продолжить или Beatrun_Cancel чтобы отменить.
|
||||||
|
beatrun.coursesdatabase.update1=Вы пытаетесь обновить курс с кодом %s на курс с названием %s на карте %s.
|
||||||
|
|
||||||
|
# Tools Menu
|
||||||
|
beatrun.toolsmenu.client=Клиент
|
||||||
|
beatrun.toolsmenu.server=Сервер
|
||||||
|
|
||||||
|
# Tools Menu Courses Section
|
||||||
|
beatrun.toolsmenu.courses.name=Курсы
|
||||||
|
beatrun.toolsmenu.courses.desc=Настройки курсов
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.faststart=Быстрый старт
|
||||||
|
beatrun.toolsmenu.courses.faststartdesc=Быстрый отчёт в начале курса
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.checkpointsave=Сохранение на Контр. точках
|
||||||
|
beatrun.toolsmenu.courses.checkpointsavedesc=Респавн на последней контрольной точке
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.database=Домен Базы
|
||||||
|
beatrun.toolsmenu.courses.databasedesc=Домен/IP онлайн базы курсов\nПо умолчанию: courses.beatrun.ru
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.changeapikey=Изменить API Ключ
|
||||||
|
beatrun.toolsmenu.courses.enterapikey=Введите ваш API ключ
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.savecourse=Сохранить Текущий Курс в Файл
|
||||||
|
beatrun.toolsmenu.courses.namesavecourse=Введите название для курса
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.loadcourse=Загрузить Курс из Базы
|
||||||
|
beatrun.toolsmenu.courses.enterloadcourse=Введите код курса
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.uploadcourse=Опубликовать Текущий Курс в Базу курсов
|
||||||
|
|
||||||
|
beatrun.toolsmenu.courses.updatecourse=Обновить курс в Базе
|
||||||
|
beatrun.toolsmenu.courses.updatecoursehelp=Обновляет курс в базе по коду на текущий
|
||||||
|
|
||||||
|
# Tools Menu HUD Section
|
||||||
|
beatrun.toolsmenu.hud.name=HUD
|
||||||
|
beatrun.toolsmenu.hud.desc=Настройки HUD
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.dynamic=Динамический HUD
|
||||||
|
beatrun.toolsmenu.hud.dynamicdesc=Прячет HUD во время движения
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.sway=Покачивание HUD
|
||||||
|
beatrun.toolsmenu.hud.swaydesc=Покачивает HUD при разнообразных действиях
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.reticle=Показать Точку
|
||||||
|
beatrun.toolsmenu.hud.reticledesc=Показывает точку по середине экрана
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.nametags=Показать Ники
|
||||||
|
beatrun.toolsmenu.hud.nametagsdesc=Показывает ники над игроками
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.hudxp=Показать XP в HUD
|
||||||
|
beatrun.toolsmenu.hud.hudxpdesc=Показывает весь XP в HUD
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.wind=Эффект Ветра
|
||||||
|
beatrun.toolsmenu.hud.winddesc=Шум ветра во время бега
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.fov=Угол Обзора
|
||||||
|
beatrun.toolsmenu.hud.fovdesc=Вам нужно сделать респавн после изменения FOV!
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.hidden=Скрыть HUD
|
||||||
|
beatrun.toolsmenu.hud.hiddendesc=0 - Показать\n1 - Только режим\n2 - Скрыть полностью
|
||||||
|
|
||||||
|
beatrun.toolsmenu.hud.textcolor=Цвет Текста в HUD
|
||||||
|
beatrun.toolsmenu.hud.cornercolor=Цвет Края в HUD
|
||||||
|
beatrun.toolsmenu.hud.floatxpcolor=Цвет Всплывающего XP в HUD
|
||||||
|
|
||||||
|
# Tools Menu Viewbob Section
|
||||||
|
beatrun.toolsmenu.viewbob.name=Покачивание Камеры
|
||||||
|
beatrun.toolsmenu.viewbob.desc=Настройки покачивания камеры
|
||||||
|
|
||||||
|
beatrun.toolsmenu.viewbob.stabilization=Стабилизация Покачивания
|
||||||
|
beatrun.toolsmenu.viewbob.stabilizationdesc=Включите чтобы снизить покачивание камеры центрируя её
|
||||||
|
beatrun.toolsmenu.viewbob.intensity=Интенсивность Покачивания Камеры
|
||||||
|
|
||||||
|
# Tools Menu Gameplay Section
|
||||||
|
beatrun.toolsmenu.gameplay.name=Геймплей
|
||||||
|
beatrun.toolsmenu.gameplay.desc=Настройки геймплея
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.quickturnground=Quickturn на Земле
|
||||||
|
beatrun.toolsmenu.gameplay.quickturngrounddesc=Переключает Quickturn будучи на земле (быстрый разворот)
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.quickturnhandsonly=Quickturn Только с Руками
|
||||||
|
beatrun.toolsmenu.gameplay.quickturnhandsonlydesc=Переключает Quickturn только с "Runner Hands"
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.puristmode=Режим Purist
|
||||||
|
beatrun.toolsmenu.gameplay.puristmodedesc=Режим Purist это клиентский параметр который сильно снижает движение игрока в стороны будучи в воздухе, прямо как в оригинальное ME.\n0 = Нет ограничений\n1 = Снижает движение игрока в воздухе в стороны
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gameplay.disablegrapple=Отключить Крюк-Кошку
|
||||||
|
beatrun.toolsmenu.gameplay.disablegrappledesc=Отключает использование крюка-кошки
|
||||||
|
|
||||||
|
# Tools Menu Misc Section
|
||||||
|
beatrun.toolsmenu.misc.name=Другое
|
||||||
|
beatrun.toolsmenu.misc.desc=Другие настройки
|
||||||
|
|
||||||
|
beatrun.toolsmenu.misc.propspawn=Создание Пропов/Оружия
|
||||||
|
beatrun.toolsmenu.misc.propspawndesc=Позволяет создавать игрокам без админ прав оружие, пропы и энтити
|
||||||
|
|
||||||
|
beatrun.toolsmenu.misc.overdrivemp=Overdrive в Мультиплеере
|
||||||
|
beatrun.toolsmenu.misc.overdrivempdesc=Разрешает использование Overdrive в мультиплеере
|
||||||
|
|
||||||
|
# Tools Menu Moves Section
|
||||||
|
beatrun.toolsmenu.moves.name=Движения
|
||||||
|
beatrun.toolsmenu.moves.desc=Настройки движений
|
||||||
|
beatrun.toolsmenu.moves.help=Нырнуть Можно с Помощью Ctrl + ПКМ Будучи в Воздухе!\nOverdrive Переключается с Помощью E + ЛКМ.
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.speedlimit=Ограничение Скорости
|
||||||
|
beatrun.toolsmenu.moves.speedlimitdesc=Изменяет ограничение скорости передвижения\nПо умолчанию: 325
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.forcepuristmode=Принудительный Режим Purist
|
||||||
|
beatrun.toolsmenu.moves.forcepuristmodedesc=Включает режим Purist для всех игроков
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.realisticwallrunning="Реалистичный" Без по Стенам
|
||||||
|
beatrun.toolsmenu.moves.realisticwallrunningdesc=Нет потери в скорости если отключить
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.kickglitch=Kick Glitch
|
||||||
|
beatrun.toolsmenu.moves.kickglitchdesc=Переключает Kick Glitch\nНажмите ЛКМ во время бега по стене и зажатии/нажатии на прыжок сразу после
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.kickglitchversion=Версия Kick Glitch
|
||||||
|
beatrun.toolsmenu.moves.kickglitchversiondesc=Вкл - Старая версия\nDisabled - Новая версия\nНовая версия использует механику из ME которая создаёт небольшую платформу под игроком
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.quakejump=Quake Jump
|
||||||
|
beatrun.toolsmenu.moves.quakejumpdesc=Переключает Quake Jump\nНажмите ПКМ сразу после Side Step
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.sidestep=Side Step
|
||||||
|
beatrun.toolsmenu.moves.sidestepdesc=Переключает Side Step\nA/D + ПКМ
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.disarm=Разоружение
|
||||||
|
beatrun.toolsmenu.moves.disarmdesc=Переключает возможность разоружить (убить) NPC\nНажмите "%s" на NPC
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.divesettings=Настройки ныряния
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugeki=Totsugeki
|
||||||
|
beatrun.toolsmenu.moves.totsugekidesc=Переключает Totsugeki\nНырнуть сразу после Quake Jump
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugekispam=Спам Totsugeki
|
||||||
|
beatrun.toolsmenu.moves.totsugekispamdesc=Переключает возможность спамить Totsugeki
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugekiheading=Угол Totsugeki
|
||||||
|
beatrun.toolsmenu.moves.totsugekiheadingdesc=Позволяет делать Totsugeki по оси X (вверх/вниз)
|
||||||
|
|
||||||
|
beatrun.toolsmenu.moves.totsugekidirection=Направление Totsugeki
|
||||||
|
beatrun.toolsmenu.moves.totsugekidirectiondesc=Позволяет делать Totsugeki в направлении глаз\nCombined with Spam and Heading Allows You to Fly =)
|
||||||
|
|
||||||
|
# Tools Menu Gamemodes Section
|
||||||
|
beatrun.toolsmenu.gamemodes.name=Режимы
|
||||||
|
beatrun.toolsmenu.gamemodes.desc=Настройка режимов
|
||||||
|
beatrun.toolsmenu.gamemodes.error=Другой режим уже запущен!
|
||||||
|
|
||||||
|
beatrun.toolsmenu.gamemodesc.infection=Переключить Infection
|
||||||
|
beatrun.toolsmenu.gamemodesc.datatheft=Переключить Data Theft
|
||||||
|
beatrun.toolsmenu.gamemodesc.deathmatch=Переключить Deathmatch
|
||||||
|
|
||||||
|
# Checkpoints
|
||||||
|
beatrun.checkpoints.countdown1=Раз
|
||||||
|
beatrun.checkpoints.countdown2=Два
|
||||||
|
beatrun.checkpoints.countdown3=ПОШЁЛ!
|
||||||
|
beatrun.checkpoints.speedometer= %s км/ч
|
||||||
|
|
||||||
|
# DataTheft
|
||||||
|
beatrun.datatheft.name=Data Theft (%s)
|
||||||
|
beatrun.datatheft.start=Data Theft! Убивайте игроков, собирайте кубики и вкладывайте в банк и зарабатывайте очки
|
||||||
|
|
||||||
|
# Deathmatch
|
||||||
|
beatrun.deathmatch.name=Deathmatch
|
||||||
|
beatrun.deathmatch.start=Deathmatch! Убивайте игроков чтобы зарабатывать очки
|
||||||
|
|
||||||
|
# Infection
|
||||||
|
beatrun.infection.name=Infection
|
||||||
|
beatrun.infection.start=Infection! Дотрагивайтесь до других игроков чтобы заразить их\n%s игроков будет выбрано через %sс
|
||||||
|
beatrun.infection.nosurvivors=Никто...
|
||||||
|
beatrun.infection.infected=был заражён!
|
||||||
|
beatrun.infection.infectedby=заразил
|
||||||
|
beatrun.infection.award=Вы получили 200 XP за выживание!
|
||||||
|
beatrun.infection.awardinfected=Вы получили 100 XP за спавн заражённым!
|
||||||
|
beatrun.infection.end=Игра окончена!\nВыжившие: %s\nПерезапуск через %sс
|
|
@ -203,13 +203,13 @@ end
|
||||||
local function AEUIDraw()
|
local function AEUIDraw()
|
||||||
if AEUI.NoDraw then return end
|
if AEUI.NoDraw then return end
|
||||||
|
|
||||||
for k, v in ipairs(AEUI.Panels) do
|
for _, v in ipairs(AEUI.Panels) do
|
||||||
surface.SetAlphaMultiplier(v.alpha or 1)
|
surface.SetAlphaMultiplier(v.alpha or 1)
|
||||||
AEUI:DrawPanel(v)
|
AEUI:DrawPanel(v)
|
||||||
surface.SetAlphaMultiplier(1)
|
surface.SetAlphaMultiplier(1)
|
||||||
|
|
||||||
if v.elements then
|
if v.elements then
|
||||||
for l, b in ipairs(v.elements) do
|
for _, b in ipairs(v.elements) do
|
||||||
AEUI:DrawElement(v, b)
|
AEUI:DrawElement(v, b)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -288,7 +288,7 @@ hook.Add("StartCommand", "AEUI_StartCommand", function(ply, cmd)
|
||||||
local click = input.WasMousePressed(MOUSE_LEFT)
|
local click = input.WasMousePressed(MOUSE_LEFT)
|
||||||
|
|
||||||
if hoveredpanel then
|
if hoveredpanel then
|
||||||
for k, v in ipairs(hoveredpanel.elements) do
|
for _, v in ipairs(hoveredpanel.elements) do
|
||||||
if (v.onclick or v.hover) and (not v.greyed or not v.greyed()) and v.w and v.h then
|
if (v.onclick or v.hover) and (not v.greyed or not v.greyed()) and v.w and v.h then
|
||||||
local x = SScaleX(hoveredpanel.x) + SScaleX(v.x)
|
local x = SScaleX(hoveredpanel.x) + SScaleX(v.x)
|
||||||
local y = SScaleY(hoveredpanel.y) + SScaleY(v.y) + (hoveredpanel.scroll or 0)
|
local y = SScaleY(hoveredpanel.y) + SScaleY(v.y) + (hoveredpanel.scroll or 0)
|
||||||
|
|
|
@ -46,7 +46,7 @@ local incompatible = {
|
||||||
["2635378860"] = true, -- MW/WZ Skydive/Parachute + Infil
|
["2635378860"] = true, -- MW/WZ Skydive/Parachute + Infil
|
||||||
["2919957168"] = true, -- Modern Warfare II - Takedowns & Revive System
|
["2919957168"] = true, -- Modern Warfare II - Takedowns & Revive System
|
||||||
["2600234804"] = true, -- ASTW2 - Base Weapons
|
["2600234804"] = true, -- ASTW2 - Base Weapons
|
||||||
["2824714462"] = true, -- TFA Camera Shake
|
["2824714462"] = true, -- [TFA] Screen Shake
|
||||||
["3037375111"] = true -- Quick Slide With Legs
|
["3037375111"] = true -- Quick Slide With Legs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ local warntext = {
|
||||||
y = warnpanel.h * 0.125,
|
y = warnpanel.h * 0.125,
|
||||||
centered = true,
|
centered = true,
|
||||||
color = color_white,
|
color = color_white,
|
||||||
string = "NOTICE\nPlease disable the following addons before playing\nor submitting any issues to GitHub:"
|
string = language.GetPhrase("beatrun.addonwarning.warntext")
|
||||||
}
|
}
|
||||||
|
|
||||||
table.insert(warnpanel.elements, warntext)
|
table.insert(warnpanel.elements, warntext)
|
||||||
|
@ -92,21 +92,18 @@ local quitbutton = {
|
||||||
y = warnpanel.h * 0.85,
|
y = warnpanel.h * 0.85,
|
||||||
centered = true,
|
centered = true,
|
||||||
color = color_white,
|
color = color_white,
|
||||||
string = "Return to Main Menu",
|
string = "#beatrun.addonwarning.quitbutton",
|
||||||
onclick = function(self)
|
onclick = function(self)
|
||||||
surface.PlaySound("garrysmod/ui_click.wav")
|
surface.PlaySound("garrysmod/ui_click.wav")
|
||||||
MsgC(Color(255, 100, 100), "Quitting Beatrun due to conflicting addons!")
|
|
||||||
|
|
||||||
timer.Simple(0.5, function()
|
timer.Simple(0.2, function()
|
||||||
RunConsoleCommand("killserver")
|
RunConsoleCommand("disconnect")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
self.onclick = nil
|
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
table.insert(warnpanel.elements, quitbutton)
|
table.insert(warnpanel.elements, quitbutton)
|
||||||
AEUI:AddButton(warnpanel, "Play", warnclosebutton, "AEUIDefault", warnpanel.w * 0.5, warnpanel.h * 0.93, true)
|
AEUI:AddButton(warnpanel, "#beatrun.addonwarning.play", warnclosebutton, "AEUIDefault", warnpanel.w * 0.5, warnpanel.h * 0.93, true)
|
||||||
|
|
||||||
local conflictlist = {
|
local conflictlist = {
|
||||||
type = "Text",
|
type = "Text",
|
||||||
|
@ -133,8 +130,6 @@ local function CheckAddons()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print(conflictlist.string)
|
|
||||||
|
|
||||||
return addons
|
return addons
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -143,7 +138,7 @@ local function WarningIcon()
|
||||||
surface.SetFont("BeatrunHUD")
|
surface.SetFont("BeatrunHUD")
|
||||||
surface.SetTextPos(2, 0)
|
surface.SetTextPos(2, 0)
|
||||||
surface.SetTextColor(220, 20, 20, math.abs(math.sin(CurTime() * 2) * 255))
|
surface.SetTextColor(220, 20, 20, math.abs(math.sin(CurTime() * 2) * 255))
|
||||||
surface.DrawText("CONFLICTING ADDONS FOUND")
|
surface.DrawText("#beatrun.addonwarning.conflictfound")
|
||||||
|
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
|
|
@ -57,9 +57,10 @@ local function infostring()
|
||||||
y = math.Round(y)
|
y = math.Round(y)
|
||||||
p = math.Round(p)
|
p = math.Round(p)
|
||||||
|
|
||||||
local a = "Index: " .. BuildModeIndex .. "\nSelected: " .. table.Count(buildmode_selected) .. "\nAngle: " .. p .. ", " .. y .. ", " .. r
|
local angle = p .. ", " .. y .. ", " .. r
|
||||||
|
local str = language.GetPhrase("beatrun.buildmodehud.info"):format(BuildModeIndex, table.Count(buildmode_selected), angle)
|
||||||
|
|
||||||
return a
|
return str
|
||||||
end
|
end
|
||||||
|
|
||||||
AEUI:AddText(bminfo, infostring, "AEUIDefault", bminfo.w / 2, bminfo.h / 2 - 20, true)
|
AEUI:AddText(bminfo, infostring, "AEUIDefault", bminfo.w / 2, bminfo.h / 2 - 20, true)
|
||||||
|
@ -75,25 +76,27 @@ end
|
||||||
local function PanelElementsToggle(e)
|
local function PanelElementsToggle(e)
|
||||||
local showingents = propspanel.elements == EntitiesElements
|
local showingents = propspanel.elements == EntitiesElements
|
||||||
propspanel.elements = showingents and propspanel_elements or EntitiesElements
|
propspanel.elements = showingents and propspanel_elements or EntitiesElements
|
||||||
e.string = showingents and "Menu / Props" or "Menu / Entities"
|
|
||||||
|
e.string = showingents and "#beatrun.buildmodehud.props" or "#beatrun.buildmodehud.entities"
|
||||||
|
|
||||||
propspanel.maxscroll = nil
|
propspanel.maxscroll = nil
|
||||||
propspanel.scroll = nil
|
propspanel.scroll = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local b = AEUI:AddButton(bmbuttons, "Drag (G)", BuildModeHUDButton, "AEUIDefault", 2, 0, false)
|
local b = AEUI:AddButton(bmbuttons, "#beatrun.buildmodehud.drag", BuildModeHUDButton, "AEUIDefault", 2, 0, false)
|
||||||
b.key = KEY_G
|
b.key = KEY_G
|
||||||
b.greyed = GreyButtons
|
b.greyed = GreyButtons
|
||||||
local b = AEUI:AddButton(bmbuttons, "Copy (SHIFT+D)", BuildModeHUDButton, "AEUIDefault", 2, 25, false)
|
local b = AEUI:AddButton(bmbuttons, "#beatrun.buildmodehud.copy", BuildModeHUDButton, "AEUIDefault", 2, 25, false)
|
||||||
b.key = KEY_D
|
b.key = KEY_D
|
||||||
b.greyed = GreyButtons
|
b.greyed = GreyButtons
|
||||||
local b = AEUI:AddButton(bmbuttons, "Delete (DEL/BCKSPC)", BuildModeHUDButton, "AEUIDefault", 2, 50, false)
|
local b = AEUI:AddButton(bmbuttons, "#beatrun.buildmodehud.delete", BuildModeHUDButton, "AEUIDefault", 2, 50, false)
|
||||||
b.key = KEY_DELETE
|
b.key = KEY_DELETE
|
||||||
b.greyed = GreyButtons
|
b.greyed = GreyButtons
|
||||||
local b = AEUI:AddButton(bmbuttons, "Highlight (T)", BuildModeHUDButton, "AEUIDefault", 2, 75, false)
|
local b = AEUI:AddButton(bmbuttons, "#beatrun.buildmodehud.highlight", BuildModeHUDButton, "AEUIDefault", 2, 75, false)
|
||||||
b.key = KEY_T
|
b.key = KEY_T
|
||||||
b.greyed = GreyButtons
|
b.greyed = GreyButtons
|
||||||
|
|
||||||
AEUI:AddButton(elementstogglepanel, "Menu / Props", PanelElementsToggle, "AEUILarge", 192, 20, true)
|
AEUI:AddButton(elementstogglepanel, "#beatrun.buildmodehud.props", PanelElementsToggle, "AEUILarge", 192, 20, true)
|
||||||
|
|
||||||
local dummy = ClientsideModel("models/hunter/blocks/cube025x025x025.mdl")
|
local dummy = ClientsideModel("models/hunter/blocks/cube025x025x025.mdl")
|
||||||
|
|
||||||
|
@ -150,7 +153,6 @@ end
|
||||||
local function BMPropClick(e)
|
local function BMPropClick(e)
|
||||||
BuildModeIndex = e.prop or 0
|
BuildModeIndex = e.prop or 0
|
||||||
|
|
||||||
print(e.prop)
|
|
||||||
LocalPlayer():EmitSound("buttonclick.wav")
|
LocalPlayer():EmitSound("buttonclick.wav")
|
||||||
|
|
||||||
if BuildModeIndex == 0 then
|
if BuildModeIndex == 0 then
|
||||||
|
@ -168,7 +170,7 @@ end
|
||||||
|
|
||||||
local img = AEUI:AddImage(propspanel, Material("vgui/empty.png"), BMPropClick, 0, 0, 64, 64)
|
local img = AEUI:AddImage(propspanel, Material("vgui/empty.png"), BMPropClick, 0, 0, 64, 64)
|
||||||
img.prop = 0
|
img.prop = 0
|
||||||
img.hover = "Select"
|
img.hover = "#beatrun.buildmodehud.select"
|
||||||
local row = 1
|
local row = 1
|
||||||
local col = 0
|
local col = 0
|
||||||
|
|
||||||
|
@ -194,7 +196,7 @@ end
|
||||||
|
|
||||||
local img = AEUI:AddImage(propspanel, Material("vgui/empty.png"), BMPropClick, 64 * row, 64 * col, 64, 64)
|
local img = AEUI:AddImage(propspanel, Material("vgui/empty.png"), BMPropClick, 64 * row, 64 * col, 64, 64)
|
||||||
img.prop = 0
|
img.prop = 0
|
||||||
img.hover = "Select"
|
img.hover = "#beatrun.buildmodehud.select"
|
||||||
|
|
||||||
local function BuildModeElements()
|
local function BuildModeElements()
|
||||||
propspanel.elements = EntitiesElements
|
propspanel.elements = EntitiesElements
|
||||||
|
@ -206,7 +208,7 @@ local function BuildModeElements()
|
||||||
|
|
||||||
local img = AEUI:AddImage(propspanel, Material("vgui/empty.png"), BMPropClick, 0, 0, 64, 64)
|
local img = AEUI:AddImage(propspanel, Material("vgui/empty.png"), BMPropClick, 0, 0, 64, 64)
|
||||||
img.prop = 0
|
img.prop = 0
|
||||||
img.hover = "Select"
|
img.hover = "#beatrun.buildmodehud.select"
|
||||||
|
|
||||||
local buildmode_enticons = {
|
local buildmode_enticons = {
|
||||||
br_swingbar = Material("vgui/editor/swingbar.png"),
|
br_swingbar = Material("vgui/editor/swingbar.png"),
|
||||||
|
@ -221,7 +223,7 @@ local function BuildModeElements()
|
||||||
}
|
}
|
||||||
|
|
||||||
local buildmode_entnames = {
|
local buildmode_entnames = {
|
||||||
br_zipline = "Zipline (SHIFT = 2-Way)"
|
br_zipline = "#beatrun.buildmodehud.zipline"
|
||||||
}
|
}
|
||||||
|
|
||||||
local obsolete = Material("editor/obsolete")
|
local obsolete = Material("editor/obsolete")
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
local apikey = CreateClientConVar("Beatrun_Apikey", "0", true, false, "API key")
|
local apikey = CreateClientConVar("Beatrun_Apikey", "0", true, false, language.GetPhrase("beatrun.convars.apikey"))
|
||||||
local domain = CreateClientConVar("Beatrun_Domain", "courses.beatrun.ru", true, false, "Online courses domain")
|
local domain = CreateClientConVar("Beatrun_Domain", "courses.beatrun.ru", true, false, language.GetPhrase("beatrun.convars.domain"))
|
||||||
|
|
||||||
local QueuedArgs = NULL
|
local QueuedArgs = NULL
|
||||||
local QueuedFunction = NULL
|
local QueuedFunction = NULL
|
||||||
|
local currentMap = game.GetMap()
|
||||||
|
|
||||||
concommand.Add("Beatrun_Confirm", function()
|
concommand.Add("Beatrun_Confirm", function()
|
||||||
if QueuedArgs and QueuedFunction then
|
if QueuedArgs and QueuedFunction then
|
||||||
|
@ -29,22 +30,22 @@ local function GetCurrentMapWorkshopID()
|
||||||
|
|
||||||
_, addon_folders = file.Find("*", addon.title)
|
_, addon_folders = file.Find("*", addon.title)
|
||||||
|
|
||||||
if file.Exists("maps/" .. game.GetMap() .. ".bsp", addon.title) then return addon.wsid end
|
if file.Exists("maps/" .. currentMap .. ".bsp", addon.title) then return addon.wsid end
|
||||||
end
|
end
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
function UploadCourse()
|
function UploadCourse()
|
||||||
if Course_Name == "" or Course_ID == "" then return print("Can't upload in Freeplay") end
|
if Course_Name == "" or Course_ID == "" then return print(language.GetPhrase("beatrun.coursesdatabase.cantuploadfreeplay")) end
|
||||||
|
|
||||||
local url = domain:GetString() .. "/upload.php"
|
local url = domain:GetString() .. "/upload.php"
|
||||||
local data = file.Open("beatrun/courses/" .. game.GetMap() .. "/" .. Course_ID .. ".txt", "rb", "DATA")
|
local data = file.Open("beatrun/courses/" .. currentMap .. "/" .. Course_ID .. ".txt", "rb", "DATA")
|
||||||
local filedata = util.Decompress(data:Read(data:Size()))
|
local filedata = util.Decompress(data:Read(data:Size()))
|
||||||
|
|
||||||
http.Post(url, {
|
http.Post(url, {
|
||||||
key = apikey:GetString(),
|
key = apikey:GetString(),
|
||||||
map = string.Replace(game.GetMap(), " ", "-"),
|
map = string.Replace(currentMap, " ", "-"),
|
||||||
course_data = util.Base64Encode(filedata, true),
|
course_data = util.Base64Encode(filedata, true),
|
||||||
mapid = GetCurrentMapWorkshopID()
|
mapid = GetCurrentMapWorkshopID()
|
||||||
}, function(body, length, headers, code) -- onSuccess function
|
}, function(body, length, headers, code) -- onSuccess function
|
||||||
|
@ -61,24 +62,23 @@ end
|
||||||
concommand.Add("Beatrun_UploadCourse", function()
|
concommand.Add("Beatrun_UploadCourse", function()
|
||||||
QueuedFunction = UploadCourse
|
QueuedFunction = UploadCourse
|
||||||
|
|
||||||
print("You're trying to upload a course with the name " .. Course_Name .. " and on map " .. game.GetMap() .. ".")
|
print(language.GetPhrase("beatrun.coursesdatabase.upload1"):format(Course_Name, currentMap))
|
||||||
print("Write Beatrun_Confirm to continue, or Beatrun_Cancel to cancel.")
|
print(language.GetPhrase("beatrun.coursesdatabase.upload2"))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function GetCourse(sharecode)
|
function GetCourse(sharecode)
|
||||||
local url = domain:GetString() .. "/getcourse.php"
|
local url = domain:GetString() .. "/getcourse.php"
|
||||||
.. "?sharecode=" .. sharecode
|
.. "?sharecode=" .. sharecode
|
||||||
.. "&map=" .. string.gsub(game.GetMap(), " ", "-")
|
.. "&map=" .. string.Replace(currentMap, " ", "-")
|
||||||
.. "&key=" .. apikey:GetString()
|
.. "&key=" .. apikey:GetString()
|
||||||
|
|
||||||
http.Fetch(url, function(body, length, headers, code)
|
http.Fetch(url, function(body, length, headers, code)
|
||||||
if code == 200 then
|
if code == 200 then
|
||||||
print("Success! | Response: " .. code .. " | Length: " .. length)
|
print("Success! | Response: " .. code .. " | Length: " .. length .. "\nLoading course...")
|
||||||
print("Loading course...")
|
|
||||||
|
|
||||||
PrintTable(headers)
|
PrintTable(headers)
|
||||||
|
|
||||||
local dir = "beatrun/courses/" .. game.GetMap() .. "/"
|
local dir = "beatrun/courses/" .. currentMap .. "/"
|
||||||
file.CreateDir(dir)
|
file.CreateDir(dir)
|
||||||
local coursedata = util.Compress(body)
|
local coursedata = util.Compress(body)
|
||||||
|
|
||||||
|
@ -110,15 +110,15 @@ concommand.Add("Beatrun_LoadCode", function(ply, cmd, args, argstr)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function UpdateCourse(course_code)
|
function UpdateCourse(course_code)
|
||||||
if Course_Name == "" or Course_ID == "" then return print("Can't upload in Freeplay") end
|
if Course_Name == "" or Course_ID == "" then return print(language.GetPhrase("beatrun.coursesdatabase.cantuploadfreeplay")) end
|
||||||
|
|
||||||
local url = domain:GetString() .. "/updatecourse.php"
|
local url = domain:GetString() .. "/updatecourse.php"
|
||||||
local data = file.Open("beatrun/courses/" .. game.GetMap() .. "/" .. Course_ID .. ".txt", "rb", "DATA")
|
local data = file.Open("beatrun/courses/" .. currentMap .. "/" .. Course_ID .. ".txt", "rb", "DATA")
|
||||||
local filedata = util.Decompress(data:Read(data:Size()))
|
local filedata = util.Decompress(data:Read(data:Size()))
|
||||||
|
|
||||||
http.Post(url, {
|
http.Post(url, {
|
||||||
key = apikey:GetString(),
|
key = apikey:GetString(),
|
||||||
map = string.Replace(game.GetMap(), " ", "-"),
|
map = string.Replace(currentMap, " ", "-"),
|
||||||
course_data = util.Base64Encode(filedata, true),
|
course_data = util.Base64Encode(filedata, true),
|
||||||
code = course_code
|
code = course_code
|
||||||
}, function(body, length, headers, code) -- onSuccess function
|
}, function(body, length, headers, code) -- onSuccess function
|
||||||
|
@ -136,6 +136,6 @@ concommand.Add("Beatrun_UpdateCode", function(ply, cmd, args, argstr)
|
||||||
QueuedFunction = UpdateCourse
|
QueuedFunction = UpdateCourse
|
||||||
QueuedArgs = args[1]
|
QueuedArgs = args[1]
|
||||||
|
|
||||||
print("You're trying to update a course with this code: " .. args[1] .. ", with a course on map " .. game.GetMap() .. " and name " .. Course_Name .. ".")
|
print(language.GetPhrase("beatrun.coursesdatabase.update1"):format(QueuedArgs, Course_Name, currentMap))
|
||||||
print("Write Beatrun_Confirm to continue, or Beatrun_Cancel to cancel.")
|
print(language.GetPhrase("beatrun.coursesdatabase.upload2"))
|
||||||
end)
|
end)
|
|
@ -1,16 +1,17 @@
|
||||||
local showtotalXP = CreateClientConVar("Beatrun_HUDXP", "1", true, false, "Show total XP near nickname", 0, 1)
|
local showtotalXP = CreateClientConVar("Beatrun_HUDXP", "1", true, false, language.GetPhrase("beatrun.convars.hudxp"), 0, 1)
|
||||||
local sway = CreateClientConVar("Beatrun_HUDSway", "1", true, false, "Display HUD swaying", 0, 1)
|
local sway = CreateClientConVar("Beatrun_HUDSway", "1", true, false, language.GetPhrase("beatrun.convars.hudsway"), 0, 1)
|
||||||
local dynamic = CreateClientConVar("Beatrun_HUDDynamic", "0", true, false, "Hide HUD when moving", 0, 1)
|
local dynamic = CreateClientConVar("Beatrun_HUDDynamic", "0", true, false, language.GetPhrase("beatrun.convars.huddynamic"), 0, 1)
|
||||||
local hidden = CreateClientConVar("Beatrun_HUDHidden", "0", true, false, "Hides most of the XP HUD", 0, 2)
|
local hidden = CreateClientConVar("Beatrun_HUDHidden", "0", true, false, language.GetPhrase("beatrun.convars.hudhidden"), 0, 2)
|
||||||
local reticle = CreateClientConVar("Beatrun_HUDReticle", "1", true, false, "Display a reticle", 0, 1)
|
local reticle = CreateClientConVar("Beatrun_HUDReticle", "1", true, false, language.GetPhrase("beatrun.convars.hudreticle"), 0, 1)
|
||||||
|
|
||||||
|
CreateClientConVar("Beatrun_HUDTextColor", "255 255 255 255", true, true, language.GetPhrase("beatrun.convars.hudtextcolor"))
|
||||||
|
CreateClientConVar("Beatrun_HUDCornerColor", "20 20 20 100", true, true, language.GetPhrase("beatrun.convars.hudcornercolor"))
|
||||||
|
CreateClientConVar("Beatrun_HUDFloatingXPColor", "255 255 255 255", true, true, language.GetPhrase("beatrun.convars.hudfloatxpcolor"))
|
||||||
|
|
||||||
local packetloss = Material("vgui/packetloss.png")
|
local packetloss = Material("vgui/packetloss.png")
|
||||||
local lastloss = 0
|
local lastloss = 0
|
||||||
local MELogo = Material("vgui/MELogo.png", "mips smooth")
|
local MELogo = Material("vgui/MELogo.png", "mips smooth")
|
||||||
|
|
||||||
CreateClientConVar("Beatrun_HUDTextColor", "255 255 255 255", true, true, "HUD Text Color\nDefault: 255 255 255 255")
|
|
||||||
CreateClientConVar("Beatrun_HUDCornerColor", "20 20 20 100", true, true, "HUD Left Corner Color\nDefault: 20 20 20 100")
|
|
||||||
CreateClientConVar("Beatrun_HUDFloatingXPColor", "255 255 255 255", true, true, "HUD Floating XP Color\nDefault: 255 255 255 255")
|
|
||||||
|
|
||||||
local hide = {
|
local hide = {
|
||||||
CHudBattery = true,
|
CHudBattery = true,
|
||||||
CHudHealth = true,
|
CHudHealth = true,
|
||||||
|
@ -129,12 +130,12 @@ local function BeatrunHUD()
|
||||||
|
|
||||||
surface.SetFont("DebugFixedSmall")
|
surface.SetFont("DebugFixedSmall")
|
||||||
|
|
||||||
-- local vtext = (ply:SteamID() or "?") .. " | " .. VERSIONGLOBAL
|
local vtext = VERSIONGLOBAL
|
||||||
-- local tw, th = surface.GetTextSize(vtext)
|
local tw, _ = surface.GetTextSize(vtext)
|
||||||
-- surface.SetTextColor(255, 255, 255, 15)
|
surface.SetTextColor(255, 255, 255, 15)
|
||||||
-- surface.SetTextPos(scrw - tw, 0)
|
surface.SetTextPos(scrw - tw, 0)
|
||||||
-- surface.DrawText(vtext)
|
surface.DrawText(vtext)
|
||||||
-- surface.SetFont("BeatrunHUD")
|
surface.SetFont("BeatrunHUD")
|
||||||
|
|
||||||
local pl = ply:GetNW2Int("PLoss")
|
local pl = ply:GetNW2Int("PLoss")
|
||||||
local CT = CurTime()
|
local CT = CurTime()
|
||||||
|
@ -170,7 +171,7 @@ local function BeatrunHUD()
|
||||||
|
|
||||||
local coursename = nil
|
local coursename = nil
|
||||||
local customname = hook.Run("BeatrunHUDCourse")
|
local customname = hook.Run("BeatrunHUDCourse")
|
||||||
coursename = customname and customname or Course_Name ~= "" and "Course: " .. Course_Name or "Freeplay"
|
coursename = customname and customname or Course_Name ~= "" and language.GetPhrase("beatrun.hud.course"):format(Course_Name) or "#beatrun.hud.freeplay"
|
||||||
-- local lastxp = ply.LastXP or 0
|
-- local lastxp = ply.LastXP or 0
|
||||||
local nicktext = nil
|
local nicktext = nil
|
||||||
|
|
||||||
|
@ -223,7 +224,7 @@ local function BeatrunHUD()
|
||||||
surface.SetFont("BeatrunHUD")
|
surface.SetFont("BeatrunHUD")
|
||||||
surface.SetTextColor(text_color)
|
surface.SetTextColor(text_color)
|
||||||
surface.SetTextPos(scrw * 0.015 + vp.z, scrh * 0.9 + vp.x)
|
surface.SetTextPos(scrw * 0.015 + vp.z, scrh * 0.9 + vp.x)
|
||||||
surface.DrawText("Lv." .. ply:GetLevel())
|
surface.DrawText(language.GetPhrase("beatrun.hud.lvl"):format(ply:GetLevel()))
|
||||||
|
|
||||||
if tobool(LocalPlayer():GetInfo("Beatrun_PuristMode")) then
|
if tobool(LocalPlayer():GetInfo("Beatrun_PuristMode")) then
|
||||||
surface.SetDrawColor(230, 230, 230)
|
surface.SetDrawColor(230, 230, 230)
|
||||||
|
@ -396,7 +397,7 @@ function BeatrunLeaderboard(forced)
|
||||||
|
|
||||||
if isinfection and pbtimenum == 0 and v:GetNW2Bool("Infected") then
|
if isinfection and pbtimenum == 0 and v:GetNW2Bool("Infected") then
|
||||||
surface.SetTextColor(infectorcolor)
|
surface.SetTextColor(infectorcolor)
|
||||||
surface.DrawText(" | Infector")
|
surface.DrawText(" | " .. language.GetPhrase("beatrun.hud.infector"))
|
||||||
else
|
else
|
||||||
surface.DrawText(" | " .. pbtime)
|
surface.DrawText(" | " .. pbtime)
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,11 +16,9 @@ local animtable = {
|
||||||
fbanims = {
|
fbanims = {
|
||||||
ladderexittoplefthand = true,
|
ladderexittoplefthand = true,
|
||||||
runfwdstart = true,
|
runfwdstart = true,
|
||||||
vaultkong = true,
|
|
||||||
walktostandleft = true,
|
walktostandleft = true,
|
||||||
wallrunverticalstart = true,
|
wallrunverticalstart = true,
|
||||||
meleeair = true,
|
meleeair = true,
|
||||||
vaultonto = true,
|
|
||||||
fallinguncontrolled = true,
|
fallinguncontrolled = true,
|
||||||
stand = true,
|
stand = true,
|
||||||
meslideend = true,
|
meslideend = true,
|
||||||
|
@ -36,7 +34,6 @@ fbanims = {
|
||||||
hangheaveup = true,
|
hangheaveup = true,
|
||||||
jumpwrright = true,
|
jumpwrright = true,
|
||||||
meleeairhit = true,
|
meleeairhit = true,
|
||||||
vaultover = true,
|
|
||||||
jumpstill = true,
|
jumpstill = true,
|
||||||
dodgejumpright = true,
|
dodgejumpright = true,
|
||||||
jumpturnflyidle = true,
|
jumpturnflyidle = true,
|
||||||
|
@ -75,10 +72,8 @@ fbanims = {
|
||||||
diveslideidle = true,
|
diveslideidle = true,
|
||||||
wallrunright = true,
|
wallrunright = true,
|
||||||
diveslideend = true,
|
diveslideend = true,
|
||||||
vaultontohigh = true,
|
|
||||||
divestart = true,
|
divestart = true,
|
||||||
hangfoldedheaveup = true,
|
hangfoldedheaveup = true,
|
||||||
vaultoverhigh = true,
|
|
||||||
ziplinestart = true,
|
ziplinestart = true,
|
||||||
dodgejumpleft = true,
|
dodgejumpleft = true,
|
||||||
evaderoll = true,
|
evaderoll = true,
|
||||||
|
@ -107,6 +102,11 @@ fbanims = {
|
||||||
ladderclimbuprighthandstill = true,
|
ladderclimbuprighthandstill = true,
|
||||||
jumpidle = true,
|
jumpidle = true,
|
||||||
jumpair = true,
|
jumpair = true,
|
||||||
|
vaultkong = true,
|
||||||
|
vaultonto = true,
|
||||||
|
vaultover = true,
|
||||||
|
vaultontohigh = true,
|
||||||
|
vaultoverhigh = true,
|
||||||
walkbalancefalloffright = true,
|
walkbalancefalloffright = true,
|
||||||
meleeairstill = true,
|
meleeairstill = true,
|
||||||
swingjumpoff = true,
|
swingjumpoff = true,
|
||||||
|
@ -154,7 +154,6 @@ local events = {
|
||||||
fall = true,
|
fall = true,
|
||||||
ladderclimbleft = true,
|
ladderclimbleft = true,
|
||||||
jumpwallrun = true,
|
jumpwallrun = true,
|
||||||
vaultonto = true,
|
|
||||||
ziplinestart = true,
|
ziplinestart = true,
|
||||||
hangstrafeleft = true,
|
hangstrafeleft = true,
|
||||||
hangstraferight = true,
|
hangstraferight = true,
|
||||||
|
@ -170,7 +169,6 @@ local events = {
|
||||||
jumpslide = true,
|
jumpslide = true,
|
||||||
swingpipeleft = true,
|
swingpipeleft = true,
|
||||||
ladderenterhang = true,
|
ladderenterhang = true,
|
||||||
vault = true,
|
|
||||||
disarmsniper = true,
|
disarmsniper = true,
|
||||||
jumpstill = true,
|
jumpstill = true,
|
||||||
climb = true,
|
climb = true,
|
||||||
|
@ -204,10 +202,13 @@ local events = {
|
||||||
ladderexittoprighthand = true,
|
ladderexittoprighthand = true,
|
||||||
hangend = true,
|
hangend = true,
|
||||||
springboard = true,
|
springboard = true,
|
||||||
|
vault = true,
|
||||||
vaultkong = true,
|
vaultkong = true,
|
||||||
|
vaultonto = true,
|
||||||
|
vaultover = true,
|
||||||
|
vaultontohigh = true,
|
||||||
ladderclimbright = true,
|
ladderclimbright = true,
|
||||||
meleeairstill = true,
|
meleeairstill = true
|
||||||
vaultontohigh = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local eventslut = {
|
local eventslut = {
|
||||||
|
@ -329,9 +330,9 @@ local stillanims = {
|
||||||
|
|
||||||
local arminterrupts = {
|
local arminterrupts = {
|
||||||
punchright = true,
|
punchright = true,
|
||||||
doorbash = true,
|
|
||||||
punchmid = true,
|
|
||||||
punchleft = true,
|
punchleft = true,
|
||||||
|
punchmid = true,
|
||||||
|
doorbash = true,
|
||||||
jumpturnflypiecesign = true,
|
jumpturnflypiecesign = true,
|
||||||
standhandwallright = true,
|
standhandwallright = true,
|
||||||
standhandwallleft = true,
|
standhandwallleft = true,
|
||||||
|
@ -344,8 +345,6 @@ local transitionanims = {
|
||||||
ladderexittoplefthand = "runfwd",
|
ladderexittoplefthand = "runfwd",
|
||||||
walktostandleft = "stand",
|
walktostandleft = "stand",
|
||||||
fallinguncontrolled = "runfwd",
|
fallinguncontrolled = "runfwd",
|
||||||
vaultoverhigh = "runfwd",
|
|
||||||
vaultonto = "runfwd",
|
|
||||||
hangstrafeleft = "hang",
|
hangstrafeleft = "hang",
|
||||||
ladderclimbhangstart = "ladderclimbuprighthandstill",
|
ladderclimbhangstart = "ladderclimbuprighthandstill",
|
||||||
hanghardstart2 = "hang",
|
hanghardstart2 = "hang",
|
||||||
|
@ -361,7 +360,6 @@ local transitionanims = {
|
||||||
hangheaveup = "runfwd",
|
hangheaveup = "runfwd",
|
||||||
dodgejumpleft = "stand",
|
dodgejumpleft = "stand",
|
||||||
walkbalancefalloffleft = "jumpair",
|
walkbalancefalloffleft = "jumpair",
|
||||||
vaultover = "jumpair",
|
|
||||||
meleeairhit = "jumpair",
|
meleeairhit = "jumpair",
|
||||||
dodgejumpright = "stand",
|
dodgejumpright = "stand",
|
||||||
meleeair = "jumpair",
|
meleeair = "jumpair",
|
||||||
|
@ -379,7 +377,6 @@ local transitionanims = {
|
||||||
ladderclimbuplefthand = "ladderclimbuplefthandstill",
|
ladderclimbuplefthand = "ladderclimbuplefthandstill",
|
||||||
jumpturnfly = "jumpturnflyidle",
|
jumpturnfly = "jumpturnflyidle",
|
||||||
meleewrleft = "jumpair",
|
meleewrleft = "jumpair",
|
||||||
vaultkong = "runfwd",
|
|
||||||
meleeslide = "meslideloop",
|
meleeslide = "meslideloop",
|
||||||
stepuprightleg = "runfwd",
|
stepuprightleg = "runfwd",
|
||||||
snatchsniper = "stand",
|
snatchsniper = "stand",
|
||||||
|
@ -388,6 +385,10 @@ local transitionanims = {
|
||||||
wallrunverticalturn = "jumpslow",
|
wallrunverticalturn = "jumpslow",
|
||||||
ladderclimbuprighthand = "ladderclimbuprighthandstill",
|
ladderclimbuprighthand = "ladderclimbuprighthandstill",
|
||||||
meleeairstill = "jumpair",
|
meleeairstill = "jumpair",
|
||||||
|
vaultoverhigh = "runfwd",
|
||||||
|
vaultonto = "runfwd",
|
||||||
|
vaultover = "jumpair",
|
||||||
|
vaultkong = "runfwd",
|
||||||
vaultontohigh = "runfwd",
|
vaultontohigh = "runfwd",
|
||||||
snatchscar = "stand",
|
snatchscar = "stand",
|
||||||
water_swimfwd = "runfwd",
|
water_swimfwd = "runfwd",
|
||||||
|
@ -464,7 +465,9 @@ local worldarm = {
|
||||||
jumpturnlandidle = true,
|
jumpturnlandidle = true,
|
||||||
standhandwallright = true,
|
standhandwallright = true,
|
||||||
standhandwallleft = true,
|
standhandwallleft = true,
|
||||||
standhandwallboth = true
|
standhandwallboth = true,
|
||||||
|
swing = true,
|
||||||
|
swingstraight = true
|
||||||
}
|
}
|
||||||
|
|
||||||
local ignorezarm = {
|
local ignorezarm = {
|
||||||
|
@ -775,7 +778,14 @@ local transitionchecks = {
|
||||||
|
|
||||||
fbfunctions = {
|
fbfunctions = {
|
||||||
vaultontohigh = function(ply) return true end,
|
vaultontohigh = function(ply) return true end,
|
||||||
|
swing = function(ply)
|
||||||
|
CamIgnoreAng = false
|
||||||
|
BodyLimitY = 180
|
||||||
|
end,
|
||||||
swingstraight = function(ply)
|
swingstraight = function(ply)
|
||||||
|
CamIgnoreAng = false
|
||||||
|
BodyLimitY = 180
|
||||||
|
|
||||||
BodyAnim:SetPoseParameter("swing", (ply:GetSBOffset() / 45 - 1) * 100)
|
BodyAnim:SetPoseParameter("swing", (ply:GetSBOffset() / 45 - 1) * 100)
|
||||||
end,
|
end,
|
||||||
ziplinestart = function(ply)
|
ziplinestart = function(ply)
|
||||||
|
|
|
@ -25,12 +25,12 @@ local function buildmodebutton()
|
||||||
LocalPlayer():ConCommand("buildmode")
|
LocalPlayer():ConCommand("buildmode")
|
||||||
end
|
end
|
||||||
|
|
||||||
AEUI:AddText(coursepanel, "Time Trials - " .. game.GetMap(), "AEUIVeryLarge", 20, 30)
|
AEUI:AddText(coursepanel, language.GetPhrase("beatrun.coursemenu.trials"):format(game.GetMap()), "AEUIVeryLarge", 20, 30)
|
||||||
|
|
||||||
local buildmodebutton = AEUI:AddButton(coursepanel, "Build Mode Toggle", buildmodebutton, "AEUILarge", coursepanel.w - 400, coursepanel.h - 50)
|
local buildmodebutton = AEUI:AddButton(coursepanel, "#beatrun.coursemenu.buildmode", buildmodebutton, "AEUILarge", coursepanel.w - 400, coursepanel.h - 50)
|
||||||
buildmodebutton.greyed = sacheck
|
buildmodebutton.greyed = sacheck
|
||||||
|
|
||||||
local stopbutton = AEUI:AddButton(coursepanel, "Return to Freeplay", stopbutton, "AEUILarge", coursepanel.w - 750, coursepanel.h - 50)
|
local stopbutton = AEUI:AddButton(coursepanel, "#beatrun.coursemenu.freeplay", stopbutton, "AEUILarge", coursepanel.w - 750, coursepanel.h - 50)
|
||||||
stopbutton.greyed = sacheck
|
stopbutton.greyed = sacheck
|
||||||
|
|
||||||
local courselist = {
|
local courselist = {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
local NametagsEnable = CreateClientConVar("Beatrun_Nametags", "1", true, false, "Toggles nametags above players", 0, 1)
|
local NametagsEnable = CreateClientConVar("Beatrun_Nametags", "1", true, false, language.GetPhrase("beatrun.convars.nametags"), 0, 1)
|
||||||
|
|
||||||
local enemy = Color(255, 0, 0)
|
local enemy = Color(255, 0, 0)
|
||||||
|
|
||||||
|
|
|
@ -5,33 +5,33 @@ local function ToggleGamemode(gm)
|
||||||
end
|
end
|
||||||
|
|
||||||
hook.Add("AddToolMenuCategories", "Beatrun_Category", function()
|
hook.Add("AddToolMenuCategories", "Beatrun_Category", function()
|
||||||
spawnmenu.AddToolCategory("Beatrun", "Client", "Client")
|
spawnmenu.AddToolCategory("Beatrun", "Client", language.GetPhrase("beatrun.toolsmenu.client"))
|
||||||
spawnmenu.AddToolCategory("Beatrun", "Server", "Server")
|
spawnmenu.AddToolCategory("Beatrun", "Server", language.GetPhrase("beatrun.toolsmenu.server"))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_courses", "Courses", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_courses", language.GetPhrase("beatrun.toolsmenu.courses.name"), "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("Courses Setttings")
|
panel:SetName("#beatrun.toolsmenu.courses.desc")
|
||||||
|
|
||||||
panel:CheckBox("Fast Start", "Beatrun_FastStart")
|
panel:CheckBox("#beatrun.toolsmenu.courses.faststart", "Beatrun_FastStart")
|
||||||
panel:ControlHelp("Faster countdown in courses")
|
panel:ControlHelp("#beatrun.toolsmenu.courses.faststartdesc")
|
||||||
|
|
||||||
panel:CheckBox("Save at Checkpoint", "Beatrun_CPSave")
|
panel:CheckBox("#beatrun.toolsmenu.courses.checkpointsave", "Beatrun_CPSave")
|
||||||
panel:ControlHelp("Respawn at last hit checkpoint in courses")
|
panel:ControlHelp("#beatrun.toolsmenu.courses.checkpointsavedesc")
|
||||||
|
|
||||||
local divider = vgui.Create("DHorizontalDivider")
|
local divider = vgui.Create("DHorizontalDivider")
|
||||||
panel:AddItem(divider)
|
panel:AddItem(divider)
|
||||||
|
|
||||||
panel:TextEntry("Courses server", "Beatrun_Domain")
|
panel:TextEntry("#beatrun.toolsmenu.courses.database", "Beatrun_Domain")
|
||||||
panel:ControlHelp("Database domain\nDefault: courses.beatrun.ru")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.courses.databasedesc"))
|
||||||
|
|
||||||
local apiKeyButton = vgui.Create("DButton", panel)
|
local apiKeyButton = vgui.Create("DButton", panel)
|
||||||
apiKeyButton:SetText("Change API Key")
|
apiKeyButton:SetText("#beatrun.toolsmenu.courses.changeapikey")
|
||||||
apiKeyButton:SetSize(0, 20)
|
apiKeyButton:SetSize(0, 20)
|
||||||
apiKeyButton.DoClick = function()
|
apiKeyButton.DoClick = function()
|
||||||
local frame = vgui.Create("DFrame")
|
local frame = vgui.Create("DFrame")
|
||||||
frame:SetTitle("Enter your API Key")
|
frame:SetTitle("#beatrun.toolsmenu.courses.enterapikey")
|
||||||
frame:SetSize(300, 100)
|
frame:SetSize(300, 100)
|
||||||
frame:SetDeleteOnClose(true)
|
frame:SetDeleteOnClose(true)
|
||||||
frame:Center()
|
frame:Center()
|
||||||
|
@ -41,11 +41,13 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
TextEntry:Dock(TOP)
|
TextEntry:Dock(TOP)
|
||||||
|
|
||||||
local okButton = vgui.Create("DButton", frame)
|
local okButton = vgui.Create("DButton", frame)
|
||||||
okButton:SetText("OK")
|
okButton:SetText("#beatrun.misc.ok")
|
||||||
okButton:SetPos(25, 60)
|
okButton:SetPos(25, 60)
|
||||||
okButton:SetSize(250, 30)
|
okButton:SetSize(250, 30)
|
||||||
okButton.DoClick = function()
|
okButton.DoClick = function()
|
||||||
RunConsoleCommand("Beatrun_Apikey", TextEntry:GetValue())
|
local key = string.Replace(TextEntry:GetValue(), " ", "")
|
||||||
|
|
||||||
|
RunConsoleCommand("Beatrun_Apikey", key)
|
||||||
frame:Close()
|
frame:Close()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -55,11 +57,11 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
panel:AddItem(divider)
|
panel:AddItem(divider)
|
||||||
|
|
||||||
local saveCourseButton = vgui.Create("DButton", panel)
|
local saveCourseButton = vgui.Create("DButton", panel)
|
||||||
saveCourseButton:SetText("Save current course to a file")
|
saveCourseButton:SetText("#beatrun.toolsmenu.courses.savecourse")
|
||||||
saveCourseButton:SetSize(0, 20)
|
saveCourseButton:SetSize(0, 20)
|
||||||
saveCourseButton.DoClick = function()
|
saveCourseButton.DoClick = function()
|
||||||
local frame = vgui.Create("DFrame")
|
local frame = vgui.Create("DFrame")
|
||||||
frame:SetTitle("Enter a name for your course")
|
frame:SetTitle("#beatrun.toolsmenu.courses.namesavecourse")
|
||||||
frame:SetSize(300, 100)
|
frame:SetSize(300, 100)
|
||||||
frame:SetDeleteOnClose(true)
|
frame:SetDeleteOnClose(true)
|
||||||
frame:Center()
|
frame:Center()
|
||||||
|
@ -69,22 +71,24 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
TextEntry:Dock(TOP)
|
TextEntry:Dock(TOP)
|
||||||
|
|
||||||
local okButton = vgui.Create("DButton", frame)
|
local okButton = vgui.Create("DButton", frame)
|
||||||
okButton:SetText("OK")
|
okButton:SetText("#beatrun.misc.ok")
|
||||||
okButton:SetPos(25, 60)
|
okButton:SetPos(25, 60)
|
||||||
okButton:SetSize(250, 30)
|
okButton:SetSize(250, 30)
|
||||||
okButton.DoClick = function()
|
okButton.DoClick = function()
|
||||||
RunConsoleCommand("Beatrun_SaveCourse", TextEntry:GetValue())
|
local name = string.Replace(TextEntry:GetValue(), " ", "_")
|
||||||
|
|
||||||
|
RunConsoleCommand("Beatrun_SaveCourse", name)
|
||||||
frame:Close()
|
frame:Close()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
panel:AddItem(saveCourseButton)
|
panel:AddItem(saveCourseButton)
|
||||||
|
|
||||||
local loadCodeButton = vgui.Create("DButton", panel)
|
local loadCourseButton = vgui.Create("DButton", panel)
|
||||||
loadCodeButton:SetText("Load a course from the database")
|
loadCourseButton:SetText("#beatrun.toolsmenu.courses.loadcourse")
|
||||||
loadCodeButton:SetSize(0, 20)
|
loadCourseButton:SetSize(0, 20)
|
||||||
loadCodeButton.DoClick = function()
|
loadCourseButton.DoClick = function()
|
||||||
local frame = vgui.Create("DFrame")
|
local frame = vgui.Create("DFrame")
|
||||||
frame:SetTitle("Enter course code")
|
frame:SetTitle("#beatrun.toolsmenu.courses.enterloadcourse")
|
||||||
frame:SetSize(300, 100)
|
frame:SetSize(300, 100)
|
||||||
frame:SetDeleteOnClose(true)
|
frame:SetDeleteOnClose(true)
|
||||||
frame:Center()
|
frame:Center()
|
||||||
|
@ -94,31 +98,33 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
TextEntry:Dock(TOP)
|
TextEntry:Dock(TOP)
|
||||||
|
|
||||||
local okButton = vgui.Create("DButton", frame)
|
local okButton = vgui.Create("DButton", frame)
|
||||||
okButton:SetText("OK")
|
okButton:SetText("#beatrun.misc.ok")
|
||||||
okButton:SetPos(25, 60)
|
okButton:SetPos(25, 60)
|
||||||
okButton:SetSize(250, 30)
|
okButton:SetSize(250, 30)
|
||||||
okButton.DoClick = function()
|
okButton.DoClick = function()
|
||||||
RunConsoleCommand("Beatrun_LoadCode", TextEntry:GetValue())
|
local code = string.Replace(TextEntry:GetValue(), " ", "")
|
||||||
|
|
||||||
|
RunConsoleCommand("Beatrun_LoadCode", code)
|
||||||
frame:Close()
|
frame:Close()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
panel:AddItem(loadCodeButton)
|
panel:AddItem(loadCourseButton)
|
||||||
|
|
||||||
local uploadCourseButton = vgui.Create("DButton", panel)
|
local uploadCourseButton = vgui.Create("DButton", panel)
|
||||||
uploadCourseButton:SetText("Upload current course to the database")
|
uploadCourseButton:SetText("#beatrun.toolsmenu.courses.uploadcourse")
|
||||||
uploadCourseButton:SetSize(0, 20)
|
uploadCourseButton:SetSize(0, 20)
|
||||||
uploadCourseButton.DoClick = function()
|
uploadCourseButton.DoClick = function()
|
||||||
RunConsoleCommand("Beatrun_UploadCourse")
|
RunConsoleCommand("Beatrun_UploadCourse")
|
||||||
notification.AddLegacy("Open your console for the code!", NOTIFY_HINT, 5)
|
notification.AddLegacy("#beatrun.misc.checkconsole", NOTIFY_HINT, 5)
|
||||||
end
|
end
|
||||||
panel:AddItem(uploadCourseButton)
|
panel:AddItem(uploadCourseButton)
|
||||||
|
|
||||||
local updateCodeButton = vgui.Create("DButton", panel)
|
local updateCourseButton = vgui.Create("DButton", panel)
|
||||||
updateCodeButton:SetText("Update a course on the database")
|
updateCourseButton:SetText("#beatrun.toolsmenu.courses.updatecourse")
|
||||||
updateCodeButton:SetSize(0, 20)
|
updateCourseButton:SetSize(0, 20)
|
||||||
updateCodeButton.DoClick = function()
|
updateCourseButton.DoClick = function()
|
||||||
local frame = vgui.Create("DFrame")
|
local frame = vgui.Create("DFrame")
|
||||||
frame:SetTitle("Enter course code")
|
frame:SetTitle("#beatrun.toolsmenu.courses.enterloadcourse")
|
||||||
frame:SetSize(300, 100)
|
frame:SetSize(300, 100)
|
||||||
frame:SetDeleteOnClose(true)
|
frame:SetDeleteOnClose(true)
|
||||||
frame:Center()
|
frame:Center()
|
||||||
|
@ -128,50 +134,51 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
TextEntry:Dock(TOP)
|
TextEntry:Dock(TOP)
|
||||||
|
|
||||||
local okButton = vgui.Create("DButton", frame)
|
local okButton = vgui.Create("DButton", frame)
|
||||||
okButton:SetText("OK")
|
okButton:SetText("#beatrun.misc.ok")
|
||||||
okButton:SetPos(25, 60)
|
okButton:SetPos(25, 60)
|
||||||
okButton:SetSize(250, 30)
|
okButton:SetSize(250, 30)
|
||||||
okButton.DoClick = function()
|
okButton.DoClick = function()
|
||||||
RunConsoleCommand("Beatrun_UpdateCode", TextEntry:GetValue())
|
RunConsoleCommand("Beatrun_UpdateCode", TextEntry:GetValue())
|
||||||
notification.AddLegacy("Open your console for server's response!", NOTIFY_HINT, 5)
|
notification.AddLegacy("#beatrun.misc.checkconsole", NOTIFY_HINT, 5)
|
||||||
frame:Close()
|
frame:Close()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
panel:AddItem(updateCodeButton)
|
panel:AddItem(updateCourseButton)
|
||||||
|
panel:Help("#beatrun.toolsmenu.courses.updatecoursehelp")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_hud", "HUD", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_hud", "#beatrun.toolsmenu.hud.name", "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("HUD Setttings")
|
panel:SetName("#beatrun.toolsmenu.hud.desc")
|
||||||
|
|
||||||
panel:CheckBox("Dynamic HUD", "Beatrun_HUDDynamic")
|
panel:CheckBox("#beatrun.toolsmenu.hud.dynamic", "Beatrun_HUDDynamic")
|
||||||
panel:ControlHelp("Hides HUD when moving")
|
panel:ControlHelp("#beatrun.toolsmenu.hud.dynamicdesc")
|
||||||
|
|
||||||
panel:CheckBox("HUD Sway", "Beatrun_HUDSway")
|
panel:CheckBox("#beatrun.toolsmenu.hud.sway", "Beatrun_HUDSway")
|
||||||
panel:ControlHelp("Toggles HUD swaying")
|
panel:ControlHelp("#beatrun.toolsmenu.hud.swaydesc")
|
||||||
|
|
||||||
panel:CheckBox("Dot", "Beatrun_HUDReticle")
|
panel:CheckBox("#beatrun.toolsmenu.hud.reticle", "Beatrun_HUDReticle")
|
||||||
panel:ControlHelp("Shows a dot in the center of the screen")
|
panel:ControlHelp("#beatrun.toolsmenu.hud.reticledesc")
|
||||||
|
|
||||||
panel:CheckBox("Nametags", "Beatrun_Nametags")
|
panel:CheckBox("#beatrun.toolsmenu.hud.nametags", "Beatrun_Nametags")
|
||||||
panel:ControlHelp("Toggles nametags above players")
|
panel:ControlHelp("#beatrun.toolsmenu.hud.nametagsdesc")
|
||||||
|
|
||||||
panel:CheckBox("Floating XP", "Beatrun_HUDXP")
|
panel:CheckBox("#beatrun.toolsmenu.hud.hudxp", "Beatrun_HUDXP")
|
||||||
panel:ControlHelp("Show total XP near your nickname")
|
panel:ControlHelp("#beatrun.toolsmenu.hud.hudxpdesc")
|
||||||
|
|
||||||
panel:CheckBox("Wind", "Beatrun_Wind")
|
panel:CheckBox("#beatrun.toolsmenu.hud.wind", "Beatrun_Wind")
|
||||||
panel:ControlHelp("Wind noises when running")
|
panel:ControlHelp("#beatrun.toolsmenu.hud.winddesc")
|
||||||
|
|
||||||
panel:NumSlider("FOV", "Beatrun_FOV", 90, 120, 0)
|
panel:NumSlider("#beatrun.toolsmenu.hud.fov", "Beatrun_FOV", 90, 120, 0)
|
||||||
panel:ControlHelp("You need to respawn after changing the FOV!")
|
panel:Help("#beatrun.toolsmenu.hud.fovdesc")
|
||||||
|
|
||||||
panel:NumSlider("Hide HUD", "Beatrun_HUDHidden", 0, 2, 0)
|
panel:NumSlider("#beatrun.toolsmenu.hud.hidden", "Beatrun_HUDHidden", 0, 2, 0)
|
||||||
panel:ControlHelp("0 - Shown\n1 - Gamemode only\n2 - Hidden")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.hud.hiddendesc"))
|
||||||
|
|
||||||
local divider = vgui.Create("DHorizontalDivider")
|
local divider = vgui.Create("DHorizontalDivider")
|
||||||
panel:AddItem(divider)
|
panel:AddItem(divider)
|
||||||
|
|
||||||
panel:Help("HUD Text Color")
|
panel:Help("#beatrun.toolsmenu.hud.textcolor")
|
||||||
local HudTextColor = vgui.Create("DColorMixer", panel)
|
local HudTextColor = vgui.Create("DColorMixer", panel)
|
||||||
HudTextColor:Dock(FILL)
|
HudTextColor:Dock(FILL)
|
||||||
HudTextColor:SetPalette(true)
|
HudTextColor:SetPalette(true)
|
||||||
|
@ -183,7 +190,7 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
end
|
end
|
||||||
panel:AddItem(HudTextColor)
|
panel:AddItem(HudTextColor)
|
||||||
|
|
||||||
panel:Help("HUD Corners Color")
|
panel:Help("#beatrun.toolsmenu.hud.cornercolor")
|
||||||
local HudCornerColor = vgui.Create("DColorMixer", panel)
|
local HudCornerColor = vgui.Create("DColorMixer", panel)
|
||||||
HudCornerColor:Dock(FILL)
|
HudCornerColor:Dock(FILL)
|
||||||
HudCornerColor:SetPalette(true)
|
HudCornerColor:SetPalette(true)
|
||||||
|
@ -195,7 +202,7 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
end
|
end
|
||||||
panel:AddItem(HudCornerColor)
|
panel:AddItem(HudCornerColor)
|
||||||
|
|
||||||
panel:Help("HUD Floating XP Color")
|
panel:Help("#beatrun.toolsmenu.hud.floatxpcolor")
|
||||||
local HudFXPColor = vgui.Create("DColorMixer", panel)
|
local HudFXPColor = vgui.Create("DColorMixer", panel)
|
||||||
HudFXPColor:Dock(FILL)
|
HudFXPColor:Dock(FILL)
|
||||||
HudFXPColor:SetPalette(true)
|
HudFXPColor:SetPalette(true)
|
||||||
|
@ -208,106 +215,109 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
panel:AddItem(HudFXPColor)
|
panel:AddItem(HudFXPColor)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_viewbob", "Viewbob", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_viewbob", "#beatrun.toolsmenu.viewbob.name", "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("Viewbob Settings")
|
panel:SetName("#beatrun.toolsmenu.viewbob.desc")
|
||||||
|
|
||||||
panel:CheckBox("Viewbob Stabilization", "Beatrun_ViewbobStabilized")
|
panel:CheckBox("#beatrun.toolsmenu.viewbob.stabilization", "Beatrun_ViewbobStabilized")
|
||||||
panel:ControlHelp("Turn on to reduce motion sickness by making viewbobbing keep the player's look position centered")
|
panel:ControlHelp("#beatrun.toolsmenu.viewbob.stabilizationdesc")
|
||||||
panel:NumSlider("Viewbob Intensity", "Beatrun_ViewbobIntensity", -100, 100, 0)
|
|
||||||
|
panel:NumSlider("#beatrun.toolsmenu.viewbob.intensity", "Beatrun_ViewbobIntensity", -100, 100, 0)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_gameplay", "Gameplay", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Client", "beatrun_gameplay", "#beatrun.toolsmenu.gameplay.name", "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("Gameplay Settings")
|
panel:SetName("#beatrun.toolsmenu.gameplay.desc")
|
||||||
|
|
||||||
panel:CheckBox("Quickturn", "Beatrun_QuickturnGround")
|
panel:CheckBox("#beatrun.toolsmenu.gameplay.quickturnground", "Beatrun_QuickturnGround")
|
||||||
panel:ControlHelp("Enables quickturning with secondary attack while on the ground")
|
panel:ControlHelp("#beatrun.toolsmenu.gameplay.quickturngrounddesc")
|
||||||
|
|
||||||
panel:CheckBox("Quickturn Hands Only", "Beatrun_QuickturnHandsOnly")
|
panel:CheckBox("#beatrun.toolsmenu.gameplay.quickturnhandsonly", "Beatrun_QuickturnHandsOnly")
|
||||||
panel:ControlHelp("Enables quickturning with \"Runner Hands\" only")
|
panel:ControlHelp("#beatrun.toolsmenu.gameplay.quickturnhandsonlydesc")
|
||||||
|
|
||||||
panel:CheckBox("Purist Mode", "Beatrun_PuristMode")
|
panel:CheckBox("#beatrun.toolsmenu.gameplay.puristmode", "Beatrun_PuristMode")
|
||||||
panel:ControlHelp("Purist mode is a clientside preference that severely weakens the ability to strafe while in the air, which is how Mirror's Edge games handle this.\nDisabled = No restrictions\nEnabled = Reduced move speed in the air")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.gameplay.puristmodedesc"))
|
||||||
|
|
||||||
panel:CheckBox("Disable Grapple Ability", "Beatrun_DisableGrapple")
|
panel:CheckBox("#beatrun.toolsmenu.gameplay.disablegrapple", "Beatrun_DisableGrapple")
|
||||||
panel:ControlHelp("Disables grapple ability")
|
panel:ControlHelp("#beatrun.toolsmenu.gameplay.disablegrappledesc")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_main", "Main", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_misc", "#beatrun.toolsmenu.misc.name", "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("Misc Settings")
|
panel:SetName("#beatrun.toolsmenu.misc.desc")
|
||||||
|
|
||||||
panel:CheckBox("Prop Spawning", "Beatrun_AllowPropSpawn")
|
panel:CheckBox("#beatrun.toolsmenu.misc.propspawn", "Beatrun_AllowPropSpawn")
|
||||||
panel:ControlHelp("Allows players without admin rights to spawn props, entities and weapons")
|
panel:ControlHelp("#beatrun.toolsmenu.misc.propspawndesc")
|
||||||
|
|
||||||
panel:CheckBox("Overdrive in Multiplayer", "Beatrun_AllowOverdriveInMultiplayer")
|
panel:CheckBox("#beatrun.toolsmenu.misc.overdrivemp", "Beatrun_AllowOverdriveInMultiplayer")
|
||||||
panel:ControlHelp("Allows Overdrive usage on the server\nDoesn't affect singleplayer")
|
panel:ControlHelp("#beatrun.toolsmenu.misc.overdrivempdesc")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_moves", "Moves", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_moves", "#beatrun.toolsmenu.moves.name", "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("Moves Settings")
|
panel:SetName("#beatrun.toolsmenu.moves.desc")
|
||||||
panel:Help("You Can Dive with Ctrl + RMB While Midair!\nOverdrive Toggles with E + LMB.")
|
panel:Help(language.GetPhrase("beatrun.toolsmenu.moves.help"))
|
||||||
|
|
||||||
panel:NumSlider("Speed Limit", "Beatrun_SpeedLimit", 325, 1000, 0)
|
panel:NumSlider("#beatrun.toolsmenu.moves.speedlimit", "Beatrun_SpeedLimit", 325, 1000, 0)
|
||||||
panel:ControlHelp("Changes player's speed limit (325 is default)")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.speedlimitdesc"))
|
||||||
|
|
||||||
panel:CheckBox("Force Purist Mode", "Beatrun_PuristModeForce")
|
panel:CheckBox("#beatrun.toolsmenu.moves.forcepuristmode", "Beatrun_PuristModeForce")
|
||||||
panel:ControlHelp("Forces Purist Mode for all players")
|
panel:ControlHelp("#beatrun.toolsmenu.moves.forcepuristmodedesc")
|
||||||
|
|
||||||
panel:CheckBox("\"Realistic\" wallrunning", "Beatrun_PuristWallrun")
|
panel:CheckBox("#beatrun.toolsmenu.moves.realisticwallrunning", "Beatrun_PuristWallrun")
|
||||||
panel:ControlHelp("You don't lose speed when starting wallrunning when disabled")
|
panel:ControlHelp("#beatrun.toolsmenu.moves.realisticwallrunningdesc")
|
||||||
|
|
||||||
local divider = vgui.Create("DHorizontalDivider")
|
local divider = vgui.Create("DHorizontalDivider")
|
||||||
panel:AddItem(divider)
|
panel:AddItem(divider)
|
||||||
|
|
||||||
panel:CheckBox("Kick-Glitch", "Beatrun_KickGlitch")
|
panel:CheckBox("#beatrun.toolsmenu.moves.kickglitch", "Beatrun_KickGlitch")
|
||||||
panel:ControlHelp("Toggles Kick-Glitch Move\nLMB when Wallrunning and Then Jumping Right After")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.kickglitchdesc"))
|
||||||
|
|
||||||
panel:CheckBox("Kick-Glitch Version", "Beatrun_OldKickGlitch")
|
panel:CheckBox("#beatrun.toolsmenu.moves.kickglitchversion", "Beatrun_OldKickGlitch")
|
||||||
panel:ControlHelp("Enabled - Old Kick-Glitch\nDisabled - New Kick-Glitch\nNew version uses mechanic from Mirror's Edge that spawns a small platform under a player")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.kickglitchversiondesc"))
|
||||||
|
|
||||||
panel:CheckBox("Quake Jump", "Beatrun_QuakeJump")
|
panel:CheckBox("#beatrun.toolsmenu.moves.quakejump", "Beatrun_QuakeJump")
|
||||||
panel:ControlHelp("Toggles Quake Jump Move\nPress RMB Right After Side Step")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.quakejumpdesc"))
|
||||||
|
|
||||||
panel:CheckBox("Side Step", "Beatrun_SideStep")
|
panel:CheckBox("#beatrun.toolsmenu.moves.sidestep", "Beatrun_SideStep")
|
||||||
panel:ControlHelp("Toggles Side Step Move\nA/D + RMB")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.sidestepdesc"))
|
||||||
|
|
||||||
panel:CheckBox("Disarm", "Beatrun_Disarm")
|
panel:CheckBox("#beatrun.toolsmenu.moves.disarm", "Beatrun_Disarm")
|
||||||
panel:ControlHelp("Toggles Ability to Disarm NPC\nInteract with NPC")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.disarmdesc"):format(IN_USE))
|
||||||
|
|
||||||
local divider = vgui.Create("DHorizontalDivider")
|
local divider = vgui.Create("DHorizontalDivider")
|
||||||
panel:AddItem(divider)
|
panel:AddItem(divider)
|
||||||
|
|
||||||
panel:Help("Dive Settings")
|
panel:Help("#beatrun.toolsmenu.moves.divesettings")
|
||||||
|
|
||||||
panel:CheckBox("Totsugeki", "Beatrun_Totsugeki")
|
panel:CheckBox("#beatrun.toolsmenu.moves.totsugeki", "Beatrun_Totsugeki")
|
||||||
panel:ControlHelp("Toggles Totsugeki Move\nDive After Quake Jump")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.totsugekidesc"))
|
||||||
|
|
||||||
panel:CheckBox("Totsugeki Spam", "Beatrun_TotsugekiSpam")
|
panel:CheckBox("#beatrun.toolsmenu.moves.totsugekispam", "Beatrun_TotsugekiSpam")
|
||||||
panel:ControlHelp("Toggles Ability to Spam Totsugeki")
|
panel:ControlHelp("#beatrun.toolsmenu.moves.totsugekispamdesc")
|
||||||
|
|
||||||
panel:CheckBox("Totsugeki Heading", "Beatrun_TotsugekiHeading")
|
panel:CheckBox("#beatrun.toolsmenu.moves.totsugekiheading", "Beatrun_TotsugekiHeading")
|
||||||
panel:ControlHelp("Allows to Totsugeki on X axis (up/down)")
|
panel:ControlHelp("#beatrun.toolsmenu.moves.totsugekiheadingdesc")
|
||||||
|
|
||||||
panel:CheckBox("Totsugeki Direction", "Beatrun_TotsugekiDir")
|
panel:CheckBox("#beatrun.toolsmenu.moves.totsugekidirection", "Beatrun_TotsugekiDir")
|
||||||
panel:ControlHelp("Allows to Totsugeki into Another Direction\nCombined with Spam and Heading Allows You to Fly =)")
|
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.totsugekidirectiondesc"))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_gamemodes", "Gamemodes", "", "", function(panel)
|
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_gamemodes", "#beatrun.toolsmenu.gamemodes.name", "", "", function(panel)
|
||||||
panel:ClearControls()
|
panel:ClearControls()
|
||||||
panel:SetName("Gamemodes Settings")
|
panel:SetName("#beatrun.toolsmenu.gamemodes.desc")
|
||||||
|
|
||||||
local InfectionButton = vgui.Create("DButton", panel)
|
local InfectionButton = vgui.Create("DButton", panel)
|
||||||
InfectionButton:SetText("Toggle Infection Gamemode")
|
InfectionButton:SetText("#beatrun.toolsmenu.gamemodesc.infection")
|
||||||
InfectionButton:SetSize(0, 20)
|
InfectionButton:SetSize(0, 20)
|
||||||
InfectionButton.DoClick = function()
|
InfectionButton.DoClick = function()
|
||||||
if GetGlobalBool("GM_DEATHMATCH") or GetGlobalBool("GM_DATATHEFT") then
|
if GetGlobalBool("GM_DEATHMATCH") or GetGlobalBool("GM_DATATHEFT") then
|
||||||
InfectionButton:SetText("Another gamemode is running!")
|
InfectionButton:SetText("#beatrun.toolsmenu.gamemodes.error")
|
||||||
|
|
||||||
timer.Simple(2, function()
|
timer.Simple(2, function()
|
||||||
InfectionButton:SetText("Toggle Infection Gamemode")
|
InfectionButton:SetText("#beatrun.toolsmenu.gamemodesc.infection")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -316,14 +326,16 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
panel:AddItem(InfectionButton)
|
panel:AddItem(InfectionButton)
|
||||||
|
|
||||||
local DatatheftButton = vgui.Create("DButton", panel)
|
local DatatheftButton = vgui.Create("DButton", panel)
|
||||||
DatatheftButton:SetText("Toggle Data Theft Gamemode")
|
DatatheftButton:SetText("#beatrun.toolsmenu.gamemodesc.datatheft")
|
||||||
DatatheftButton:SetSize(0, 20)
|
DatatheftButton:SetSize(0, 20)
|
||||||
DatatheftButton.DoClick = function()
|
DatatheftButton.DoClick = function()
|
||||||
if GetGlobalBool("GM_INFECTION") or GetGlobalBool("GM_DEATHMATCH") then
|
if GetGlobalBool("GM_INFECTION") or GetGlobalBool("GM_DEATHMATCH") then
|
||||||
DatatheftButton:SetText("Another gamemode is running!")
|
DatatheftButton:SetText("#beatrun.toolsmenu.gamemodes.error")
|
||||||
|
|
||||||
timer.Simple(2, function()
|
timer.Simple(2, function()
|
||||||
DatatheftButton:SetText("Toggle Data Theft Gamemode")
|
DatatheftButton:SetText("#beatrun.toolsmenu.gamemodesc.datatheft")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -332,14 +344,16 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
|
||||||
panel:AddItem(DatatheftButton)
|
panel:AddItem(DatatheftButton)
|
||||||
|
|
||||||
local DeathmatchButton = vgui.Create("DButton", panel)
|
local DeathmatchButton = vgui.Create("DButton", panel)
|
||||||
DeathmatchButton:SetText("Toggle Deathmatch Gamemode")
|
DeathmatchButton:SetText("#beatrun.toolsmenu.gamemodesc.deathmatch")
|
||||||
DeathmatchButton:SetSize(0, 20)
|
DeathmatchButton:SetSize(0, 20)
|
||||||
DeathmatchButton.DoClick = function()
|
DeathmatchButton.DoClick = function()
|
||||||
if GetGlobalBool("GM_INFECTION") or GetGlobalBool("GM_DATATHEFT") then
|
if GetGlobalBool("GM_INFECTION") or GetGlobalBool("GM_DATATHEFT") then
|
||||||
DeathmatchButton:SetText("Another gamemode is running!")
|
DeathmatchButton:SetText("#beatrun.toolsmenu.gamemodes.error")
|
||||||
|
|
||||||
timer.Simple(2, function()
|
timer.Simple(2, function()
|
||||||
DeathmatchButton:SetText("Toggle Deathmatch Gamemode")
|
DeathmatchButton:SetText("#beatrun.toolsmenu.gamemodesc.deathmatch")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ local meta = FindMetaTable("Player")
|
||||||
local metavec = FindMetaTable("Vector")
|
local metavec = FindMetaTable("Vector")
|
||||||
local PUNCH_DAMPING = 9
|
local PUNCH_DAMPING = 9
|
||||||
local PUNCH_SPRING_CONSTANT = 120
|
local PUNCH_SPRING_CONSTANT = 120
|
||||||
local viewbob_intensity = CreateClientConVar("Beatrun_ViewbobIntensity", "20", true, true, "Viewbob Intensity", -100, 100)
|
local viewbob_intensity = CreateClientConVar("Beatrun_ViewbobIntensity", "20", true, true, language.GetPhrase("beatrun.convars.viewbob"), -100, 100)
|
||||||
local viewbob_stabilized = CreateClientConVar("Beatrun_ViewbobStabilized", "0", true, true, "Turn on to reduce motion sickness by making viewbobbing keep the player's look position centered", 0, 1)
|
local viewbob_stabilized = CreateClientConVar("Beatrun_ViewbobStabilized", "0", true, true, language.GetPhrase("beatrun.convars.viewbobstabilization"), 0, 1)
|
||||||
|
|
||||||
local function lensqr(ang)
|
local function lensqr(ang)
|
||||||
return ang[1] ^ 2 + ang[2] ^ 2 + ang[3] ^ 2
|
return ang[1] ^ 2 + ang[2] ^ 2 + ang[3] ^ 2
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
if SERVER then
|
if SERVER then
|
||||||
local allowPropSpawn = CreateConVar("Beatrun_AllowPropSpawn", "0", {FCVAR_ARCHIVE}, "Allow players to spawn props and entities")
|
local allowPropSpawn = CreateConVar("Beatrun_AllowPropSpawn", "0", {FCVAR_ARCHIVE})
|
||||||
|
|
||||||
util.AddNetworkString("SPParkourEvent")
|
util.AddNetworkString("SPParkourEvent")
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@ if SERVER then
|
||||||
end
|
end
|
||||||
|
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
CreateClientConVar("Beatrun_FOV", 100, true, true, "'Woah how are you moving this fast' and other hilarious jokes", 70, 120)
|
CreateClientConVar("Beatrun_FOV", 100, true, true, language.GetPhrase("beatrun.convars.fov"), 70, 120)
|
||||||
CreateClientConVar("Beatrun_CPSave", 1, true, true, "Respawning during a course will go back to the last hit checkpoint", 0, 1)
|
CreateClientConVar("Beatrun_CPSave", 1, true, true, language.GetPhrase("beatrun.convars.cpsave"), 0, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
hook.Add("PlayerNoClip", "BlockNoClip", function(ply, enabled)
|
hook.Add("PlayerNoClip", "BlockNoClip", function(ply, enabled)
|
||||||
|
@ -30,9 +30,9 @@ hook.Add("PlayerNoClip", "BlockNoClip", function(ply, enabled)
|
||||||
ply:SetNW2Int("CPNum", -1)
|
ply:SetNW2Int("CPNum", -1)
|
||||||
|
|
||||||
if CLIENT and IsFirstTimePredicted() then
|
if CLIENT and IsFirstTimePredicted() then
|
||||||
notification.AddLegacy("Noclip Detected! Respawn to restart the course", NOTIFY_ERROR, 4)
|
notification.AddLegacy(language.GetPhrase("beatrun.misc.noclipdetected"), NOTIFY_ERROR, 4)
|
||||||
elseif SERVER and game.SinglePlayer() then
|
elseif SERVER and game.SinglePlayer() then
|
||||||
ply:SendLua("notification.AddLegacy(\"Noclip Detected! Respawn to restart the course\", NOTIFY_ERROR, 4)")
|
ply:SendLua("notification.AddLegacy(\"#beatrun.misc.noclipdetected\", NOTIFY_ERROR, 4)")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -111,12 +111,6 @@ hook.Add("CanDrive", "BlockDrive", function(ply)
|
||||||
if not ply:IsAdmin() then return false end
|
if not ply:IsAdmin() then return false end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
hook.Add("SetupMove", "idkhowitworksbutitworks_DiveAnimsFix", function(ply, mv)
|
|
||||||
local weapon = ply:GetActiveWeapon()
|
|
||||||
|
|
||||||
if not IsValid(weapon) then return end
|
|
||||||
end)
|
|
||||||
|
|
||||||
if CLIENT and game.SinglePlayer() then
|
if CLIENT and game.SinglePlayer() then
|
||||||
net.Receive("SPParkourEvent", function()
|
net.Receive("SPParkourEvent", function()
|
||||||
local event = net.ReadString()
|
local event = net.ReadString()
|
||||||
|
|
|
@ -328,9 +328,6 @@ if SERVER then
|
||||||
util.AddNetworkString("BuildMode_Sync")
|
util.AddNetworkString("BuildMode_Sync")
|
||||||
util.AddNetworkString("Course_Stop")
|
util.AddNetworkString("Course_Stop")
|
||||||
|
|
||||||
buildmodelogs = {}
|
|
||||||
local buildmodelogs = buildmodelogs
|
|
||||||
|
|
||||||
function Course_Sync()
|
function Course_Sync()
|
||||||
net.Start("BuildMode_Sync")
|
net.Start("BuildMode_Sync")
|
||||||
net.WriteFloat(Course_StartPos.x)
|
net.WriteFloat(Course_StartPos.x)
|
||||||
|
@ -428,10 +425,6 @@ if SERVER then
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(buildmode_placed, a)
|
table.insert(buildmode_placed, a)
|
||||||
|
|
||||||
local bmlog = tostring(ply) .. " placed " .. tostring(a)
|
|
||||||
|
|
||||||
table.insert(buildmodelogs, bmlog)
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
net.Receive("BuildMode_Duplicate", function(len, ply)
|
net.Receive("BuildMode_Duplicate", function(len, ply)
|
||||||
|
@ -440,7 +433,7 @@ if SERVER then
|
||||||
local selected = net.ReadTable()
|
local selected = net.ReadTable()
|
||||||
local selectedents = net.ReadTable()
|
local selectedents = net.ReadTable()
|
||||||
|
|
||||||
for k, v in pairs(selected) do
|
for _, v in pairs(selected) do
|
||||||
local a = ents.Create("prop_physics")
|
local a = ents.Create("prop_physics")
|
||||||
a:SetModel(v:GetModel())
|
a:SetModel(v:GetModel())
|
||||||
|
|
||||||
|
@ -461,17 +454,13 @@ if SERVER then
|
||||||
a:SetHealth(inf)
|
a:SetHealth(inf)
|
||||||
end
|
end
|
||||||
|
|
||||||
for k, v in pairs(selectedents) do
|
for _, v in pairs(selectedents) do
|
||||||
local a = ents.Create(v:GetClass())
|
local a = ents.Create(v:GetClass())
|
||||||
|
|
||||||
a:SetPos(v:GetPos())
|
a:SetPos(v:GetPos())
|
||||||
a:SetAngles(v:GetAngles())
|
a:SetAngles(v:GetAngles())
|
||||||
a:Spawn()
|
a:Spawn()
|
||||||
end
|
end
|
||||||
|
|
||||||
local bmlog = tostring(ply) .. " duped " .. tostring(table.Count(selected)) .. " props"
|
|
||||||
|
|
||||||
table.insert(buildmodelogs, bmlog)
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
net.Receive("BuildMode_Delete", function(len, ply)
|
net.Receive("BuildMode_Delete", function(len, ply)
|
||||||
|
@ -479,15 +468,11 @@ if SERVER then
|
||||||
|
|
||||||
local selected = net.ReadTable()
|
local selected = net.ReadTable()
|
||||||
|
|
||||||
for k, v in pairs(selected) do
|
for _, v in pairs(selected) do
|
||||||
if IsValid(v) then
|
if IsValid(v) then
|
||||||
v:Remove()
|
v:Remove()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local bmlog = tostring(ply) .. " deleted " .. tostring(table.Count(selected)) .. " entities"
|
|
||||||
|
|
||||||
table.insert(buildmodelogs, bmlog)
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
net.Receive("BuildMode_Highlight", function(len, ply)
|
net.Receive("BuildMode_Highlight", function(len, ply)
|
||||||
|
@ -495,7 +480,7 @@ if SERVER then
|
||||||
|
|
||||||
local selected = net.ReadTable()
|
local selected = net.ReadTable()
|
||||||
|
|
||||||
for k, v in pairs(selected) do
|
for _, v in pairs(selected) do
|
||||||
v.hr = not v.hr
|
v.hr = not v.hr
|
||||||
|
|
||||||
CustomPropMat(v)
|
CustomPropMat(v)
|
||||||
|
@ -516,7 +501,7 @@ if SERVER then
|
||||||
local a = util.Decompress(net.ReadData(len))
|
local a = util.Decompress(net.ReadData(len))
|
||||||
local props = util.JSONToTable(a)
|
local props = util.JSONToTable(a)
|
||||||
|
|
||||||
for k, v in pairs(props) do
|
for _, v in pairs(props) do
|
||||||
local a = ents.Create("prop_physics")
|
local a = ents.Create("prop_physics")
|
||||||
|
|
||||||
a:SetModel(buildmode_props[v.model])
|
a:SetModel(buildmode_props[v.model])
|
||||||
|
@ -616,7 +601,7 @@ if SERVER then
|
||||||
local name = data[5]
|
local name = data[5]
|
||||||
local entities = data[6]
|
local entities = data[6]
|
||||||
|
|
||||||
for k, v in pairs(props) do
|
for _, v in pairs(props) do
|
||||||
local a = ents.Create("prop_physics")
|
local a = ents.Create("prop_physics")
|
||||||
a.hr = v.hr
|
a.hr = v.hr
|
||||||
a:SetModel(buildmode_props[v.model])
|
a:SetModel(buildmode_props[v.model])
|
||||||
|
@ -634,7 +619,7 @@ if SERVER then
|
||||||
a:SetHealth(inf)
|
a:SetHealth(inf)
|
||||||
end
|
end
|
||||||
|
|
||||||
for k, v in ipairs(cp) do
|
for _, v in ipairs(cp) do
|
||||||
LoadCheckpoints()
|
LoadCheckpoints()
|
||||||
|
|
||||||
local a = ents.Create("tt_cp")
|
local a = ents.Create("tt_cp")
|
||||||
|
@ -646,7 +631,7 @@ if SERVER then
|
||||||
end
|
end
|
||||||
|
|
||||||
if entities then
|
if entities then
|
||||||
for k, v in ipairs(entities) do
|
for _, v in ipairs(entities) do
|
||||||
local a = ents.Create(v.ent)
|
local a = ents.Create(v.ent)
|
||||||
local dontsetpos = nil
|
local dontsetpos = nil
|
||||||
|
|
||||||
|
@ -671,7 +656,7 @@ if SERVER then
|
||||||
|
|
||||||
Course_Sync()
|
Course_Sync()
|
||||||
|
|
||||||
for k, v in pairs(player.GetAll()) do
|
for _, v in pairs(player.GetAll()) do
|
||||||
v:SetNW2Float("PBTime", 0)
|
v:SetNW2Float("PBTime", 0)
|
||||||
v:SetNW2Int("CPNum", 1)
|
v:SetNW2Int("CPNum", 1)
|
||||||
v:SetMoveType(MOVETYPE_WALK)
|
v:SetMoveType(MOVETYPE_WALK)
|
||||||
|
@ -903,7 +888,7 @@ if CLIENT then
|
||||||
function CourseData(name)
|
function CourseData(name)
|
||||||
local save = {{}, {}, Course_StartPos, Course_StartAng, name or "Unnamed", {}}
|
local save = {{}, {}, Course_StartPos, Course_StartAng, name or "Unnamed", {}}
|
||||||
|
|
||||||
for k, v in pairs(buildmode_placed) do
|
for _, v in pairs(buildmode_placed) do
|
||||||
if not IsValid(v) then -- Nothing
|
if not IsValid(v) then -- Nothing
|
||||||
elseif v:GetNW2Bool("BRProtected") then
|
elseif v:GetNW2Bool("BRProtected") then
|
||||||
print("ignoring protected ent")
|
print("ignoring protected ent")
|
||||||
|
@ -935,7 +920,7 @@ if CLIENT then
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for k, v in ipairs(Checkpoints) do
|
for _, v in ipairs(Checkpoints) do
|
||||||
table.insert(save[2], v:GetPos())
|
table.insert(save[2], v:GetPos())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -963,7 +948,6 @@ if CLIENT then
|
||||||
|
|
||||||
concommand.Add("Beatrun_SaveCourse", function(ply, cmd, args, argstr)
|
concommand.Add("Beatrun_SaveCourse", function(ply, cmd, args, argstr)
|
||||||
local name = args[1] or "Unnamed"
|
local name = args[1] or "Unnamed"
|
||||||
-- local compress = not args[2]
|
|
||||||
|
|
||||||
SaveCourse(name, args[2])
|
SaveCourse(name, args[2])
|
||||||
end)
|
end)
|
||||||
|
@ -1458,7 +1442,7 @@ if CLIENT then
|
||||||
|
|
||||||
cam.Start3D()
|
cam.Start3D()
|
||||||
|
|
||||||
for k, v in ipairs(buildmode_placed) do
|
for _, v in ipairs(buildmode_placed) do
|
||||||
if IsValid(v) and not v:GetNW2Bool("BRProtected") then
|
if IsValid(v) and not v:GetNW2Bool("BRProtected") then
|
||||||
local pos = v:GetRenderOrigin() or v:GetPos()
|
local pos = v:GetRenderOrigin() or v:GetPos()
|
||||||
local w2s = pos:ToScreen()
|
local w2s = pos:ToScreen()
|
||||||
|
@ -1551,7 +1535,7 @@ if CLIENT then
|
||||||
surface.SetFont("DebugFixed")
|
surface.SetFont("DebugFixed")
|
||||||
surface.SetTextColor(255, 255, 255)
|
surface.SetTextColor(255, 255, 255)
|
||||||
|
|
||||||
for k, v in pairs(Checkpoints) do
|
for _, v in pairs(Checkpoints) do
|
||||||
if not IsValid(v) then
|
if not IsValid(v) then
|
||||||
LoadCheckpoints()
|
LoadCheckpoints()
|
||||||
|
|
||||||
|
|
|
@ -44,28 +44,28 @@ function LoadCheckpoints()
|
||||||
table.Empty(Checkpoints)
|
table.Empty(Checkpoints)
|
||||||
|
|
||||||
if SERVER then
|
if SERVER then
|
||||||
for k, v in pairs(player.GetAll()) do
|
for _, v in pairs(player.GetAll()) do
|
||||||
v:SetNW2Int("CPNum", 1)
|
v:SetNW2Int("CPNum", 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
timer.Simple(1, function()
|
timer.Simple(1, function()
|
||||||
for k, v in pairs(ents.FindByClass("tt_cp")) do
|
for _, v in pairs(ents.FindByClass("tt_cp")) do
|
||||||
if IsValid(v) and v.GetCPNum then
|
if IsValid(v) and v.GetCPNum then
|
||||||
Checkpoints[v:GetCPNum()] = v
|
Checkpoints[v:GetCPNum()] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
else
|
else
|
||||||
for k, v in pairs(ents.FindByClass("tt_cp")) do
|
for _, v in pairs(ents.FindByClass("tt_cp")) do
|
||||||
Checkpoints[v:GetCPNum()] = v
|
Checkpoints[v:GetCPNum()] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
CreateClientConVar("Beatrun_FastStart", "0", true, true, "Faster start countdown", 0, 1)
|
CreateClientConVar("Beatrun_FastStart", "0", true, true, language.GetPhrase("beatrun.convars.faststart"), 0, 1)
|
||||||
|
|
||||||
net.Receive("Checkpoint_Hit", function()
|
net.Receive("Checkpoint_Hit", function()
|
||||||
local timetaken = CurTime() - lastcptime
|
local timetaken = CurTime() - lastcptime
|
||||||
|
@ -181,7 +181,11 @@ end
|
||||||
local countdown = 0
|
local countdown = 0
|
||||||
local countdownalpha = 255
|
local countdownalpha = 255
|
||||||
|
|
||||||
local countdowntext = {"Ready", "Set", "Go!!"}
|
local countdowntext = {
|
||||||
|
"#beatrun.checkpoints.countdown1",
|
||||||
|
"#beatrun.checkpoints.countdown2",
|
||||||
|
"#beatrun.checkpoints.countdown3"
|
||||||
|
}
|
||||||
|
|
||||||
local function StartCountdown()
|
local function StartCountdown()
|
||||||
local CT = CurTime()
|
local CT = CurTime()
|
||||||
|
@ -243,7 +247,8 @@ function CourseHUD()
|
||||||
speed = "0" .. speed
|
speed = "0" .. speed
|
||||||
end
|
end
|
||||||
|
|
||||||
text = speed .. " km/h"
|
text = language.GetPhrase("beatrun.checkpoints.speedometer"):format(speed)
|
||||||
|
|
||||||
local w, _ = surface.GetTextSize(text)
|
local w, _ = surface.GetTextSize(text)
|
||||||
w = w or 0
|
w = w or 0
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ local problematichooks = {
|
||||||
|
|
||||||
local function RemoveConflicting()
|
local function RemoveConflicting()
|
||||||
for k, v in pairs(problematichooks) do
|
for k, v in pairs(problematichooks) do
|
||||||
for l, b in ipairs(v) do
|
for _, b in ipairs(v) do
|
||||||
hook.Remove(k, b)
|
hook.Remove(k, b)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -86,7 +86,7 @@ if CLIENT then
|
||||||
if GetGlobalBool("GM_DATATHEFT") then
|
if GetGlobalBool("GM_DATATHEFT") then
|
||||||
local datacubes = LocalPlayer():GetNW2Int("DataCubes", 0)
|
local datacubes = LocalPlayer():GetNW2Int("DataCubes", 0)
|
||||||
|
|
||||||
return "Data Theft (" .. datacubes .. ")"
|
return language.GetPhrase("beatrun.datatheft.name"):format(datacubes)
|
||||||
else
|
else
|
||||||
hook.Remove("BeatrunHUDCourse", "DataTheftHUDName")
|
hook.Remove("BeatrunHUDCourse", "DataTheftHUDName")
|
||||||
end
|
end
|
||||||
|
@ -98,6 +98,6 @@ if CLIENT then
|
||||||
|
|
||||||
net.Receive("DataTheft_Start", function()
|
net.Receive("DataTheft_Start", function()
|
||||||
hook.Add("BeatrunHUDCourse", "DataTheftHUDName", DataTheftHUDName)
|
hook.Add("BeatrunHUDCourse", "DataTheftHUDName", DataTheftHUDName)
|
||||||
chat.AddText(Color(200, 200, 200), "Data Theft! Kill players to collect data, deposit data in banks")
|
chat.AddText(Color(200, 200, 200), "#beatrun.datatheft.start")
|
||||||
end)
|
end)
|
||||||
end
|
end
|
|
@ -15,7 +15,8 @@ if SERVER then
|
||||||
else
|
else
|
||||||
for _, b in ipairs(DATATHEFT_LOADOUTS[math.random(#DATATHEFT_LOADOUTS)]) do
|
for _, b in ipairs(DATATHEFT_LOADOUTS[math.random(#DATATHEFT_LOADOUTS)]) do
|
||||||
local wep = v:Give(b)
|
local wep = v:Give(b)
|
||||||
v:GiveAmmo(1000, wep:GetPrimaryAmmoType())
|
|
||||||
|
v:GiveAmmo(9999, wep:GetPrimaryAmmoType() or "Pistol", true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -64,7 +65,7 @@ end
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
local function DeathmatchHUDName()
|
local function DeathmatchHUDName()
|
||||||
if GetGlobalBool("GM_DEATHMATCH") then
|
if GetGlobalBool("GM_DEATHMATCH") then
|
||||||
return "Deathmatch"
|
return "#beatrun.deathmatch.name"
|
||||||
else
|
else
|
||||||
hook.Remove("BeatrunHUDCourse", "DeathmatchHUDName")
|
hook.Remove("BeatrunHUDCourse", "DeathmatchHUDName")
|
||||||
end
|
end
|
||||||
|
@ -76,6 +77,6 @@ if CLIENT then
|
||||||
|
|
||||||
net.Receive("Deathmatch_Start", function()
|
net.Receive("Deathmatch_Start", function()
|
||||||
hook.Add("BeatrunHUDCourse", "DeathmatchHUDName", DeathmatchHUDName)
|
hook.Add("BeatrunHUDCourse", "DeathmatchHUDName", DeathmatchHUDName)
|
||||||
chat.AddText(Color(200, 200, 200), "Deathmatch! Kill players to get points!")
|
chat.AddText(Color(200, 200, 200), "#beatrun.deathmatch.start")
|
||||||
end)
|
end)
|
||||||
end
|
end
|
|
@ -1,7 +1,7 @@
|
||||||
local totsugeki = CreateConVar("Beatrun_Totsugeki", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Oh no...", 0, 1)
|
local totsugeki = CreateConVar("Beatrun_Totsugeki", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "", 0, 1)
|
||||||
local totsugekispam = CreateConVar("Beatrun_TotsugekiSpam", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "OH NO...", 0, 1)
|
local totsugekispam = CreateConVar("Beatrun_TotsugekiSpam", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "", 0, 1)
|
||||||
local totsugekiheading = CreateConVar("Beatrun_TotsugekiHeading", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Can we dive on the x axis?", 0, 1)
|
local totsugekiheading = CreateConVar("Beatrun_TotsugekiHeading", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "", 0, 1)
|
||||||
local totsugekidir = CreateConVar("Beatrun_TotsugekiDir", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Can we dive into another dir?", 0, 1)
|
local totsugekidir = CreateConVar("Beatrun_TotsugekiDir", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "", 0, 1)
|
||||||
|
|
||||||
local function Dive(ply, mv, cmd)
|
local function Dive(ply, mv, cmd)
|
||||||
if (not ply:GetDive() or ply:GetDive() and ply.QuakeJumping and totsugeki:GetBool() and totsugekispam:GetBool()) and ply:GetCrouchJump() and mv:KeyPressed(IN_ATTACK2) then
|
if (not ply:GetDive() or ply:GetDive() and ply.QuakeJumping and totsugeki:GetBool() and totsugekispam:GetBool()) and ply:GetCrouchJump() and mv:KeyPressed(IN_ATTACK2) then
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
local disable_grapple = CreateClientConVar("Beatrun_DisableGrapple", 0, true, true, "Disables grapple ability", 0, 1)
|
|
||||||
|
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
|
local disable_grapple = CreateClientConVar("Beatrun_DisableGrapple", 0, true, true, language.GetPhrase("beatrun.convars.disablegrapple"), 0, 1)
|
||||||
|
|
||||||
local circle = Material("circlesmooth.png", "nocull smooth")
|
local circle = Material("circlesmooth.png", "nocull smooth")
|
||||||
|
|
||||||
hook.Add("HUDPaint", "grappleicon", function()
|
hook.Add("HUDPaint", "grappleicon", function()
|
||||||
|
|
|
@ -17,7 +17,7 @@ end
|
||||||
local function HumanCount()
|
local function HumanCount()
|
||||||
local count = 0
|
local count = 0
|
||||||
|
|
||||||
for k, v in ipairs(player.GetAll()) do
|
for _, v in ipairs(player.GetAll()) do
|
||||||
if IsValid(v) and not v:GetNW2Bool("Infected") then
|
if IsValid(v) and not v:GetNW2Bool("Infected") then
|
||||||
count = count + 1
|
count = count + 1
|
||||||
end
|
end
|
||||||
|
@ -376,7 +376,7 @@ if CLIENT then
|
||||||
hook.Add("BeatrunHUDCourse", "InfectionHUDName", InfectionHUDName)
|
hook.Add("BeatrunHUDCourse", "InfectionHUDName", InfectionHUDName)
|
||||||
hook.Add("CalcView", "InfectionCalcView", InfectionCalcView)
|
hook.Add("CalcView", "InfectionCalcView", InfectionCalcView)
|
||||||
|
|
||||||
chat.AddText(chatcolor, "Infection! Touch other players to infect them\n", math.max(math.floor(player.GetCount() / 4), 1) .. " player(s) will become infected in 10s")
|
chat.AddText(chatcolor, language.GetPhrase("beatrun.infection.start"):format(math.max(math.floor(player.GetCount() / 4), 1), _time))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local music = nil
|
local music = nil
|
||||||
|
@ -399,12 +399,12 @@ if CLIENT then
|
||||||
survivors = survivors:sub(1, -3)
|
survivors = survivors:sub(1, -3)
|
||||||
|
|
||||||
if survivors == "" then
|
if survivors == "" then
|
||||||
survivors = "None..."
|
survivors = "#beatrun.infection.nosurvivors"
|
||||||
|
|
||||||
LocalPlayer():EmitSound("death.wav")
|
LocalPlayer():EmitSound("death.wav")
|
||||||
end
|
end
|
||||||
|
|
||||||
chat.AddText(chatcolor, "The game has ended!\nSurvivors: " .. survivors .. "\nRestarting in 15s")
|
chat.AddText(chatcolor, language.GetPhrase("beatrun.infection.end"):format(survivors, _time))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
if music and music.Stop then
|
if music and music.Stop then
|
||||||
|
@ -432,9 +432,9 @@ if CLIENT then
|
||||||
|
|
||||||
if IsValid(attacker) and IsValid(victim) then
|
if IsValid(attacker) and IsValid(victim) then
|
||||||
if attacker == victim then
|
if attacker == victim then
|
||||||
chat.AddText(attacker, red, " died!")
|
chat.AddText(attacker, red, " #beatrun.infection.infected")
|
||||||
else
|
else
|
||||||
chat.AddText(attacker, red, " has infected ", yellow, victim, "!")
|
chat.AddText(attacker, red, " #beatrun.infection.infectedby ", yellow, victim, "!")
|
||||||
end
|
end
|
||||||
|
|
||||||
attacker.InfectionTouchDelay = CurTime() + 3
|
attacker.InfectionTouchDelay = CurTime() + 3
|
||||||
|
@ -497,10 +497,10 @@ if CLIENT then
|
||||||
|
|
||||||
if humanwin then
|
if humanwin then
|
||||||
LocalPlayer():AddXP(200)
|
LocalPlayer():AddXP(200)
|
||||||
chat.AddText(chatcolor, "You were awarded 200 XP for surviving")
|
chat.AddText(chatcolor, "#beatrun.infection.award")
|
||||||
else
|
else
|
||||||
LocalPlayer():AddXP(100)
|
LocalPlayer():AddXP(100)
|
||||||
chat.AddText(chatcolor, "You were awarded 100 XP for spawning as an infected")
|
chat.AddText(chatcolor, "#beatrun.infection.awardinfected")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
CreateClientConVar("Beatrun_PuristMode", "1", true, true, "Purist mode is a clientside preference that severely weakens the ability to strafe while in the air, which is how Mirror's Edge games handle this.\n0 = No restrictions\n1 = Reduced move speed in the air")
|
CreateClientConVar("Beatrun_PuristMode", "1", true, true, language.GetPhrase("beatrun.convars.puristmode"))
|
||||||
end
|
end
|
||||||
|
|
||||||
local PuristModeForce = CreateConVar("Beatrun_PuristModeForce", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Force players to adhere to purist rules", 0, 1)
|
local PuristModeForce = CreateConVar("Beatrun_PuristModeForce", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "", 0, 1)
|
||||||
|
|
||||||
local function PuristMove(ply, mv, cmd)
|
local function PuristMove(ply, mv, cmd)
|
||||||
if not ply:OnGround() and not ply:GetGrappling() then
|
if not ply:OnGround() and not ply:GetGrappling() then
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
QuickturnGround = CreateClientConVar("Beatrun_QuickturnGround", "0", true, true, "Enables quickturning with secondary attack while on the ground", 0, 1)
|
QuickturnGround = CreateClientConVar("Beatrun_QuickturnGround", "0", true, true, language.GetPhrase("beatrun.convars.quickturnground"), 0, 1)
|
||||||
QuickturnHandsOnly = CreateClientConVar("Beatrun_QuickturnHandsOnly", "1", true, true, "Enables quickturning with \"Runner Hands\" only", 0, 1)
|
QuickturnHandsOnly = CreateClientConVar("Beatrun_QuickturnHandsOnly", "1", true, true, language.GetPhrase("beatrun.convars.quickturnhandsonly"), 0, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
function DoJumpTurn(lookbehind)
|
function DoJumpTurn(lookbehind)
|
||||||
|
|
|
@ -26,6 +26,7 @@ local function SwingbarCheck(ply, mv, cmd)
|
||||||
|
|
||||||
if math.abs(dot) < 0.7 then return end
|
if math.abs(dot) < 0.7 then return end
|
||||||
|
|
||||||
|
|
||||||
if CLIENT then
|
if CLIENT then
|
||||||
swingbar:SetPredictable(true)
|
swingbar:SetPredictable(true)
|
||||||
end
|
end
|
||||||
|
@ -162,7 +163,7 @@ local function SwingbarThink(ply, mv, cmd)
|
||||||
ply:EmitSound("Cloth.VaultSwish")
|
ply:EmitSound("Cloth.VaultSwish")
|
||||||
end
|
end
|
||||||
|
|
||||||
ply:SetMEMoveLimit(350)
|
ply:SetMEMoveLimit(GetConVar("Beatrun_SpeedLimit"):GetInt())
|
||||||
ply:SetMESprintDelay(-1)
|
ply:SetMESprintDelay(-1)
|
||||||
|
|
||||||
if CLIENT then
|
if CLIENT then
|
|
@ -45,7 +45,7 @@ net.Receive("SlowSounds", function()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
concommand.Add("ToggleTimeSlow", function(ply)
|
concommand.Add("Beatrun_ToggleTimeSlow", function(ply)
|
||||||
slow = not slow
|
slow = not slow
|
||||||
|
|
||||||
net.Start("SlowSounds")
|
net.Start("SlowSounds")
|
||||||
|
|
|
@ -45,7 +45,7 @@ function meta:SetMantleEndPos(value)
|
||||||
return self:SetDTVector(14, value)
|
return self:SetDTVector(14, value)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function PlayVaultAnim(ply, legs, ang)
|
local function PlayVaultAnim(ply, ang)
|
||||||
local activewep = ply:GetActiveWeapon()
|
local activewep = ply:GetActiveWeapon()
|
||||||
|
|
||||||
if ply:UsingRH() and activewep:GetSequence() == 17 then
|
if ply:UsingRH() and activewep:GetSequence() == 17 then
|
||||||
|
@ -140,7 +140,7 @@ local function Vault1(ply, mv, ang, t, h)
|
||||||
ply:SetMantle(1)
|
ply:SetMantle(1)
|
||||||
ply:SetWallrunTime(0)
|
ply:SetWallrunTime(0)
|
||||||
|
|
||||||
PlayVaultAnim(ply)
|
PlayVaultAnim(ply, ang)
|
||||||
|
|
||||||
ply:ViewPunch(vpunch1)
|
ply:ViewPunch(vpunch1)
|
||||||
ply.MantleInitVel = mv:GetVelocity()
|
ply.MantleInitVel = mv:GetVelocity()
|
||||||
|
@ -238,7 +238,7 @@ local function Vault2(ply, mv, ang, t, h)
|
||||||
ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 2)
|
ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 2)
|
||||||
ply:SetWallrunTime(0)
|
ply:SetWallrunTime(0)
|
||||||
|
|
||||||
PlayVaultAnim(ply, 1)
|
PlayVaultAnim(ply, ang)
|
||||||
|
|
||||||
ply:ViewPunch(vpunch2)
|
ply:ViewPunch(vpunch2)
|
||||||
ply.MantleInitVel = mv:GetVelocity()
|
ply.MantleInitVel = mv:GetVelocity()
|
||||||
|
@ -338,7 +338,7 @@ local function Vault3(ply, mv, ang, t, h)
|
||||||
ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 3)
|
ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 3)
|
||||||
ply:SetWallrunTime(0)
|
ply:SetWallrunTime(0)
|
||||||
|
|
||||||
PlayVaultAnim(ply, 2)
|
PlayVaultAnim(ply, ang)
|
||||||
|
|
||||||
ply:ViewPunch(vpunch3)
|
ply:ViewPunch(vpunch3)
|
||||||
ply.MantleInitVel = mv:GetVelocity()
|
ply.MantleInitVel = mv:GetVelocity()
|
||||||
|
@ -389,6 +389,7 @@ function Vault4(ply, mv, ang, t, h)
|
||||||
local tsafetyout = util.TraceLine(tsafety)
|
local tsafetyout = util.TraceLine(tsafety)
|
||||||
|
|
||||||
if tsafetyout.Hit then return false end
|
if tsafetyout.Hit then return false end
|
||||||
|
|
||||||
tsafety.start = mv:GetOrigin() + chestvec
|
tsafety.start = mv:GetOrigin() + chestvec
|
||||||
tsafety.endpos = tsafety.start + ang:Forward() * 150
|
tsafety.endpos = tsafety.start + ang:Forward() * 150
|
||||||
|
|
||||||
|
@ -414,7 +415,7 @@ function Vault4(ply, mv, ang, t, h)
|
||||||
ply:SetMantleData(startpos, vaultpos, 0, 4)
|
ply:SetMantleData(startpos, vaultpos, 0, 4)
|
||||||
ply:SetWallrunTime(0)
|
ply:SetWallrunTime(0)
|
||||||
|
|
||||||
PlayVaultAnim(ply, 1)
|
PlayVaultAnim(ply, ang)
|
||||||
|
|
||||||
ply:ViewPunch(Angle(2.5, 0, 0))
|
ply:ViewPunch(Angle(2.5, 0, 0))
|
||||||
ply.MantleInitVel = mv:GetVelocity()
|
ply.MantleInitVel = mv:GetVelocity()
|
||||||
|
@ -471,6 +472,7 @@ function Vault5(ply, mv, ang, t, h)
|
||||||
t = util.TraceLine(t)
|
t = util.TraceLine(t)
|
||||||
|
|
||||||
if not t.Hit then return false end
|
if not t.Hit then return false end
|
||||||
|
|
||||||
if t.Entity and t.Entity.NoPlayerCollisions then return false end
|
if t.Entity and t.Entity.NoPlayerCollisions then return false end
|
||||||
|
|
||||||
local vaultend = t.HitPos + mantlevec
|
local vaultend = t.HitPos + mantlevec
|
||||||
|
@ -514,7 +516,7 @@ function Vault5(ply, mv, ang, t, h)
|
||||||
ply:SetMantle(5)
|
ply:SetMantle(5)
|
||||||
ply:SetWallrunTime(0)
|
ply:SetWallrunTime(0)
|
||||||
|
|
||||||
PlayVaultAnim(ply, false, ang)
|
PlayVaultAnim(ply, ang)
|
||||||
|
|
||||||
ply:ViewPunch(vpunch1)
|
ply:ViewPunch(vpunch1)
|
||||||
ply.MantleInitVel = mv:GetVelocity()
|
ply.MantleInitVel = mv:GetVelocity()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
util.AddNetworkString("DisarmStart")
|
util.AddNetworkString("DisarmStart")
|
||||||
local cvardisarm = CreateConVar("Beatrun_Disarm", 1, FCVAR_ARCHIVE, "Whether 'using' NPCs triggers a disarm", 0, 1)
|
local cvardisarm = CreateConVar("Beatrun_Disarm", 1, FCVAR_ARCHIVE, "", 0, 1)
|
||||||
|
|
||||||
local function Disarm_Init(ply, victim)
|
local function Disarm_Init(ply, victim)
|
||||||
victim:NextThink(CurTime() + 100)
|
victim:NextThink(CurTime() + 100)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
if game.SinglePlayer() then return end
|
if game.SinglePlayer() then return end
|
||||||
|
|
||||||
local maxmsgcount = 100
|
local maxmsgcount = 100
|
||||||
local netIncoming_old = net.Receive
|
-- local netIncoming_old = net.Incoming
|
||||||
|
|
||||||
local netIncoming_detour = function(length, ply)
|
local netIncoming_detour = function(length, ply)
|
||||||
local tickcount = engine.TickCount()
|
local tickcount = engine.TickCount()
|
||||||
|
|
|
@ -4,7 +4,7 @@ hook.Add("EntityTakeDamage", "MEHitSounds", function(ply, dmginfo)
|
||||||
if not ply:IsPlayer() then return end
|
if not ply:IsPlayer() then return end
|
||||||
|
|
||||||
if dmginfo:IsBulletDamage() then
|
if dmginfo:IsBulletDamage() then
|
||||||
--[[Block damage if they're going very fast]]
|
-- Block damage if they're going very fast
|
||||||
if ply:GetVelocity():Length() > 400 then return true end
|
if ply:GetVelocity():Length() > 400 then return true end
|
||||||
|
|
||||||
ply:EmitSound("mirrorsedge/Flesh_0" .. tostring(math.random(1, 9)) .. ".wav")
|
ply:EmitSound("mirrorsedge/Flesh_0" .. tostring(math.random(1, 9)) .. ".wav")
|
||||||
|
|
Loading…
Reference in a new issue