Надо навесить pre-обработчик на FM_Touch, в нем первый параметр проверить на имя класса "weaponbox", второй - на принадлежность диапазону идентификаторов игроков. weaponbox - особый объект. Он сам по себе не является оружием. Он является владельцем реального оружия, т.е. объекта, свойство owner которого равно id weaponbox'а. Внешне weaponbox выглядит как оружие. Поэтому можно взять его модель, и получить тип оружия. А можно искать "ребенка" weaponbox'а (что требует больше процессорного времени). Потом проверить, к какому слоту это оружие принадлежит (массив сопоставлений есть в csdm.inc). Если у игрока есть уже оружие с этим слотом, то оно не будет поднято, а если нет - то будет (корректно для CS/CZ).