Skip to content

Mod adaptation ru RU

PRXPHET edited this page May 27, 2025 · 1 revision

Здесь описаны основные проблемы, с которыми можно столкнуться при адаптациях модов, а также правки, которые нужно внести для работы различных элементов.

Скрипты

  • Надо заменить в скриптах:
_g -> _G -- Такой гениальный способ обращения к глобальному пространству встречается, например, в некоторых скриптах АМК. Не исключено, что и где-то ещё. Так вообще нельзя делать, т.к. при обращении к _g, _g.script загружался ещё раз, что не известно к чему могло привести. Мы эти грабли убрали, т.к. глобальное пространство должно инититься движком только один раз после старта Lua. При попытке обращения к _g будет вылет.
4294967296 -> 4294967295 -- u32(-1) -- невалидные vertex_id/story_id, возможно что-то ещё. Почему там раньше было 4294967296 - понятия не имею, но в куче скриптов было именно так.
255 -- NO_ACTIVE_SLOT для :activate_slot(...) и прочих методов, принимающих номер слота. Раньше эти методы принимали u32 (соотв. 4294967295), теперь - u8. И ещё, -1 туда передавать тоже не надо. Надо именно 255.
  • Иногда в скриптах clsid напрямую сравнивают с числами. Здесь такое работать не будет.

Вот простой пример кода, который будет работать некорректно:

function get_anoms(npc, radius) 
 local anoms = {} 
 local pos = npc:position() 
 for i= 1, 65534 do 
  local obj = level.object_by_id(i) 
  if obj ~= nil and obj:clsid() >= 168 and obj:clsid() <= 181 then 
   local dist = pos:distance_to(obj:position()) 
   if dist < radius then 
    table.insert(anoms, obj) 
   end 
  end 
 end 
 return anoms 
end

А вот это корректный код:

function get_anoms(npc, radius) 
 local anomaly_classes = {
  [clsid.zone_acid_fog] = true,
  [clsid.zone_bfuzz] = true,
  [clsid.zone_bfuzz_s] = true,
  [clsid.zone_dead] = true,
  [clsid.zone_galant_s] = true,
  [clsid.zone_galantine] = true,
  [clsid.zone_mbald_s] = true,
  [clsid.zone_mincer] = true,
  [clsid.zone_mincer_s] = true,
  [clsid.zone_mosquito_bald] = true,
  [clsid.ameba_zone] = true,
  [clsid.zone_rusty_hair] = true,
  [clsid.torrid_zone] = true,
  [clsid.zone_radioactive] = true
 }

 local anoms = {} 
 local pos = npc:position() 
 for i= 1, 65534 do 
  local obj = level.object_by_id(i) 
  if obj and anomaly_classes[obj:clsid()] then 
   local dist = pos:distance_to(obj:position()) 
   if dist < radius then 
    table.insert(anoms, obj) 
   end 
  end 
 end 
 return anoms 
end

Аура контролёра

Добавить в конфиг контроллёра:

;------------------------------------------------------------------------
; Influences
;------------------------------------------------------------------------
psy_linear_factor        =    1.0 ;1.5
psy_quadratic_factor    =    0
psy_max_distance        =    25 ;33.0
psy_max_power            =    6.4
psy_sound                =    monsters\controller\controller_presence_l
psy_pp_effector_name    =     postprocess_psi_aura ;psy_antenna
psy_pp_highest_at        =     0.05

[postprocess_psi_aura]
pp_eff_name        = radiation.ppe
pp_eff_cyclic    = 1
pp_eff_overlap  = true
radius_min        = 0.5
radius_max        = 1.1

Химера не атакует, а просто прыгает

Попробуйте эти настройки:

jump_min_distance                = 0.5
jump_max_distance                = 15.0
jump_max_angle                    = 3.14
jump_max_height                    = 3.5 

Глючит/не едет транспорт

Транспорт со скриптовым управлением, который должен ехать по путям глючит/не едет.

Заменить в ph_car.script в двух местах:

local curVel = self.car:CurrentVel():magnitude()

на

local Vel = self.car:CurrentVel()
local curVel = math.sqrt(Vel.x * Vel.x + Vel.y * Vel.y)

Screen Space Shaders

Для включения реагирования травы на аномалии, добавьте настройки в конфиги аномалий. В качестве примера, оригинальные параметры из аддона:

;Холодец
bend_grass_blowout = true
bend_grass_blowout_speed = 3.0
bend_grass_blowout_radius = 3.0
;----------------------------------
;Воронка
bend_grass_idle_anim = 3
bend_grass_idle_radius = 4.0
bend_grass_idle_str = 2.0
bend_grass_idle_speed = 1.5

bend_grass_whenactive_str = 3.0
bend_grass_whenactive_speed = 3.0

bend_grass_blowout = true
bend_grass_blowout_duration = 2500
bend_grass_blowout_speed = 6.0
bend_grass_blowout_radius = 20.0
;----------------------------------
;Карусель
bend_grass_idle_anim = 2
bend_grass_idle_radius = 4.0
bend_grass_idle_speed = 1.3

bend_grass_whenactive_anim = 3
bend_grass_whenactive_str = 3.5
bend_grass_whenactive_speed = 4.5

bend_grass_blowout = true
bend_grass_blowout_duration = 5500
bend_grass_blowout_speed = 5.0
bend_grass_blowout_radius = 20.0
;----------------------------------
;Трамплин
bend_grass_idle_anim = 3
bend_grass_idle_radius = 4.0
bend_grass_idle_str = 2.0
bend_grass_idle_speed = 1.5

bend_grass_whenactive_str = 3.0
bend_grass_whenactive_speed = 3.0

bend_grass_blowout = true
bend_grass_blowout_duration = 2500
bend_grass_blowout_speed = 6.0
bend_grass_blowout_radius = 20.0
;----------------------------------
;Электра
bend_grass_blowout = true
bend_grass_blowout_speed = 4.0
bend_grass_blowout_radius = 5.0
;----------------------------------
;Жарка
bend_grass_idle_radius = 3.5

bend_grass_whenactive_anim = 4
bend_grass_whenactive_str = 2.0
bend_grass_whenactive_speed = 3.5

bend_grass_blowout = true
bend_grass_blowout_duration = 2500
bend_grass_blowout_speed = 3.0
bend_grass_blowout_radius = 5.0

Шейдерные ПНВ/Тепловизоры

Для настройки шейдерного ПНВ/тепловизора используйте следующие команды:

r_pnv_mode -- Режим работы (1 - шейдерный ПНВ, 2 - цветной тепловизор, 3 - чёрно-белый тепловизор)
r_pnv_noise -- Шум
r_pnv_position -- Позиция маски для создания эффекта надевания ПНВ/тепловизора на голову.
r_pnv_radius -- Радиус работы ПНВ. 
r_pnv_num_tubes -- Количество трубок ПНВ.
r_pnv_gain_current -- Яркость/сила ПНВ.
r_pnv_washout_thresh -- Порог для размывания источников света.
r_pnv_glitch -- Глитч-эффект.
r_pnv_size_vignet -- Размер виньетки.
r_pnv_alfa_vignete -- Прозрачность краёв виньетки.

Прочее

  • Убрать мультиплеерный код из скриптов меню, т.к. в этом движке нет мультиплеера.
  • Рекомендуется использовать скрипты меню, идущие в комплекте с движком, т.к в них поправлены утечки памяти, убраны тормоза, добавлены опции для новых настроек графики и не только.
  • Если используются функции/каллбеки и т. п. из X-Ray Extensions, их придётся адаптировать/заменять на аналоги из этого движка. Очень много примеров такой адаптации можно найти здесь и здесь.
  • Начиная с версии 2.1.414 мы рекомендуем использовать ЗП-погоду, например эту или любую другую. ТЧ-погода работать будет, но корректное её отображение на новых шейдерах не гарантируется.
Clone this wiki locally