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

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


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

function gravity()
local defv=19.620 --/ чем меньше значение, тем меньше и гравитация.
level.physics_world():set_gravity(defv)
end

Не уверен, правда, что корректно работает на ТЧ, однако стоит попробовать.

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

 

 

Не уверен, правда, что корректно работает на ТЧ

Кажется в справочнике упоминалось, что эта функция есть только в ЗП :)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Кто-нибудь знает, как переместить уже существующего (ранее заспавненного) нпс на другие координаты?

В справочнике написано, что функция set_npc_position добавлена только в ЗП, а мне надо для ТЧ

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

 

 

нпс на другие координаты?
Многого уже не помню, первое, что пришло в голову :)

1. Задать в логике ему путешествие на новую позицию.

2. Удалить и заспавнить на новой позиции.

userbar368.png

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

Музафир,
npc:set_dest_level_vertex_id( vid ), и таки да, в первом посте:

"Перед тем как задать вопрос прочтите следующую информацию:
Если Вы:
Воспользовались поиском на форуме;
Изучили материалы по ссылками ниже;
Ознакомились со "всякими полезными советами по правке игры версия 6", собранными для Вас n6260 (архив 200 Кб: sendspace, ifolder);

Но так и не нашли ответ на свой вопрос, который хотите задать, задайте его здесь."

вот здесь http://www.amk-team.ru/forum/index.php?showtopic=7450 - это есть.

Установить координаты для живого непися - просто не имеет смысла.

 

И, да, все это бесполезно в отрыве от конкретного случая, поскольку чуть-ли не половина скриптов вычисляет и устанавливает для неписей новые вертексы в тех или иных ситуациях.

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

@Музафир, тебе правильно ответили. Можно через смарт-террейн по выдаче поршня поменять местоположение НПС, правда, он может не дойти, если в онлайне его кто-нибудь скушает...

 

Пример - смарты на базе Свободы на АС. При выдаче поршня aes_arrive_to все свободовцы срываются в сторону Припяти, бывает, гибнут на подходах к Радару или на самом Радаре, бывает, до Припяти доходят...

 

Ну или спавнить дубля с аналогичным профилем. Пример - Круглов на Янтаре.

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

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

Доброго времени суток! Вопрос будет нубский, поэтому заранее прошу прощения. Поиском пользовался, но то ли не могу вопрос внятно сформулировать, то ли хочу того, чего нет.

 

Где прописываются предметы/оружие и визуал для обычного НПС?

Я так понимаю, что в чарактер_деск_* файлах прописываются визуалы уникальных или жёстко заданных ребят, так где же ковырять, что изменить внешку и прижизненный набор вещей для обычного неуникального/неквестового НПС?

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

"чарактер_деск_* файлах прописываются визуалы уникальных или жёстко заданных ребят," -

всех. Вообще всех.

 

Также может быть задано в allspawn, но для этого надо, чтобы он непись в нем вообще был. ;)

http://www.amk-team.ru/forum/index.php?showtopic=5734

http://www.amk-team.ru/forum/index.php?showtopic=6356

 

P.S. Мда, ну ведь оффтопик же получается. Самый настоящий оофтопик. В одном и том же разделе темы. 8(

 

Ну и ораторам выше - то же самые ссылки.

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

Подскажите, пожалуйста, как сделать так, чтобы задание давал один НПС, а награду я получал у другого?

Например: задание " убить сталкера" от Сидора. Можно ли сделать так, чтобы награду давал, допустим Бармен?

 

@Dennis_Chikin,

Благодарю. Но у меня такая проблема: защитил Барьер от Монолита, но Кэп умер. Можно ли сделать так, чтобы последний пункт( поговорить с командиром Барьера) посылал меня допустим к Лукашу?

 

То есть, проблема - в проваленном задании ? Тогда 2 варианта: выковыривать остатки диалога кэпа, и прописывать Лукашу как самостоятельный диалог, либо смотреть, что делается в этом самом остатке, и куда-то воткнуть принудительное выполнение этих остатков - в смысле, без всяких разговоров. dc

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

2 разных квеста. Условием начала второго является завершение первого. Подробности должны быть в разделе диалогов.

Ссылка на комментарий
но Кэп умер. Можно ли сделать так, чтобы последний пункт( поговорить с командиром Барьера) посылал меня допустим к Лукашу?

Насколько мне известно, уже проинициализированное задание(проще говоря - уже выданное) изменить нельзя.

Но можно проявить фантазию, допустим так: использовать для завершающего

подзадания(последнего пункта) <function_fail>, в котором проверив, что этот самый Кэп помер, выдать ГГ сообщение, типа "Это Лукаш, зайди ко мне - поговорить надо", и выдать какую-то инфо-порцию. Ну и

соответственно Лукашу прописать в диалоги ветку, разблокирующуюся по наличию этой выданной и-п, с соболезнованиями по поводу смерти Кэпа и выдачей полагающейся награды. И далее фантазируем - если не охота портить статистику игрока проваленным квестом, можно использовать <function_complete> и завершать квест успехом, но в ф-ции выдавать сообщение с намеком у кого получить вознаграждение.

 

 

Вообще - можно, но ну его нафиг, такое извращение. Как-то думал, чтобы проваленные задания в истории не хранились, потом плюнул. Можно еще просто тупо поршни поснимать совсем. Но тоже извращение. dc

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

подскажите пожалуйста какие строки в конфигах оружия отвечают за приселивание через мушку?

За положение оружия в режиме прицеливания отвечают эти строчки: 
 
zoom_offset = OX,OY,OZ 
zoom_rotate_x = RX 
zoom_rotate_y = RY

Всем привет ребята. Может кто-то знает как реализовать смену моделей после какого-то действия через скрипт в сталкер тч  ? Примерно как в моде :"Худ ТЧ: Смена рук при смене костюма " , только нужно чтобы руки не прятались когда меняешь костюм/модель. Заранее благодарю.

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

Всем привет ребята. Может кто-то знает как реализовать смену моделей после какого-то действия через скрипт в сталкер тч ? Примерно как в моде :"Худ ТЧ: Смена рук при смене костюма " , только нужно чтобы руки не прятались когда меняешь костюм/модель. Заранее благодарю.

Не понимаю для чего это нужно, но единственный вариант, это попробовать заменить анимацию draw на idle, так как смена оружия сопровождается анимацией draw( доставание).

 

если использовать этот метод то модель будет меняться плавно (как мне надо ) , но вот доставаться оружие будет неправильно - сразу появляться :(

Так а что ты хочешь конкретно? Изменено пользователем Dennis_Chikin
поправил цитату
Ссылка на комментарий

А может еще кто-то знает как заскриптить смену модели не таким способом как в моде "Худ ТЧ: Смена рук при смене костюма " где меняються все модели оружия , а мне надо только выборочно один предмет. Скрипт Кирака плохо понял.

 

local exowpnid
local restore_slot
local suit_last_sect
local g_change
local re_sect
local wdat = {}
local upd = 0


local suit_table = {
no_outfit = "noou_",
novice_outfit = "ntrl_",
stalker_outfit = "ntrl_",
scientific_outfit = "dolm_",
exo_outfit = "ntre_",
bandit_outfit = "bndl_",
killer_outfit = "dolm_",
monolit_outfit = "ntrl_",
military_outfit = "dolm_",
specops_outfit = "milm_",
svoboda_light_outfit = "milm_",
svoboda_heavy_outfit = "milm_",
dolg_outfit = "bndl_",
dolg_scientific_outfit = "dolm_",
ecolog_outfit = "ecol_",
protection_outfit = "ecoh_",
outfit_novice_m1 = "ntrl_",
outfit_stalker_m1 = "ntrl_",
outfit_stalker_m2 = "ntrl_",
outfit_exo_m1 = "ntre_",
outfit_bandit_m1 = "bndl_",
outfit_killer_m1 = "dolm_",
outfit_specnaz_m1 = "milm_",
outfit_svoboda_m1 = "milm_",
outfit_dolg_m1 = "bndl_",
mp_exo_outfit = "ntre_"
}
--[[Состав:
noou=Нет костюма, свитер
ntrl=Оригинал, Новичок
ntrm=Оригинал, Нейтрал
ntrs=Чёрный кисть закрыты, Сева Нейтрал учёный
ntre=Экзо
bndl=Чёрный кисть открыта, Бандит
kilm=Чёрный кисть закрыты, Наёмники
monm=Оригинал, Монолит
milm=Зелёный защитный, Военный
milh=Зелёный защитный, Спецназ
svom=Зелёный защитный, Свобода Лёгкий
svoh=Зелёный защитный, Свобода Тяжёлый
dolm=Чёрный кисть закрыты, Долг
dols=Чёрный кисть закрыты, Долг учёный
ecol=Жёлтый кисть закрыты, учёный
ecoh=Зелёный кисти закрыты, укреплённый учёный
Оригинал+ЖКЗ+ЗКЗ+экзо+ЧКЗ+ЧКО+ЗЗ+НК]]


function change_pattern(str,pat1,pat2)
-- замена в строке str n-го фрагмента pat1 на фрагмент pat2
if not pat2 then pat2 = "" end -- если pat2 не задано, фрагмент pat1 просто вырезается
local i,o = string.find(str,pat1)
if not i then return str end
local str_i = string.sub(str,1,i-1)
local str_o = string.sub(str,o+1,-1)
return str_i..pat2..str_o
end


function insert_pattern(str,pat,pos)
if not pat or not pos then return str end
-- if pos < 0 then pos = pos + string.len(str) + 1 end
local str_i = string.sub(str,1,pos-1)
local str_o = string.sub(str,pos,-1)
return str_i..pat..str_o
end


function update()
if exowpnid ~= nil then -- если условие выполняется, значит на прошлом апдейте меняли оружие, надо его подобрать и выйти
upd = upd + 1
local weapon = level.object_by_id(exowpnid)
if weapon then
db.actor:transfer_item(weapon,db.actor)
exowpnid = nil
upd = 0
wdat = {}
re_sect = nil
else
if upd > 100 then
get_console():execute ("load exo_weapons.script line 66: re-spawning") 
get_console():execute ("flush") 
alife():release(alife():object(exowpnid),true)
local pos = device().cam_pos
pos.x = pos.x + 0.5
local sobj = alife():create(re_sect, pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
if sobj then
exowpnid = sobj.id
weap_data.set_weapon_data(wdat,sobj)
re_sect = ch_sect
upd = 0
end
end
end
return
end


if restore_slot then
db.actor:activate_slot(restore_slot)
restore_slot = nil
end


local suit = db.actor:item_in_slot(6)
local active_sect, suit_sect
local act_slot = db.actor:active_slot()
local active = db.actor:item_in_slot(act_slot)
-- костюм
if suit then
suit_sect = suit:section()
else
suit_sect = "no_outfit"
end
-- [[
if not suit_last_sect then
suit_last_sect = suit_sect
end
if suit_last_sect ~= suit_sect then -- костюм изменился
if act_slot == 3 then -- если активны гранаты
db.actor:activate_slot(1)
g_change = true
return
else
change_grens(suit_sect) -- спокойно меняем
if g_change then
db.actor:activate_slot(3)
g_change = nil
end
end
end
suit_last_sect = suit_sect


-- оружие
local pref_len = 0 -- болт
if active then
active_sect = active:section()
if string.sub(active_sect,1,8) == "grenade_" then -- гранаты
pref_len = 8
elseif string.sub(active_sect,1,4) == "wpn_" then -- все остальное
pref_len = 4
end
else
return -- Если нет предмета в активном слоте, то и менять нечего, выход
end
local mod_section, mod_pattern
if string.len(active_sect) < (pref_len + 6) or not system_ini():section_exist(string.sub(active_sect,1,pref_len)..string.sub(active_sect,(pref_len + 6),-1)) then
mod_section = false -- немодифицированный вариант
mod_pattern = ""
else
mod_section = true -- модифицированный вариант
mod_pattern = string.sub(active_sect,(pref_len + 1),(pref_len + 5))
end
local ch_sect, ch_pattern
ch_pattern = suit_table[suit_sect] or "ntrl_"
if mod_pattern == ch_pattern then
return -- модификация оружия соответствует костюму
end
if mod_section then -- оружие - модифицированный вариант
ch_sect = change_pattern(active_sect,mod_pattern,ch_pattern)
else 
ch_sect = insert_pattern(active_sect,ch_pattern,(pref_len + 1))
end
if not system_ini():section_exist(ch_sect) then -- если заменять надо бы, но не на что, то выходим
return
end


-- если надо менять и есть на что - меняем
if act_slot == 1 or act_slot == 2 then -- пистолет или автомат
local wobj = alife():object(active:id())
wdat = weap_data.get_weapon_data(wobj)
alife():release(wobj,true)
local pos = device().cam_pos
pos.x = pos.x + 0.5
local sobj = alife():create(ch_sect, pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
if sobj then
exowpnid = sobj.id
weap_data.set_weapon_data(wdat,sobj)
re_sect = ch_sect
end
restore_slot = act_slot
elseif act_slot == 3 then -- гранаты
-- ничего не делаем, гранаты меняются в другом месте
elseif act_slot == 5 then -- болт. у этой сволочи нет серверного объекта, просто выбрасываем
db.actor:drop_item(active)
alife():create(ch_sect, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
restore_slot = 5
else -- бинокль, нож
local wobj = alife():object(active:id())
alife():release(wobj,true)
alife():create(ch_sect, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
restore_slot = act_slot
end
end


function change_grens_on_take(item)
local suit = db.actor:item_in_slot(6)
local suit_sect
if suit then
suit_sect = suit:section()
else
suit_sect = "novice_outfit"
end
local ch_pattern = suit_table[suit_sect] or "ntrl_"
if (db.actor:active_item() == nil or (db.actor:active_item() ~= nil and db.actor:active_item():id() ~= item:id())) then
local active_sect = item:section()
local mod_section, mod_pattern
if string.len(active_sect) < 14 or not system_ini():section_exist(string.sub(active_sect,1,8)..string.sub(active_sect,14,-1)) then
mod_section = false -- немодифицированный вариант
mod_pattern = ""
else
mod_section = true -- модифицированный вариант
mod_pattern = string.sub(active_sect,9,13)
end
if mod_pattern ~= ch_pattern then
local ch_sect
if mod_section then -- оружие - модифицированный вариант
ch_sect = change_pattern(active_sect,mod_pattern,ch_pattern)
else 
ch_sect = insert_pattern(active_sect,ch_pattern,9)
end
if system_ini():section_exist(ch_sect) then -- если заменять надо, и есть на что, то меняем
local wobj = alife():object(item:id())
alife():release(wobj,true)
alife():create(ch_sect, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
end
end
end


function change_grens()
db.actor:iterate_inventory(
function(dummy, item)
if string.sub(item:section(),1,8) == "grenade_" then
local wobj = alife():object(item:id())
alife():release(wobj,true)
alife():create(item:section(), db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
end
,db.actor)
end

 

 

 .  

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

Из-за чего может быть вызван такая проблема, когда на Свалке, после убийства 3 бандитов у перехода на Кордон, Юрик игнорирует разговоры и идет в сторону лагеря бандитов у бетонных плит? P.S. Установлен blowout mod v1.0.

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

 

 

Юрик игнорирует разговоры и идет в сторону лагеря бандитов у бетонных плит

Накосячено в логике и диалогах Юрика. Однозначно....

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

Накосячено в логике и диалогах Юрика. Однозначно....

А могло это зависеть от ковыряния all.spawn? А то изменял одну секцию оружия и количество жизни у НПС.

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

Народ, что-то не могу найти гулаг Борова в Темной. Все файлы перерыл, где логика Борова. В алспавне только val_lager_bandits. Но этот смарт так и не нашел. Поиск по файлам выдает только, что такая строка есть в task_manager, и все. Но это явно не то.

val_bandit_borov

с этим то понятно, а где продолжение этого скрипта, то которое в папке misc должно быть. Сама логика. Вот её я что-то никак не найду. И в папке scripts её тоже нет. Но ведь так не может быть.

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

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

 

Народ, что-то не могу найти гулаг Борова в Темной. Все файлы перерыл, где логика Борова. В алспавне только val_lager_bandits. Но этот смарт так и не нашел. Поиск по файлам выдает только, что такая строка есть в task_manager, и все. Но это явно не то.

Попробуй посмотреть в gulag_dark_valley.script, я искал по строчке val_bandit_borov. Есть результаты.

 

@Хемуль36рус, Нашел в вот эти строки:

[2376]

; cse_abstract properties

section_name = smart_terrain

name = val_lager_bandits

position = 45.7057571411133,4.54276275634766,-45.8101577758789

direction = 0,0,0

version = 118

script_version = 6

 

; cse_alife_object properties

game_vertex_id = 1070

distance = 5.59999990463257

level_vertex_id = 231916

object_flags = 0xffffff3e

custom_data = <[smart_terrain]

type = val_lager_bandits

capacity = 27

squad = 6

groups = 2, 15, 16

communities = bandit

respawn = val_respawn_inventory_box_0001

END

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 1.54359972476959,0,0

shape0:axis_y = 0,2.38599967956543,0

shape0:axis_z = 0,0,1.54359972476959

shape0:offset = 0,0,0

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

; se_smart_terrain properties

Вот этот smart terrain тебе нужен?

Изменено пользователем Dennis_Chikin
  • Нравится 1
  • Согласен 2
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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