playercolor of playermodel get reseted after jump

hi everybody so i’ve got a weirg bug in my gamemode

context :
when player spawn the first time, he gets a menu with a team choice
after selected someone i apply playercolor (for changing playermodel’s color) serverside and clientside ( i think the two both are useless…)
the playercolor change well

but if i jump or i get in air, at the moment of the player hit the ground, the color is reseted and never back to the team color

code :



team.SetUp( 1, "team1", Color(30,80,0) )
team.SetUp( 2, "2", Color(10,100,220) ) 
team.SetUp( 3, "3", Color(0,230,255) ) 
team.SetUp( 4, "4", Color(255,0,0) )
team.SetUp( 5, "5", Color(255,255,0) )
team.SetUp( 6, "6", Color(100,100,100) ) 

if SERVER then 

	util.AddNetworkString( "ChooseTeam" )
	util.AddNetworkString( "teamChoosed" )

	function GM:PlayerInitialSpawn( ply )

		net.Start( "ChooseTeam" ) 	
		net.Send(ply)
		
	end

	net.Receive( "teamChoosed", function(ln, pl)

		pl:SetTeam(net.ReadInt(8))
		local color = team.GetColor(net.ReadInt(8))
		pl:SetPlayerColor(  Vector( color.r/255, color.g/255, color.b/255 ) )
		
	end)
end



if CLIENT then
	net.Receive( "ChooseTeam", function(ln, pl)
		TeamSelectionPanel = vgui.Create( "DFrame" )
                // ...
                // Create panel and buttons bla bla bla
                //...
                buttonTeam1.DoClick = function()
				
			net.Start( "teamChoosed" ) 
			net.WriteInt(1,8)
			net.SendToServer()
			local tmc = team.GetColor(1)
			ply:SetPlayerColor( Vector( tmc.r/255, tmc.g/255, tmc.b/255 ) )
			RunConsoleCommand("cl_playercolor", tostring(Vector( tmc.r/255, tmc.g/255, tmc.b/255 )) )
			TeamSelectionPanel:Close()

		end
        end)
end




i think i miss a hook or something like this …
so whats wrong …?

This bit is wrong, you’re calling ReadInt twice but you’re doing WriteInt once. Cache result of ReadInt into a local variable and pass it to SetTeam and to team.GetColor.

wow … its work :


	net.Receive( "teamChoosed", function(ln, pl)
		local teamnumber = net.ReadInt(8)
		pl:SetTeam(teamnumber)
		local color = team.GetColor(teamnumber)
		pl:SetPlayerColor(  Vector( color.r/255, color.g/255, color.b/255 ) )

	end)

Thank you ! :slight_smile:
:v: