is_user_alive already check if the player is connected, so you don't need to verify. Also, you need to check if weapon is a valid entity.
Code:
public SkinCheck(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new Sil, WPName[32];
formatex(WPName, charsmax(WPName), DefaultModels[get_user_weapon(id)][1]);
new WPN = find_ent_by_owner(-1, DefaultModels[get_user_weapon(id)][1], id);
if (!is_valid_ent(WPN))
return PLUGIN_HANDLED;
if(get_user_weapon(id) == CSW_M4A1 || get_user_weapon(id) == CSW_USP)
Sil = cs_get_weapon_silen(WPN);
if(get_user_weapon(id) == CSW_AWP)
cs_set_user_zoom(id, 0, 0);
PlayAnimation(id, AnimationIDs[get_user_weapon(id)][Sil]);
return PLUGIN_HANDLED;
}
Also, consider to use switch instead of a lot of "if"
__________________