(CS:GO: various charm examples. Models created by Silvers.)
Thanks:
"Phoenix" and "Napas" for the original plugin idea, pin attachment and wiggle bone.
"ESKO" for inspiring me to start the project.
"CZE|EMINEM" for showing me how to model custom Charms.
"Lux" for testing and various help as always.
"xZk" for testing in L4D2.
Features:
All Games:
Translations support.
Database support saving players selected charm for all weapons.
Menu to select charm for current weapon and all other weapons.
Menus for admins to position and change angles of charms.
Menus only show available charms for the weapon.
Supports unloading and late loading the plugin.
Bots can use randomly selected charms.
CS:GO:
Custom charm models positioned for all Weapons, Molotov, C4 and Tablet.
Third person charm attachment view. (But no support for users changing to 3rd person).
L4D1 & L4D2:
All charms positioned for the Pistol.
6 charms positioned to all weapons. Some have more.
Third person charm attachment view.
Automatically shows/hides the 1st and 3rd person charm when changing view.
Known Issues:
All Games:
Uses fake viewmodels because I cannot figure how to attach/bonemerge that follows the viewmodel_fov cvar to sit in the correct position.
If any charm models are missing this might cause an indexing error, so if you change the pos/ang/size and save it might affect the wrong one. Haven't fully tested. Please report if you tested.
Sometimes (rarely) the wrong weapon is shown when equipping a new weapon, cannot figure out how to fix.
Edit menus XYZ text not accurate for every model/view.
CS:GO:
Plugin copies and renames viewmodels, sending ~33 models (1 MB) to clients.
Uses fake arms/weapon. When a Charm is active the following issues occur:
Arms maybe incorrect for the players model (work in progress). All 3rd party maps seem to be affected.
Gloves are stock (not sure how to fix).
Weapon missing StatTrack and Stickers.
Weapon FOV changes to 90 and does not follow the viewmodel_fov cvar.
Left handed weapons are not compatible using the cl_righthand 1 cvar.
Weapon Viewmodel may show invisible section due to FOV.
Most stock game models cannot be resized, third party models would have to add support if required.
L4D1 & L4D2:
Uses fake arms/weapon. When a Charm is active the following issues occur:
Weapon FOV changes to 90 and does not follow the cl_viewmodelfovsurvivor cvar.
Weapon Viewmodel may show invisible section due to FOV.
Laser sight beam is not visible in first person view.
Blood splatter screen effect is not visible with an active charm.
Clashes with plugins that hide the viewmodel (maybe can support, report here about affected plugins).
L4D1 cannot resize models and only 1 charm model example is provided, add more yourself and please share.
Charms are removed while incapped to save excess code in fixing bugs.
Adding charms to weapons and custom charm models:
CS:GO:
Download and install the charm models you want. Already included in the config are various examples from the models.zip.
Create a unique index in data/charms.data.csgo.cfg with the charm name and model path.
Copy the weapon classnames and their data from the Mustachio example provided. This already has a charm position setup for all weapons.
Adding support for more weapon classnames can be done via data/charms.weapons.csgo.cfg. This file has some more details.
Weapons missing attachment points cannot work. Download CS:GO - SDK (premium users only I think) from steam and use Model Viewer to open models and view their attachment point names.
Add your new weapon classname entry in data/charms.data.csgo.cfg for the new charm you're supporting, follow the details above about copying the positions.
Info about the keys:
- "attach_1": First person attachment point (usually name "1" or "2" for most models). When shooting sometimes the charm freezes, use "2" or other attachment point.
- "attach_2": Third person view attachment point. Since detecting current view in CS:GO doesn't work, you might want to comment out the "Hook_SetTransmitWorld" section and recompile the plugin to test positions.
- "default": Signals this charm will be default for the weapon classname when clients have no saved preferences.
- "vpos_1" and "vang_1" etc: Use sm_charm_edit [1 or 2] command to modify charm position and angles for 1st or 3rd person view.
- "bonemerge": Specifying a bone name which exists on both the weapon viewmodel and charm will use bonemerge attachment without having to manually position and use attachment points.
L4D1 & L4D2:
The above information is relevant for these games, except instead of custom charm models we use stock game models.
This is because L4D1 and L4D2 has issues with the downloads table sending files to clients and something I do not support.
Natives: (for developers)
Spoiler
Plugin library name: "charms_silvers"
PHP Code:
/**
* Creates a charm on the specified client.
*
* @param client Client index.
* @param index Charm index, or 0 to attempt using the clients current charm index if available.
*
* @noreturn
*/
native void Charms_Create(int client, int index = 0);
/**
* Removes any charm from the specified client
*
* @param client Client index.
*
* @noreturn
*/
native void Charms_Delete(int client);
/**
* Returns the clients current charm index. The charm might not be invalid and the index for another weapon they were holding.
*
* @param client Client index.
*
* @return Charm index.
*/
native int Charms_GetIndex(int client);
/**
* Checks if the client has a charm attached.
*
* @param client Client index.
*
* @return True if the client has a charm equipped
*/
native bool Charms_GetValid(int client);
Public Commands:
PHP Code:
sm_charm // Shows the Charms menu. Alternative usage: sm_charm [charm index] or 0 to remove.
sm_charms // Shows the Charms weapon menu.
Admin Commands:
Requires "z" - ADMFLAG_ROOT flag
PHP Code:
sm_charm_reload // Reload the Charms config.
sm_charm_edit // Usage: sm_charm_edit <type>. 1=First person. 2=Third person. Enables editing pos/ang/size.
sm_charm_ang // Shows a menu allowing you to adjust the charm angles.
sm_charm_pos // Shows a menu allowing you to adjust the charm position.
sm_charm_size // Shows a menu allowing you to adjust the charm size.
sm_charm_save // Saves the data config. Suggest saving after editing each charm, either via menu or command.
ConVars:
Saved to charms.cfg in your servers \cfg\sourcemod\ folder.
PHP Code:
// 0=Plugin off. 1=Plugin on.
charms_allow "1"
// 0=Plugin off, 1=Plugin on.
charms_bots "1"
// 0=None. 1=Give default charms to new players (search for default in the charms.data config).
charms_default "1"
// L4D/2 only: 0.0=Off. How often to check if a players in first or third person view to show/hide the correct Charm.
charms_check "0.2"
// Weapon Charms plugin version.
charms_version
Changes:
Code:
1.19 (24-Nov-2023)
- L4D2: Fixed the weapon being hidden after staggering when the stagger timer didn't reset (due to some plugins such as "Stagger Gravity").
1.18 (05-Sep-2023)
- No longer shows the charm of the player you're spectating.
1.17 (16-Jul-2022)
- L4D1 & L4D2: Fixed charms appearing after using a minigun when the plugin has been turned off.
1.16 (04-Dec-2021)
- Changes to fix warnings when compiling on SourceMod 1.11.
1.15 (01-Jul-2021)
- L4D2: Added a warning message to suggest installing the "Use Priority Patch" plugin if missing.
1.14b (15-May-2021)
- L4D2: Fixed the Rifle weapon positions in 3rd person view.
- Config file "charms.data.l4d2.cfg" has been updated.
- Fixed bad translations data. Thanks to "weffer" for reporting.
- Translation file "translations/es/charms.phrases.txt" has been updated.
1.14a (20-Apr-2021)
- Added Spanish translations. Thanks to "AlexAlcala" for providing.
1.14 (12-Apr-2021)
- L4D/L4D2: Fixed not restoring the charm after being revived.
1.13 (04-Mar-2021)
- Added an extra check in case the database had not connected. Thanks to "Marttt" for reporting.
- Added Portuguese translations. Thanks to "hoyxen" for providing.
1.12 (15-Feb-2021)
- Fixed "Array index out-of-bounds" error. Thanks to "Alex101192" for reporting and "Marttt" for fixing.
- Added Russian translations. Thanks to "Kleiner" for providing.
1.11 (05-Oct-2020)
- Added cvar "charms_default" to give default charms to new players or none at all.
1.10 (01-Oct-2020)
- Added support for following weapons "m_nSkin" value. Fixes L4D2 new weapon skins.
- Added an "IsClientInGame" check to "TimerSpawn" due to rare case of logging an error.
- L4D2: Added charms to CSS weapons since their viewmodel is now better from The Last Stand update.
- L4D2: Changed "charms_precache" cvar default value to blank.
- L4D2: Fixed various weapon positions supporting The Last Stand update changes.
- L4D2: Fixed displaying the wrong arms model for L4D2 characters on L4D1 maps.
- L4D/2: Fixed reloading or turning plugin off/on from making the weapon and arms invisible.
- L4D/2: Fixed not hiding the charm when reviving someone.
1.9 (25-Jul-2020)
- Any: "Attachments_API" version 1.5 fixes wrong or broken weapon models being shown.
- Added some code to attempt fixing charms blocking +USE action. Thanks to Lux for providing.
- Fixed not saving clients selected charms when "charms_bots" cvar was disabled.
- L4D2: Fixed the "F-18" and "Missile" charms causing lag stutter on first usage.
- L4D2: Fixed the "prop_minigun_l4d1" minigun from not removing charms when used.
- L4D2: Fixed thirdperson weapon showing when using a minigun. Thanks to "Alex101192" for reporting.
1.8 (20-Jul-2020)
- Added cvar "charms_timeout" to prevent equipping a new charm for X seconds.
- L4D2: Jockey riding someone now deletes the charm and restores on ride end.
- L4D2: Ladder fix from "Attachments_API" version 1.4 update.
1.7 (15-Jul-2020)
- Added 4 natives for other plugins (support for L4D/2 "Extinguisher" plugin to create/remove charms).
- Optimized bots using charms, no longer creating viewmodels or fake arms.
- CSGO: Removed the charm when aiming down iron sights (Aug).
- CSGO: Better replicating the players arms based on their current model.
- CSGO: Blocked some silenced/modified weapons from using charms.
1.6 (11-Jul-2020)
- Changed command "sm_charm" to allow using an optional arg to select the charm index.
- Fixed L4D1 crash due to using the wrong dual pistol model.
- Fixed L4D1 errors about event missing. Now hooks OnUse to hide charms when mounting a minigun.
- Removes the charm when zooming down a scope. Thanks to "Alex101192" for reporting.
- CSGO: The charm won't re-attach when shooting during scoped view, only when manually unscoping.
- CSGO: Updated the C4 charm position in the "charms.data.csgo.cfg" config.
- CSGO: Blocked plugin from running when "Sm_Skinchooser" plugin is detected.
1.5 (09-Jul-2020)
- L4D2: Fixed showing a duplicate weapon when using "thirdpersonshoulder". Thanks to "Alex101192" for reporting.
1.4 (06-Jul-2020)
- Added cvar "charms_precache" to prevent the plugin working and PreCaching models on certain maps.
- Added a 1 frame delay in creating a charm to hopefully fix weapons or charms getting stuck or invisible.
1.3 (05-Jul-2020)
- Fixed minor memory leak from bots, forgot to delete a handle I tried to remember.
1.2 (04-Jul-2020)
- Added support for bots using random charms.
- Added cvar "charms_bots" to control if bots can use charms.
- Fixed L4D1 and L4D2 not removing charms when pinned.
- Plugin "Attachments_API" updated and required.
1.1 (02-Jul-2020)
- Fixed database creation error. Thanks to "NanoC" for reporting.
- Fixed default charm settings in "charms.data.csgo.cfg" config.
- Fixed batch exporting the project to .zip archive duplicating the .sp source code.
1.0 (01-Jul-2020)
- Initial release.
Incompatible:
L4D1 game bug: this plugin is incompatible with the Glare plugin, beam_spotlight turning on/off breaks the position. Tried to fix, not wasting more hours.
CSGO various bugs: this plugin is incompatible with the Sm_Skinchooser plugin, too many different issues to fix, only fix would be real charms attachment.
Updating from 1.10 or older:
New cvars have been added: use the Cvar Configs Updater, or delete the old cvars config or manually add them.
Download the charms.zip and extract the files to their respective folders in your servers \addons\sourcemod\ folder.
Setup a "charms" database entry in your servers \addons\sourcemod\configs\databases.cfg file.
(you can duplicate "clientprefs" section changing the name to "charms" since SQLite is supported, or duplicate and rename an existing external database entry since MySQL is supported too).
For those using MySQL and not clientprefs you have to login to phpMyAdmin or whatever you use to maintain your database and create a new database entry named "charms".
CS:GO:
For custom Charm models download the charms_models.zip and extract the \materials\ and \models\ folders to your servers main game folder.
You can find more custom Charm models for CS:GO on GameBanana thanks to "CZE|EMINEM" and "CrazySkull2k" for creating.
If using FastDL copy the \csgo\models\weapons\silvershot\ folder to your FTP. The folder and files in \viewmodels\ are generated on map start, the \charms\ are those you install. All must be copied to your FastDL server to prevent error boxes.
Current Translations: English (en), Portuguese (pt), Russian (ru).
Hi, sorry for asking but does it also have support for L4D2 melee weapons? I haven't found any info about it the main thread. I'm asking that because melee behavior is very specific in most cases.
Awsome release! I've been working with Eminem for the past days, and we are currently working on Apex Legends, Rainbow Six & Half Life Alyx Charms
Quote:
Originally Posted by The Killer NL
Would be lovely if it had store support tho
But great plugin bro!
I haven't used any store plugins and don't know what's needed. Not really something I want to do.
Quote:
Originally Posted by Marttt
Hi, sorry for asking but does it also have support for L4D2 melee weapons? I haven't found any info about it the main thread. I'm asking that because melee behavior is very specific in most cases.
With some modification it might work, but some melee weapons are missing attachments and not something I'll support. Same issue with CS:GO knives they're all missing attachment points so cannot work.