Kandid, сам костыль выглядит так:
клац
function fix_armor()
bind_stalker.hide_weapon()
local act = db.actor
local act_slot = nlc_vars.active_slot
if act_slot == nil then
act_slot = 5
end
local knife = act:item_in_slot(0)
if knife then
act:move_to_ruck(knife)
end
local fake_knife = nil
for i=1,2 do -- цикл нужен на случай, если нож изначально отсутствует в слоте
fake_knife = misc.spawn_to("wpn_knife",act)
log2("[fix_armor]: fake_item %s spawned",fake_knife:name())
misc.process_spawn()
local cl_fake_knife = client_obj(fake_knife.id)
if cl_fake_knife then
act:move_to_ruck(cl_fake_knife)
misc.release_obj(cl_fake_knife)
end
if not act:item_in_slot(0) and knife then
nlc_container.try_to_slot(knife)
break
end
end
if act_slot ~= NONE_SID and act_slot ~= NONE_CL_SID and act:item_in_slot(act_slot) ~= nil then
act:activate_slot(act_slot)
else
act:activate_slot(5)
end
bind_stalker.restore_weapon()
end
Вызывать следует после полной загрузки игры, из sak.on_load_complete(), к примеру. Просто на late_init'е биндера не работает.
Также в bind_stalker.script -> actor_binder:on_before_save() следует добавить строку:
nlc_vars.active_slot = db.actor:active_slot()
В противном случае, при загрузке ГГ всегда будет брать в руки болт.
_________________________________________________________________________________________________________