Removing it from that menu won’t help as all that menu does is set cl_playermodel for you; people will still be able to set it themselves via console. You could check their model right after they spawn and if they haven’t bought it then remove it.
I’m going to write an example here, untested, and I have no idea how you check if someone has bought something via pointshop.
[lua]hook.Add(“PlayerSpawn”, “Limit players from certain models”, function(ply)
–Do it all in a timer 0.1 seconds later so any other hooks that set their model can run first. Can probably lower this number even further
–Make sure they are still valid
if not IsValid(ply) then return end
–Check their model
if ply:GetModel() == “models/whatever/you/are/blocking.mdl” then
–Check if they bought it via pointshop
if not ply:PS_HasBoughtModel(“themodelyouareblocking”) then
–if they havent bought it, return now
–Reset their model
You’d need to figure out what the HasBoughtModel should actually be called, I’ve never used point shop.