и не будет так работать. Вы хоть голову включайте когда код пишете, думайте что пишете и почему строка именно указанные переменные содержит. Вот рабочее, пометил что и почему
itemCreated = player.GetHumanInventory().CreateInHands("svd"); // Выдаем игроку оружие в руки
if (itemCreated) // Проверяем, создалось ли оружие
{
itemCreated.GetInventory().CreateAttachment( "AK_Suppressor" ); // Выдаем игроку цевье, приклад и глушитель, и крепим
itemCreated.GetInventory().CreateAttachment( "dzn_att_ghillie_tandark" ); // Выдаем гили на оружие, и крепим
number_in_quickbar = 0; // может быть от 0 включительно по 9 включительно. это номер клетьки в ячейке снизу
player.SetQuickBarEntityShortcut(itemCreated, number_in_quickbar, true); // если он создался, добавляем его на квикбар вниз
itemCreated = itemCreated.GetInventory().CreateAttachment( "PSO1Optic" ); // Выдаем игроку оптику и крепим, записываем в переменную
itemCreated.GetInventory().CreateAttachment( "Battery9V" ); // Используем уже данные переменно для создания на ней батарейки (т.е. уже не пушка а прицел)
}