First version of Xrasher.
Some checks are pending
Build & Deploy Engine / build (macos-13, amd64, apple) (push) Waiting to run
Build & Deploy Engine / build (macos-14, arm64, apple) (push) Waiting to run
Build & Deploy Engine / build (true, ubuntu-20.04, arm64, linux) (push) Waiting to run
Build & Deploy Engine / build (true, ubuntu-20.04, armhf, linux) (push) Waiting to run
Build & Deploy Engine / build (true, ubuntu-20.04, ppc64el, linux) (push) Waiting to run
Build & Deploy Engine / build (true, ubuntu-20.04, riscv64, linux) (push) Waiting to run
Build & Deploy Engine / build (ubuntu-20.04, amd64, linux) (push) Waiting to run
Build & Deploy Engine / build (ubuntu-20.04, i386, linux) (push) Waiting to run
Build & Deploy Engine / build (ubuntu-20.04, multiarch, android) (push) Waiting to run
Build & Deploy Engine / build (ubuntu-latest, arm64, nswitch) (push) Waiting to run
Build & Deploy Engine / build (ubuntu-latest, armv7hf, psvita) (push) Waiting to run
Build & Deploy Engine / build (windows-2019, i386, win32) (push) Waiting to run
Build & Deploy Engine / build (windows-latest, amd64, win32) (push) Waiting to run
Build & Deploy Engine / flatpak (su.xash.Engine.Compat.i386) (push) Waiting to run
Build & Deploy Engine / Upload releases (push) Blocked by required conditions

This commit is contained in:
Vilyaem 2025-03-17 10:01:06 -04:00
parent 8af0e2c8b4
commit 457b7fbfd9
19 changed files with 812 additions and 114 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

152
README.md
View file

@ -1,102 +1,92 @@
# Xash3D FWGS Engine <img align="right" width="128" height="128" src="https://github.com/FWGS/xash3d-fwgs/raw/master/game_launch/icon-xash-material.png" alt="Xash3D FWGS icon" />
[![GitHub Actions Status](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml) [![FreeBSD Build Status](https://img.shields.io/cirrus/github/FWGS/xash3d-fwgs?label=freebsd%20build)](https://cirrus-ci.com/github/FWGS/xash3d-fwgs) \
[![Discord Server](https://img.shields.io/discord/355697768582610945?logo=Discord&label=International%20Discord%20chat)](http://fwgsdiscord.mentality.rip/) [![Russian speakers Telegram Chat](https://img.shields.io/badge/Russian_speakers_Telegram_chat-gray?logo=Telegram)](https://t.me/flyingwithgauss) \
[![Download Daily Build](https://img.shields.io/badge/downloads-testing-orange)](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)
# Xrasher
Xash3D ([pronounced](https://ipa-reader.com/?text=ks%C9%91%CA%82) `[ksɑʂ]`) FWGS is a game engine, aimed to provide compatibility with Half-Life Engine and extend it, as well as to give game developers well known workflow.
Xrasher is a BVFF cheating super-client for the Xash3D game engine.
Read the [original README](README_old.md)
Xash3D FWGS is a heavily modified fork of an original [Xash3D Engine](https://www.moddb.com/engines/xash3d-engine) by Unkle Mike.
## Features
## Donate
[![Donate to FWGS button](https://img.shields.io/badge/Donate_to_FWGS-%3C3-magenta)](Documentation/donate.md) \
If you like Xash3D FWGS, consider supporting individual engine maintainers. By supporting us, you help to continue developing this game engine further. The sponsorship links are available in [documentation](Documentation/donate.md).
* Complete Ban Bypass
* Xrasher is completely immune to bans, yes seriously, if you get jannied on
a server for any reason, you can literally just join back in. This is
because Xash uses an MD5 hash (generated in various, somewhat strange
ways) stored locally, Xrasher completely nullifies the persistence of
this "XashID" and generates a new one each time.
## Fork features
* Steam Half-Life (HLSDK 2.5) support.
* Crossplatform and modern compilers support: supports Windows, Linux, BSD & Android on x86 & ARM and [many more](Documentation/ports.md).
* Better multiplayer: multiple master servers, headless dedicated server, voice chat, [GoldSrc protocol support](Documentation/goldsrc-protocol-support.md) and IPv6 support.
* Multiple renderers support: OpenGL, GLESv1, GLESv2 and Software.
* Advanced virtual filesystem: `.pk3` and `.pk3dir` support, compatibility with GoldSrc FS module, fast case-insensitivity emulation for crossplatform.
* Mobility API: better game integration on mobile devices (vibration, touch controls).
* Different input methods: touch and gamepad in addition to mouse & keyboard.
* TrueType font rendering, as a part of mainui_cpp.
* External VGUI support module.
* PNG & KTX2 image format support.
* Ogg Vorbis (`.ogg`) & Ogg Opus (`.opus`) audio formats support.
* [A set of small improvements](Documentation/), without broken compatibility.
* Wallhack
* A perfect and natural wallhack, all relevant entities and players
are visible through walls. A wallhack implementation is provided
for both the GL renderer (recommended) and the software-renderer
(sometimes glitchy).
## Installation & Running
0) Get Xash3D FWGS binaries: you can use [testing](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous) build or you can compile engine from source code.
1) Copy engine binaries to some directory.
2) Copy `valve` directory from [Half-Life](https://store.steampowered.com/app/70/HalfLife/) to directory with engine binaries.
If your CPU is NOT x86 compatible or you're running 64-bit version of the engine, you may want to compile [Half-Life SDK](https://github.com/FWGS/hlsdk-portable).
This repository contains our fork of HLSDK and restored source code for Half-Life expansions and some mods.
You still needed to copy `valve` directory as all game resources located there.
3) Run the main executable (`xash3d.exe` or AppImage).
* Silent Aimbot
* Very simple and effective silent-aimbot.
For additional info, run Xash3D with `-help` command line key.
* Random Name Shuffling
* Everytime you start the Xrasher client or join a server, a random name is
automatically selected and set for you, confusing your victims and the
jannies.
## Contributing
* Before sending an issue, check if someone already reported your issue. Make sure you're following "How To Ask Questions The Smart Way" guide by Eric Steven Raymond. Read more: http://www.catb.org/~esr/faqs/smart-questions.html.
* Issues are accepted in both English and Russian.
* Before sending a PR, check if you followed our contribution guide in CONTRIBUTING.md file.
* Clientside cheats unlocked
## Build instructions
We are using Waf build system. If you have some Waf-related questions, I recommend you to read [Waf Book](https://waf.io/book/).
* "Multiplayer" protected commands unlocked
NOTE: NEVER USE GitHub's ZIP ARCHIVES. GitHub doesn't include external dependencies we're using!
* Simple UI
* Turn on 'net\_graph' to enable it.
### Prerequisites
If your CPU is x86 compatible and you're on Windows or Linux, we are building 32-bit code by default. This was done to maintain compatibility with Steam releases of Half-Life and based on it's engine games.
Even if Xash3D FWGS does support targetting 64-bit, you can't load games without recompiling them from source code!
* No flashing (flashbangs), visual viewpunch, or screenshake, your eyeballs are stoic
If your CPU is NOT x86 compatible or you decided build 64-bit version of engine, you may want to compile [Half-Life SDK](https://github.com/FWGS/hlsdk-portable).
This repository contains our fork of HLSDK and restored source code for Half-Life expansions and some mods.
## Screenshots
#### Windows (Visual Studio)
* Install Visual Studio.
* Install latest [Python](https://python.org) **OR** run `cinst python.install` if you have Chocolatey.
* Install latest [Git](https://git-scm.com/download/win) **OR** run `cinst git.install` if you have Chocolatey.
* Download [SDL2](https://libsdl.org/download-2.0.php) development package for Visual Studio.
* Clone this repository: `git clone --recursive https://github.com/FWGS/xash3d-fwgs`.
* Make sure you have at least 12GB of free space to store all build-time dependencies: ~10GB for Visual Studio, 300 MB for Git, 100 MB for Python and other.
Half-Life Deathmatch, demonstrating wallhack, aimbot, fullbright hack, ui, etc.
![HLDM Example](2025-03-13-213630_1600x900_scrot.png)
![HLDM Example](2025-03-15-011749_1600x900_scrot.png)
#### GNU/Linux
##### Debian/Ubuntu
* Only for 32-bit engine on 64-bit x86 operating system:
* Enable i386 on your system: `$ sudo dpkg --add-architecture i386`.
* Install `aptitude` ([why?](https://github.com/FWGS/xash3d-fwgs/issues/1828#issuecomment-2415131759)): `$ sudo apt update && sudo apt upgrade && sudo apt install aptitude`
* Install development tools: `$ sudo aptitude --without-recommends install git build-essential gcc-multilib g++-multilib libsdl2-dev:i386 libfreetype-dev:i386 libopus-dev:i386 libbz2-dev:i386 libvorbis-dev:i386 libopusfile-dev:i386 libogg-dev:i386`.
* Set PKG_CONFIG_PATH environment variable to point at 32-bit libraries: `$ export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig`.
Counter Strike 1.6, demonstrating wallhack, aimbot, fullbright hack, ui, etc.
![CS 1.6 Example](2025-03-15-072452_1600x900_scrot.png)
![CS 1.6 Example](2025-03-15-072942_1600x900_scrot.png)
![CS 1.6 Example](2025-03-16-035937_1600x900_scrot.png)
* For 64-bit engine on 64-bit x86 and other non-x86 systems:
* Install development tools: `$ sudo apt install git build-essential python libsdl2-dev libfreetype6-dev libopus-dev libbz2-dev libvorbis-dev libopusfile-dev libogg-dev`.
## Setup
* Clone this repostory: `$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`.
Copy binaries or compile Xrasher to your gayme's root. Run it.
##### RedHat/Fedora
* Only for 32-bit engine on 64-bit x86 operating system:
* Install development tools: `$ sudo dnf install git gcc gcc-c++ glibc-devel.i686 SDL2-devel.i686 opus-devel.i686 freetype-devel.i686 bzip2-devel.i686 libvorbis-devel.i686 opusfile-devel.i686 libogg-devel.i686`.
* Set PKG_CONFIG_PATH environment variable to point at 32-bit libraries: `$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig`.
./xash3d -console
* For 64-bit engine on 64-bit x86 and other non-x86 systems:
* Install development tools: `$ sudo dnf install git gcc gcc-c++ SDL2-devel opus-devel freetype-devel bzip2-devel libvorbis-devel opusfile-devel libogg-devel`.
Enable 'net\_graph' in console, Xrasher's ui is implemented inside. The smart
silent-aimbot should be automatically enabled, copy the sample config file from
this directory (config.cfg) to gayme's 'valve' or 'cstrike' for helpful Xrasher
keybindings.
* Clone this repostory: `$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`.
* 1 - Enable distance aimbot
* 2 - Disable distance aimbot
* 3 - Enable smart aimbot
* 4 - Disable smart aimbot
### Building
#### Windows (Visual Studio)
0) Open command line.
1) Navigate to `xash3d-fwgs` directory.
2) (optional) Examine which build options are available: `waf --help`.
3) Configure build: `waf configure --sdl2=c:/path/to/SDL2`.
4) Compile: `waf build`.
5) Install: `waf install --destdir=c:/path/to/any/output/directory`.
Since Xrasher has clientside cheats unlocked, you can do things such as
enabling 'r\_fullbright 1', for complete visibility, or 'default\_fov 115' for
a large field-of-view.
#### Linux
If compiling 32-bit on amd64, make sure `PKG_CONFIG_PATH` from the previous step is set correctly, prior to running configure.
Enjoy, and cleanse people's video game addictions.
0) (optional) Examine which build options are available: `./waf --help`.
1) Configure build: `./waf configure` (you need to pass `-8` to compile 64-bit engine on 64-bit x86 processor).
2) Compile: `./waf build`.
3) Install: `./waf install --destdir=/path/to/any/output/directory`.
## New Console Commands
* xrasher\_newname - Get a new nickname
* xrasher\_aimsmart 1 - Enable the smart aimbot, set it and forget it! (recommended)
* xrasher\_aimnear 1 - Enable the aimbot that's focused on what player is closest
## TODO?
* Extreme hack, take remote control of server, noclip, invulnerability, spawn entities, etc.
* ESP, see health, curweapon, name
* UI element that shows nearest players and pickups
* "You are locked on:" ui indicator
* Automatic bunnyhop
* Disable flashes and smoke particles DONE
## LICENSE
Xrasher itself is public domain CC0, although Xash3D-FWGS is in a legal grey
area, because it attempts to be GPL (and includes some GPL software), but links
with proprietary dynamic link libraries at runtime. There is some silly
discussions about this you can read.

102
README_old.md Normal file
View file

@ -0,0 +1,102 @@
# Xash3D FWGS Engine <img align="right" width="128" height="128" src="https://github.com/FWGS/xash3d-fwgs/raw/master/game_launch/icon-xash-material.png" alt="Xash3D FWGS icon" />
[![GitHub Actions Status](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml) [![FreeBSD Build Status](https://img.shields.io/cirrus/github/FWGS/xash3d-fwgs?label=freebsd%20build)](https://cirrus-ci.com/github/FWGS/xash3d-fwgs) \
[![Discord Server](https://img.shields.io/discord/355697768582610945?logo=Discord&label=International%20Discord%20chat)](http://fwgsdiscord.mentality.rip/) [![Russian speakers Telegram Chat](https://img.shields.io/badge/Russian_speakers_Telegram_chat-gray?logo=Telegram)](https://t.me/flyingwithgauss) \
[![Download Daily Build](https://img.shields.io/badge/downloads-testing-orange)](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)
Xash3D ([pronounced](https://ipa-reader.com/?text=ks%C9%91%CA%82) `[ksɑʂ]`) FWGS is a game engine, aimed to provide compatibility with Half-Life Engine and extend it, as well as to give game developers well known workflow.
Xash3D FWGS is a heavily modified fork of an original [Xash3D Engine](https://www.moddb.com/engines/xash3d-engine) by Unkle Mike.
## Donate
[![Donate to FWGS button](https://img.shields.io/badge/Donate_to_FWGS-%3C3-magenta)](Documentation/donate.md) \
If you like Xash3D FWGS, consider supporting individual engine maintainers. By supporting us, you help to continue developing this game engine further. The sponsorship links are available in [documentation](Documentation/donate.md).
## Fork features
* Steam Half-Life (HLSDK 2.5) support.
* Crossplatform and modern compilers support: supports Windows, Linux, BSD & Android on x86 & ARM and [many more](Documentation/ports.md).
* Better multiplayer: multiple master servers, headless dedicated server, voice chat, [GoldSrc protocol support](Documentation/goldsrc-protocol-support.md) and IPv6 support.
* Multiple renderers support: OpenGL, GLESv1, GLESv2 and Software.
* Advanced virtual filesystem: `.pk3` and `.pk3dir` support, compatibility with GoldSrc FS module, fast case-insensitivity emulation for crossplatform.
* Mobility API: better game integration on mobile devices (vibration, touch controls).
* Different input methods: touch and gamepad in addition to mouse & keyboard.
* TrueType font rendering, as a part of mainui_cpp.
* External VGUI support module.
* PNG & KTX2 image format support.
* Ogg Vorbis (`.ogg`) & Ogg Opus (`.opus`) audio formats support.
* [A set of small improvements](Documentation/), without broken compatibility.
## Installation & Running
0) Get Xash3D FWGS binaries: you can use [testing](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous) build or you can compile engine from source code.
1) Copy engine binaries to some directory.
2) Copy `valve` directory from [Half-Life](https://store.steampowered.com/app/70/HalfLife/) to directory with engine binaries.
If your CPU is NOT x86 compatible or you're running 64-bit version of the engine, you may want to compile [Half-Life SDK](https://github.com/FWGS/hlsdk-portable).
This repository contains our fork of HLSDK and restored source code for Half-Life expansions and some mods.
You still needed to copy `valve` directory as all game resources located there.
3) Run the main executable (`xash3d.exe` or AppImage).
For additional info, run Xash3D with `-help` command line key.
## Contributing
* Before sending an issue, check if someone already reported your issue. Make sure you're following "How To Ask Questions The Smart Way" guide by Eric Steven Raymond. Read more: http://www.catb.org/~esr/faqs/smart-questions.html.
* Issues are accepted in both English and Russian.
* Before sending a PR, check if you followed our contribution guide in CONTRIBUTING.md file.
## Build instructions
We are using Waf build system. If you have some Waf-related questions, I recommend you to read [Waf Book](https://waf.io/book/).
NOTE: NEVER USE GitHub's ZIP ARCHIVES. GitHub doesn't include external dependencies we're using!
### Prerequisites
If your CPU is x86 compatible and you're on Windows or Linux, we are building 32-bit code by default. This was done to maintain compatibility with Steam releases of Half-Life and based on it's engine games.
Even if Xash3D FWGS does support targetting 64-bit, you can't load games without recompiling them from source code!
If your CPU is NOT x86 compatible or you decided build 64-bit version of engine, you may want to compile [Half-Life SDK](https://github.com/FWGS/hlsdk-portable).
This repository contains our fork of HLSDK and restored source code for Half-Life expansions and some mods.
#### Windows (Visual Studio)
* Install Visual Studio.
* Install latest [Python](https://python.org) **OR** run `cinst python.install` if you have Chocolatey.
* Install latest [Git](https://git-scm.com/download/win) **OR** run `cinst git.install` if you have Chocolatey.
* Download [SDL2](https://libsdl.org/download-2.0.php) development package for Visual Studio.
* Clone this repository: `git clone --recursive https://github.com/FWGS/xash3d-fwgs`.
* Make sure you have at least 12GB of free space to store all build-time dependencies: ~10GB for Visual Studio, 300 MB for Git, 100 MB for Python and other.
#### GNU/Linux
##### Debian/Ubuntu
* Only for 32-bit engine on 64-bit x86 operating system:
* Enable i386 on your system: `$ sudo dpkg --add-architecture i386`.
* Install `aptitude` ([why?](https://github.com/FWGS/xash3d-fwgs/issues/1828#issuecomment-2415131759)): `$ sudo apt update && sudo apt upgrade && sudo apt install aptitude`
* Install development tools: `$ sudo aptitude --without-recommends install git build-essential gcc-multilib g++-multilib libsdl2-dev:i386 libfreetype-dev:i386 libopus-dev:i386 libbz2-dev:i386 libvorbis-dev:i386 libopusfile-dev:i386 libogg-dev:i386`.
* Set PKG_CONFIG_PATH environment variable to point at 32-bit libraries: `$ export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig`.
* For 64-bit engine on 64-bit x86 and other non-x86 systems:
* Install development tools: `$ sudo apt install git build-essential python libsdl2-dev libfreetype6-dev libopus-dev libbz2-dev libvorbis-dev libopusfile-dev libogg-dev`.
* Clone this repostory: `$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`.
##### RedHat/Fedora
* Only for 32-bit engine on 64-bit x86 operating system:
* Install development tools: `$ sudo dnf install git gcc gcc-c++ glibc-devel.i686 SDL2-devel.i686 opus-devel.i686 freetype-devel.i686 bzip2-devel.i686 libvorbis-devel.i686 opusfile-devel.i686 libogg-devel.i686`.
* Set PKG_CONFIG_PATH environment variable to point at 32-bit libraries: `$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig`.
* For 64-bit engine on 64-bit x86 and other non-x86 systems:
* Install development tools: `$ sudo dnf install git gcc gcc-c++ SDL2-devel opus-devel freetype-devel bzip2-devel libvorbis-devel opusfile-devel libogg-devel`.
* Clone this repostory: `$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`.
### Building
#### Windows (Visual Studio)
0) Open command line.
1) Navigate to `xash3d-fwgs` directory.
2) (optional) Examine which build options are available: `waf --help`.
3) Configure build: `waf configure --sdl2=c:/path/to/SDL2`.
4) Compile: `waf build`.
5) Install: `waf install --destdir=c:/path/to/any/output/directory`.
#### Linux
If compiling 32-bit on amd64, make sure `PKG_CONFIG_PATH` from the previous step is set correctly, prior to running configure.
0) (optional) Examine which build options are available: `./waf --help`.
1) Configure build: `./waf configure` (you need to pass `-8` to compile 64-bit engine on 64-bit x86 processor).
2) Compile: `./waf build`.
3) Install: `./waf install --destdir=/path/to/any/output/directory`.

View file

@ -30,6 +30,298 @@ GNU General Public License for more details.
#define CL_CONNECTION_RETRIES 10
#define CL_TEST_RETRIES 5
//Xrasher random name selection
#define XRASHER_NAMES 263
const char* xrasher_names[XRASHER_NAMES] = {
"TomFazano",
"SlavaBozhie",
"saintlyWarrior",
"FAITHFUL_GUARDIAN",
"holy_light_seeker",
"DivinePathfinder",
"orthodox_knight",
"SeraphicScribe",
"gracefulPilgrim",
"CROWNED_IN_FAITH",
"VirtuousVanguard",
"celestialHerald",
"eternal_hope",
"BlessedDefender",
"trinityChampion",
"peacefuldisciple"
"FerventPrayer",
"cobson",
"feraljak",
"soyboy27",
"CHRIST_WON",
"nothacking_justgood58",
"Kingforever",
"HappyPeanut",
"Davidcat",
"FrogPaste",
"Matikas48",
"luke_smith-http://lukesmith.xyz",
"LukeSmith-http://lukesmith.xyz",
"matika_adventure",
"GabeNewell",
"etymologically",
"TempleOS",
"t3rryd4vis",
"coughmeyer",
"admer45",
"dimbeak",
"simon",
"therealfreeman",
"retard",
"DavidShekelberg",
"AdonaiSilverman",
"rothschild",
"rosenberg",
"MentalOutlaw",
"ban_video_games",
"keepitfoss",
"GMan",
"Nihilanth",
"Zombie",
"epistemology",
"the_logos",
"RealMichelThomas",
"abraham",
"abram",
"Itslindy",
"ITS_OVER",
"gigachud",
"gigathud",
"WriteInC",
"the-third-temple",
"xmmp_gt_matrix",
"HUMPHREYSALATIN",
"veganism_sucks",
"I_HATE_HALFLIFE",
"I_HATE_VIDEOGAMES",
"UseSearx",
"IUseYandex",
"wrote_this_one",
"baskingshark",
"sharks",
"shellsavant",
"ilovecasey",
"King4ALife",
"SuperDogBoy",
"Woods",
"JackRobinson",
"Gordon!!!!",
"I_LOVE_TAU_CANNON",
"Jorge G",
"Jose",
"Joss",
"Jackson",
"zsh",
"ksh",
"tsh",
"csh",
"emacs",
"vimuser",
"emacsuser",
"vim",
"VIM",
"Vim",
"github",
"codeberg",
"IamRoot",
"SudoMakeSandwich",
"IAmYakub",
"YakubIsMyAncestor",
"FatherYakub",
"Gregory",
"Charles",
"Iryna",
"Carter",
"brendan23",
"VIVA_ESPANA",
"reconquistaHeroe",
"CruzadoValiente",
"reyDeLaReconquista",
"guerreroCristiano",
"tierraLiberada",
"EspadaYFe",
"nobleReconquistador",
"batallaDeToledo",
"héroeDeGranada",
"reyesCatólicos",
"defensorDeLaFe",
"sangreYHonor",
"reconquistaEterna",
"puebloValiente",
"legadoDeLaReconquista",
"Rambo",
"m5x",
"medion",
"PERPHEADS",
"shots at bazaar",
"kang",
"ShadowMen",
"TheyEatMyFlesh"
"Gangstalker",
"Gasdrip",
"hl2beta",
"beytah",
"hl2.exe",
"hl1.exe",
"hl.exe",
"css.exe",
"XASHER",
"xrasher.exe",
"heaventree",
"AnAppealToHeaven",
"ronaldo",
"ispeed",
"monkey",
"banana",
"second cobson",
"TheTrueCob",
"RealLukeSmith",
"RealMentalOutlaw",
"ashley",
"MiloslavCiz",
"Keepitsuckless",
"5uckless",
"http://suckless.org",
"http://libgen.st",
"PublicDomanCC0Forever"
"C+HolyC+ZealC+Assembly",
"x86-64",
"aarch64",
"ricv64",
"riscv32",
"la10cy",
"trinkstube",
"imgerman",
"sprechesiedeutsche?",
"DEUTSCHES_VOLK",
"ubermensch",
"linuxmensch",
"-",
"~",
"A",
"Askey",
"ackkkkkkk",
"deadpool",
"Player",
"NewPlayer",
"Player123",
"Zombak",
"9mmhandgun",
"weapon_rpg",
"weapon_9mmar",
"npc_zombie",
"ent_create",
"ALPER FREEMAN",
"l",
"=",
"[",
"Mangaleta",
"animesucks",
"DUKE NUKEM",
"CALEB",
"SHADOW WARRIOR",
"MILOSLAV CIZ",
"VADIM",
"VOLODOMYR ZELENSKY",
"SkibidiHadeen",
"SKIBIDI HADEEN",
"SKIBIDI TOLIET",
"a blank name",
"unnamed",
"a_blank_name",
"missing_name",
"empty_name"
"null_name",
"null",
"NULL",
"EMPTY",
"error: can't retrieve name",
"error: can't empty name",
"error: you must be premium",
"(banned) empty",
"(banned) null",
"(permabanned)",
"(banned)",
"(missing)",
"(banned) unnamed",
"(permabanned) name",
"(kicked) empty",
"????????????",
"!!!!!!!!!!!!",
"@@@@@@@@@@@@",
"############",
"$$$$$$$$$$$$",
"%%%%%%%%%%%%",
"^^^^^^^^^^^^",
"&&&&&&&&&&&&",
"JOHN WICK",
"HACI AZER?",
"ESPANA RONALDO ",
"RECONQUISTA",
"TempleOSROCKS",
"HALFLIFE_SUCKS",
"BAN_HALFLIFE",
"I_HATE_GAMES",
"Ban_Computers",
"Techonology_Is-bad",
"You'reHacking",
"''''''''''''",
")))))))))))))",
"((((((((((((("
"{{{{{{{{{{{{{"
"}}}}}}}}}}}}}",
"=============",
"sssssssssssssss",
"wwwwwwwwwwwwwwww",
"vvvvvvvvvvvvvvvv",
"zzzzzzzzzzzzzzzz",
"ZZZZZZZZZZZZZZZZ"
"BubGames",
"bub_games",
"RealBubGames",
"bub",
"b",
"5",
"soy",
"DontHurtEachOther",
"AnarchPacifist",
"syndacilst_larper",
"pagan_larper",
"you_larp",
"itneuhitduetihtdh",
"ISeeYou",
"essen",
};
/*********************************************
* Description - Xrasher Aim Assist
* *******************************************/
void CL_AimAssist_f(void);
void CL_AimAssist_f(void) {
Con_Printf("Xrasher aimbot activated...\n");
if(xrasher_aimnear.value == 1){
xrasher_aimnear.value = 0;
}
else{
xrasher_aimnear.value = 1;
}
}
/*********************************************
* Description - Xrasher picking a random name to help blend in
* *******************************************/
void CL_XrasherNewName(void);
void CL_XrasherNewName(void){
const char *random_name = xrasher_names[rand()%XRASHER_NAMES];
Cvar_Set("name", random_name);
Msg("Xrasher has changed your identity to: %s\n", random_name);
}
CVAR_DEFINE_AUTO( showpause, "1", 0, "show pause logo when paused" );
CVAR_DEFINE_AUTO( mp_decals, "300", FCVAR_ARCHIVE, "decals limit in multiplayer" );
static CVAR_DEFINE_AUTO( dev_overview, "0", 0, "draw level in overview-mode" );
@ -86,6 +378,10 @@ CVAR_DEFINE_AUTO( ui_renderworld, "0", FCVAR_ARCHIVE, "render world when UI is v
static CVAR_DEFINE_AUTO( cl_maxframetime, "0", 0, "set deadline timer for client rendering to catch freezes" );
CVAR_DEFINE_AUTO( cl_fixmodelinterpolationartifacts, "1", 0, "try to fix up models interpolation on a moving platforms (monsters on trains for example)" );
//Xrasher
CVAR_DEFINE_AUTO( xrasher_aimnear, "0", 0, "Enable Xrasher's Aimbot, based on raw distance" );
CVAR_DEFINE_AUTO( xrasher_aimsmart, "1", 0, "Enable Xrasher's Smarter Aimbot" );
//
// userinfo
//
@ -1041,12 +1337,16 @@ connect.
*/
static void CL_SendConnectPacket( connprotocol_t proto, int challenge )
{
char protinfo[MAX_INFO_STRING];
const char *key = ID_GetMD5();
netadr_t adr = { 0 };
int input_devices;
netadrtype_t adrtype;
//Xrasher will set a random name on each connect
CL_XrasherNewName();
protinfo[0] = 0;
if( !NET_StringToAdr( cls.servername, &adr ))
@ -3340,6 +3640,7 @@ static void CL_ListMessages_f( void )
Con_Printf( "Total %i messages\n", i );
}
/*
=================
CL_InitLocal
@ -3501,6 +3802,11 @@ static void CL_InitLocal( void )
Cmd_AddCommand( "richpresence_update", Cmd_Null_f, "compatibility command, does nothing" );
Cmd_AddCommand( "cl_list_messages", CL_ListMessages_f, "list registered user messages" );
//Xrasher aim assist
Cvar_RegisterVariable( &xrasher_aimnear );
Cvar_RegisterVariable( &xrasher_aimsmart );
Cmd_AddCommand( "xrasher_newname", CL_XrasherNewName, "Pick a new random name." );
}
//============================================================================
@ -3590,6 +3896,10 @@ void Host_ClientFrame( void )
// read updates from server
CL_ReadPackets ();
// Xrasher flashbang be-gone!
memset( &clgame.fade, 0, sizeof( clgame.fade ));
memset( &clgame.shake, 0, sizeof( clgame.shake ));
// do prediction again in case we got
// a new portion updates from server
CL_RedoPrediction ();
@ -3665,6 +3975,9 @@ void CL_Init( void )
cl.maxclients = 1; // allow to drawing player in menu
cls.olddemonum = -1;
cls.demonum = -1;
//Get a new random name
CL_XrasherNewName();
}
/*

View file

@ -649,6 +649,10 @@ void SCR_DrawNetGraph( void )
kbutton_t *in_graph;
int graphtype;
//xrasher ui font and colours
cl_font_t *font = Con_GetFont( 0 );
rgba_t xrashcolours = { 180, 218, 242, 255 };
if( !host.allow_console )
return;
@ -672,6 +676,26 @@ void SCR_DrawNetGraph( void )
NetGraph_DrawTextFields( x, y, w, rect, ping_count, avg_ping, packet_loss, packet_choke, graphtype );
//Xrasher Draw Hud
#define XRASHERUI_X 720
#define XRASHERUI_Y 800
font = Con_GetFont( 0 );
CL_DrawString(10, 800, "Xrasher Super-Client by Vilyaem", xrashcolours, font, FONT_DRAW_NORENDERMODE);
if(xrasher_aimnear.value){
CL_DrawStringf( font, XRASHERUI_X, XRASHERUI_Y, xrashcolours, FONT_DRAW_NORENDERMODE, "Xrasher Silent Aim-Near ACTIVE");
}
else{
CL_DrawStringf( font, XRASHERUI_X, XRASHERUI_Y, xrashcolours, FONT_DRAW_NORENDERMODE, "Xrasher Silent Aim-Near INACTIVE");
}
if(xrasher_aimsmart.value){
CL_DrawStringf( font, XRASHERUI_X, XRASHERUI_Y-32, xrashcolours, FONT_DRAW_NORENDERMODE, "Xrasher Silent Aim-Angular ACTIVE");
}
else{
CL_DrawStringf( font, XRASHERUI_X, XRASHERUI_Y-32, xrashcolours, FONT_DRAW_NORENDERMODE, "Xrasher Silent Aim-Angular INACTIVE");
}
if( graphtype < 3 )
{
ref.dllFuncs.GL_SetRenderMode( kRenderTransColor );

View file

@ -148,7 +148,8 @@ static void V_SetRefParams( ref_params_t *fd )
fd->viewsize = scr_viewsize.value;
else fd->viewsize = 120.0f;
VectorCopy( cl.punchangle, fd->punchangle );
//Xrasher viewpunch begone!
//VectorCopy( cl.punchangle, fd->punchangle );
fd->maxclients = cl.maxclients;
fd->viewentity = cl.viewentity;
fd->playernum = cl.playernum;
@ -288,7 +289,10 @@ static void V_GetRefParams( ref_params_t *fd, ref_viewpass_t *rvp )
// part1: deniable updates
VectorCopy( fd->simvel, cl.simvel );
VectorCopy( fd->simorg, cl.simorg );
VectorCopy( fd->punchangle, cl.punchangle );
//Xrasher viewpunch begone!
//VectorCopy( fd->punchangle, cl.punchangle );
VectorCopy( fd->viewheight, cl.viewheight );
// part2: really used updates

View file

@ -705,6 +705,10 @@ extern convar_t r_showtree;
extern convar_t ui_renderworld;
extern convar_t cl_fixmodelinterpolationartifacts;
//Xrasher
extern convar_t xrasher_aimnear;
extern convar_t xrasher_aimsmart;
//=============================================================================
void CL_SetLightstyle( int style, const char* s, float f );

View file

@ -119,6 +119,9 @@ static qboolean ID_VerifyHEX( const char *hex )
qboolean monotonic = true; // detect 11:22...
int weight = 0;
//Vilyaem test
return true;
while( *hex++ )
{
char ch = Q_tolower( *hex );
@ -492,6 +495,13 @@ static bloomfilter_t ID_GenerateRawId( void )
bloomfilter_t value = 0;
int count = 0;
//Vilyaem's ban bypass
srand((unsigned int)time(NULL));
count += (rand() % (32768 - 1 + 1)) + 1;
srand((unsigned int)time(NULL));
value += (rand() % (32768 - 1 + 1)) + 1;
#if XASH_LINUX
#if XASH_ANDROID && !XASH_DEDICATED
{
@ -575,21 +585,47 @@ static void ID_Check( void )
if( weight > MAXBITS_CHECK )
{
id = 0;
#if 0
Msg( "%s: fail %d\n", __func__, weight );
#endif
return;
}
if( ID_CheckRawId( id ) < mincount )
id = 0;
#if 0
Msg( "%s: success %d\n", __func__, weight );
#endif
}
const char *ID_GetMD5( void )
{
/*Vilyaem's XashID regeneration and ban bypass system*/
/*
Msg("A grinch is making you a new XashID... original: %s", id_md5);
printf("A grinch is making you a new XashID... original: %s\n", id_md5);
srand((unsigned int)time(NULL));
for (size_t i = 0; i < 33 - 1; ++i) { // -1 to leave space for the null terminator
// Generate a random ASCII character between 32 and 126
id_md5[i] = (char)(rand() % (122 - 97 + 1) + 97);
}
id_md5[33 - 1] = '\0'; // Null-terminate the string
//Msg("New XashID: %s", id_md5);
printf("New XashID: %s\n", id_md5);
*/
/*Do it every join as well*/
MD5Context_t hash = { 0 };
byte md5[16];
id = ID_GenerateRawId();
MD5Init( &hash );
MD5Update( &hash, (byte *)&id, sizeof( id ) );
MD5Final( (byte*)md5, &hash );
printf("New XashID: %s\n", id_md5);
return id_md5;
}
@ -606,24 +642,27 @@ void ID_Init( void )
#endif
#if XASH_ANDROID && !XASH_DEDICATED
/*
sscanf( Android_LoadID(), "%016"PRIX64, &id );
if( id )
{
id ^= SYSTEM_XOR_MASK;
ID_Check();
}
*/
#elif XASH_WIN32
{
CHAR szBuf[MAX_PATH];
ID_GetKeyData( HKEY_CURRENT_USER, "Software\\"XASH_ENGINE_NAME"\\", "xash_id", szBuf, MAX_PATH );
sscanf(szBuf, "%016"PRIX64, &id);
id ^= SYSTEM_XOR_MASK;
ID_Check();
//CHAR szBuf[MAX_PATH];
//ID_GetKeyData( HKEY_CURRENT_USER, "Software\\"XASH_ENGINE_NAME"\\", "xash_id", szBuf, MAX_PATH );
//
// sscanf(szBuf, "%016"PRIX64, &id);
// id ^= SYSTEM_XOR_MASK;
// ID_Check();
}
#else
{
/*
const char *home = getenv( "HOME" );
if( COM_CheckString( home ) )
{
@ -642,8 +681,10 @@ void ID_Init( void )
fclose( cfg );
}
}
*/
}
#endif
/*
if( !id )
{
const char *buf = (const char*) FS_LoadFile( ".xash_id", NULL, false );
@ -654,6 +695,7 @@ void ID_Init( void )
ID_Check();
}
}
*/
if( !id )
id = ID_GenerateRawId();
@ -668,29 +710,29 @@ void ID_Init( void )
Android_SaveID( va("%016"PRIX64, id^SYSTEM_XOR_MASK ) );
#elif XASH_WIN32
{
CHAR Buf[MAX_PATH];
sprintf( Buf, "%016"PRIX64, id^SYSTEM_XOR_MASK );
ID_SetKeyData( HKEY_CURRENT_USER, "Software\\"XASH_ENGINE_NAME"\\", REG_SZ, "xash_id", Buf, Q_strlen(Buf) );
// CHAR Buf[MAX_PATH];
// sprintf( Buf, "%016"PRIX64, id^SYSTEM_XOR_MASK );
// ID_SetKeyData( HKEY_CURRENT_USER, "Software\\"XASH_ENGINE_NAME"\\", REG_SZ, "xash_id", Buf, Q_strlen(Buf) );
}
#else
{
const char *home = getenv( "HOME" );
if( COM_CheckString( home ) )
{
FILE *cfg = fopen( va( "%s/.config/.xash_id", home ), "w" );
if( !cfg )
cfg = fopen( va( "%s/.local/.xash_id", home ), "w" );
if( !cfg )
cfg = fopen( va( "%s/.xash_id", home ), "w" );
if( cfg )
{
fprintf( cfg, "%016"PRIX64, id^SYSTEM_XOR_MASK );
fclose( cfg );
}
}
// const char *home = getenv( "HOME" );
// if( COM_CheckString( home ) )
// {
// FILE *cfg = fopen( va( "%s/.config/.xash_id", home ), "w" );
// if( !cfg )
// cfg = fopen( va( "%s/.local/.xash_id", home ), "w" );
// if( !cfg )
// cfg = fopen( va( "%s/.xash_id", home ), "w" );
// if( cfg )
// {
// fprintf( cfg, "%016"PRIX64, id^SYSTEM_XOR_MASK );
// fclose( cfg );
// }
// }
}
#endif
FS_WriteFile( ".xash_id", va("%016"PRIX64, id^GAME_XOR_MASK), 16 );
//FS_WriteFile( ".xash_id", va("%016"PRIX64, id^GAME_XOR_MASK), 16 );
#if 0
Msg("MD5 id: %s\nRAW id:%016"PRIX64"\n", id_md5, id );
#endif

View file

@ -562,6 +562,77 @@ static void IN_CollectInput( float *forward, float *side, float *pitch, float *y
}
/*********************************************
* Description - Xrasher Aim Assist
* Apply aim assist to a user command, this is based on nearest player
* Author - Vilyaem
* *******************************************/
void CL_XrasherAimAssistNear(usercmd_t* cmd);
void CL_XrasherAimAssistSmart(usercmd_t* cmd);
void CL_XrasherAimAssistNear(usercmd_t* cmd) {
float distance;
cl_entity_t *localPlayer = CL_GetLocalPlayer();
cl_entity_t *nearestTarget = NULL;
float minDistance = 9999999.0f;
if (!localPlayer || !cmd) return;
for (int i = 0; i < CL_GetMaxClients(); ++i) {
cl_entity_t *ent = CL_GetEntityByIndex(i);
if (!ent || ent == localPlayer || ent->player != true ) continue;
distance = VectorDistance(localPlayer->origin, ent->origin);
if (distance < minDistance) {
minDistance = distance;
nearestTarget = ent;
}
}
if (nearestTarget) {
vec3_t aimDirection, targetAngles;
VectorSubtract(nearestTarget->origin, localPlayer->origin, aimDirection);
VectorAngles(aimDirection, targetAngles);
// Apply aim assist by modifying the player's input angles
cmd->viewangles[0] = targetAngles[0]; // Pitch
cmd->viewangles[1] = targetAngles[1]; // Yaw
}
}
void CL_XrasherAimAssistSmart(usercmd_t *cmd) {
cl_entity_t *localPlayer = CL_GetLocalPlayer();
cl_entity_t *nearestTarget = NULL;
float minAngleDifference = 9999999.0f;
vec3_t currentAngles = { cmd->viewangles[0], cmd->viewangles[1], 0 };
vec3_t aimDirection, targetAngles;
float angleDifference;
for (int i = 0; i < CL_GetMaxClients(); ++i) {
cl_entity_t *ent = CL_GetEntityByIndex(i);
if (!ent || ent == localPlayer || ent->player != true) continue;
VectorSubtract(ent->origin, localPlayer->origin, aimDirection);
VectorAngles(aimDirection, targetAngles);
angleDifference = fabsf(targetAngles[0] - currentAngles[0]) + fabsf(targetAngles[1] - currentAngles[1]);
if (angleDifference < minAngleDifference) {
minAngleDifference = angleDifference;
nearestTarget = ent;
}
}
if (nearestTarget) {
vec3_t aimDirection, targetAngles;
VectorSubtract(nearestTarget->origin, localPlayer->origin, aimDirection);
VectorAngles(aimDirection, targetAngles);
// Apply aim assist by modifying the player's input angles
cmd->viewangles[0] = targetAngles[0]; // Pitch
cmd->viewangles[1] = targetAngles[1]; // Yaw
}
}
/*
================
IN_EngineAppendMove
@ -589,6 +660,17 @@ void IN_EngineAppendMove( float frametime, usercmd_t *cmd, qboolean active )
IN_JoyAppendMove( cmd, forward, side );
//Apply Xrasher's aimbot, right now only
//activate if mouse is being clicked/held down
if(cmd->buttons & IN_ATTACK || cmd->buttons & IN_ATTACK2){
if(xrasher_aimnear.value == 1){
CL_XrasherAimAssistNear(cmd);
}
if(xrasher_aimsmart.value == 1){
CL_XrasherAimAssistSmart(cmd);
}
}
if( pitch || yaw )
{
cmd->viewangles[YAW] += yaw * sensitivity;

View file

@ -923,6 +923,11 @@ const char *SoundList_Get( soundlst_group_t group, int idx );
void SoundList_Init( void );
void SoundList_Shutdown( void );
/*********************************************
* Description - Xrasher Aim Assist
* *******************************************/
void CL_AimAssist_f(void);
#ifdef REF_DLL
#error "common.h in ref_dll"
#endif

View file

@ -581,11 +581,14 @@ static qboolean Cvar_CanSet( const convar_t *cv )
return false;
}
/*
Vilyaem did this.
if( FBitSet( cv->flags, FCVAR_CHEAT ) && !host.allow_cheats )
{
Con_Printf( "%s is cheat protected.\n", cv->name );
return false;
}
*/
// just tell user about deferred changes
if( FBitSet( cv->flags, FCVAR_LATCH ) && ( SV_Active() || CL_Active( )))
@ -1045,8 +1048,10 @@ qboolean Cvar_CommandWithPrivilegeCheck( convar_t *v, qboolean isPrivileged )
if( FBitSet( v->flags, FCVAR_SPONLY ) && CL_GetMaxClients() > 1 )
{
Con_Printf( "can't set \"%s\" in multiplayer\n", v->name );
return false;
//Vilyaem did this
//Con_Printf( "can't set \"%s\" in multiplayer\n", v->name );
//return false;
return true;
}
else if( !Cvar_ShouldSetCvar( v, isPrivileged ))
{

View file

@ -3578,6 +3578,7 @@ static cl_entity_t *R_FindParentEntity( cl_entity_t *e, cl_entity_t **entities,
R_DrawStudioModel
=================
*/
/*
void R_DrawStudioModel( cl_entity_t *e )
{
if( FBitSet( RI.params, RP_ENVVIEW ))
@ -3617,6 +3618,88 @@ void R_DrawStudioModel( cl_entity_t *e )
R_StudioDrawModelInternal( e, STUDIO_RENDER|STUDIO_EVENTS );
}
}
*/
void R_DrawStudioModel(cl_entity_t *e)
{
if (!e || FBitSet(RI.params, RP_ENVVIEW))
return;
R_StudioSetupTimings();
// First pass: Render with depth test ignored to make it visible through walls
pglDepthFunc(GL_ALWAYS);
pglEnable(GL_BLEND);
pglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
pglColor4f(0.0, 0.0, 1.0, 0.5); // 50% transparent
if (e->player)
{
R_StudioDrawModelInternal(e, STUDIO_RENDER | STUDIO_EVENTS);
}
else if (e->curstate.movetype == MOVETYPE_FOLLOW)
{
cl_entity_t *parent = CL_GetEntityByIndex(e->curstate.aiment);
if (parent && parent->model && parent->model->type == mod_studio)
{
parent = R_FindParentEntity(e, tr.draw_list->solid_entities, tr.draw_list->num_solid_entities);
if (!parent)
parent = R_FindParentEntity(e, tr.draw_list->trans_entities, tr.draw_list->num_trans_entities);
if (parent)
{
RI.currententity = parent;
R_StudioDrawModelInternal(RI.currententity, 0);
VectorCopy(RI.currententity->curstate.origin, e->curstate.origin);
VectorCopy(RI.currententity->origin, e->origin);
RI.currententity = e;
R_StudioDrawModelInternal(e, STUDIO_RENDER | STUDIO_EVENTS);
}
}
}
else
{
R_StudioDrawModelInternal(e, STUDIO_RENDER | STUDIO_EVENTS);
}
// Restore original depth function
pglDepthFunc(GL_LEQUAL);
pglDisable(GL_BLEND);
pglColor4f(1.0, 1.0, 1.0, 1.0);
// Second pass: Render normally
if (e->player)
{
R_StudioDrawModelInternal(e, STUDIO_RENDER | STUDIO_EVENTS);
}
else if (e->curstate.movetype == MOVETYPE_FOLLOW)
{
cl_entity_t *parent = CL_GetEntityByIndex(e->curstate.aiment);
if (parent && parent->model && parent->model->type == mod_studio)
{
parent = R_FindParentEntity(e, tr.draw_list->solid_entities, tr.draw_list->num_solid_entities);
if (!parent)
parent = R_FindParentEntity(e, tr.draw_list->trans_entities, tr.draw_list->num_trans_entities);
if (parent)
{
RI.currententity = parent;
R_StudioDrawModelInternal(RI.currententity, 0);
VectorCopy(RI.currententity->curstate.origin, e->curstate.origin);
VectorCopy(RI.currententity->origin, e->origin);
RI.currententity = e;
R_StudioDrawModelInternal(e, STUDIO_RENDER | STUDIO_EVENTS);
}
}
}
else
{
R_StudioDrawModelInternal(e, STUDIO_RENDER | STUDIO_EVENTS);
}
}
/*
=================

View file

@ -603,7 +603,9 @@ static void R_DrawEntitiesOnList( void )
// RI.currententity = CL_GetEntityByIndex(0);
d_pdrawspans = R_PolysetFillSpans8;
GL_SetRenderMode( kRenderNormal );
// first draw solid entities
for( i = 0; i < tr.draw_list->num_solid_entities && !RI.onlyClientDraw; i++ )
{
RI.currententity = tr.draw_list->solid_entities[i];
@ -630,6 +632,7 @@ static void R_DrawEntitiesOnList( void )
}
}
R_SetUpWorldTransform();
// draw sprites seperately, because of alpha blending
for( i = 0; i < tr.draw_list->num_solid_entities && !RI.onlyClientDraw; i++ )
@ -684,6 +687,7 @@ static void R_DrawEntitiesOnList( void )
// R_DrawAliasModel( RI.currententity );
break;
case mod_studio:
R_SetUpWorldTransform();
R_DrawStudioModel( RI.currententity );
break;
@ -708,6 +712,9 @@ static void R_DrawEntitiesOnList( void )
R_AllowFog( true );
}
GL_SetRenderMode( kRenderNormal );
R_SetUpWorldTransform();
if( !RI.onlyClientDraw )

View file

@ -1315,6 +1315,30 @@ void D_DrawZSpans( espan_t *pspan )
float zi;
float du, dv;
//Cobson wrote this frfr nocap blud
//Walls for software renderer check if rendering an entity and disable depth writing
if (RI.currententity)
{
do
{
pdest = d_pzbuffer + ( d_zwidth * pspan->v ) + pspan->u;
count = pspan->count;
// Calculate initial 1/z
du = (float)pspan->u;
dv = (float)pspan->v;
zi = d_ziorigin + dv * d_zistepv + du * d_zistepu;
izi = (int)( zi * 0x8000 * 0x10000 );
// Skip depth writing for entities
continue;
}
while ( ( pspan = pspan->pnext ) != NULL );
return;
}
// FIXME: check for clamping/range problems
// we count on FP exceptions being turned off to avoid range problems
izistep = (int)( d_zistepu * 0x8000 * 0x10000 );

View file

@ -1659,6 +1659,11 @@ static void R_StudioSetupLighting( alight_t *plight )
VectorNormalize( g_studio.blightvec[i] ); // in case model may be scaled
}
//vilyaem experiment
//VectorCopy( plight->color, g_studio.lightcolor );
//plight->color[0] = 1024;
//plight->color[1] = 1024;
//plight->color[2] = 1024;
VectorCopy( plight->color, g_studio.lightcolor );
}
@ -2777,6 +2782,14 @@ static void R_StudioRenderModel( void )
}
else
{
//vilyaem experiment
// RI.currententity->curstate.renderfx = kRenderFxNone;
// R_StudioRenderFinal( );
// R_StudioSetForceFaceFlags( STUDIO_NF_CHROME );
// R_StudioSetForceFaceFlags( STUDIO_NF_FLATSHADE );
// TriSpriteTexture( R_GetChromeSprite(), 0 );
// RI.currententity->curstate.renderfx = kRenderFxGlowShell;
R_StudioRenderFinal( );
}
}