Skip to content

Commit

Permalink
SkinColorizer Lite release
Browse files Browse the repository at this point in the history
Completely revamped SkinColorizer, now supporting colorization for a variety of models and their parts.
  • Loading branch information
SalatielSauer committed Sep 17, 2024
1 parent 7ee1573 commit 308dc54
Show file tree
Hide file tree
Showing 109 changed files with 10,444 additions and 9,312 deletions.
97 changes: 72 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,85 @@
# Cube 2 Sauerbraten Skin Colorizer
Skin Colorizer adds a menu to [Sauerbraten](http://sauerbraten.org) that allows the colorization of individual parts of a playermodel without requiring a modified client or image editors.
# <span style='color: rgb(236, 178, 59)'>Cube 2 Sauerbraten:</span> <span style='color: rgb(88, 221, 235)'>Skin Colorizer</span> <strong style='color: white'>Lite</strong>
**SkinColorizer Lite** adds a menu to [Sauerbraten](http://sauerbraten.org) that allows you to colorize individual parts of models without needing a modified client or image editor.

![](https://raw.githubusercontent.com/SalatielSauer/misc/master/skincolorizer_demo2.gif)
![](https://github.com/SalatielSauer/misc/blob/master/skincolorizerlite_demo.gif?raw=true)

### Installation
## Installation
1. Download the [skincolorizer.zip](https://github.com/SalatielSauer/Sauer-Skin-Colorizer/releases/latest) (without extracting it).
2. Move it to the root folder of your Sauerbraten (the home folder or the main installation folder).
3. Find your autoexec.cfg file or create a new one (also in one of the root folders), open it in a text editor and add the two commands:<br>
2. Move it to the root folder of your Sauerbraten (either the home folder or the main installation folder).
3. Find your autoexec.cfg file or create a new one (also in one of the root folders), open it in a text editor, and add the following two commands:<br>
`addzip skincolorizer.zip; exec skincolorizer.cfg`<br>
It will extract (virtually) the zip and run its configuration file (skincolorizer.cfg) whenever you start the game.
This will load the zip file and execute its configuration file (skincolorizer.cfg) whenever you start the game.

To open the menu type `/skincolorizer` in the game's chat console (T key by default).
To open the menu, type `/skincolorizer` or `/skincolorizerlite` in the game's chat console (T key by default).

Alternatively to step 3 you can type the command `/notepad autoexec.cfg` during the game to open the built-in text editor.
Alternatively, in step 3, you can type the command `/notepad autoexec.cfg` during the game to open the built-in text editor.

### Tools
## Tools

<img src="gui/filler.png" width="32px"/> Paint Bucket: Apply the color and texture of the selected part to all parts.<br>
![](https://raw.githubusercontent.com/SalatielSauer/misc/master/skincolorizer_colorpicker.gif)<br>
Unlike previous ~~Snout~~Colorizer, this version allows you to color hands, weapons, projectiles, pickups, vweps and all playermodels.

<img src="gui/dropper.png" width="32px"/> Color Picker: Select a source part to copy the color and texture to the target part.<br>
![](https://raw.githubusercontent.com/SalatielSauer/misc/master/skincolorizer_paintbucket.gif)<br>
![](https://github.com/SalatielSauer/misc/blob/master/skincolorizerlite_demo3.gif?raw=true)

The four circles are base textures in which the colors will be applied, the first three represent the original skins of each team, the last one is a completely white skin.<br>
- ### R G B
These sliders change the color of the selected parts. When you click on a part, the value ​​of each slider is updated with the stored values ​​of that part. You can reset these values to default by clicking on the square showing the current color.

The radio buttons in the center determine the team to which the skin will be applied.
- ### Fullbright
If enabled, this checkbox displays a slider that lets you control how bright the selected part is.

The colors of the labels represent their state:<br>
Blue: not selected<br>
Orange: Selected<br>
Gray: Target<br>
Green: Source<br>
- ### Good/Neutral/Evil
These buttons allow you to preview each team's model and move team-related parts to the top of the list. Clicking on the playermodel icons will have the same effect.

### Reverting changes
The original files are kept intact in the installation folder, however the client prioritizes files from the home folder, so to recover the original model/skins just remove its folder located at:<br>
`mygames/sauerbraten/packages/models/ <playermodel name>` (Windows)<br>
`.sauerbraten/packages/models/ <playermodel name>` (Linux)
- ### Filter
The filter field is used to move parts that match the input to the top of the list.

- ### Select <part/filter>
If the filter is empty, the Select button will target all parts of the selected playermodel.

![](https://github.com/SalatielSauer/misc/blob/master/skincolorizerlite_demo2.gif?raw=true)

## Adding new parts

**SkinColorizer Lite** works by intercepting skin commands (iqmskin, md3skin, md5skin...) directly in the configuration files of each model. To do this, simply add the `skincolorizer` command before the skin command.

In some cases, the `setskincolorizerdir` command must also be added before the *dir commands (iqmdir, md3dir, md5dir...) to display texture previews correctly in the menu.

In the available skincolorizer.zip, some models already have the necessary settings, so everything should work when you open the menu. However, if you want to add new models/parts:

For example, in `packages/models/ammo/rockets/md3.cfg`:
```plaintext
md3load "../tris.md3"
md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
```

becomes:

```plaintext
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
```
This addition allows the menu to get the information it needs to handle the colorization of each part.


## How it works
- **SkinColorizer Lite** uses dynamic variable identifiers to store and access data for each part. These identifiers follow the format:<br>
`$_skincolorizer_path:packages/models/snoutx10k|part:Upper|`<br>
When accessed, this variable returns the value:<br>
`[[R G B] texture is_selected brightness]`<br>
Storing information directly in the identifier makes filtering and displaying the data much easier.

- To apply the colors, it uses the `<mad>` prefix, which is part of a list of texture processing commands available in vanilla Sauerbraten.

- To display the changes without having to reload the client, it uses the `clearmodel` command. `Clearmodel` only works for models that are currently loaded (with the exception of mapmodels). To work around this, each part is drawn individually in the menu using the `guimodelpreview` command and remains there throughout the session, though kept out of view. This allows selected but undisplayed parts to still be affected by color changes.

- Not all textures for each part are located in the same directory as the .cfg file (accessible via `$mdlname`), so it first tries to use the path defined by `setskincolorizerdir`. If no valid texture is found, it will navigate backward in the file structure from the current `$mdlname` using the `findfile` command until a match is found. If none is found, the small texture thumbnail will be replaced by a white texture, and an error message will be displayed in the console. This is usually fixed by revising the `setskincolorizerdir` command.

- Text colors in Sauerbraten are usually limited to the special characters `^f1` through `^f8`, but this limitation does not apply to the `guitextbox` command. Its fourth argument accepts any custom color value in the format 0xRRGGBB.

- Sauerbraten has a system for determining whether variables should be kept permanently (by writing them to the config.cfg file) or discarded when the client exits. By default, variables defined within model configuration files are not persistent.<br>Since the registration of parts happens through the `skincolorizer` command, which is executed in the context of the model loader, it would normally be impossible to maintain changes between sessions. To work around this, **SkinColorizer Lite** uses two variables containing the same data: <strong>(A)</strong> `$_skcl_all_model_aliases_temp` and <strong>(B)</strong> `$_skcl_all_model_aliases`.
Variable <strong>A</strong> exists only during the session, while <strong>B</strong> is defined in a different scope and copies the values from <strong>A</strong> whenever there is a change to the model. If <strong>A</strong> exists, <strong>B</strong> copies its value when restarting the client.
Binary file removed gui/button.png
Binary file not shown.
Binary file removed gui/button_v.png
Binary file not shown.
Binary file removed gui/dropper.png
Binary file not shown.
Binary file removed gui/filler.png
Binary file not shown.
Binary file removed gui/snoutx10k/background.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/1.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/2.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/3.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/4.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/5.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/6.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/7.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_blue/8.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/1.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/2.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/3.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/4.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/5.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/6.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/7.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_green/8.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_red/1.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_red/2.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_red/3.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_red/4.png
Binary file not shown.
Binary file removed gui/snoutx10k/preview_red/5.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_red/6.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_red/7.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_red/8.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/1.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/2.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/3.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/4.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/5.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/6.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/7.png
Diff not rendered.
Binary file removed gui/snoutx10k/preview_white/8.png
Diff not rendered.
Binary file removed gui/white.png
Diff not rendered.
4 changes: 2 additions & 2 deletions license.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
IronSnout X10K by (C) John 'geartrooper' Siar, licensed under CC-BY 3.0 http://creativecommons.org/licenses/by/3.0/
"Skin Colorizer Lite" by @SalatielSauer (salatielsauer.github.io)

"Skin Colorizer" and all assets were created or modified by Salatiel (salatielsauer.github.io)
Original snoutx10k.md5mesh by (C) John 'geartrooper' Siar, licensed under CC-BY 3.0 http://creativecommons.org/licenses/by/3.0/, adapted by @SalatielSauer.
5 changes: 5 additions & 0 deletions packages/models/ammo/bullets/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
5 changes: 5 additions & 0 deletions packages/models/ammo/cartridges/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
5 changes: 5 additions & 0 deletions packages/models/ammo/grenades/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
5 changes: 5 additions & 0 deletions packages/models/ammo/rockets/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
5 changes: 5 additions & 0 deletions packages/models/ammo/rrounds/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
5 changes: 5 additions & 0 deletions packages/models/ammo/shells/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
md3load "../tris.md3"
skincolorizer md3skin * "skin.jpg" "masks.jpg"
mdlambient 50
mdlspec 150
mdlglare 0.1 1.0
3 changes: 3 additions & 0 deletions packages/models/boost/md3.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
md3load tris.md3
skincolorizer md3skin mesh skin.jpg masks.jpg
mdlspec 100
12 changes: 12 additions & 0 deletions packages/models/captaincannon/blue/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
md5dir "captaincannon"
md5load "captaincannon.md5mesh" captaincannon 70
exec "packages/models/captaincannon/ragdoll.cfg"
md5tag Weapon tag_weapon
skincolorizer md5skin head "<dds>cc_head_blue.png" "<dds>cc_head_mask.png"
md5bumpmap head "<dds>cc_head_normals.png"
skincolorizer md5skin body "<dds>cc_body_blue.png" "<dds>cc_body_mask.png"
md5bumpmap body "<dds>cc_body_normals.png"
exec "packages/models/captaincannon/anims.cfg"
mdlscale 1225
mdlspec 60

25 changes: 25 additions & 0 deletions packages/models/captaincannon/hudguns/chaing/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/chaing"
md5pitch "" 1
md5tag Bicep.R tag_bicep
md5adjust Root 13.25 0 -5.5
md5adjust Hand.R -5 -30 -5
md5anim "gun idle" "hands_mg_idle.md5anim"
md5anim "gun shoot" "hands_mg_shoot.md5anim" 110

setskincolorizerdir md5dir "hudguns/chaing"
md5load "chaing.md5mesh"
skincolorizer md5skin minigun "<dds>m134.png" "<dds>m134_mask.png"// .6 .2
md5bumpmap minigun "<dds>m134_normals.png"
md5spec minigun 200
md5glare minigun 0.5 1
md5tag Muzzle_Flash tag_muzzle
md5adjust Root 0 0 0 -0.75 0.5 0.1
md5anim "gun idle" "chaing_idle.md5anim"
md5anim "gun shoot" "chaing_shoot.md5anim" 110

md5link 0 1 tag_bicep
mdlscale 300
mdltrans -0.5 -1.8 -2.25

37 changes: 37 additions & 0 deletions packages/models/captaincannon/hudguns/fist/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/fist"
md5pitch "" 1
md5tag tag_weapon tag_weapon
md5adjust Root -5 5 -10.0 1.5 0.9 -1
md5adjust Bicep.R 0 0 0 1.0 -2.0 -2.0
md5adjust glove.R 10 15 0
md5adjust Hand.R 0 15 0
md5adjust Thumb1.R 15
md5adjust Index.R
md5adjust Pinky.R 0 -15
md5adjust tag_weapon 0 0 0 -0.75 0 0.75
md5anim "gun idle" "hands_saw_idle.md5anim"
md5adjust Root 12.5 0 -11.5 -3.5 -0.5 1.5
md5adjust Bicep.R
md5adjust glove.R 10 10 -7
md5adjust Hand.R 0 15 0
md5adjust Thumb1.R
md5adjust Index.R 0 -15
md5adjust Pinky.R
md5adjust tag_weapon 0 0 0 -1 0 1
md5anim "gun shoot" "hands_saw_attack.md5anim" 15

setskincolorizerdir md5dir "hudguns/fist"
md5load "chainsaw.md5mesh"
skincolorizer md5skin chainsaw "<dds>chainsaw.png" "<dds>chainsaw_mask.png" .2 .05
md5bumpmap chainsaw "<dds>chainsaw_normals.png"
md5glare chainsaw 0.5 1
md5anim "gun idle" "chainsaw_idle.md5anim"
md5anim "gun shoot" "chainsaw_attack.md5anim" 120

md5link 0 1 tag_weapon
mdlenvmap 0 0 skyboxes/morning
mdlscale 300
mdltrans 0.3 -0.3 -1.7

23 changes: 23 additions & 0 deletions packages/models/captaincannon/hudguns/gl/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/gl"
md5pitch "" 1
md5tag tag_weapon tag_weapon
md5adjust Root 3.5 -2 8 1 -0.5 0
md5anim "gun idle" "hands_gl_idle.md5anim"
md5anim "gun shoot" "hands_gl_shoot.md5anim" 42

setskincolorizerdir md5dir "hudguns/gl"
md5load "gl.md5mesh"
skincolorizer md5skin gl "<dds>gl.png" "<dds>gl_mask.png"
md5bumpmap gl "<dds>gl_normals.png"
//md5spec gl 200
md5glare gl 0.5 1
md5tag Muzzle_Flash tag_muzzle
md5anim "gun idle" "gl_idle.md5anim"
md5anim "gun shoot" "gl_shoot.md5anim" 42

md5link 0 1 tag_weapon -0.2 -0.1 0.1
mdlscale 300
mdltrans -0.6 -2.4 -1.2

16 changes: 16 additions & 0 deletions packages/models/captaincannon/hudguns/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
md5dir "captaincannon/hudguns"
md5load "cc_hands_weapons.md5mesh" cchands 70

setskincolorizerdir md5dir "captaincannon"
if (>= (strstr (mdlname) "blue") 0) [
skincolorizer md5skin "CC_Hands" "<dds>cc_body_blue.png" "<dds>cc_body_mask.png"
] [

if (>= (strstr (mdlname) "red") 0) [
skincolorizer md5skin "CC_Hands" "<dds>cc_body_red.png" "<dds>cc_body_mask.png"
] [
skincolorizer md5skin "CC_Hands" "<dds>cc_body.png" "<dds>cc_body_mask.png"
]
]
md5bumpmap "CC_Hands" "<dds>cc_body_normals.png"
md5spec "CC_Hands" 60
24 changes: 24 additions & 0 deletions packages/models/captaincannon/hudguns/pistol/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/pistol"
md5pitch "" 1
md5tag tag_weapon tag_weapon
md5adjust Root 10 -7 0 0 0 -1
md5anim "gun idle" "hands_revolver_idle.md5anim"
md5anim "gun shoot" "hands_revolver_shoot.md5anim" 18

setskincolorizerdir md5dir "hudguns/pistol"
md5load "revolver.md5mesh"
skincolorizer md5skin revolver "<dds>colt.png" "<dds>colt_mask.png" //.4 .15
md5bumpmap revolver "<dds>colt_normals.png"
md5spec revolver 250
md5tag tag_flash tag_muzzle
md5anim "gun idle" "revolver_idle.md5anim"
md5anim "gun shoot" "revolver_shoot.md5anim" 18

md5link 0 1 tag_weapon 0 -0.3 0
mdlscale 300
//mdltrans 1.75 .25 -1 //-1.5
//mdltrans 1.75 -0.25 -1.25
mdltrans 1.2 -1.15 -1.0

26 changes: 26 additions & 0 deletions packages/models/captaincannon/hudguns/rifle/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/rifle"
md5pitch "" 1
md5tag Bicep.R tag_bicep
md5adjust Root 11.9 -5.4 0 0.4 0 0
md5adjust glove.R -5 -30 -5
md5anim "gun idle" "hands_rifle_idle.md5anim"
md5anim "gun shoot" "hands_rifle_shoot.md5anim" 60

setskincolorizerdir md5dir "hudguns/rifle"
md5load "rifle.md5mesh"
skincolorizer md5skin rifle "<dds>sniper.png" "<dds>sniper_mask.png"
md5bumpmap rifle "<dds>sniper_normals.png"
md5spec rifle 150
md5glare rifle 0.5 1
md5tag muzzle_flash tag_muzzle
md5anim "gun idle" "rifle_idle.md5anim"
md5anim "gun shoot" "rifle_shoot.md5anim" 60

md5link 0 1 tag_bicep
mdlscale 300
//mdltrans 2.7 .65 -0.95
//mdltrans 3 0.95 -1.15
mdltrans 1.0 -2.0 -0.3

29 changes: 29 additions & 0 deletions packages/models/captaincannon/hudguns/rocket/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/rocket"
md5pitch "" 1
md5tag tag_weapon tag_weapon
md5adjust Root 15.5 -6 11
md5adjust Middle.L -15 15 0
md5adjust Middle1.L 20
md5adjust Middle2.L -40
md5adjust Index.L -10
md5adjust Index1.L 0
md5adjust Index2.L 50
md5anim "gun idle" "hands_rl_idle.md5anim"
md5anim "gun shoot" "hands_rl_shoot.md5anim" 26

setskincolorizerdir md5dir "hudguns/rocket"
md5load "rl.md5mesh"
skincolorizer md5skin rl "<dds>rl.png" "<dds>rl_mask.png"
md5spec rl 50
md5glare rl 0.5 1
md5tag Flash tag_muzzle
md5adjust Root 0 0 0 0.2 1.5 -2
md5anim "gun idle" "rl_idle.md5anim"
md5anim "gun shoot" "rl_shoot.md5anim" 26

md5link 0 1 tag_weapon -0.1 -0.22 0
mdlscale 300
mdltrans 2.15 -2.6 0

28 changes: 28 additions & 0 deletions packages/models/captaincannon/hudguns/shotg/md5.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
exec "packages/models/captaincannon/hudguns/md5.cfg"

setskincolorizerdir md5dir "captaincannon/hudguns/shotg"
md5pitch "" 1
md5tag tag_weapon tag_weapon
md5adjust Root 15 0//3.5
md5anim "gun idle" "hands_shotgun_idle.md5anim"
md5anim "gun shoot" "hands_shotgun_shoot.md5anim" 50

setskincolorizerdir md5dir "hudguns/shotg"
md5load "shotgun.md5mesh"
md5skin shotgun "<dds>shotgun.png" "<dds>shotgun_mask.png"// .4 .15
md5bumpmap shotgun "<dds>shotgun_normals.png"
//md5spec shotgun 200
md5glare shotgun 0.5 1
skincolorizer md5skin "shell" "<dds>shotgun_shell.png" "<dds>shotgun_shell_mask.png"// .4 .15
md5bumpmap "shell" "<dds>shotgun_shell_normals.png"
md5tag flash tag_muzzle
md5anim "gun idle" "shotgun_idle.md5anim"
md5anim "gun shoot" "shotgun_attack.md5anim" 50

md5link 0 1 tag_weapon -0.2 -0.3 0.25
//mdlenvmap 0 0 skyboxes/morning
mdlscale 300
//mdltrans 3.5 .2 -1
//mdltrans 3 0 -.5
mdltrans 1.8 -1.5 -0.7

Loading

0 comments on commit 308dc54

Please sign in to comment.