Режим не очень серьёзный. Глаза - глазами, а на слух неписи как собаки, прям! На зверьё прозрачный режим ГГ не действует. Это - пример. Браз что-то сделал, надеюсь лучше, чем у меня.
Создаём пустой файл в \scripts\trans_outfit.script и создаём две функции:
function transparent_gg() --назовём её для памяти - "хулиганы зрения лишают!"
local fov1, range1, id, obj_around, alife_obj, dist_act_npc
if db.actor == nil then
return nil
end
--если ГГ голый
if db.actor:item_in_slot(7) == nil then
fov1 = 150
range1 = 80
--если на ГГ одет костюм новичка
elseif db.actor:item_in_slot(7):section() == "novice_outfit" then
fov1 = 1
range1 = 1
--если на ГГ одет другой броник
else
fov1 = 150
range1 = 80
end
--задача предыдущего куска проанализировать, что надето на ГГ и установить
--соответствующие угол обзора и дальность зрения
--
--дальше перебор ВСЕХ объектов в игре по его id
for id = 1, 65534 do
obj_around = level.object_by_id(id) -- создаём онлайн объект
if obj_around ~= nil and IsStalker(obj_around) then --если есть такой и это сталкер
--создаём серверный объект, соответствующий онлайновому
--сам обескуражен, что не смог определить дистанцию по онлайновому объекту
--ну, наверное, мало рыл
alife_obj = alife():object(id)
if alife_obj then
--определяем дистанцию между ГГ и неписем
dist_act_npc = db.actor:position():distance_to(alife_obj.position)
end
if dist_act_npc <= 120 then --отличаясь огромным человеколюбием я решил не бросать
--в беде ослеплённых сталкеров и восстанавливать им зрение в кольце 120-150 метров.
--ну жалко их, болезных
if obj_around then - проверка обязательна иначе может быть
--вылет при убийстве вражины
obj_around:set_fov(fov1) --портим неписю угол зрения
obj_around:set_range(range1) --портим неписю дальность зрения
end
else
if obj_around then --если непись в кольце 120-150м восстанавливаем зрение
obj_around:set_fov(150)
obj_around:set_range(80)
end
end
end
end
end
--а это стартёр нашей функции "хулиганы зрения лишают!"
--тупой до бесконечности, когда я подоткнулся к таймерам Николая - диалоги начали мелькать.
--но мы ж не таймеры разучиваем. Принцип прост. Вызов ф-ции подтыкаем в апдейт биндера актёра
--и каждый раз наращиваем, предварительно созданную, глобальную переменную на 1 единичку.
--на 50 раз обнуляем глобалку и запускаем "хулиганы зрения лишают!"
function timer_trans()
timer_transparent = timer_transparent + 1
if timer_transparent >= 50 then
timer_transparent = 0
transparent_gg()
end
end
------------------------------------------------------------------------------
Далее открываем файл \scripts\_g.script и внем прописываем свою глобалку:
dev_debug = false
sim_debug = false
mus_vol = 0
amb_vol = 0
timer_transparent = 0 --вот она, родная!
-------------------------------------------------------------------------------
Ну и последний штрих: подключить моторчик, чтобы пятидесятки считались, и "хулиганы
зрения лишают!" запускалась один раз на 50 апдейтов биндера.
Открываем \scripts\bind_stalker.script
ищем функцию апдейта function actor_binder:update(delta)
и так скромненько пристраиваем ей в хвостик свой доморощенный таймер
pda.fill_sleep_zones()
trans_outfit.timer_trans() -- функция из другого файла вызывается с префиксом имяфайла.
-- загрузка мода(постоянное обновление)
if mod_update() then
sgm_loader.sigerous_mod_main()
end
end
-----------------------------------------------
Всё в игре находим/обдираем/покупаем костюм новичка и пробуем инвизибл вар!