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

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


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

Помогите пожалуйста. Прошерстил форум, но так и не нашел ответа. Имеется мод на ТЧ, в нем вместо перекрестия прицела - кружок. В файле system.ltx прописаны стандартные значения. Как можно изменить кружок на перекрестие ???

Ссылка на комментарий

@marenitsch, похожий вопрос тут: http://www.amk-team.ru/forum/topic/5525-soc-kovyriaemsia-v-fajlakh/?p=558758

 

Перекрестие прицела в S.T.A.L.K.E.R. не является текстурой. Оно рисуется скриптом, поэтому лучше искать именно скрипт. Название скрипта не знаю, но знаю, как уменьшить/увеличить перекрестие прицела. Этот параметр находится в файле system.ltx, что в папке config(s):

[hud_cursor]
;все размеры в процентах от длины экрана
cross_length    = 0.015            ;длина "палочки" прицела
min_radius      = 0.0              ;минимальный радиус прицела (при нулевой дисперсии)
max_radius      = 1.0              ;максимальный радиус
radius_lerp_speed = 0.08           ;скорость интерполяции положений прицела
cross_color     = 0.7,0.7,0.7,0.5  ;цвет прицела
disp_scale      = 0.08             ;масштаб прицела (относительно радиан)

 

Попробуй скопировать скрипт с биноклем и заменить вместо оружейного.Редактни параметры.И обязательно сохрани где-нибуть оружейный .

 

А вообще да, правка движка. Cut X-Ray или X-Ray Extensions

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Ссылка на комментарий

Какие параметры отвечают за инерцию худа? Точнее за скорость реакции и углы поворота худ-модели за поворотом камеры. Нужны переменные и значения, которые можно подкрутить или просто считать.


откопал ответ на свой вопрос:

Константы вшиты в движке в HudItem.cpp

 

 

static const float PITCH_OFFSET_R = 0.017f;
static const float PITCH_OFFSET_N = 0.012f;
static const float PITCH_OFFSET_D = 0.02f;
static const float ORIGIN_OFFSET = -0.05f;
static const float TENDTO_SPEED = 5.f;

 

 

В X-Ray Extensions есть функции задания силы и скорости инерции худа. Нету чтения текущих значений. =(

 

 

функции:

set_hud_inertia(float<speed>)

set_hud_inertia_param2(float<shift>)

 

 

Но есть константы в асм-файлах XRE:

 

 

g_hud_inertia_factor dd 5.0 ; TENDTO_SPEED
g_hud_inertia_param_2 dd 0.050000001 ; CHWON_CALL_UP_SHIFT

 

 

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

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

Можно ли скриптово отследить (и запретить игроку) вешать на пояс артефакты с суммарной защитой от какого-то одного вида хита больше, скажем, 90 %? Например, от электрошока? Если можно, то как?

Сталкер - наше всё!

Ссылка на комментарий

@AndrewMor, надо ловить объекты, которые попали на пояс. На чистом тч, я без понятия как. Но если ковыряешь какой то мод, проверь в bind_stalker есть ли коллбеки item_to_belt и item_to_ruck, с их помощью можно отловить объекты, которые были помещены в сумку или на пояс. Если они есть, то и методы перемещения итема с пояса в сумку и с сумки на пояс тоже могут быть и их можно использовать. Короче отпишись если они есть.

 

 

Такой вопрос: по каким смещениям можно получить направление худа относительно камеры? В каком объекте искать хотя бы? А то чувствую что буду писать "скриптовой велосипед" который может и не нужен...

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

@AndrewMor, хошь запретить починку костюмов? :)

Повторю: как поставить уникальный номер секции, когда что-то спавнишь? Т.е. как понять что этот номер больше не встречается в спавне? @Fagot., 12345? А если мне надо ещё номеров? Идти дальше до 65к?

Ссылка на комментарий

 

 

Но если ковыряешь какой то мод, проверь в bind_stalker есть ли коллбеки item_to_belt и item_to_ruck,

Нету таких, коллбеки, как в чистом ТЧ.


 

 

хошь запретить починку костюмов?

Именно, ибо чит несусветный.


 

 

Повторю: как поставить уникальный номер секции, когда что-то спавнишь? Т.е. как понять что этот номер больше не встречается в спавне?

Чего мучаться, в нужном alife_локация.ltx просто дописываешь секцию с номером, большим на еддиницу, чем номер последней секции в файле. Даже если номера в разных файлах alife будут дублироваться, ACDC сам их перенумерует потом.

  • Спасибо 1

Сталкер - наше всё!

Ссылка на комментарий

@AndrewMor, глянь скрипт "Гранаты на поясе" от Charsi, у него в профиле ссылка есть. Если я не ошибаюсь, то он написан для чистого тч и возможно там есть намёки как ловить предметы, попадающие на пояс.

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

Помниться, в ОП-2 была система удалению глючных обьектов(пушек,артефактов).

Не совсем понятно, по каким параметрам определялась "глючность".

Кто может просвятить? 

Изменено пользователем CRAZY_STALKER666
  • Спасибо 1

Не соответствует правилам.

Ссылка на комментарий

Спасибо, ребята! Скажите, ещё, можно ли вынести логику из спавна в скрипт, чтоб не паковать его по каждому чиху? Видел где-то пример, но мой

[spawner]
cond = {+start_mod_info}
custom_data = scripts\mod\ivan_logic.ltx
END

не работает, хотя если логику перенести в спавн, то всё ок. Файл лежит верно, в \gamedata\config\scripts\mod\ivan_logic.ltx.

Изменено пользователем dPlayer
Ссылка на комментарий
по каким параметрам определялась "глючность".

1. По глючным объектам обычно бывает вылет.

При вылетах по invalid vertex, отсутствующих путях, при ругани restrictor на отсутствие объекта

 

...ну да...и сами вылеты можно без проблем найти на этом форуме.

2. Эта система была не в ОП-2, а в Солянке...не надо путать божий дар с яичницей.

Изменено пользователем _Val_
Ссылка на комментарий

[spawner]

cond = {+start_mod_info}

custom_data = scripts\mod\ivan_logic.ltx

END

 

Попробуй так:

 

custom_data = <<END

[spawner]

cond = {+start_mod_info}

[logic]

cfg = scripts\mod\ivan_logic.ltx

END

 

Только учти, что секции [smart_terrain] и [known_info] из файла логики не читаются.

Изменено пользователем AndrewMor
  • Спасибо 2

Сталкер - наше всё!

Ссылка на комментарий

@dPlayer,

 

[spawner] cond = {+start_mod_info} custom_data = scripts\mod\ivan_logic.ltx

Немного не так.

 

[logic]
cfg = scripts\mod\ivan_logic.ltx

 

Оставь только это, секцию [spawner] занеси прямо в ltx. Должно работать

  • Спасибо 1

Не соответствует правилам.

Ссылка на комментарий

можно ли вынести логику из спавна в скрипт,

Я разрешаю. Но вообще-то без доработок из файла логики читается только логика.

Чтобы читались, например, сякосмарты - надо уже делать так:

 

function read_smart_terrain_conditions( obj )	-- непись или моб на входе !
	local ini = obj.ini
	local sect = ini:section_exist( "logic" ) and ini:line_exist( "logic", "cfg" )
		and ini:r_string( "logic", "cfg" )
	if sect then
		local ltx_ini = ini_file( sect )
		if ltx_ini and ltx_ini:section_exist( "smart_terrains" ) then
			ini, sect = ltx_ini, "smart_terrains"
		elseif ini:section_exist( smart_section ) then sect = smart_section
		else return
		end
	elseif ini:section_exist( smart_section ) then sect = smart_section
	else return
	end

	local n = ini:line_count( sect )
	if n == 0 then return end

	local t = {}
	local r, k, v
	for i = 0, n - 1 do
		r, k, v = ini:r_line( sect, i, "", "" )
		v = string_gsub( v, "{\-aes_arrive_to}", "true" )	-- todo: давно пора снести
		t[k] = xr_logic.parse_condlist( obj, sect, k, v )
	end
	return t
end

 

 

Причем, чтобы регистрировались эксклюзивные - надо уже при спавне сразу заносить в табличку smart_terrain.exclusives

 

Чтобы читались условия спавна - надо дорабатывать то место, где они читаюся из spawn_ini.

  • Спасибо 1
  • Согласен 1
Ссылка на комментарий

Нарвался на непонятную вещь, объясните, кто сможет.

Один и тот же по сути код работает на Затоне и не работает на локации "Пузырь".

 

Работающий код

   local sobj = alife():object("heli_seif")
   if sobj and has_alife_info("take_zver_message") then
     local obj = level.object_by_id(sobj.id)
     if obj then
       spawn_item_in_inv("access_card", obj)
       spawn_item_in_inv("journal", obj)
     end
   end

Неработающий код:

   local sobj = alife():object("puzir_inventory_box_02")
   if sobj and has_alife_info("kolobok_death") then
     local obj = level.object_by_id(sobj.id)
     if obj then
       spawn_item_in_inven("radiophone", obj)
       spawn_item_in_inven("zapiska_klyk2", obj)
       for ammo=1,25 do
         spawn_item_in_inven("ammo_9x19_pbp", obj)
       end
       level.map_add_object_spot_ser(sobj.id, "find_item_location", "Радиомаяк")
     end
   end

Сразу скажу, сторонние функции есть, инвентори_бокс тоже, имена и секции правильные. Во втором случае даже метка не ставится, то есть условие if obj then не выполняется. Собсно, почему?

Сталкер - наше всё!

Ссылка на комментарий

@Charsi, Вот как?

 

Если повесить вызов на кнопку, все прекрасно работает, а вызываю из биндера net_spawn(data) - СРАЗУ не работает, пришлось сделать небольшую задержку. Кто бы мог подумать...

Сталкер - наше всё!

Ссылка на комментарий

Ящик появляется в онлайне примерно через 50-2000мс после появления.

 

Я лично такие вещи делаю как-то так: https://dl.dropboxusercontent.com/u/27871782/mob_effects.script

 

Про функции биндсталкера читать в "прозекторской".

 

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

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий
@AndrewMor, мне кажется, что в твоем случае лучше делать спавн в серверный объект при получении проверяемого инфопоршня. Проверку можно сделать в info_callback биндера актера. Или просто поставить action в инфопоршне. Изменено пользователем naxac
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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