{"id":19952464,"url":"https://github.com/dosmike/tf2-playerclassdatahook","last_synced_at":"2026-03-19T12:44:16.315Z","repository":{"id":65417849,"uuid":"587878709","full_name":"DosMike/TF2-PlayerClassDataHook","owner":"DosMike","description":"Modify default for max speed, max health and max ammo","archived":false,"fork":false,"pushed_at":"2023-06-11T15:11:12.000Z","size":15,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-20T21:39:47.464Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"SourcePawn","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DosMike.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-11T19:57:01.000Z","updated_at":"2024-05-23T06:45:05.000Z","dependencies_parsed_at":"2024-11-13T01:23:24.290Z","dependency_job_id":null,"html_url":"https://github.com/DosMike/TF2-PlayerClassDataHook","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/DosMike/TF2-PlayerClassDataHook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FTF2-PlayerClassDataHook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FTF2-PlayerClassDataHook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FTF2-PlayerClassDataHook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FTF2-PlayerClassDataHook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DosMike","download_url":"https://codeload.github.com/DosMike/TF2-PlayerClassDataHook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DosMike%2FTF2-PlayerClassDataHook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29186047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T03:35:06.566Z","status":"ssl_error","status_checked_at":"2026-02-07T03:34:57.604Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T01:13:19.013Z","updated_at":"2026-02-07T04:02:10.266Z","avatar_url":"https://github.com/DosMike.png","language":"SourcePawn","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TF2 PlayerClassData\n\nReplace some TFPlayerClassData_t values using plugins.\n\nThis includes the default values, per class, for:\n* max speed\n* max health\n* max armor (unused in TF2)\n* max ammo (per type; primary, secondary, metal, idk what 4-7 do)\n* builables (TFObjectType, 4 for none)\n\n## Why is this interesting?\n\nThe default approach is to manipulate value on the client after spawning using EntProps or attributes.\nThis can mess with attributes on items, making certain manipulations rather inconvenient.\n\nIf you want to rebalance the game, you can now do so using the base values, keeping maximum compatibility\nwith any items or other plugins that apply attributes to the player without things breaking.\n\nIf you want to set the maximum speed above 520 you will need another plugin that removes that specific\nhardcoded limit: [TF2 Move Speed Unlocker](https://forums.alliedmods.net/showthread.php?p=2659562) or \n[tf_maxspeed_patch](https://github.com/FlaminSarge/tf_maxspeed_patch)\n\n## Installing\n\nDrop plugin and gamedata file on your server. By default the plugin does nothing.\n\n## Module\n\nYou can use TF2ClassDataConfig to change the Player Class Data Values using a config.\n\nPut the config at `cfg/sourcemod/playerclassdata.cfg`\n\nYou can reload the config by reloading the plugin or using `sm_playerclassdata_reloadconfig`.\nThe command by default has ADMFLAG_CONFIG.\n\nYes, the first ammo type is 0. That's just where software likes to start counting.\n\nYou can just remove class sections or entries that you want to keep on default values.\n\n```\n\"PlayerClassDataConfig\"\n{\n\t//\"#default\" {\n\t// you can use a defaul section to apply values to all classes before class specific overrides\n\t//}\n\t\n\t// if you create a section with a name not matching a class name, you can will it with template values\n\t// and copy the values into a class section using the entry like this:\n\t//    scout {\n\t//        \"copy\" \"example\"\n\t//    }\n\t\n\t// supported keys: speed_max, health_max, armor_max, ammo_max_0, ... ammo_max_5, buildable_0, ... buildable_5\n\t\n\tscout {\n\t\tspeed_max 400\n\t\thealth_max 125\n\t\tammo_max_0 32\n\t\tammo_max_1 36\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tsniper {\n\t\tspeed_max 300\n\t\thealth_max 125\n\t\tammo_max_0 25\n\t\tammo_max_1 75\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tsoldier {\n\t\tspeed_max 240\n\t\thealth_max 200\n\t\tammo_max_0 20\n\t\tammo_max_1 32\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tdemoman {\n\t\tspeed_max 280\n\t\thealth_max 175\n\t\tammo_max_0 16\n\t\tammo_max_1 24\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tmedic {\n\t\tspeed_max 320\n\t\thealth_max 150\n\t\tammo_max_0 150\n\t\tammo_max_1 150\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\theavy {\n\t\tspeed_max 230\n\t\thealth_max 300\n\t\tammo_max_0 200\n\t\tammo_max_1 32\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tpyro {\n\t\tspeed_max 300\n\t\thealth_max 175\n\t\tammo_max_0 200\n\t\tammo_max_1 32\n\t\tammo_max_2 100\n\t\tbuildable_0 4\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tspy {\n\t\tspeed_max 320\n\t\thealth_max 125\n\t\tammo_max_0 20\n\t\tammo_max_1 24\n\t\tammo_max_2 100\n\t\tbuildable_0 3\n\t\tbuildable_1 4\n\t\tbuildable_2 4\n\t}\n\tengineer {\n\t\tspeed_max 300\n\t\thealth_max 125\n\t\tammo_max_0 32\n\t\tammo_max_1 200\n\t\tammo_max_2 200\n\t\tbuildable_0 2\n\t\tbuildable_1 0\n\t\tbuildable_2 1\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosmike%2Ftf2-playerclassdatahook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdosmike%2Ftf2-playerclassdatahook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosmike%2Ftf2-playerclassdatahook/lists"}