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

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


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

 НПС стрелял по другому НПС, или по предмету с заданным стори_айди?

Предмет можно представить как БТР?В старом сюжете кстати НПС палит по БТР.

И еще, если делать через логику врага, то включается боевка которая немного портит кат-сцену.

П.С я как то на стадии изучения логики забавлялся, изменил цель у БТР на блокпосте на Кордоне с actor на enemy.  Потом заставил нпс стрелять по нему(в качестве цели можно использовать не только ГГ и стори айди, но и работу в гулаге или просто имя).После попадания, БТР благополучно расстрелял непися.

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

Помогите пожалуйста. Почему-то вылетает игра когда я подбегаю к Блокпосту в Армейских Складах, где Наёмники живут так сказать. Вот лог:


Expression : fatal error

Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...l.k.e.r. - Тень Зоны\gamedata\scripts\xr_kamp.script:672: attempt to index field '?' (a nil value)

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

Воу воу ребят полегче :o
Я в скриптах не шарю почти, я просто спросил есть ли такая функция и как она выглядит...
По образу и подобию напиши свою функцию...

По образу и подобию напиши свою функцию...

 А так пойдет?

function set_actor_enemy_for (sid)
    local npc = level_object_by_sid (sid)
    local npc2 = level_object_by_sid (sid)
    if npc == nil or npc:alive () == false then
       return 
    end
    if npc2 == nil or npc2:alive () == false then
       return
    end
    npc:set_relation (game_object.enemy, npc2)
end

 

 


И во что ты играешь конкретно?

 

 


Arguments : LUA error: ...l.k.e.r. - Тень Зоны\


Этот мод я не нашел в инете разве что на ЗП делают, в ВК есть группа, но опять же она давно не обновлялась, залей файл со своей папки:
S.t.a.l.k.e.r. - Тень Зоны\gamedata\scripts\xr_kamp.script

На какой нибудь файлообменник...

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

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

Пытаюсь что-либо понять в sr_psy_antenna.script, но моих познаний в скриптинге не хватает.

Так вот, как заглушить все звуки (аля пси-антенна или контузия от взрыва)?

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

@Wo1fRam, в  sr_psy_antenna.script есть функция PsyAntenna:update_sound()

Которая как раз и заглушает все звуки.

А по вашей ситуации - используйте в рестрикторе схему sr_psy_antenna:

[sr_psy_antenna]
eff_intensity = 50
hit_intensity = 35
phantom_prob = 100
postprocess = psy_antenna.ppe
mute_sound_threshold = 15

Подставляете свой постпроцесс, ставите на ноль интенсивность излучения/спавн фантомов и самое интересное - параметр mute_sound_threshold, который и занижает все звуки. Поставите ноль - будет ГГ глухой.

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

volazar, То-то и оно, что такая схема мне не совсем подходит. Я пытаюсь сделать некоторое подобие аномалии "Глухарь" из книг, поэтому надо чтобы ГГ был глухим не в пределах рестриктора, а ещё некоторое время.

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

@Wo1fRam,  Так а что мешает переходить на другую схему при выходе из рестриктора? Повесить таймер на нужное время и вырубать.

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

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

volazar, Так если из рестриктора выйти, то сразу всё нормально будет. А мне надо, чтобы ГГ забежал в рестриктор, получил контузию и бегал потом глухой ещё минут 40. Тут разве подойдёт схема sr_psy_antenna?

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

@Wo1fRam, На входе в рестриктор проверяем что актор внутри рестриктора (on_actor_inside), затем переходим на схему.

На выходе проверяем что актор вышел из зоны (on_actor_outside), переходим на новую схему и запускаем таймер (on_timer), по истечении которого схему отрубаем. Помогут 2 поршня.

Яркий пример - двери бункера на Янтаре. Входим в рестриктор - дается поршень, дверь открывается. Выходим из рестриктора - поршень забирается, дверь закрывается.

Единственный минус - таймер сбросится при сейв/лоаде.

Возможно кто нибудь из знающих предложит другой вариант...

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

Всем привет. У меня несколько вопросов.

1.) Каким образом можно скриптово (например, через диалог) сменить визуал непися?

 

2.) Я слышал, в каком-то из модов осуществлена возможность стрельбы орудиями БТР... В каком это моде и как это сделано? Я предполагаю, нужно покопать скрипты логики ph_car и посмотреть, каким образом сделана простая стрельба БТР. А затем это дело как-то прибиндить :)

 

3.) Хотел сначала в моделирование написать... Дело такое - (да, знаю, бред, но это пока =), хотел пулемет сунуть на крышу не только БТР, пока тестировал на камазе... В будущем, сделаю, например, "Малыша", а там нужен пулемет... Так я попробовал. Три кости добавил, названия верные, иерархия тоже. В СДК настроил верно. В игре безлоговый вылет. О подобном читал на сталкерине:

 

Называть хелперы можно в процессе создания или после установки всех хелперов. Называть можно как Вам самим будет удобно и понятно, НО хелперы rootfront_axleback_axle не советую. Это именно те хелперы которые нельзя определить в конфига (*.ltx) и может случиться так что игра будет вылетать с нулевым логом.

 

Однако это моей проблемы не решает. Я никаких костей не трогал абсолютно, только создал три новых, соблюдая иерархию. Сначала прописал, как в инклуде БТРа:

[mounted_weapon_definition]
fire_bone       = mashine_gun_fire_point ; fire bone name
rotate_x_bone   = mashine_gun            ; rotate X-axis(pitch) bone name
rotate_y_bone   = mashine_gun_tower      ; rotate Y-axis(head)  bone name
min_gun_speed   = 0.5
max_gun_speed   = 2.5
wpn_section     = stationary_mgun

Безлоговый вылет... Убрал это - тоже самое. Что это и как с этим бороться? Дело, как я понимаю, не в модели, а в текстовой части, потому писал сюда.

 

4.) Можно ли заставить непися сесть в машину и управлять ей? Или хотя бы заставить его сесть в нее, и управлять машиной через логику?

 

Заранее всем спасибо.

-----

 

 

заглушить все остальные звуки

 

В ЛВ_ТоДе в начале игры эффект сильного головокружения , затемнения экрана и тяжелого дыхания ГГ. Кроме дыхания ГГ ничего не слышно. Посмотри, как это сделано там, и вместо эффекта головокружения и тяжелого дыхания вызови свой постэффект и звон в ушах. Как я думаю, эффект будет длиться не все то время, что ГГ находится в нужном тебе рестрикторе, а время самой анимки.

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

stalkerok007, Стрельба БТР была и в оригинале. Глянь тут. Точно так же можно реализовать и движение транспорта. Только насчёт "катания НПС на них" не знаю. Или речь идёт о ЗП?
За наводку спасибо, посмотрю. Но, кажись, там тоже не совсем то будет.

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

@Wo1fRam, да знаю я =), логику всю почти наизусть. Я имел ввиду, чтобы БТР не сам стрелял, а ГГ (игрок) стрелял, сидя в нем. То есть, чтобы я мог сесть в БТР, ездить и стрелять. Пока игрок стрелять не может, только БТР по логике. Про то, чтобы БТР ездил, и так ясно.

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

Еще один вопрос:

5.) Есть ли у вертолетов подобие схемы remark для неписей? Или же... В общем, мне надо, чтобы двигаясь по точкам пути он отыгрывал определенную анимку, либо, сидя на ремарке, отыграл определенную анимку и дальше полетел обычной секцией heli_move.

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

@Viнt@rь,ну раз в самой логике такой схемы нет, то это нужно обходить скриптами?.. Я как-то так думал, задавая вопрос. Прошу прощения, если не прав. 

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

Только одну проблему со звуком решил, как появилась другая: как остановить зацикленный звук? Вызываю я его вот так (кусок функции):

local snd_idle = sound_object("affects\\tinnitus3a")
snd_idle:play_no_feedback(db.actor,sound_object.s2d+sound_object.looped, 0, vector():set(0, 0, 0), 18.0)

Пытаюсь остановить так:

if snd_idle:playing() then
snd_idle:stop()
end

function gluhar()
   local active_slot = db.actor:active_slot()
    if active_slot==2 or active_slot==3 then
     db.actor:drop_item(db.actor:active_item())
    end
   level.set_snd_volume(0.04)
   level.add_pp_effector("gluhar_start.ppe",777,true)
   level.add_cam_effector("camera_effects\\fusker.anm")
   local snd_start = sound_object("anomaly\\gluhar_start")
   local snd_idle = sound_object("affects\\tinnitus3a")
   snd_start:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 18.0)
   local time = time_global()
   local timer_start = time+(14)*1000
   local timer_idle = time+(120)*1000
     level.add_call(
   function()
    if time_global() > timer_start then return true end
    end,
   function()
   level.remove_pp_effector(777)
   level.add_pp_effector("gluhar_run.ppe",778,true)
   snd_idle:play_no_feedback(db.actor,sound_object.s2d+sound_object.looped, 0, vector():set(0, 0, 0), 18.0)
   end)
               level.add_call(
      function ()
         if time_global() > timer_idle then return true end
         end,
      function ()
   level.set_snd_volume(1)
   level.remove_pp_effector(778)
   if snd_idle:playing() then
   snd_idle:stop()
      end
   end)
end

Поясняю: ГГ заходит в рестриктор, получает контузию (роняет пушку, анимация камеры, постэффект, звук). Потом, через 14 секунд (длина звука) постэффект вырубается и врубается другой, играется зацикленный звук, включается таймер 120 секунд (у ГГ отходняк после контузии - планирую сделать рандомным). Когда заканчивается таймер, постэффект убирается, громкость окружающей среды восстанавливается, но зацикленный звук всё ещё играет.

 

 

 

Функция вызывается из логики рестриктора, поэтому прописана в xr_effects.script

Пробовал использовать для выключения только snd_idle:stop() - не помогает.
Если что не так - не ругайтесь. В скриптах не шибко силён, всё делал по образцу и "методом научного тыка".

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

@Wo1fRam, Я проигрывал так:

local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\vse_vyshe_vyshe]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d+sound_object.looped, 0, vector(), 1.0)

И остановка так:

local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\vse_vyshe_vyshe]])
snd_obj:stop()

Все прекрасно работает.

 

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

Wo1fRam, метод запуска звука play_no_feedback не даёт обратной связи (что явно следует из его названия, кстати). Ты просто дал команду проиграть звук и далее этот процесс не может быть подвержен твоим запросам (например, попытке проверить статус проигрывания).
Чтобы иметь возможность обращаться к запущенному процессу, следует использовать методы play или play_at_pos, примерно так:

local snd_obj = sound_object("affects\\tinnitus3a")
snd_obj:play(db.actor, 0, sound_object.s2d)
...
if snd_obj:playing() then
  snd_obj:stop()
end

 

 

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

Kirgudu, ну так я ж и говорю - в скриптах плохо разбираюсь :) 

Я правильно понял, в твоём примере 0 - это громкость? Или как громкость настроить?
Да, забыл добавить - ЗП.

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

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

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

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

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

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

Войти

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

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

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