Player team Bodygroups (Help me please)

Hi, so can someone help me out with a Script that would detect the LOCAL PLAYERS team and if it was eg: Police it would set his model bodygroups.
I know some bits and peices about how to do this but could someone help me out? Thanks any help is appriciated. :slight_smile:

Script raw idea:

Check Ply’s team,
If team = police Then,
Apply Bodygroups




PoliceTeams = {--Put the name of your jobs here
"Police Officer",
"Police Chief"
}

if table.HasValue(PoliceTeams,team.GetName(ply:Team())) then

ply:SetBodygroup(1,1)--An example, it sets the first bodygroup to 1. Change this to what you want.

end


You’d assign the body groups on the server when the client spawns. I’d recommend using hook.Add PlayerLoadout instead of PlayerSetModel because hook.Add runs prior to main function…

Create a table like this:


local TeamBodyGroups = {
	[ TEAM_POLICE ] = {
		model = "police/player/model.mdl"; -- string or table for random

		// Using my body-group string system; releasing soon in dev_base and dev_addon
		-- bodygroups = "1:2;2:1;3:5;";

		// Using table method
		bodygroups = {
			[ 1 ] = 1;
			[ 2 ] = 1;
			[ 3 ] = 5;
		};
	};

	[ TEAM_CHIEF ] = {
		model = "blah.mdl";
	};
};


hook.Add( "PlayerSetModel", "UpdatePlayerModel", function( _p )
	local _team = _p:Team( );
	local _data = TeamBodyGroups[ _team ];
	if ( _data ) then
		local _model = _data.model;
		if ( _model ) then	
			if ( isstring( _model ) then
				_p:SetModel( _model );
			elseif ( istable( _model ) then
				_p:SetModel( table.Random( _model ) );
			end
		end

		local _bodygroups = _data.bodygroups;
		if ( _bodygroups ) then
			if ( isstring( _bodygroups ) then
				-- using my system
			elseif ( istable( _bodygroups ) then
				for _id, _bodypart in pairs( _bodygroups ) do
					_p:SetBodygroup( _id, _bodypart );
				end
			end
		end

		// Now, prevent the GM:PlayerSetModel or other hooks from running if we updated the model - we do this check twice because model needs to be set prior to setting body group, and we want to prevent this function from altering the model again...
		if ( _model ) then
			return true;
		end
	end
end );