local sects = {}
local tab_id = {}
local tab_old_id = {}
local now_wpn_id
local sect_old
local sect --присвоим позже оригинальную секцию оружия которая в последующем будет использована для спавна
local orig_sect --переменной будет присвоена секция оружия 
local count = 0
local num
local new_id
local name --будет присвоено оригинальное название оружия
function delete_weapon(weapon) --функция удаления оружия, аргумент сам объект 
--таблица оружий которые прописаны в рангах
local wpn_tab = {"wpn_abakan","wpn_rpg7","wpn_ak74","wpn_fn2000","wpn_g36","wpn_groza","wpn_l85","wpn_lr300","wpn_mp5","wpn_rpg7","wpn_sig550","wpn_val","wpn_spas12","wpn_toz34","wpn_wincheaster1300","wpn_svd","wpn_svu","wpn_vintorez","wpn_beretta","wpn_colt1911","wpn_desert_eagle","wpn_fort","wpn_hpsa","wpn_pb","wpn_pm","wpn_sig220","wpn_walther"}

local wpn = weapon:section()
orig_sect = wpn
local pos_act  = db.actor:position()
pos_act.x = pos_act.x + 0.3
--оружие будет спавниться не в инвентарь к ГГ а в 30см от него,
--ибо при спавне в инвентарь нет-пакет в оружие не записывается.
--ниже проверяем что оружие действительно апгрейдное
--(в данном случае идет проверка не только на то что оружие апгрейдное
--но еще и на  то что оружие имеет секцию смены визуала)
	if string.find(wpn,"list") or string.find(wpn,"prugina") or string.find(wpn,"tormoz")
or string.find(wpn,"sv1") or string.find(wpn,"sv2") or string.find(wpn,"sv3") or string.find(wpn,"sv4") then
		for k = 1, #wpn_tab do --запускаем цикл на выявление оригинала оружия (прописанного в рангах)
		name = k
		if string.find(wpn,wpn_tab[name]) then
		sect = wpn_tab[name]
		break --если условие выполняется то преждевременно останавливаем выполнение цикла
		end
		end
--ниже происходит запись в таблицы данных о секциях
	table.insert(sects,orig_sect)
	table.insert(tab_old_id,weapon:id())
--производим снятие нет-пакета, для этого подготовливаем все условия для этого
	local n_obj = alife():object(weapon:id()) --определяем объект
	local func_net = net_pack_sip.wpn_d_r(n_obj) --снимаем нет-пакет объекта
	alife():release(n_obj,true)
	local sobj = alife():create(sect,pos_act,db.actor:level_vertex_id(),db.actor:game_vertex_id()) --присвоим но не заспавним объект
		if sobj then
		table.insert(tab_id,sobj.id) --запишем id  оружия в таблицу для дальнейшей работы с ним
		net_pack_sip.wpn_d_w(func_net,sobj) --запишем на это оружие весь нет-пакет удаленного оружия
		end
	end
	return sobj --заспавним оружие
end


function spawn_old_wpn(obj)
	for k = 1, #tab_id do
--запускаем цикл на вычисление идетификатора оружия которое было создано в момент удаления апгрейдного оружия
--(секция которого была записана ранее)
		if obj:id() == tab_id[k] then 
		num = k
		now_wpn_id = tab_id[num]	--получаем id объекта	
		sect_old = sects[num] --получаем секцию удаленного апгрейдного оружия
		spawn_del_weap(sect_old,now_wpn_id) --запускаем функцию снятия и записи нет-пакета в новое оружие, дабы не нарушить симуляцию
		break
		end
	end
end
--прототип данной функции не требует комментария, ибо расписывался ранее
function spawn_del_weap(sect_old,now_wpn_id)
local pos_act  = db.actor:position()
pos_act.x = pos_act.x + 0.3
local n_obj = alife():object(now_wpn_id)
local func_net = net_pack_sip.wpn_d_r(n_obj)
alife():release(n_obj,true)
local sobj = alife():create(sect_old,pos_act,db.actor:level_vertex_id(),db.actor:game_vertex_id())
	if sobj then
	new_id = sobj.id --записываем id оружия для перевода его к ГГ
	net_pack_sip.wpn_d_w(func_net,sobj)
	end
return sobj
end

function transfer_new_wpn() --данная функция предназначена для перевода нового заспавненго оружия (апгрейдного к ГГ)
	if new_id ~= nil then
	local wpn = level.object_by_id(new_id)
		if wpn then
		db.actor:transfer_item(wpn,db.actor)
		new_id = nil
		end
	else return
	end
end