Merge branch 'main' of https://github.com/JonnyBro/beatrun into JonnyBro-main

This commit is contained in:
LostTrackpad 2024-12-19 14:45:17 +07:00
commit 23368f7c17
37 changed files with 580 additions and 402 deletions

29
LICENSE
View file

@ -1,24 +1,13 @@
This is free and unencumbered software released into the public domain. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Anyone is free to copy, modify, publish, use, compile, sell, or Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors Everyone is permitted to copy and distribute verbatim or modified
of this software dedicate any and all copyright interest in the copies of this license document, and changing it is allowed as long
software to the public domain. We make this dedication for the benefit as the name is changed.
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org> 0. You just DO WHAT THE FUCK YOU WANT TO.

190
README.md
View file

@ -1,121 +1,125 @@
# Beatrun | Community edition # Beatrun | Community Edition
[![forthebadge](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) [![Powered by Electricity](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com)
[![forthebadge](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) [![Powered by Black Magic](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com)
[Click to join our Discord!](https://discord.gg/93Psubbgsg) [**Join our Discord Community!**](https://discord.gg/93Psubbgsg)
* [Русский](./README.ru.md) > *[Русский | Russian](./README.ru.md)*
**PLEASE READ EVERYTHING BEFORE ASKING QUESTIONS ON OUR SERVER!** ---
Infamous parkour gamemode for Garry's Mod.\ ## 🚨 Important Notice
Fully open sourced and maintained by the community (like 4 people I think).
> [!IMPORTANT] ### Please read this README thoroughly before asking questions
> This repository does not contain any malicious modules whatsoever. These modules are present for more functionality however:
>
> * Discord Rich Presence
> * Steam Presence
>
> **They are optional and can be removed at any time.**\
> You can find all compiled modules **[here](lua/bin)** in the repository.\
> Check **[Credits](#credits)** section for module source code.
## Automatic Installation? ### The **only official source** for this fork is this GitHub repository. Workshop versions are outdated and unsupported
Not supported. I (LostTrackpad) am not going to set this up.[^2] ---
## Manual Installation ## About
### *Method 1: Repository download and extract (easy)* Beatrun is an **infamous parkour addon for Garry's Mod**, now fully open-sourced and maintained by the community.
It includes various improvements, new features, and enhanced functionality.
***Note**: `<Garry's Mod game folder>` is a placeholder for your Garry's Mod game folder.*
1. **[Download this repository](https://github.com/LostTrackpad/beatrun-forked/archive/refs/heads/dev.zip)**.
2. **Delete the `beatrun` folder in *`<Garry's Mod game folder>/garrysmod/addons`* if you have one.**
3. Extract the `beatrun-main/beatrun` folder to *`<Garry's Mod game folder>/garrysmod/addons`*.
* If you want to have Discord and Steam Presence:
* Extract the `beatrun-main/lua` folder to *`<Garry's Mod game folder>/garrysmod`*.
4. That's it, Beatrun is installed.
### *Method 2: Using Git and Directory Junctions* ***(Windows 10+ Only!)***
> [!WARNING] > [!WARNING]
> This method requires:<br> > **This repository contains no malicious modules.** However, optional modules such as Discord Rich Presence and Steam Presence are available for additional features.
> * **A working and up to date installation of Windows 10 or above.** > These are **completely optional** and can be removed at any time.
> * A **working and usable** installation of Git for Windows on the system >
> * The drive volume you have Garry's Mod on ***must*** use a file system that supports Windows Directory Junctions (this will likely be NTFS)<br> > - Modules are located **[here](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.
> - Refer to the **[Credits](#credits)** section for their source code.
> [!IMPORTANT] ---
> ***May*** work on Windows 7/8, but those versions of Windows are **no longer supported**! You really should upgrade if you're running either of those, and I will not provide support!
If you're ready and willing to use this method, read [this](repocontent/WindowsGitInstallGuide.md) guide to continue. ## Installation
### 🔧 Automatic Installation (Recommended for Windows 10/11)
> [!NOTE]
> Windows 7 and old versions of Windows 10 are not supported. Please update your OS.
Run the following command in PowerShell (Run as Administrator if Steam and/or the game is installed on the system (C:) drive):
```powershell
irm https://beatrun.jonnybro.ru/install | iex
```
1. Start the game.
2. Select the `Beatrun` gamemode in the bottom-right corner.
### 🛠️ Manual Installation
1. **[Download this repository](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip).**
2. Delete the `beatrun` folder in `your_game_folder/garrysmod/addons`, if it exists.
3. Extract `beatrun-main/beatrun` into `your_game_folder/garrysmod/addons`.
4. (Optional) For Discord and Steam Presence, extract `beatrun-main/lua` to `your_game_folder/garrysmod`.
5. Start the game.
6. Select the `Beatrun` gamemode in the bottom-right corner.
---
## Features and Updates
### New Features
- **Custom Courses Database** hosted by Jonny_Bro: **[Access Here](https://courses.jonnybro.ru)** (free and **[open source](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server)**).
- **New Gamemode:** Deathmatch.
- "Proper" Kick Glitch similar to the **[original game](https://www.youtube.com/watch?v=zK5y3NBUStc)**.
- In-game configuration menu in the Tools menu under **Beatrun**. All settings can be modified here.
- Localization support in **7 languages**.
- Enhanced Build Mode: spawn props from the Spawn Menu, and they will save in your course.
- Various new abilities:
- **Roll after ziplines:** Press `+duck` (CTRL by default).
- **Dismount ladders:** Press `+duck` (CTRL by default).
- **Remove ziplines created with Zipline Gun:** Press `+attack2` (RMB by default).
- **Next checkpoint arrow** for easier navigation.
- New server and client configuration variables:
- Server:
- `Beatrun_AllowOverdriveInMultiplayer`: Allows Overdrive in multiplayer.
- `Beatrun_AllowPropSpawn`: Lets players spawn props and weapons without admin rights.
- `Beatrun_HealthRegen`: Toggles health regeneration.
- Client:
- `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`: Customize HUD colors.
- `Beatrun_DisableGrapple`: Toggle the grapple ability.
- `Beatrun_OldKickGlitch`: Switch between old and new Kick Glitch.
- `Beatrun_QuickturnHandsOnly`: Restrict QuickTurn to the Runner Hands weapon.
- Other improvements:
- Small camera punch effect when diving.
- SteamID no longer displayed on screen.
### Fixes
- Fixed playermodels showing as `ERROR` in first person.
- Improved leaderboard sorting in gamemodes.
- Fixed crashes and issues with Data Theft gamemode.
- Enabled jumping while walking.
- Grapples now follow moving entities and are visible to other players.
---
## Animations ## Animations
[Please refer to this file.](beatrun/README.md) The animations installer has been removed. You can now switch animations directly in the **Tools menu** under the Beatrun category.
## New Features ---
> [!IMPORTANT] ## Known Issues
> This version has *lots* of undocumented features and fixes. Look into the commit history if you wanna see all of them.
* Jonny_Bro (original fork creator) is hosting **[a custom course database](https://courses.jonnybro.ru)**, which is ***free***[^1] to use and also **[open source](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-express)**! - See the full list of issues **[here](https://github.com/JonnyBro/beatrun/issues)**.
* New *Deathmatch* gamemode (it's definitely more fun than *Data Theft* trust us)
* "Proper" kick glitch just like in **[original game](https://www.youtube.com/watch?v=zK5y3NBUStc)**
* Kick glitch behavior type toggle (yep, original kick glitch is still usable!) - `Beatrun_OldKickGlitch` to toggle
* In-game configuration menu - you can find it in the spawn menu, in the **`Beatrun`** category\
***Most*** Beatrun settings can now be configured there! Use `cvarlist beatrun_` to list *all* Beatrun options (and some commands), including some I didn't list
* Discord and Steam Presence *(only Discord presence is new actually)*
* Localization support.\
Now in 7 languages *(mostly, some stuff is locked in English)*!
* Dismounting from ladders with your duck key (default is `CTRL`)
* Removing ziplines created with Zipline Gun using your alternate fire bind (default is `Right Mouse Button`)
* Arrow that points to the next checkpoint
* Serverside option to enable Overdrive mode in multiplayer: `Beatrun_AllowOverdriveInMultiplayer`
* Serverside option to allow prop spawning without being an admin: `Beatrun_AllowPropSpawn`.
* Serverside toggle for health regeneration: `Beatrun_HealthRegen`
* You can change HUD colors (client only)! Use `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, and `Beatrun_HUDFloatingXPColor`
* Clientside to allow disabling the grapple: `Beatrun_DisableGrapple`.
* ConVar to allow QuickTurn with any weapon or only with *Runner Hands* (client) - `Beatrun_QuickturnHandsOnly`.
* Small camera punch when diving.
* Your Steam account ID/*SteamID* is no longer shown on screen
## Some Older (?) Fixes
* Some playermodels showing up as **`ERROR`** ---
* Leaderboard sorting in gamemodes
* Allow using the grapple in Time Trial and gamemodes
* Crash in Data Theft when touching Data Bank
* Collision issues - PvP damage not going through in gamemodes other than Data Theft
* Allowed jumping while walking *(don't ask me, Jonny did this...)*.
* Tweaked safety roll to allow rolling under stuff
* Some grapple tweaks (moves with attached entity, other players can see rope)
## TODO ## Related Projects
* [ ] Loadouts creation menu for Data Theft and Deathmatch. (I don't do UI stuff, I can't do this). - **[Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims)**
## Known issues ---
* [Issues on Jonny's original fork](https://github.com/JonnyBro/beatrun/issues)\
I'm not kidding, check there first for problems. ***Do not** report issues with this fork there.*
* [Issues on this fork](https://github.com/LostTrackpad/beatrun-forked/issues)\
Report any issues with this fork here, and any feature requests you may want.
## Related projects
* [Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims).
## Credits ## Credits
* [All contributors](https://github.com/JonnyBro/beatrun/graphs/contributors) for making Beatrun better - **[All contributors](https://github.com/JonnyBro/beatrun/graphs/contributors)** ❤️
* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) / datæ for making the original Beatrun gamemode *(and obfuscating it and putting it into DLL files...really?)* - [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Original creator of Beatrun.
* [relaxtakenotes](https://github.com/relaxtakenotes) for even making all this possible - [relaxtakenotes](https://github.com/relaxtakenotes) - Made this project possible.
* [MTB](https://www.youtube.com/@MTB396) for Beatrun Reanimated Project - [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project.
* [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) for Discord Rich Presence module - [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Discord Rich Presence.
* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) for Steam Presence module - [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence (TFA Base creator).
[^1]: *A Steam account with a copy of Garry's Mod is required. Ask them why if you're curious.*
[^2]: *I already tried to set up a webserver on my PC. It failed. I don't want people spamming requests for the install script to my PC either, and I know Cloudflare is a thing. Maybe I'll try GitHub Pages?*

View file

@ -1,115 +1,127 @@
# Beatrun | Community edition # Beatrun | Community Edition
[![forthebadge](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) [![Powered by Electricity](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com)
[![forthebadge](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) [![Powered by Black Magic](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com)
[Нажми чтобы присоединиться к нашему Discord серверу!](https://discord.gg/93Psubbgsg) [**Присоединяйтесь к нашему сообществу в Discord!**](https://discord.gg/93Psubbgsg)
* [English](./README.md) > *[English | Английский](./README.md)*
**ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ЭТОТ ФАЙЛ ПЕРЕД ТЕМ КАК ЗАДАВАТЬ ВОПРОСЫ!**\ ---
**МЫ ОПИСАЛИ ДОСТАТОЧНО, ЧТОБЫ ВЫ МОГЛИ УСТАНОВИТЬ ЭТОТ МОД САМОСТОЯТЕЛЬНО**
Печально известный паркур мод для Garry's Mod.\ ## 🚨 Важное уведомление
Мод с открытым исходным кодом и поддерживаемый сообществом (мной 😞).
> [!IMPORTANT] ### Пожалуйста, прочитайте этот README полностью перед тем, как задавать вопросы
> Данный проект не содержит вредоносных модулей. Здесь присутствуют модули для доп. функций, таких как:
>
> * Показ статуса в Discord.
> * Показ статуса в Steam.
>
> **Данные модули опциональны и могут быть удалены в любой момент.**\
> Все модули можно найти **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.\
> Проверьте **[Благодарности](#благодарности)** чтобы найти исходный код модулей.
## Автоматическая установка (Рекомендуемое | Windows 10/11) ### **Единственный официальный источник** этого форка — этот репозиторий на GitHub. Версии в Workshop устарели и не поддерживаются
---
## О проекте
Beatrun — это **знаменитый паркур-аддон для Garry's Mod**, теперь с полностью открытым исходным кодом и поддерживаемый сообществом.
Включает различные улучшения, новые функции и расширенную функциональность.
> [!WARNING] > [!WARNING]
> Windows 7 не поддерживается.\ > **В этом репозитории нет вредоносных модулей.** Однако доступны опциональные модули, такие как показ статусов в Discord и Steam, для дополнительного функционала.
> Кому-то давно пора обновиться... > Эти модули **абсолютно опциональны** и могут быть удалены в любое время.
>
> - Модули находятся **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.
> - Ознакомьтесь с разделом **[Благодарности](#благодарности)** для их исходного кода.
---
## Установка
### 🔧 Автоматическая установка (Рекомендуется для Windows 10/11)
Запустите команду в Powershell.
> [!NOTE] > [!NOTE]
> Win + R > `powershell` > *Enter* > Windows 7 и старые версии Windows 10 не поддерживаются. Обновите свою ОС.
Запустите данную команду в PowerShell (Запустите от админа если Steam и/или игра установлены на системный (C:) диск):
```powershell ```powershell
irm https://beatrun.jonnybro.ru/install | iex irm https://beatrun.jonnybro.ru/install | iex
``` ```
* Выберите режим `Beatrun` в правом нижнем углу. 1. Запустите игру.
2. Выберите режим `Beatrun` в правом нижнем углу.
## Ручная установка ### 🛠️ Ручная установка
1. **[Скачайте проект](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**. 1. **[Скачать репозиторий](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**.
2. **Удалите папку `beatrun` по пути *путь_к_игре/garrysmod/addons* если присутствует.** 2. Удалите папку `beatrun` в `путь_к_игре/garrysmod/addons`, если она существует.
3. Извлеките папку `beatrun-main/beatrun` по пути *путь_к_игре/garrysmod/addons*. 3. Извлеките `beatrun-main/beatrun` в `путь_к_игре/garrysmod/addons`.
4. Если вы хотите показ статусов в Discord и Steam: 4. *(Опционально)* Для показа статусов в Discord и Steam извлеките `beatrun-main/lua` в `путь_к_игре/garrysmod`.
* Извлеките папку `beatrun-main/lua` по пути *путь_к_игре/garrysmod*. 5. Запустите игру.
5. Выберите режим `Beatrun` в правом нижнем углу. 6. Выберите режим `Beatrun` в правом нижнем углу.
---
## Особенности и обновления
### Новые возможности
- **База курсов** от Jonny_Bro: **[Доступна здесь](https://courses.jonnybro.ru)** (бесплатна и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server)**).
- **Новый режим:** Deathmatch.
- Полностью исправленный Kick Glitch, как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**.
- Меню настроек в игре в категории **Beatrun** в меню Инструментов.
Здесь можно настроить **все** параметры Beatrun.
- Поддержка локализации на **7 языках**.
- Улучшенный режим строительства курсов:
Пропы из меню спавна сохраняются в вашем курсе.
- Новые способности:
- **Перекат после зиплайнов:** Нажмите `CTRL`.
- **Слезание с лестниц:** Нажмите `CTRL`.
- **Удаление зиплайнов:** Нажмите ПКМ (`RMB`).
- **Указатель следующего чекпоинта** для облегчения навигации.
- Новые серверные и клиентские переменные:
- Серверные:
- `Beatrun_AllowOverdriveInMultiplayer` — разрешает Overdrive в мультиплеере.
- `Beatrun_AllowPropSpawn` — разрешает спавн пропов и оружия без прав администратора.
- `Beatrun_HealthRegen` — переключает регенерацию здоровья.
- Клиентские:
- `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor` — настройка цветов интерфейса.
- `Beatrun_DisableGrapple` — включение/выключение крюка-кошки.
- `Beatrun_OldKickGlitch` — переключение между старым и новым Kick Glitch.
- `Beatrun_QuickturnHandsOnly` — ограничение QuickTurn только для оружия Runner Hands.
- Прочие улучшения:
- Лёгкий толчок камеры при нырянии.
- SteamID больше не отображается на экране.
### Исправления
- Исправлено отображение моделей игроков как `ERROR` от первого лица.
- Улучшена сортировка таблиц лидеров в режимах.
- Исправлены краши и баги в режиме Data Theft.
- Включены прыжки при ходьбе.
- Крюк-кошка теперь следует за перемещаемыми объектами и видна другим игрокам.
---
## Анимации ## Анимации
[Читаем тут](beatrun/README.md) Установщик анимаций удалён. Теперь их можно переключать в **меню Инструментов** в категории Beatrun.
## Особенности ---
> [!IMPORTANT]
> Множество изменений и исправлений не задокументированы, обратитесь к списку коммитов для более подробного списка изменений.
* Jonny_Bro поддерживает **[свою базу курсов](https://courses.jonnybro.ru)**, которая так же **бесплатна** к использованию и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-express)**!
* Новый режим - **Deathmatch** (намного веселее чем Data Theft, честно).
* "Правильный" Kick Glitch прямо как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**.
* Меню настроек - найти его можно в меню инструментов, в категории **Beatrun**.\
**Все** настройки Beatrun можно найти там!
* Показ статусов в Steam и Discord.
* Поддержка локализаций.\
Доступно 7 языков!
* Улучшения режима строительства.
Можно заспавнить любой проп из меню спавна и он сохранится в курсе.
* Возможность переката после зиплайнов на CTRL 🤯 (спасибо c4nk <3).
* Возможность спрыгивать с лестниц - Нажмите CTRL.
* Возможность удалять зиплайны созданные *Zipline Gun* - Нажмите ПКМ.
* Стрелка, показывающая местоположение след. контрольной точки.
* Переменная, разрешающая использование Overdrive (сервер) - `Beatrun_AllowOverdriveInMultiplayer`.
* Переменная, разрешающая создание объектов без прав администратора (сервер) - `Beatrun_AllowPropSpawn`.
* Переменная, переключающая регенерацию здоровья (сервер) - `Beatrun_HealthRegen`.
* Переменные, изменяющие цвет HUD (клиент) - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`.
* Переменная, переключающая использование крюка-кошки (клиент) - `Beatrun_DisableGrapple`.
* Переменная, переключающая режим Kick Glitch (клиент) - `Beatrun_OldKickGlitch`.
* Переменная, переключающая использование Quickturn только с *Runner Hands* или любым оружием (клиент) - `Beatrun_QuickturnHandsOnly`.
* Небольшой толчёк камеры при нырянии.
* Убран SteamID с экрана.
## Исправления
* Отображение моделей как **ERROR**.
* Сортировка таблицы лидеров.
* Использование крюка-кошки в режимах.
* Краш в Data Theft при касании с Data Bank.
* Ошибки с коллиизей - урон в PvP не проходил, если режим не Data Theft.
* Возможность прыгать во время ходьбы (🤷).
* Подправлен кувырок - можно кувыркаться под объектами.
* Подправлена крюк-кошка - движется с объектом к которому прикреплена и видна другим игрокам.
## TODO
* [ ] Меню создания снаряжений для Deathmatch/Data Theft.
## Известные проблемы ## Известные проблемы
* [Тут](https://github.com/JonnyBro/beatrun/issues). - Полный список доступен **[здесь](https://github.com/JonnyBro/beatrun/issues)**.
* Может ещё чего, я не помню 💀.
---
## Связанные проекты ## Связанные проекты
* [Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims). - **[Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims)**
---
## Благодарности ## Благодарности
* [Все участники](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3. - **[Все участники](https://github.com/JonnyBro/beatrun/graphs/contributors)** ❤️
* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Создатель этого ужаса. - [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) — создатель оригинального Beatrun.
* [relaxtakenotes](https://github.com/relaxtakenotes) - Без него этого проекта бы не существовало. - [relaxtakenotes](https://github.com/relaxtakenotes) — этот проект стал возможен благодаря ему.
* [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project. - [MTB](https://www.youtube.com/@MTB396) — проект Beatrun Reanimated.
* [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Discord Rich Presence. - [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) — модуль показа статусов в Discord.
* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence. - [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) — модуль показа статусов в Steam (создатель TFA Base).

View file

@ -50,7 +50,7 @@ beatrun.hud.lvl=Lvl: %s
beatrun.hud.infector=Infector beatrun.hud.infector=Infector
# Menu_Course # Menu_Course
beatrun.coursemenu.trials=Courses - %s beatrun.coursemenu.trials=Courses - Folder: %s
beatrun.coursemenu.buildmode=Toggle Build Mode beatrun.coursemenu.buildmode=Toggle Build Mode
beatrun.coursemenu.freeplay=Return to Freeplay beatrun.coursemenu.freeplay=Return to Freeplay
@ -114,11 +114,11 @@ beatrun.toolsmenu.hud.showspeedometerdesc=Shows the speedometer on HUD
beatrun.toolsmenu.hud.showSpeedometer=Show Speedometer beatrun.toolsmenu.hud.showSpeedometer=Show Speedometer
beatrun.toolsmenu.hud.showSpeedometerDesc=Shows the speedometer on HUD (hiding HUD does not affect visibility) beatrun.toolsmenu.hud.showSpeedometerDesc=Shows the speedometer on HUD (hiding HUD does not affect visibility)
beatrun.toolsmenu.hud.wind=Wind Effect beatrun.toolsmenu.hud.keystrokes=Show Keystrokes
beatrun.toolsmenu.hud.winddesc=Wind noises when running beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press
beatrun.toolsmenu.hud.hidden=Hide HUD beatrun.toolsmenu.hud.hidden=Hide HUD
beatrun.toolsmenu.hud.hiddendesc=0 - Shown\n1 - Gamemode only\n2 - Hidden beatrun.toolsmenu.hud.hiddendesc=0 - Shown\n1 - Gamemode and speedometer only\n2 - Hidden
beatrun.toolsmenu.hud.textcolor=HUD Text Color beatrun.toolsmenu.hud.textcolor=HUD Text Color
beatrun.toolsmenu.hud.cornercolor=HUD Corner Color beatrun.toolsmenu.hud.cornercolor=HUD Corner Color
@ -156,6 +156,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Toggles grapple ability
beatrun.toolsmenu.gameplay.rollspeedloss=Lose Speed on Roll beatrun.toolsmenu.gameplay.rollspeedloss=Lose Speed on Roll
beatrun.toolsmenu.gameplay.rollspeedlossdesc=Toggles loss of speed on safety roll beatrun.toolsmenu.gameplay.rollspeedlossdesc=Toggles loss of speed on safety roll
beatrun.toolsmenu.gameplay.wind=Wind Effect
beatrun.toolsmenu.gameplay.winddesc=Wind noises when running
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Misc beatrun.toolsmenu.misc.name=Misc
beatrun.toolsmenu.misc.desc=Misc Settings beatrun.toolsmenu.misc.desc=Misc Settings
@ -266,3 +269,5 @@ beatrun.infection.end=The game has ended!\nSurvivors: %s\nRestarting in 15s
# Server ConVars # Server ConVars
beatrun.randommwloadouts=Random MW Base Loadouts beatrun.randommwloadouts=Random MW Base Loadouts
beatrun.randommwloadoutsdesc=Toggles random MW Base loadouts in Deathmatch and DataTheft beatrun.randommwloadoutsdesc=Toggles random MW Base loadouts in Deathmatch and DataTheft
beatrun.randoarc9loadouts=Random ARC9 MW Loadouts
beatrun.randoarc9loadoutsdesc=Toggles random ARC9 MW 2019 loadouts in Deathmatch and DataTheft

View file

@ -105,8 +105,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Attiva/disattiva i nametag sopra i giocatori
beatrun.toolsmenu.hud.hudxp=Mostra XP HUD beatrun.toolsmenu.hud.hudxp=Mostra XP HUD
beatrun.toolsmenu.hud.hudxpdesc=Mostra XP totali vicino al tuo nickname beatrun.toolsmenu.hud.hudxpdesc=Mostra XP totali vicino al tuo nickname
beatrun.toolsmenu.hud.wind=Effetto del vento beatrun.toolsmenu.hud.keystrokes=Show Keystrokes
beatrun.toolsmenu.hud.winddesc=Rumori del vento durante la corsa beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press
beatrun.toolsmenu.hud.hidden=Nascondi HUD beatrun.toolsmenu.hud.hidden=Nascondi HUD
beatrun.toolsmenu.hud.hiddendesc=0 - Mostra\n1 - Solo Modalità di gioco\n2 - Nascosta beatrun.toolsmenu.hud.hiddendesc=0 - Mostra\n1 - Solo Modalità di gioco\n2 - Nascosta
@ -140,6 +140,9 @@ beatrun.toolsmenu.gameplay.puristmodedesc=La modalità purista è una modalità
beatrun.toolsmenu.gameplay.disablegrapple=Disabilita il rampino beatrun.toolsmenu.gameplay.disablegrapple=Disabilita il rampino
beatrun.toolsmenu.gameplay.disablegrappledesc=Disabilita l'abilità del rampino beatrun.toolsmenu.gameplay.disablegrappledesc=Disabilita l'abilità del rampino
beatrun.toolsmenu.gameplay.wind=Effetto del vento
beatrun.toolsmenu.gameplay.winddesc=Rumori del vento durante la corsa
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Varie beatrun.toolsmenu.misc.name=Varie
beatrun.toolsmenu.misc.desc=Impostazioni Varie beatrun.toolsmenu.misc.desc=Impostazioni Varie

View file

@ -41,6 +41,7 @@ beatrun.convars.disablegrapple=Wyłącz zdolność używania tyrolki
beatrun.convars.puristmode=Tryb purystyczny to opcja po stronie klienta, która poważnie ogranicza zdolność do strafe'owania w powietrzu, tak jak w grach z serii ME.\n0 = Brak ograniczeń\n1 = Zmniejszona prędkość ruchu w powietrzu. beatrun.convars.puristmode=Tryb purystyczny to opcja po stronie klienta, która poważnie ogranicza zdolność do strafe'owania w powietrzu, tak jak w grach z serii ME.\n0 = Brak ograniczeń\n1 = Zmniejszona prędkość ruchu w powietrzu.
beatrun.convars.quickturnground=Umożliwia szybki obrót za pomocą ataku drugorzędnego na ziemi beatrun.convars.quickturnground=Umożliwia szybki obrót za pomocą ataku drugorzędnego na ziemi
beatrun.convars.quickturnhandsonly=Umożliwia szybki obrót tylko w trybie "Rąk biegacza" beatrun.convars.quickturnhandsonly=Umożliwia szybki obrót tylko w trybie "Rąk biegacza"
beatrun.convars.showspeedometer=Przełącz widoczność prędkościomierza
# HUD # HUD
beatrun.hud.course=Bieg: %s beatrun.hud.course=Bieg: %s
@ -53,7 +54,7 @@ beatrun.coursemenu.trials=Biegi - %s
beatrun.coursemenu.buildmode=Przełącz tryb budowania beatrun.coursemenu.buildmode=Przełącz tryb budowania
beatrun.coursemenu.freeplay=Wróć do rozgrywki swobodnej beatrun.coursemenu.freeplay=Wróć do rozgrywki swobodnej
# CoursesDatabase # Courses Database
beatrun.coursesdatabase.cantuploadfreeplay=Nie można przesyłać biegów w trybie rozgrywki swobodnej beatrun.coursesdatabase.cantuploadfreeplay=Nie można przesyłać biegów w trybie rozgrywki swobodnej
beatrun.coursesdatabase.upload1=Próbujesz przesłać kurs o nazwie %s na mapie %s. beatrun.coursesdatabase.upload1=Próbujesz przesłać kurs o nazwie %s na mapie %s.
beatrun.coursesdatabase.upload2=Użyj Beatrun_Confirm, aby kontynuować lub Beatrun_Cancel, aby anulować. beatrun.coursesdatabase.upload2=Użyj Beatrun_Confirm, aby kontynuować lub Beatrun_Cancel, aby anulować.
@ -62,6 +63,7 @@ beatrun.coursesdatabase.update1=Próbujesz zaktualizować bieg oznaczony kodem %
# Tools Menu # Tools Menu
beatrun.toolsmenu.client=Klient beatrun.toolsmenu.client=Klient
beatrun.toolsmenu.server=Serwer beatrun.toolsmenu.server=Serwer
beatrun.toolsmenu.extra=Ekstra
# Tools Menu Courses Section # Tools Menu Courses Section
beatrun.toolsmenu.courses.name=Biegi beatrun.toolsmenu.courses.name=Biegi
@ -106,8 +108,14 @@ beatrun.toolsmenu.hud.nametagsdesc=Włącz/Wyłącz wyświetlanie identyfikator
beatrun.toolsmenu.hud.hudxp=Wyświetl PD na interfejsie beatrun.toolsmenu.hud.hudxp=Wyświetl PD na interfejsie
beatrun.toolsmenu.hud.hudxpdesc=Pokaż całkowitą liczbę PD w pobliżu swojego nicku beatrun.toolsmenu.hud.hudxpdesc=Pokaż całkowitą liczbę PD w pobliżu swojego nicku
beatrun.toolsmenu.hud.wind=Efekt wiatru beatrun.toolsmenu.hud.showspeedometer=Pokaż prędkościomierz
beatrun.toolsmenu.hud.winddesc=Włącza dźwięki wiatru w trakcie biegu beatrun.toolsmenu.hud.showspeedometerdesc=Pokazuje prędkościomierz na interfejsie
beatrun.toolsmenu.hud.showSpeedometer=Pokaż prędkościomierz
beatrun.toolsmenu.hud.showSpeedometerDesc=Pokazuje prędkościomierz na interfejsie (ukrycie interfejsu nie wpływa na to ustawienie)
beatrun.toolsmenu.hud.keystrokes=Pokaż naciśnięte klawisze
beatrun.toolsmenu.hud.keystrokesdesc=Pokazuje na interfejsie klawisze, które wciskasz podczas gry
beatrun.toolsmenu.hud.hidden=Ukryj interfejs beatrun.toolsmenu.hud.hidden=Ukryj interfejs
beatrun.toolsmenu.hud.hiddendesc=0 - Pokazany\n1 - Tylko poza rozgrywką swobodną\n2 - Ukryty beatrun.toolsmenu.hud.hiddendesc=0 - Pokazany\n1 - Tylko poza rozgrywką swobodną\n2 - Ukryty
@ -121,7 +129,7 @@ beatrun.toolsmenu.camera.name=Kołysanie kamery w ruchu
beatrun.toolsmenu.camera.desc=Ustawienia kołysania kamery w ruchu beatrun.toolsmenu.camera.desc=Ustawienia kołysania kamery w ruchu
beatrun.toolsmenu.camera.stabilization=Stabilizacja kołysania kamery w ruchu beatrun.toolsmenu.camera.stabilization=Stabilizacja kołysania kamery w ruchu
beatrun.toolsmenu.camera.stabilizationdesc=Włącz, aby zmniejszyć chorobę lokomocyjną za pomocą utrzymywania stabilności kamery w ruchu beatrun.toolsmenu.camera.stabilizationdesc=Włącz, aby zmniejszyć efekt powodujący chorobę lokomocyjną za pomocą utrzymywania stabilności kamery w ruchu
beatrun.toolsmenu.camera.intensity=Intensywność kołysania kamery w ruchu beatrun.toolsmenu.camera.intensity=Intensywność kołysania kamery w ruchu
beatrun.toolsmenu.camera.fov=Pole widzenia beatrun.toolsmenu.camera.fov=Pole widzenia
beatrun.toolsmenu.camera.fovdesc=Zmienia pole widzenia beatrun.toolsmenu.camera.fovdesc=Zmienia pole widzenia
@ -148,6 +156,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Wyłącza zdolność używania tyr
beatrun.toolsmenu.gameplay.rollspeedloss=Utrata prędkości przy przewrocie beatrun.toolsmenu.gameplay.rollspeedloss=Utrata prędkości przy przewrocie
beatrun.toolsmenu.gameplay.rollspeedlossdesc=Włącz/Wyłącz utratę prędkości przy przewrocie na końcu upadku beatrun.toolsmenu.gameplay.rollspeedlossdesc=Włącz/Wyłącz utratę prędkości przy przewrocie na końcu upadku
beatrun.toolsmenu.gameplay.wind=Efekt wiatru
beatrun.toolsmenu.gameplay.winddesc=Włącza dźwięki wiatru w trakcie biegu
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Inne beatrun.toolsmenu.misc.name=Inne
beatrun.toolsmenu.misc.desc=Inne ustawienia beatrun.toolsmenu.misc.desc=Inne ustawienia

View file

@ -106,8 +106,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Mostrar crachás acima dos nomes de jogadores
beatrun.toolsmenu.hud.hudxp=Mostrar XP beatrun.toolsmenu.hud.hudxp=Mostrar XP
beatrun.toolsmenu.hud.hudxpdesc=Mostrar XP total perto do seu nome beatrun.toolsmenu.hud.hudxpdesc=Mostrar XP total perto do seu nome
beatrun.toolsmenu.hud.wind=Efeito do Vento beatrun.toolsmenu.hud.keystrokes=Show Keystrokes
beatrun.toolsmenu.hud.winddesc=Barulho de vento enquanto estiver correndo beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press
beatrun.toolsmenu.hud.hidden=Esconder a HUD beatrun.toolsmenu.hud.hidden=Esconder a HUD
beatrun.toolsmenu.hud.hiddendesc=0 - Mostrado\n1 - Gamemode apenas\n2 - Escondido beatrun.toolsmenu.hud.hiddendesc=0 - Mostrado\n1 - Gamemode apenas\n2 - Escondido
@ -142,6 +142,9 @@ beatrun.toolsmenu.gameplay.puristmodedesc=Modo Purista é uma preferencia local
beatrun.toolsmenu.gameplay.disablegrapple=Desativar a Habilidade de Gancho beatrun.toolsmenu.gameplay.disablegrapple=Desativar a Habilidade de Gancho
beatrun.toolsmenu.gameplay.disablegrappledesc=Desativa a Habilidade de Gancho beatrun.toolsmenu.gameplay.disablegrappledesc=Desativa a Habilidade de Gancho
beatrun.toolsmenu.gameplay.wind=Efeito do Vento
beatrun.toolsmenu.gameplay.winddesc=Barulho de vento enquanto estiver correndo
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Diversos beatrun.toolsmenu.misc.name=Diversos
beatrun.toolsmenu.misc.desc=Configurações Diversas beatrun.toolsmenu.misc.desc=Configurações Diversas

View file

@ -50,7 +50,7 @@ beatrun.hud.lvl=Лвл: %s
beatrun.hud.infector=Заражённый beatrun.hud.infector=Заражённый
# Menu_Course # Menu_Course
beatrun.coursemenu.trials=Курсы - %s beatrun.coursemenu.trials=Курсы - Папка: %s
beatrun.coursemenu.buildmode=Режим строительства beatrun.coursemenu.buildmode=Режим строительства
beatrun.coursemenu.freeplay=Свободная игра beatrun.coursemenu.freeplay=Свободная игра
@ -111,11 +111,11 @@ beatrun.toolsmenu.hud.hudxpdesc=Показывает весь XP в HUD
beatrun.toolsmenu.hud.showspeedometer=Показать спидометр beatrun.toolsmenu.hud.showspeedometer=Показать спидометр
beatrun.toolsmenu.hud.showspeedometerdesc=Показывает спидометр в HUD beatrun.toolsmenu.hud.showspeedometerdesc=Показывает спидометр в HUD
beatrun.toolsmenu.hud.wind=Эффект Ветра beatrun.toolsmenu.hud.keystrokes=Показывать клавиши
beatrun.toolsmenu.hud.winddesc=Шум ветра во время бега beatrun.toolsmenu.hud.keystrokesdesc=Показывает нажатие клавиш в HUD
beatrun.toolsmenu.hud.hidden=Скрыть HUD beatrun.toolsmenu.hud.hidden=Скрыть HUD
beatrun.toolsmenu.hud.hiddendesc=0 - Показать\n1 - Только режим\n2 - Скрыть полностью beatrun.toolsmenu.hud.hiddendesc=0 - Показать\n1 - Только режим и спидометр\n2 - Скрыть полностью
beatrun.toolsmenu.hud.textcolor=Цвет Текста в HUD beatrun.toolsmenu.hud.textcolor=Цвет Текста в HUD
beatrun.toolsmenu.hud.cornercolor=Цвет Края в HUD beatrun.toolsmenu.hud.cornercolor=Цвет Края в HUD
@ -153,6 +153,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Переключает испол
beatrun.toolsmenu.gameplay.rollspeedloss=Потеря скорости при перекате beatrun.toolsmenu.gameplay.rollspeedloss=Потеря скорости при перекате
beatrun.toolsmenu.gameplay.rollspeedlossdesc=Переключает потерю скорости при перекате beatrun.toolsmenu.gameplay.rollspeedlossdesc=Переключает потерю скорости при перекате
beatrun.toolsmenu.gameplay.wind=Эффект Ветра
beatrun.toolsmenu.gameplay.winddesc=Шум ветра во время бега
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Другое beatrun.toolsmenu.misc.name=Другое
beatrun.toolsmenu.misc.desc=Другие настройки beatrun.toolsmenu.misc.desc=Другие настройки
@ -263,3 +266,5 @@ beatrun.infection.end=Игра окончена!\nВыжившие: %s\nПере
# Server ConVars # Server ConVars
beatrun.randommwloadouts=Случайные наборы оружия MW Base beatrun.randommwloadouts=Случайные наборы оружия MW Base
beatrun.randommwloadoutsdesc=Переключает случайные наборы оружия MW Base в Deathmatch и DataTheft beatrun.randommwloadoutsdesc=Переключает случайные наборы оружия MW Base в Deathmatch и DataTheft
beatrun.randoarc9loadouts=Случайные наборы оружия ARC9 MW
beatrun.randoarc9loadoutsdesc=Переключает случайные наборы оружия ARC9 MW 2019 в Deathmatch и DataTheft

View file

@ -106,9 +106,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Oyuncuların üzerindeki ad etiketlerini aça
beatrun.toolsmenu.hud.hudxp=Arayüz XP'yi göster beatrun.toolsmenu.hud.hudxp=Arayüz XP'yi göster
beatrun.toolsmenu.hud.hudxpdesc=Takma adın yanında toplam XP'yi göster beatrun.toolsmenu.hud.hudxpdesc=Takma adın yanında toplam XP'yi göster
beatrun.toolsmenu.hud.wind=Rüzgar Etkisi beatrun.toolsmenu.hud.keystrokes=Show Keystrokes
beatrun.toolsmenu.hud.winddesc=Koşarken rüzgar sesleri beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press
beatrun.toolsmenu.hud.hidden=Arayüzü gizle beatrun.toolsmenu.hud.hidden=Arayüzü gizle
beatrun.toolsmenu.hud.hiddendesc=0 - Gösterilen\n1 - Yalnızca oyun\nmodu 2 - Gizli beatrun.toolsmenu.hud.hiddendesc=0 - Gösterilen\n1 - Yalnızca oyun\nmodu 2 - Gizli
@ -143,6 +142,9 @@ beatrun.toolsmenu.gameplay.puristmodedesc=Purist modu, havadayken "strafe" atmay
beatrun.toolsmenu.gameplay.disablegrapple=Kanca Özelliğini Devre Dışı Bırak beatrun.toolsmenu.gameplay.disablegrapple=Kanca Özelliğini Devre Dışı Bırak
beatrun.toolsmenu.gameplay.disablegrappledesc=Kanca özelliğini devre dışı bırakır beatrun.toolsmenu.gameplay.disablegrappledesc=Kanca özelliğini devre dışı bırakır
beatrun.toolsmenu.gameplay.wind=Rüzgar Etkisi
beatrun.toolsmenu.gameplay.winddesc=Koşarken rüzgar sesleri
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Diğer beatrun.toolsmenu.misc.name=Diğer
beatrun.toolsmenu.misc.desc=Çeşitli Ayarlar beatrun.toolsmenu.misc.desc=Çeşitli Ayarlar

View file

@ -50,7 +50,7 @@ beatrun.hud.lvl=Лвл: %s
beatrun.hud.infector=Заражений beatrun.hud.infector=Заражений
# Menu_Course # Menu_Course
beatrun.coursemenu.trials=Курси - %s beatrun.coursemenu.trials=Курси - Папка: %s
beatrun.coursemenu.buildmode=Режим будівництва beatrun.coursemenu.buildmode=Режим будівництва
beatrun.coursemenu.freeplay=Вільна гра beatrun.coursemenu.freeplay=Вільна гра
@ -110,8 +110,8 @@ beatrun.toolsmenu.hud.hudxpdesc=Показує весь XP в HUD
beatrun.toolsmenu.hud.showSpeedometer=Показувати швидкість (спідометр) beatrun.toolsmenu.hud.showSpeedometer=Показувати швидкість (спідометр)
beatrun.toolsmenu.hud.showSpeedometerDesc=Показує спідометр на HUD (приховування HUD не впливає на видимість) beatrun.toolsmenu.hud.showSpeedometerDesc=Показує спідометр на HUD (приховування HUD не впливає на видимість)
beatrun.toolsmenu.hud.wind=Ефект Вітру beatrun.toolsmenu.hud.keystrokes=Show Keystrokes
beatrun.toolsmenu.hud.winddesc=Шум вітру під час бігу beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press
beatrun.toolsmenu.hud.hidden=Приховати HUD beatrun.toolsmenu.hud.hidden=Приховати HUD
beatrun.toolsmenu.hud.hiddendesc=0 - Показати\n1 - Тільки режим\n2 - Приховати повністю beatrun.toolsmenu.hud.hiddendesc=0 - Показати\n1 - Тільки режим\n2 - Приховати повністю
@ -149,6 +149,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Відключає викорис
beatrun.toolsmenu.gameplay.rollLoseSpeed=Втрата швидкості під час перекату beatrun.toolsmenu.gameplay.rollLoseSpeed=Втрата швидкості під час перекату
beatrun.toolsmenu.gameplay.rollLoseSpeedDesc=Чи буде гравець втрачати швидкість під час перекату чи ні (як у ME:Catalyst) beatrun.toolsmenu.gameplay.rollLoseSpeedDesc=Чи буде гравець втрачати швидкість під час перекату чи ні (як у ME:Catalyst)
beatrun.toolsmenu.gameplay.wind=Ефект Вітру
beatrun.toolsmenu.gameplay.winddesc=Шум вітру під час бігу
# Tools Menu Misc Section # Tools Menu Misc Section
beatrun.toolsmenu.misc.name=Інше beatrun.toolsmenu.misc.name=Інше
beatrun.toolsmenu.misc.desc=Інші налаштування beatrun.toolsmenu.misc.desc=Інші налаштування

View file

@ -37,7 +37,7 @@ function ENT:StartTouch(ent)
end end
function ENT:Touch(ent) function ENT:Touch(ent)
if ent:IsPlayer() then if ent:IsPlayer() and GetGlobalBool("GM_INFECTION") then
if CurTime() > ent.MemeTime then if CurTime() > ent.MemeTime then
if not ent.MemeMessage then if not ent.MemeMessage then
ent:ChatPrint("Are you having fun standing still in a parkour game? Let's spice things up a bit!") ent:ChatPrint("Are you having fun standing still in a parkour game? Let's spice things up a bit!")

View file

@ -63,10 +63,9 @@ function ENT:BRCollisionFunc(ent)
if util.QuickTrace(self:GetPos(), ang:Up() * self.LaserLength, self).Entity ~= ent then return false end if util.QuickTrace(self:GetPos(), ang:Up() * self.LaserLength, self).Entity ~= ent then return false end
local dmginfo = DamageInfo() local dmginfo = DamageInfo()
dmginfo:SetAttacker(self) dmginfo:SetAttacker(self)
dmginfo:SetDamage(1000) dmginfo:SetDamage(math.huge)
dmginfo:SetDamageType(DMG_DISSOLVE) dmginfo:SetDamageType(DMG_DISSOLVE)
ent:TakeDamageInfo(dmginfo) ent:TakeDamageInfo(dmginfo)
ent:EmitSound("bigspark" .. math.random(1, 2) .. ".wav") ent:EmitSound("bigspark" .. math.random(1, 2) .. ".wav")

View file

@ -495,13 +495,12 @@ function SWEP:PrimaryAttack()
if SERVER and IsValid(ent) then if SERVER and IsValid(ent) then
if not ply:IsPlayer() or (Course_Name == "" and not GetGlobalBool("GM_INFECTION")) then if not ply:IsPlayer() or (Course_Name == "" and not GetGlobalBool("GM_INFECTION")) then
local d = DamageInfo() local d = DamageInfo()
d:SetDamage((punch ~= 3 and 10) or 20) d:SetDamage((punch ~= 3 and 10) or 20)
d:SetAttacker(ply) d:SetAttacker(ply)
d:SetInflictor(self) d:SetInflictor(self)
d:SetDamageType(DMG_CLUB) d:SetDamageType(DMG_CLUB)
d:SetDamagePosition(tr.start) d:SetDamagePosition(tr.start)
d:SetDamageForce(ply:EyeAngles():Forward() * 7000) d:SetDamageForce(ply:EyeAngles():Forward() * 7000)
ent:TakeDamageInfo(d) ent:TakeDamageInfo(d)
if ent:IsNPC() then if ent:IsNPC() then

View file

@ -23,6 +23,9 @@ end
local addons = 0 local addons = 0
local incompatible = { local incompatible = {
["2155366756"] = true, -- VManip (Base)
["2364206712"] = true, -- [VManip] Vaulting
["2416989205"] = true, -- [VManip] Quick Slide
["1581533176"] = true, -- The Aperture [Reupload] ["1581533176"] = true, -- The Aperture [Reupload]
["2675972006"] = true, -- Custom Loadout ["2675972006"] = true, -- Custom Loadout
["378401390"] = true, -- Quake/Half-Life View bobbing ["378401390"] = true, -- Quake/Half-Life View bobbing
@ -49,9 +52,10 @@ local incompatible = {
["2824714462"] = true, -- [TFA] Screen Shake ["2824714462"] = true, -- [TFA] Screen Shake
["3037375111"] = true, -- Quick Slide With Legs ["3037375111"] = true, -- Quick Slide With Legs
["748422181"] = true, -- FOV Changer ["748422181"] = true, -- FOV Changer
["2930331275"] = true, -- Realistic Fragmentation System ["2919970981"] = true, -- Realistic Fragmentation System [OLD]
["112806637"] = true, -- Gmod Legs 3 ["112806637"] = true, -- Gmod Legs 3
["678037029"] = true -- Enhanced Camera ["678037029"] = true, -- Enhanced Camera
["2497150824"] = true -- Smooth Camera
} }
local warnpanel = { local warnpanel = {

View file

@ -42,15 +42,8 @@ hook.Add("Think", "beatrun_detect_tool", function()
end end
end) end)
-- local BodyAnimPos = Vector(0, 0, 0)
-- local BodyAnimAngLerp = Angle(0, 0, 0)
-- local DidDraw = false
local AnimString = "nil" local AnimString = "nil"
-- local angclosenuff = false
local savedeyeangb = Angle(0, 0, 0) local savedeyeangb = Angle(0, 0, 0)
-- local bodylockview = false
-- local bodyanimdone = false
-- local holstertime = 0
local animmodelstring = "" local animmodelstring = ""
local showweapon = false local showweapon = false
@ -93,7 +86,6 @@ function RemoveBodyAnim(noang)
if shouldremove then return end if shouldremove then return end
local ply = LocalPlayer() local ply = LocalPlayer()
-- local ang = ply:EyeAngles()
local newang = ply:EyeAngles() local newang = ply:EyeAngles()
local noang = noang or false local noang = noang or false
@ -245,7 +237,6 @@ function CacheLerpBodyAnim()
BodyAnimMDL:SetNoDraw(true) BodyAnimMDL:SetNoDraw(true)
local pos = LocalPlayer():GetPos() local pos = LocalPlayer():GetPos()
-- local posdelta = pos - matrixfrompos
local this = BodyAnim local this = BodyAnim
this.m = this.m or Matrix() this.m = this.m or Matrix()

View file

@ -131,24 +131,20 @@ local function BeatrunHUD()
surface.SetFont("DebugFixedSmall") surface.SetFont("DebugFixedSmall")
local version_text = "v" .. VERSIONGLOBAL local version_text = "v" .. VERSION_GLOBAL
local tw, _ = surface.GetTextSize(version_text) local tw, _ = surface.GetTextSize(version_text)
surface.SetTextColor(255, 255, 255, 20) surface.SetTextColor(255, 255, 255, 20)
surface.SetTextPos(scrw - tw, 0) surface.SetTextPos(scrw - tw, 0)
surface.DrawText(version_text) surface.DrawText(version_text)
surface.SetFont("BeatrunHUD") surface.SetFont("BeatrunHUD")
if file.Exists("beatrun/version.txt", "DATA") then if VERSION_GLOBAL ~= VERSION_LATEST then
local latest_version = file.Read("beatrun/version.txt", "DATA") local update_text = "Update available!"
local notlatest_w, _ = surface.GetTextSize(update_text)
if latest_version ~= VERSIONGLOBAL then surface.SetTextColor(255, 255, 255, 30)
local update_text = "Update available!" surface.SetTextPos(scrw - notlatest_w, 10)
local notlatest_w, _ = surface.GetTextSize(update_text) surface.DrawText(update_text)
surface.SetTextColor(255, 255, 255, 30) surface.SetFont("BeatrunHUD")
surface.SetTextPos(scrw - notlatest_w, 10)
surface.DrawText(update_text)
surface.SetFont("BeatrunHUD")
end
end end
local pl = ply:GetNW2Int("PLoss") local pl = ply:GetNW2Int("PLoss")

View file

@ -0,0 +1,149 @@
local showKeystrokes = CreateClientConVar("Beatrun_ShowKeystrokes", 1, true, true)
local color_white = Color(255, 255, 255)
local color_white_t = Color(255, 255, 255, 100)
local color_black = Color(0, 0, 0)
local color_black_t = Color(0, 0, 0, 100)
local size = 35
local function GetFormattedKey(bind)
local keyBind = input.LookupBinding(bind)
if keyBind == "MOUSE1" then keyBind = "LMB"
elseif keyBind == "MOUSE2" then keyBind = "RMB"
elseif keyBind == "MOUSE3" then keyBind = "MMB" end
if keyBind then
return string.upper(keyBind)
else
return "?"
end
end
local function ShowKeyStrokes()
if showKeystrokes:GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() == 0 then
local forward = GetFormattedKey("+forward")
local back = GetFormattedKey("+back")
local moveleft = GetFormattedKey("+moveleft")
local moveright = GetFormattedKey("+moveright")
local use = GetFormattedKey("+use")
local reload = GetFormattedKey("+reload")
local jump = GetFormattedKey("+jump")
local speed = GetFormattedKey("+speed")
local duck = GetFormattedKey("+duck")
local attack = GetFormattedKey("+attack")
local attack2 = GetFormattedKey("+attack2")
if LocalPlayer():KeyDown(IN_FORWARD) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size, 0, size, size)
draw.SimpleText(forward, "BeatrunHUD", size + 10, size - 30, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size, 0, size, size)
draw.SimpleText(forward, "BeatrunHUD", size + 10, size - 30, color_white)
end
if LocalPlayer():KeyDown(IN_USE) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size * 2, 0, size, size)
draw.SimpleText(use, "BeatrunHUD", size + 48, size - 30, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size * 2, 0, size, size)
draw.SimpleText(use, "BeatrunHUD", size + 48, size - 30, color_white)
end
if LocalPlayer():KeyDown(IN_RELOAD) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size * 3, 0, size, size)
draw.SimpleText(reload, "BeatrunHUD", size * 3 + 12, size - 30, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size * 3, 0, size, size)
draw.SimpleText(reload, "BeatrunHUD", size * 3 + 12, size - 30, color_white)
end
if LocalPlayer():KeyDown(IN_MOVELEFT) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(0, size, size, size)
draw.SimpleText(moveleft, "BeatrunHUD", size - 23, size + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(0, size, size, size)
draw.SimpleText(moveleft, "BeatrunHUD", size - 23, size + 8, color_white)
end
if LocalPlayer():KeyDown(IN_BACK) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size, size, size, size)
draw.SimpleText(back, "BeatrunHUD", size + 12, size + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size, size, size, size)
draw.SimpleText(back, "BeatrunHUD", size + 12, size + 8, color_white)
end
if LocalPlayer():KeyDown(IN_MOVERIGHT) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size * 2, size, size, size)
draw.SimpleText(moveright, "BeatrunHUD", size + 48, size + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size * 2, size, size, size)
draw.SimpleText(moveright, "BeatrunHUD", size + 48, size + 8, color_white)
end
if LocalPlayer():KeyDown(IN_JUMP) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(0, size * 2, size * 3, size)
draw.SimpleText(jump, "BeatrunHUD", 28, size * 2 + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(0, size * 2, size * 3, size)
draw.SimpleText(jump, "BeatrunHUD", 28, size * 2 + 8, color_white)
end
if LocalPlayer():KeyDown(IN_SPEED) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(0, size * 3, size * 3, size)
draw.SimpleText(speed, "BeatrunHUD", 28, size * 3 + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(0, size * 3, size * 3, size)
draw.SimpleText(speed, "BeatrunHUD", 28, size * 3 + 8, color_white)
end
if LocalPlayer():KeyDown(IN_DUCK) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(0, size * 4, size * 3, size)
draw.SimpleText(duck, "BeatrunHUD", 32, size * 4 + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(0, size * 4, size * 3, size)
draw.SimpleText(duck, "BeatrunHUD", 32, size * 4 + 8, color_white)
end
if LocalPlayer():KeyDown(IN_ATTACK) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size * 3, size, size * 2, size)
draw.SimpleText(attack, "BeatrunHUD", size + 87, size + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size * 3, size, size * 2, size)
draw.SimpleText(attack, "BeatrunHUD", size + 87, size + 8, color_white)
end
if LocalPlayer():KeyDown(IN_ATTACK2) then
surface.SetDrawColor(color_white_t)
surface.DrawRect(size * 3, size * 2, size * 2, size)
draw.SimpleText(attack2, "BeatrunHUD", size + 86, size * 2 + 8, color_black)
else
surface.SetDrawColor(color_black_t)
surface.DrawRect(size * 3, size * 2, size * 2, size)
draw.SimpleText(attack2, "BeatrunHUD", size + 86, size * 2 + 8, color_white)
end
end
end
hook.Add("HUDPaint", "KeyStrokes", ShowKeyStrokes)

View file

@ -25,7 +25,7 @@ local function buildmodebutton()
LocalPlayer():ConCommand("buildmode") LocalPlayer():ConCommand("buildmode")
end end
AEUI:Text(coursepanel, language.GetPhrase("beatrun.coursemenu.trials"):format(game.GetMap()), "AEUIVeryLarge", 20, 30) AEUI:Text(coursepanel, language.GetPhrase("beatrun.coursemenu.trials"):format(string.Replace(game.GetMap(), " ", "-")), "AEUIVeryLarge", 20, 30)
local buildmodebutton = AEUI:AddButton(coursepanel, "#beatrun.coursemenu.buildmode", 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
@ -55,7 +55,7 @@ function OpenCourseMenu()
AEUI:AddPanel(coursepanel) AEUI:AddPanel(coursepanel)
AEUI:AddPanel(courselist) AEUI:AddPanel(courselist)
local dir = "beatrun/courses/" .. game.GetMap() .. "/" local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/"
local dirsearch = dir .. "*.txt" local dirsearch = dir .. "*.txt"
local files = file.Find(dirsearch, "DATA", "datedesc") local files = file.Find(dirsearch, "DATA", "datedesc")

View file

@ -1,4 +1,3 @@
-- local checktimer = 0
local errorc = Color(255, 25, 25) local errorc = Color(255, 25, 25)
local whitelist = { local whitelist = {
@ -8,11 +7,7 @@ local whitelist = {
local whitelistanims = fbanims local whitelistanims = fbanims
local function BodyAnimAntiStuck() local function BodyAnimAntiStuck()
if not IsValid(BodyAnim) then if not IsValid(BodyAnim) then return end
checktimer = 0
return
end
local ply = LocalPlayer() local ply = LocalPlayer()

View file

@ -167,8 +167,8 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
panel:CheckBox("#beatrun.toolsmenu.hud.showspeedometer", "Beatrun_ShowSpeedometer") panel:CheckBox("#beatrun.toolsmenu.hud.showspeedometer", "Beatrun_ShowSpeedometer")
panel:ControlHelp("#beatrun.toolsmenu.hud.showspeedometerdesc") panel:ControlHelp("#beatrun.toolsmenu.hud.showspeedometerdesc")
panel:CheckBox("#beatrun.toolsmenu.hud.wind", "Beatrun_Wind") panel:CheckBox("#beatrun.toolsmenu.hud.keystrokes", "Beatrun_ShowKeystrokes")
panel:ControlHelp("#beatrun.toolsmenu.hud.winddesc") panel:ControlHelp("#beatrun.toolsmenu.hud.keystrokesdesc")
panel:NumSlider("#beatrun.toolsmenu.hud.hidden", "Beatrun_HUDHidden", 0, 2, 0) panel:NumSlider("#beatrun.toolsmenu.hud.hidden", "Beatrun_HUDHidden", 0, 2, 0)
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.hud.hiddendesc")) panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.hud.hiddendesc"))
@ -250,6 +250,9 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
panel:CheckBox("#beatrun.toolsmenu.moves.totsugekiaudio", "Beatrun_TotsugekiAudio") panel:CheckBox("#beatrun.toolsmenu.moves.totsugekiaudio", "Beatrun_TotsugekiAudio")
panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.totsugekiaudiodesc")) panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.totsugekiaudiodesc"))
panel:CheckBox("#beatrun.toolsmenu.gameplay.wind", "Beatrun_Wind")
panel:ControlHelp("#beatrun.toolsmenu.gameplay.winddesc")
end) end)
spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_misc", "#beatrun.toolsmenu.misc.name", "", "", function(panel) spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_misc", "#beatrun.toolsmenu.misc.name", "", "", function(panel)
@ -347,6 +350,9 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function()
panel:CheckBox("#beatrun.randommwloadouts", "Beatrun_RandomMWLoadouts") panel:CheckBox("#beatrun.randommwloadouts", "Beatrun_RandomMWLoadouts")
panel:ControlHelp("#beatrun.randommwloadoutsdesc") panel:ControlHelp("#beatrun.randommwloadoutsdesc")
panel:CheckBox("#beatrun.randoarc9loadouts", "Beatrun_RandomARC9Loadouts")
panel:ControlHelp("#beatrun.randoarc9loadoutsdesc")
local DatatheftButton = vgui.Create("DButton", panel) local DatatheftButton = vgui.Create("DButton", panel)
DatatheftButton:SetText("#beatrun.toolsmenu.gamemodes.datatheft") DatatheftButton:SetText("#beatrun.toolsmenu.gamemodes.datatheft")
DatatheftButton:SetSize(0, 20) DatatheftButton:SetSize(0, 20)

View file

@ -3,22 +3,4 @@ include("shared.lua")
for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do
include("cl/" .. v) include("cl/" .. v)
end end
http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code)
if code == 200 then
if not file.Exists("beatrun/version.txt", "DATA") then
file.Write("beatrun/version.txt", body)
end
if body ~= VERSIONGLOBAL then
file.Write("beatrun/version.txt", body)
else
print("Latest version already")
end
else
print("Error while checking version:\n" .. body)
end
end, function(e)
print("Error while checking version:\n" .. e)
end)

View file

@ -130,26 +130,7 @@ end
function PLAYER:Loadout() function PLAYER:Loadout()
if GetGlobalBool("GM_DATATHEFT") or GetGlobalBool("GM_DEATHMATCH") then if GetGlobalBool("GM_DATATHEFT") or GetGlobalBool("GM_DEATHMATCH") then
if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then Beatrun_GiveGMWeapon(self.Player)
for i = 0, 1 do
local randomSWEP = getRandomMGBaseWeapon()
local w = self.Player:Give(randomSWEP.ClassName)
timer.Simple(1, function()
if w:GetPrimaryAmmoType() ~= -1 then self.Player:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end
if w:GetSecondaryAmmoType() ~= -1 then self.Player:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end
end)
end
else
for _, v in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do
local w = self.Player:Give(v)
timer.Simple(1, function()
if w:GetPrimaryAmmoType() ~= -1 then self.Player:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end
if w:GetSecondaryAmmoType() ~= -1 then self.Player:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end
end)
end
end
else else
self.Player:RemoveAllAmmo() self.Player:RemoveAllAmmo()
end end

View file

@ -1,6 +1,9 @@
local vmatrixmeta = FindMetaTable("VMatrix") local vmatrixmeta = FindMetaTable("VMatrix")
local playermeta = FindMetaTable("Player") local playermeta = FindMetaTable("Player")
CreateConVar("Beatrun_RandomMWLoadouts", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
CreateConVar("Beatrun_RandomARC9Loadouts", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
BEATRUN_GAMEMODES_LOADOUTS = { BEATRUN_GAMEMODES_LOADOUTS = {
{"weapon_357", "weapon_ar2"} {"weapon_357", "weapon_ar2"}
} }
@ -86,4 +89,61 @@ function playermeta:notUsingRH(wep)
else else
return false return false
end end
end end
function Beatrun_GiveAmmo(weapon, ply)
if weapon:GetPrimaryAmmoType() ~= -1 then ply:GiveAmmo(10000, weapon:GetPrimaryAmmoType(), true) end
if weapon:GetSecondaryAmmoType() ~= -1 then ply:GiveAmmo(5, weapon:GetSecondaryAmmoType(), true) end
end
function Beatrun_getRandomMWBaseSWEP()
local allWep = weapons.GetList()
local wepIndex = math.random(#allWep)
local wep = allWep[wepIndex]
if wep.Base == "mg_base" and not wep.AdminOnly then
return wep
else
return Beatrun_getRandomMWBaseSWEP()
end
end
function Beatrun_getRandomARC9SWEP()
local allWep = weapons.GetList()
local wepIndex = math.random(#allWep)
local wep = allWep[wepIndex]
if wep.Base == "arc9_cod2019_base" and not wep.AdminOnly then
return wep
else
return Beatrun_getRandomARC9SWEP()
end
end
function Beatrun_GiveGMWeapon(ply)
if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() and not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() then
for i = 0, 1 do
local swep = Beatrun_getRandomMWBaseSWEP()
local w = ply:Give(swep.ClassName)
timer.Simple(1, function()
Beatrun_GiveAmmo(w, ply)
end)
end
elseif GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then
for i = 0, 1 do
-- We don't need ammo because ARC9 got the infinite ammo option!
local swep = Beatrun_getRandomARC9SWEP()
ply:Give(swep.ClassName)
end
elseif not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then
for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do
local w = v:Give(b)
timer.Simple(1, function()
Beatrun_GiveAmmo(w, ply)
end)
end
end
end

View file

@ -576,7 +576,7 @@ if SERVER then
end end
function Beatrun_ReadCourseLocal(id) function Beatrun_ReadCourseLocal(id)
local dir = "beatrun/courses/" .. game.GetMap() .. "/" local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/"
local save = file.Read(dir .. id .. ".txt", "DATA") local save = file.Read(dir .. id .. ".txt", "DATA")
if not save then if not save then
@ -943,7 +943,7 @@ if CLIENT then
local save = CourseData(name) local save = CourseData(name)
local jsonsave = util.TableToJSON(save) local jsonsave = util.TableToJSON(save)
local id = util.CRC(jsonsave) local id = util.CRC(jsonsave)
local dir = "beatrun/courses/" .. game.GetMap() .. "/" local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/"
if compress == nil then compress = true end if compress == nil then compress = true end
@ -1011,7 +1011,7 @@ if CLIENT then
--[[ --[[
concommand.Add("Beatrun_PrintCourse", function(ply, cmd, args, argstr) concommand.Add("Beatrun_PrintCourse", function(ply, cmd, args, argstr)
local dir = "beatrun/courses/" .. game.GetMap() .. "/" local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/"
local save = file.Read(dir .. args[1] .. ".txt", "DATA") local save = file.Read(dir .. args[1] .. ".txt", "DATA")
if not save then if not save then

View file

@ -241,49 +241,55 @@ function CourseHUD()
local incourse = Course_Name ~= "" local incourse = Course_Name ~= ""
local totaltime = CheckpointNumber ~= -1 and math.max(0, CurTime() - Course_StartTime) or Course_EndTime local totaltime = CheckpointNumber ~= -1 and math.max(0, CurTime() - Course_StartTime) or Course_EndTime
local text_color = string.ToColor(LocalPlayer():GetInfo("Beatrun_HUDTextColor")) if incourse then
local text = string.FormattedTime(totaltime, "%02i:%02i:%02i")
if GetConVar("Beatrun_ShowSpeedometer"):GetBool() then local w, _ = surface.GetTextSize(text)
local speed = math.Round(ply:GetVelocity():Length2D() * 0.06858125) surface.SetFont("BeatrunHUD")
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.075 + vpz)
surface.DrawText(text)
end
if GetConVar("Beatrun_ShowSpeedometer"):GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() ~= 2 then
local speed = math.Round(ply:GetVelocity():Length() * 0.06858125)
if speed < 10 then if speed < 10 then
speed = "0" .. speed speed = "0" .. speed
end end
text = language.GetPhrase("beatrun.checkpoints.speedometer"):format(speed) 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
local r, g, b, a = string.ToColor(GetConVar("Beatrun_HUDTextColor"):GetString()) local r, g, b, a = string.ToColor(GetConVar("Beatrun_HUDTextColor"):GetString())
surface.SetDrawColor(255, 255, 255, 255) surface.SetDrawColor(255, 255, 255, 255)
surface.SetFont("BeatrunHUD") surface.SetFont("BeatrunHUD")
surface.SetTextColor(r, g, b, a) surface.SetTextColor(r, g, b, a)
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.85 + vpz) surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.85 + vpz)
surface.DrawText(text) surface.DrawText(text)
if GetConVar("Beatrun_HUDStats"):GetBool() then if GetConVar("Beatrun_HUDStats"):GetBool() then
local ang1 = ply:GetAimVector() local ang1 = ply:GetAimVector()
ang1 = math.Round(ang1:Angle()[2] % 90, 0) ang1 = math.Round(ang1:Angle()[2] % 90, 0)
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.88 + vpz) surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.88 + vpz)
surface.DrawText(ang1) surface.DrawText(ang1)
surface.SetTextPos(ScrW() * 0.87 - w * 0.5 + vpx, ScrH() * 0.88 + vpz) surface.SetTextPos(ScrW() * 0.87 - w * 0.5 + vpx, ScrH() * 0.88 + vpz)
surface.DrawText("Angle") surface.DrawText("Angle")
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.90 + vpz) surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.90 + vpz)
surface.DrawText(ply:GetWallrun()) surface.DrawText(ply:GetWallrun())
surface.SetTextPos(ScrW() * 0.87 - w * 0.5 + vpx, ScrH() * 0.90 + vpz) surface.SetTextPos(ScrW() * 0.87 - w * 0.5 + vpx, ScrH() * 0.90 + vpz)
surface.DrawText("Wall stat") surface.DrawText("Wall stat")
if ply:UsingRH() then if ply:UsingRH() then
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.92 + vpz) surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.92 + vpz)
surface.DrawText(tostring(ply:GetActiveWeapon():GetQuakeJumping())) surface.DrawText(tostring(ply:GetActiveWeapon():GetQuakeJumping()))
surface.SetTextPos(ScrW() * 0.89 - w * 0.5 + vpx, ScrH() * 0.92 + vpz) surface.SetTextPos(ScrW() * 0.89 - w * 0.5 + vpx, ScrH() * 0.92 + vpz)
surface.DrawText("Quake") surface.DrawText("Quake")
end end
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.94 + vpz) surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.94 + vpz)
if (ply:GetWallrunTime() - CurTime()) < 0 then if (ply:GetWallrunTime() - CurTime()) < 0 then
surface.DrawText("0.00") surface.DrawText("0.00")
@ -293,10 +299,10 @@ function CourseHUD()
surface.SetTextPos(ScrW() * 0.89 - w * 0.5 + vpx, ScrH() * 0.94 + vpz) surface.SetTextPos(ScrW() * 0.89 - w * 0.5 + vpx, ScrH() * 0.94 + vpz)
surface.DrawText("Wallrun Time Remains") surface.DrawText("Wallrun Time Remains")
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.96 + vpz) surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.96 + vpz)
surface.DrawText(tostring(CurTime() < ply:GetWallrunTime())) surface.DrawText(tostring(CurTime() < ply:GetWallrunTime()))
surface.SetTextPos(ScrW() * 0.89 - w * 0.5 + vpx, ScrH() * 0.96 + vpz) surface.SetTextPos(ScrW() * 0.89 - w * 0.5 + vpx, ScrH() * 0.96 + vpz)
surface.DrawText("Wallrunning") surface.DrawText("Wallrunning")
end end
@ -310,7 +316,7 @@ function CourseHUD()
surface.SetTextPos(ScrW() * 0.87 - w + vpx, ScrH() * 0.075 + vpz) surface.SetTextPos(ScrW() * 0.87 - w + vpx, ScrH() * 0.075 + vpz)
surface.DrawText(text) surface.DrawText(text)
end end
if incourse and pbtimes and !ply.InReplay then if incourse and pbtimes and !ply.InReplay then
local text = string.FormattedTime(pbtotal, "%02i:%02i:%02i") local text = string.FormattedTime(pbtotal, "%02i:%02i:%02i")
local w, h = surface.GetTextSize(text) local w, h = surface.GetTextSize(text)
@ -319,7 +325,7 @@ function CourseHUD()
pbcolor.r = text_color.r * 0.6 pbcolor.r = text_color.r * 0.6
pbcolor.g = text_color.g * 0.6 pbcolor.g = text_color.g * 0.6
pbcolor.b = text_color.b * 0.6 pbcolor.b = text_color.b * 0.6
surface.SetFont("BeatrunHUD") surface.SetFont("BeatrunHUD")
surface.SetTextPos(ScrW() * 0.87 - w + vpx, ScrH() * 0.075 + h + vpz) surface.SetTextPos(ScrW() * 0.87 - w + vpx, ScrH() * 0.075 + h + vpz)
surface.SetTextColor(pbcolor) surface.SetTextColor(pbcolor)

View file

@ -22,26 +22,7 @@ if SERVER then
v:Spawn() v:Spawn()
end end
if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then Beatrun_GiveGMWeapon(v)
for i = 0, 1 do
local randomSWEP = getRandomMGBaseWeapon()
local w = v:Give(randomSWEP.ClassName)
timer.Simple(1, function()
if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end
if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end
end)
end
else
for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do
local w = v:Give(b)
timer.Simple(1, function()
if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end
if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end
end)
end
end
end end
end end

View file

@ -2,20 +2,6 @@ if SERVER then
util.AddNetworkString("Deathmatch_Start") util.AddNetworkString("Deathmatch_Start")
util.AddNetworkString("Deathmatch_Sync") util.AddNetworkString("Deathmatch_Sync")
CreateConVar("Beatrun_RandomMWLoadouts", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
function getRandomMGBaseWeapon()
local allWep = weapons.GetList()
local wepIndex = math.random(#allWep)
local wep = allWep[wepIndex]
if wep.Base == "mg_base" and not wep.AdminOnly then
return wep
else
return getRandomMGBaseWeapon()
end
end
function Beatrun_StartDeathmatch() function Beatrun_StartDeathmatch()
if GetGlobalBool("GM_DEATHMATCH") then return end if GetGlobalBool("GM_DEATHMATCH") then return end
if Course_Name ~= "" then return end if Course_Name ~= "" then return end
@ -31,26 +17,7 @@ if SERVER then
v:Spawn() v:Spawn()
end end
if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then Beatrun_GiveGMWeapon(v)
for i = 0, 1 do
local randomSWEP = getRandomMGBaseWeapon()
local w = v:Give(randomSWEP.ClassName)
timer.Simple(1, function()
if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end
if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end
end)
end
else
for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do
local w = v:Give(b)
timer.Simple(1, function()
if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end
if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end
end)
end
end
end end
end end

View file

@ -198,15 +198,14 @@ hook.Add("OnPlayerHitGround", "MELandSound", function(ply, water, floater, speed
end end
if SERVER and speed >= 500 and ply:GetJumpTurn() then if SERVER and speed >= 500 and ply:GetJumpTurn() then
local info = DamageInfo()
local dmg = ply:Health() * 0.1 local dmg = ply:Health() * 0.1
if ply:Health() - dmg > 0 then if ply:Health() - dmg > 0 then
info:SetDamage(dmg) local info = DamageInfo()
info:SetDamageType(DMG_FALL) info:SetDamage(dmg)
info:SetAttacker(game.GetWorld()) info:SetDamageType(DMG_FALL)
info:SetInflictor(game.GetWorld()) info:SetAttacker(game.GetWorld())
info:SetInflictor(game.GetWorld())
ply:TakeDamageInfo(info) ply:TakeDamageInfo(info)
end end
end end

View file

@ -191,13 +191,12 @@ local function MeleeThink(ply, mv, cmd)
if SERVER and IsValid(ent) and (not ent:IsPlayer() or Course_Name == "" and not GetGlobalBool("GM_INFECTION") and GetConVar("sbox_playershurtplayers"):GetBool()) then if SERVER and IsValid(ent) and (not ent:IsPlayer() or Course_Name == "" and not GetGlobalBool("GM_INFECTION") and GetConVar("sbox_playershurtplayers"):GetBool()) then
local d = DamageInfo() local d = DamageInfo()
d:SetDamage(meleedata[ply:GetMelee()][6]) d:SetDamage(meleedata[ply:GetMelee()][6])
d:SetAttacker(ply) d:SetAttacker(ply)
d:SetInflictor(ply) d:SetInflictor(ply)
d:SetDamageType(DMG_CLUB) d:SetDamageType(DMG_CLUB)
d:SetDamagePosition(tr.start) d:SetDamagePosition(tr.start)
d:SetDamageForce(ply:EyeAngles():Forward() * 7000) d:SetDamageForce(ply:EyeAngles():Forward() * 7000)
ent:TakeDamageInfo(d) ent:TakeDamageInfo(d)
if SERVER and ent:GetClass() == "func_breakable_surf" then if SERVER and ent:GetClass() == "func_breakable_surf" then

View file

@ -249,7 +249,7 @@ if SERVER then
if speed < 800 and CurTime() < ply:GetSafetyRollKeyTime() and not ply:GetCrouchJump() and not ply:Crouching() then if speed < 800 and CurTime() < ply:GetSafetyRollKeyTime() and not ply:GetCrouchJump() and not ply:Crouching() then
return 0 return 0
else else
return 1000 return math.huge
end end
end end

View file

@ -246,6 +246,7 @@ end
hook.Add("SetupMove", "qslide", function(ply, mv, cmd) hook.Add("SetupMove", "qslide", function(ply, mv, cmd)
if not ply:Alive() then return end if not ply:Alive() then return end
if ply:GetSafetyRollKeyTime() > CurTime() then return end
if not ply.OldDuckSpeed then if not ply.OldDuckSpeed then
ply.OldDuckSpeed = ply:GetDuckSpeed() ply.OldDuckSpeed = ply:GetDuckSpeed()
@ -321,12 +322,10 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd)
ply:SetCrouchJump(false) ply:SetCrouchJump(false)
if SERVER and mv:GetVelocity().z <= -1250 then if SERVER and mv:GetVelocity().z <= -1250 and not ply:InOverdrive() then
local dmg = DamageInfo() local dmg = DamageInfo()
dmg:SetDamageType(DMG_FALL)
dmg:SetDamageType(DMG_FALL) dmg:SetDamage(1000)
dmg:SetDamage(1000)
ply:TakeDamageInfo(dmg) ply:TakeDamageInfo(dmg)
end end
end end
@ -520,8 +519,8 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd)
if not slippery and pos.z > ply:GetSlidingLastPos().z + 1 then if not slippery and pos.z > ply:GetSlidingLastPos().z + 1 then
ply:SetSlidingTime(ply:GetSlidingTime() - 0.025) ply:SetSlidingTime(ply:GetSlidingTime() - 0.025)
elseif slippery or slidedelta < 1 and pos.z < ply:GetSlidingLastPos().z - 0.25 then elseif slippery or slidedelta < 1 and pos.z < ply:GetSlidingLastPos().z - 0.25 then
ply:SetSlidingTime(CT + slidetime) --[[ 450 * ply:GetOverdriveMult() ]] ply:SetSlidingTime(CT + slidetime) --[[ GetConVar("Beatrun_SpeedLimit"):GetInt() ]]
ply:SetSlidingVel(math.min(mv:GetVelocity():Length() * 0.865, GetConVar("Beatrun_SpeedLimit"):GetInt() * 2) * ply:GetOverdriveMult()) ply:SetSlidingVel(math.min(mv:GetVelocity():Length() * 0.865, 450 * ply:GetOverdriveMult()))
end end
ply:SetSlidingLastPos(pos) ply:SetSlidingLastPos(pos)

View file

@ -1,4 +1,6 @@
VERSIONGLOBAL = "1.0.8" VERSION_GLOBAL = "1.0.22"
VERSION_LATEST = ""
VERSION_CHECKED = false
DeriveGamemode("sandbox") DeriveGamemode("sandbox")
@ -14,4 +16,30 @@ include("preexecute/shared.lua")
for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME", "nameasc")) do for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME", "nameasc")) do
AddCSLuaFile("sh/" .. v) AddCSLuaFile("sh/" .. v)
include("sh/" .. v) include("sh/" .. v)
end
if not VERSION_CHECKED then
http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code)
if code == 200 then
VERSION_LATEST = body:gsub("[\n\r]", "")
print("Latest version: " .. VERSION_LATEST)
if VERSION_LATEST > VERSION_GLOBAL then
print("Your version is behind latest, please update.")
elseif VERSION_LATEST == VERSION_GLOBAL then
print("You're up to date, nice!")
else
print("Your version is ahead of latest. Huh?")
end
VERSION_CHECKED = true
return
else
print("Error while checking version (not 200 code):\n" .. body)
VERSION_CHECKED = true
return
end
end)
end end

View file

@ -1 +1 @@
1.0.8 1.0.22