Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

@imcrazyhoudini, nonscript_usable = true/false - возможность стандартных (нескриптовых) действий над объектом: взять объект в интерфейс, открыть инвентарь.

Скрытый текст

[logic]
active = ph_idle

[ph_idle]
on_info = {+dolgs_t_1} ph_idle2
nonscript_usable = true

[ph_idle2]
nonscript_usable = false

 

  • Спасибо 1

При закладке нычки можно получить ссылку на объект рюкзака: что-нибудь вроде local ruck = alife():create(…), потом level.object_by_id(ruck.id) для клиентского объекта. Попробовать изменить подсказку и посмотреть, сохранится или нет.

 

Кастом-дату вроде бы через перезапись нетпакета можно менять.

1 час назад, nik1967 сказал:

взять объект в интерфейс, открыть инвентарь.

А каким образом определяется что из этого конкретно сделать можно?

Как добавить новые слоты в ОГСР движке? Их вообще можно добавить? Есть ли подробная информация? Пробовал варашить движок, захожу в игру и результат 0.

Изменено пользователем Colder

@Colder external.ltx

; Включает слоты ножа, бинокля, шлема, биорадара, ПНВ, детектора артефактов, фонаря
ogse_new_slots = true

Хочу использовать локации из мода Зона поражения новая эра, на ТЧ с OGSR движком. Такой вопрос, переносить нужно как написано в этой теме? https://www.amk-team.ru/forum/topic/13552-podklyuchenie-ranee-perenesennyh-lokaciy-v-sdk/

Всем привет. Может, кто подскажет/покажет пример работы с callback'ом "on_before_use_item"? Может, у кого завалялось.

@nik1967 Там все стандартно, так же как со всеми другими колбеками добавленными в правленных движках.

net_destroy

self.object:set_callback(callback.on_before_use_item, nil)

reinit

	self.object:set_callback(callback.on_before_use_item, self.Before_use_item, self)

сама обработка колбека

function actor_binder:Before_use_item(item)
	--- Перед использованием СЪЕДАЕМЫХ итемов.
	--- Сюда пишем свой код
end

На древнем-оригинальном движке ТЧ 1.0004 и прочих изделиях, основанных на нем, все это разумеется НЕ работает. Работает на современных движках вроде OGSR.

  • Спасибо 1

Если кто-нибудь может подсказать, как называется текстура колючей проволоки? Например та, что на Кордоне окружает яму за бункером Сидоровича. Или которую по краям локаций можно увидеть.

народ, кто может сказать в чём трабла может заключаться

 

поставил мод на обход аномалий ботами (адаптацию под 6 патч) в итоге ловлю вылет

Скрытый текст

[03/07/23 14:02:24]    FATAL ERROR
[03/07/23 14:02:24]     
[03/07/23 14:02:24]    [error]Expression    : fatal error
[03/07/23 14:02:24]    [error]Function      : CScriptEngine::lua_error
[03/07/23 14:02:24]    [error]File          : script_engine.cpp
[03/07/23 14:02:24]    [error]Line          : 73
[03/07/23 14:02:24]    [error]Description   : <no expression>
[03/07/23 14:02:24]    [error]Arguments     : LUA error: ...s.t.a.l.k.e.r\gamedata\scripts\anomaly_holder.script:124: bad argument #1 to 'pairs' (table expected, got nil)
[03/07/23 14:02:24]     
[03/07/23 14:02:24]    
[03/07/23 14:02:24]    stack trace:

Скрытый текст

for id,o in pairs(anom_list) do

Скрытый текст

local anom_list=nil
local cur_level=nil

local radius={
    zone_buzz=1,
    zone_buzz_weak=1,
    zone_buzz_average=1,
    zone_buzz_strong=2,
    zone_gravi_zone=7,
    zone_gravi_zone_weak=6,
    zone_gravi_zone_weak_noart=6,
    zone_gravi_zone_average=6,
    zone_gravi_zone_strong=6,
    zone_gravi_zone_killing=7,
    zone_mincer=7,
    zone_mincer_weak=7,
    zone_mincer_weak_noart=7,
    zone_mincer_average=7,
    zone_mincer_strong=7,
    zone_mosquito_bald=7,
    zone_mosquito_bald_weak=6,
    zone_mosquito_bald_weak_noart=7,
    zone_mosquito_bald_average=7,
    zone_mosquito_bald_strong=7,
    zone_mosquito_bald_strong_noart=7,
    zone_sarcofag=5,
    zone_witches_galantine=6,
    zone_witches_galantine_weak=6,
    zone_witches_galantine_average=6,
    zone_witches_galantine_strong=7,
    zone_zharka_static=5,
    zone_zharka_static_weak=5,
    zone_zharka_static_average=5,
    zone_zharka_static_strong=5,
    zone_mine_field=0,
    zone_death=2
  }

function get_radius_for_section(sect)
  if radius[sect] then
    return radius[sect]
  else
    mylog("cannot find radius for " .. sect)
    return 4
  end
end

function add_anomaly(id,cls,sect,rad)
  if anom_list==nil then
    anom_list={}
  end
  if cur_level~=level.name() then
    anom_list={}
    cur_level=level.name()
--    mylog("switching to level " .. tostring(cur_level) )
  end
--  mylog("adding " .. id .. " clsid " .. cls .. " " .. sect )
  anom_list[id]={pos=0,clsid=cls,radius=rad or get_radius_for_section(sect),section=sect}
end

function remove_anomaly(id)
  if anom_list then
    anom_list[id]=nil
  end
end


function enumerate_anoms()
  if cur_level~=level.name() then
    anom_list=nil
    cur_level=level.name()
  end
  if not anom_list then
    anom_list={}
    local cnt=0
--    mylog(clsid.zone_bfuzz_s .. " " .. 
--          clsid.zone_galant_s .. " " ..
--          clsid.zone_mbald_s .. " " ..
--          clsid.zone_mincer_s)
    for id=1,40000,1 do
      local obj=level.object_by_id(id)
      if obj then
        if obj:clsid()==clsid.zone_bfuzz_s or
            obj:clsid()==clsid.zone_galant_s or
            obj:clsid()==clsid.zone_mbald_s or
            obj:clsid()==clsid.zone_mincer_s then
          anom_list[id]={object=obj,pos=obj:position(),clsid=obj:clsid()}
          local pos=anom_list[id].pos
--          mylog("found " .. id .. " " .. obj:clsid() .. " at " .. pos.x .. ";" .. pos.y .. ";" .. pos.z )
          cnt=cnt+1
        else
--        mylog(obj:clsid())
        end
      end
    end
--    mylog("total " .. cnt)
    if cnt==0 then
      anom_list=nil
    end
  end
end

function get_nearest_anomaly(npc,dirp)
  local posn=npc:position()
  local dir
  local anomid=nil
  local mindist=10000000
  local pos1=nil
  local cls=0
  local cnt=0
  local anomdesc={}
  if dirp then
    dir=dirp
  else
    dir=npc:direction()
  end
  for id,o in pairs(anom_list) do
    if o then
      if o.pos==0 then
        local obj=level.object_by_id(id)
        if obj then
          o.pos=obj:position()
--          mylog("reposition " .. id .. " clsid " .. obj:clsid() ..  " at " .. o.pos.x .. ";" .. o.pos.y .. ";" .. o.pos.z )
        end
      end
      if o.pos~=0 then
        cnt=cnt+1
        local delta=vector():set(o.pos):sub(posn)
        local scalarmul=(delta.x*dir.x+delta.z*dir.z)/math.sqrt(delta.x*delta.x+delta.z*delta.z) 
    -- если скалярное произведения текущего направления движения NPC
    -- и относительного радиус вектора аномалии меньше 0, то NPC удаляется от аномалии
        if scalarmul>-0.4 then
          local dist=posn:distance_to(o.pos)-o.radius
--    if id>20000 then
--      mylog("get nearest " .. npc:name() .. " dist " .. dist)
--    end
          if dist<mindist then
            mindist=dist
            anomid=id
            pos1=o.pos
            cls=o.clsid
            anomdesc=o
          end
        end
      end
    end
  end
--  if anomid then
--    mylog("get nearest " .. anomid .. " dist " .. mindist)
--  end
  if anomid then
    return true,anomid,pos1,cls,mindist+anomdesc.radius,anomdesc.radius,anomdesc.section
  else
    return false
  end
end

Вылет происходил при подходе к базе, где кроме костров (вокруг которых сидят сталкеры), больше ничего нет

Каким образом происходит спавн артефактов в начале игры?
artefact_spawn_idle    = 24  ;насколько часто спонить артефакты в офлайне, в часах
artefact_spawn_rnd    = 100  ;вероятность заспавнить артефакт в процентах.
min_artefact_count    = 0
max_artefact_count    = 1

В моём понимании если в artefact_spawn_rnd значении 100, то спавн должен быть 100%

min_artefact_count    = 0 - сколько аномалия может заспавнить артов минимально
max_artefact_count    = 1 - максимально естественно

Но почему при min_artefact_count = 0 и artefact_spawn_rnd    = 100 спавна артефактов в любом случае не будет?

А если:
min_artefact_count    = 1
max_artefact_count    = 1
artefact_spawn_rnd    = 0 


То артефакт будет в каждой аномалии.

Как это работает?

@DarkSnowder , при считывании из табл. anom_list получаем недопустимый первый аргумент.

На первый-первый погляд ( ! ) что-то странное здесь:

function enumerate_anoms()
...
--* по идее же, перебираем в цикле игровые id, а что есть 40000 при этом? id же мах = 65535 ?
    for id=1,40000,1 do
...
end

 

 

Всем привет. Господа, подскажите в ТЧ/ЧН/ЗП верна ли формула расчета кратности прицела? 60/ число Х = кратность. Если не верный, то какой верхний предел (самое маленькое приближение) для оптики?

И еще такой вопрос. Работает ли в Тенях функции на прицелах (если их туда прописать) scope_dynamic_zoom = on, scope_nightvision = scope_nightvision и scope_alive_detector = scope_detector

@bsanek628 

 

Всё зависит от твоего угла обзора и худ интерфейса)

Лично у себя в игре всегда ставлю зоом фактор 73.3 у всего оружия(без оптики конечно)

Это значит нет ни приближения ни отдаления во время прицеливания.

И это при угле обзора в 55, и при худе 0.45

И если для снайперки выставить 73.3, то тоже не будет ни какого приближения и отдаления)

Угол обзора в 55 считаю идеальным. Если больше, то происходит искажение. Как камера рыбий глаз))) Как играют при 75, фиг его знает)))

 

И конечно же в ТЧ в чистой игре не будет то работать.

@bsanek628 fov (конфиг) * кратность = 120.

Видимое приближение меньше на 20% (4x – 3,33x).

Изменено пользователем Norman Eisenherz
  • Полезно 1

Понял, спасибо.

 

И еще такой вопрос. В дефолтных Тенях дамаг оружия с надетым глушителем завязан на silencer_hit_power? Или, как в случае без глушителя  также на hit_power?

@bsanek628 

Странный вопрос)

silencer_hit_power конечно.

Скрытый текст

Значит странный не вопрос, а ответ)))

 

Изменено пользователем alex5773

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...