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

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


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

Зарегистрируй и\п walker_3_start, и преключайся из [remark] в [walker3]:

[walker1]
 

[remark]

on_info = {+walker_2_start} walker2
on_info2 = {+walker_3_start} walker3

 

[walker2]

отсюда по какому-то условию возвращаемся в [remark], перед этим дисаблим walker_2_start

[walker3]

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

А конструкция в логике вида:

on_info = {+ info1 or + info2} walker@next - будет работать или непременно нужна функция, которая будет проверять наличие хотя бы одного из инфопоршней?

луа-операторы в логике напрямую не прокатывают(хотя могу и не в курсе быть), делай обертку в виде ф-ции. Хотя можно и проще:

on_info = {+ info1} walker@next

on_info2 = {+ info2} walker@next

какой первее будет выдан - тот и переключит логику...

  • Спасибо 1

Проще так:

on_info = {+info1} walker@next, {+info2} walker@next
  • Спасибо 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

 

 

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

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

 

 

Изменено пользователем Zander_driver
  • Согласен 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

Что-то запутался в апгрейде данной функции:

npc:set_relation (game_object.friend, db.actor)

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

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

, 

если все они в одном гулаге, то :



function название()
local actor = db.actor
  if actor and actor:alive() then
xr_gulag.setGulagEnemy("имя_гулага", actor)
end
end


если нет, то :



function название()
    local t = {sid_1, ... , sid_N} -- story_id каждого НПС
    local actor = db.actor
    if actor and actor:alive() then
        for i = 1, #t do
            local npc = level_object_by_sid(t[i])
            if npc and npc:alive() then
                npc:set_relation(game_object.enemy, actor)
            end
        end
    end
end

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

Известен ли способ без применения СДК заспавнить (хоть скриптом, хоть через all.spawn) отыгрываемые партиклы огня, точнее, газовой горелки?

amk_particle.script, правда, он с ошибками. Так что смотреть сам принцип. dc

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Здравствуйте, хочу заставить проигрывать звук кушающей хавки у ГГ, кто может помочь с этим? Имеется ввиду - колбаса, хлеб, консервы, а из питья - энергетик и водка.

@Ахмед

Сначала инициализируем необходимый звук, как-то так:

local snd_eat = xr_sound.get_safe_sound_object(".................")

Затем в use_collback проверяем, что съели нужный хавчик и проигрываем ранее заготовленный звук:

snd_eat:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)

@Ахмед, @AndreySol, проще так: В конфиге предмета писать use_sound = ...\...\....ogg. Так и проще, и звук не будет отигрыватся тысячу раз при неоднократном сьедании предмета, а будет глушится старый звук и по новому проигрыватся.

 

 

проще так: В конфиге предмета писать use_sound = ...\...\....ogg

попробовал для колбасы:

так - use_sound = "interface\inv_detach_addon.ogg"

и так - use_sound = interface\inv_detach_addon.ogg

в обоих случаях прописанный звук не проигрывается. Чет не так написал ?

Как запретить конкретному неписю переодеваться (менять визуал)?

 

1. Найти скрипт, который это делает. Обычно - xrs_armor.

2. Посмотреть, где у него прописаны исключения. Добавить.

Телепаты - в отпуске. dc

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

@AndreySol, Пиши так: use_sound = interface\inv_detach_addon я просто указал формат файла, его писать не надо, а ковычки тем более.

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

Перевел две группы НПС на созданные гулаги, но где-то накосячил, т.к. все они просто стоят на месте. Кто разбирается, посмотрите, может я чего и не увидел (мобы из гулагов временно вырезаны, работают нормально):

 

local t = {}



function load_job(sj, gname, type, squad, groups)

-- Группа Алекса

if type == "generators_alex_squad" then
t = { section = "logic@generators_alex_squad_alex",
idle = 0,
prior = 1, state = {0},
squad = squad,
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_alex"
end
}
table.insert(sj, t)
t = { section = "logic@generators_alex_squad_werewolf",
idle = 0,
prior = 1, state = {0},
squad = squad,
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_werewolf"
end
}
table.insert(sj, t)
t = { section = "logic@generators_alex_squad_taurus",
idle = 0,
prior = 2, state = {0},
squad = squad,
online = true,
in_rest = "", out_rest = "generators_monolith_base",
redicate = function(obj_info)
return obj_info.name == "generators_taurus"
end
}
table.insert(sj, t)
end

-- База "Монолита"

if type == "generators_monolith_base" then
t = { section = "logic@generators_monolith_base_commander",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_commander"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_door_guard",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_door_guard"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_barrikada_guard_1",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_barrikada_guard_1"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_barrikada_guard_2",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_barrikada_guard_2"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_perimetr_guard_1",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_perimetr_guard_1"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_perimetr_guard_2",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_perimetr_guard_2"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_prisoner_guard",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_prisoner_guard"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_sniper_1",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_sniper_1"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_sniper_2",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_sniper_2"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_sniper_3",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_sniper_3"
end
}
table.insert(sj, t)
end

end

function load_states(gname, type)

if type == "generators_alex_squad" then
return function(gulag)
if has_alife_info("back_to_alex_squad") then
return 0
end
end
end

if type == "generators_monolith_base" then
return function(gulag)
return 0
end
end

end


--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
return nil
end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)

if gulag_type == "generators_alex_squad" then
return npc_community == "stalker"
end

if gulag_type == "generators_monolith_base" then
return npc_community == "monolith"
end

return false
end

function checkMonster(npc_community, gulag_type)
return false
end

 

 

[spoiler='gualg.ltx

;-- Группа Алекса:

 

; Алекс
[logic@generators_alex_squad_alex]
active = walker@alex_wait_actor
on_death = alex_squad_death

 

[walker@alex_wait_actor]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_1
invulnerable = true
meet = meet@alex_meet_1
danger = danger_condition@alex
on_info  = {+save_taurus} walker@alex_after_start_task
on_info2 = {+save_taurus_alternative} walker@alex_after_start_alternative_task
on_info3 = {+taurus_dead} walker@alex_after_taurus_dead

 

[meet@alex_meet_1]
meet_state = 30| hello@talk_hello| 8| wait@wait| 3| ward@wait
meet_state_wpn = 30| hello@talk_hello| 8| wait@wait| 3| ward@wait
victim = 30| actor
victim_wpn = 30| actor
use = true
use_wpn = true
meet_dialog = {-save_taurus} gen_alex_start_dialog

 

[walker@alex_after_start_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_2
invulnerable = true
meet = meet@alex_meet_2
danger = danger_condition@alex
on_info = {+back_to_alex_squad_complite} walker@alex_after_complite_task
on_info2 = {+taurus_dead} walker@alex_after_fail_task

 

[meet@alex_meet_2]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+save_taurus -back_to_alex_squad_complite} gen_alex_taurus_save_in_progress_dialog

 

[walker@alex_after_start_alternative_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_1
invulnerable = true
meet = meet@alex_meet_3
danger = danger_condition@alex
on_info = {+back_to_alex_squad_complite} walker@alex_after_complite_task

 

[meet@alex_meet_3]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+save_taurus_alternative -back_to_alex_squad_complite} gen_alex_taurus_dead_hello_dialog

 

[walker@alex_after_complite_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_2
invulnerable = true
meet = meet@alex_meet_4
danger = danger_condition@alex

 

[meet@alex_meet_4]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+back_to_alex_squad_complite -save_taurus_task_talk_to_alex_complite} gen_alex_taurus_safety_dialog, {+save_taurus_task_talk_to_alex_complite} gen_alex_hello_dialog

 

[walker@alex_after_fail_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_2
invulnerable = true
meet = meet@alex_meet_5
danger = danger_condition@alex

 

[meet@alex_meet_5]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+taurus_dead +save_taurus -taurus_dead_talk_to_alex_complite} gen_alex_taurus_dead_dialog, {+taurus_dead_talk_to_alex_complite} gen_alex_taurus_dead_hello_dialog

 

[walker@alex_after_taurus_dead]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_1
invulnerable = true
meet = meet@alex_meet_6
danger = danger_condition@alex

 

[meet@alex_meet_6]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+taurus_dead -save_taurus -taurus_dead_talk_to_alex_alternative_complite} gen_alex_taurus_dead_alternative_dialog, {+taurus_dead_talk_to_alex_alternative_complite} gen_alex_taurus_dead_hello_dialog

 

[danger_condition@alex]
ignore_distance            = 30
ignore_distance_grenade    = 30
ignore_distance_corpse     = 0
ignore_distance_sound      = 30
danger_inertion_time_hit   = 1

 

; Вервольф
[logic@generators_alex_squad_werewolf]
active = remark@werewolf_wounded
combat_ignore = combat_ignore@alex_squad
danger = danger_condition@werewolf
on_death = alex_squad_death

 

[remark@werewolf_wounded]
anim = wounded_heavy
combat_ignore_cond = always
meet = no_meet

 

[danger_condition@werewolf]
ignore_distance            = 30
ignore_distance_grenade    = 30
ignore_distance_corpse     = 0
ignore_distance_sound      = 30
danger_inertion_time_hit   = 1

 

; Таурус (пленный)
[logic@generators_alex_squad_taurus]
active = walker@monolith_base_taurus_prisoner
on_death = taurus_death
combat_ignore = combat_ignore@alex_squad

 

[walker@monolith_base_taurus_prisoner]
path_walk = generators_alex_squad_taurus_prisoner_walk
path_look = generators_alex_squad_taurus_prisoner_look
invulnerable = true
combat_ignore_cond = always
meet = no_meet
on_info = {+monolith_base_destroy} walker@monolith_base_taurus_need_help

 

[walker@monolith_base_taurus_need_help]
path_walk = generators_alex_squad_taurus_walk_1
path_look = generators_alex_squad_taurus_look_1
combat_ignore_cond = {!actor_enemy !fighting_actor}
meet = meet@taurus_meet_1
on_info = {+back_to_alex_squad} walker@taurus_back_to_alex_squad

 

[meet@taurus_meet_1]
meet_state = 10| hello@talk_hello| 8|wait
meet_state_wpn = 10| hello@talk_hello| 8|wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+save_taurus} gen_taurus_save_dialog, {-save_taurus} gen_taurus_save_alternative_dialog

 

[walker@taurus_back_to_alex_squad]
path_walk = generators_alex_squad_taurus_walk_2
path_look = generators_alex_squad_taurus_look_2
combat_ignore_cond = {!actor_enemy !fighting_actor}
meet = no_meet
on_signal = arrive | walker@alex_squad_taurus_after_safety

 

[walker@alex_squad_taurus_after_safety]
path_walk = generators_alex_squad_taurus_walk_3
path_look = generators_alex_squad_taurus_look_2
meet = meet@taurus_meet_2
on_info = {+save_taurus_task_talk_to_taurus_complite} walker@alex_squad_taurus_after_complite_task

 

[meet@taurus_meet_2]
use = true
use_wpn = true
meet_dialog = {+back_to_alex_squad_complite +save_taurus} gen_taurus_after_save_dialog, {+back_to_alex_squad_complite +save_taurus_alternative} gen_taurus_after_save_alternative_dialog

 

[walker@alex_squad_taurus_after_complite_task]
path_walk = generators_alex_squad_taurus_walk_3
path_look = generators_alex_squad_taurus_look_2
meet = meet@taurus_meet_3

 

[meet@taurus_meet_3]
use = true
use_wpn = true
meet_dialog = {+save_taurus_task_talk_to_taurus_complite} gen_taurus_hello_dialog

[taurus_death]
on_info = %+taurus_dead +take_taurus_pda%

;--------------------------------------------
[combat_ignore@alex_squad]

 

[alex_squad_death]
on_info = %+alex_squad_dead%
;--------------------------------------------

 

;-- База "Монолита":

 

;-- Командир базы
[logic@generators_monolith_base_commander]
active = walker@generators_monolith_base_commader
on_death = death@generators_monolith_base_commader
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_commader]
path_walk = generators_monolith_base_commander_walk
path_look = generators_monolith_base_commander_look
no_retreat = true

 

[death@generators_monolith_base_commader]
on_info = %+monolith_base_commander_dead%

 

;-- Охранник у двери в лабораторию Х-8
[logic@generators_monolith_base_door_guard]
active = walker@generators_monolith_base_door_guard
on_death = death@generators_monolith_base_door_guard
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_door_guard]
path_walk = generators_monolith_base_door_guard_walk
path_look = generators_monolith_base_door_guard_look

 

[death@generators_monolith_base_door_guard]
on_info = %+monolith_base_door_guard_dead%

 

;-- Снайпер-1
[logic@generators_monolith_base_sniper_1]
active = camper@generators_monolith_base_sniper_1
on_combat = combat@generators_monolith_base_snipers
on_death = death@generators_monolith_base_sniper_1
combat_ignore = combat_ignore@generators_monolith_base

 

[camper@generators_monolith_base_sniper_1]
path_walk = generators_monolith_base_sniper_1_walk
path_look = generators_monolith_base_sniper_1_look
sniper = true

danger = danger_condition@generators_monolith_base_snipers

 

[death@generators_monolith_base_sniper_1]
on_info = %+monolith_base_sniper_1_dead%

 

;-- Снайпер-2
[logic@generators_monolith_base_sniper_2]
active = camper@generators_monolith_base_sniper_2
on_combat = combat@generators_monolith_base_snipers
on_death = death@generators_monolith_base_sniper_2
combat_ignore = combat_ignore@generators_monolith_base

 

[camper@generators_monolith_base_sniper_2]
path_walk = generators_monolith_base_sniper_2_walk
path_look = generators_monolith_base_sniper_2_look
sniper = true
danger = danger_condition@generators_monolith_base_snipers

 

[death@generators_monolith_base_sniper_2]
on_info = %+monolith_base_sniper_2_dead%

 

;-- Снайпер-3
[logic@generators_monolith_base_sniper_3]
active = camper@generators_monolith_base_sniper_3
on_combat = combat@generators_monolith_base_snipers
on_death = death@generators_monolith_base_sniper_3
combat_ignore = combat_ignore@generators_monolith_base

 

[camper@generators_monolith_base_sniper_3]
path_walk = generators_monolith_base_sniper_3_walk
path_look = generators_monolith_base_sniper_3_look
sniper = true
danger = danger_condition@generators_monolith_base_snipers

 

[death@generators_monolith_base_sniper_3]
on_info = %+monolith_base_sniper_3_dead%

 

;-- Охранник-1 у баррикад
[logic@generators_monolith_base_barrikada_guard_1]
active = walker@generators_monolith_base_barrikada_guard_1
on_death = death@generators_monolith_base_barrikada_guard_1
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_barrikada_guard_1]
path_walk = generators_monolith_base_barrikada_guard_1_walk
path_look = generators_monolith_base_barrikada_guard_1_look

 

[death@generators_monolith_base_barrikada_guard_1]
on_info = %+monolith_base_barrikada_guard_1_dead%

 

;-- Охранник-2 у баррикад
[logic@generators_monolith_base_barrikada_guard_2]
active = walker@generators_monolith_base_barrikada_guard_2
on_death = death@generators_monolith_base_barrikada_guard_2
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_barrikada_guard_2]
path_walk = generators_monolith_base_barrikada_guard_2_walk
path_look = generators_monolith_base_barrikada_guard_2_look

 

[death@generators_monolith_base_barrikada_guard_2]
on_info = %+monolith_base_barrikada_guard_2_dead%

 

;-- Охранник-1 внутреннего периметра базы
[logic@generators_monolith_base_perimetr_guard_1]
active = walker@generators_monolith_base_perimetr_guard_1
on_death = death@generators_monolith_base_perimetr_guard_1
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_perimetr_guard_1]
path_walk = generators_monolith_base_perimetr_guard_1_walk
path_look = generators_monolith_base_perimetr_guard_1_look

 

[death@generators_monolith_base_perimetr_guard_1]
on_info = %+monolith_base_perimetr_guard_1_dead%

 

;-- Охранник-2 внутреннего периметра базы
[logic@generators_monolith_base_perimetr_guard_2]
active = walker@generators_monolith_base_perimetr_guard_2
on_death = death@generators_monolith_base_perimetr_guard_2
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_perimetr_guard_2]
path_walk = generators_monolith_base_perimetr_guard_2_walk
path_look = generators_monolith_base_perimetr_guard_2_look

 

[death@generators_monolith_base_perimetr_guard_2]
on_info = %+monolith_base_perimetr_guard_2_dead%

 

;-- Охранник пленника
[logic@generators_monolith_base_prisoner_guard]
active = walker@generators_monolith_base_prisoner_guard
on_death = death@generators_monolith_base_prisoner_guard
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_prisoner_guard]
path_walk = generators_monolith_base_prisoner_guard_walk
path_look = generators_monolith_base_prisoner_guard_look

 

[death@generators_monolith_base_prisoner_guard]
on_info = %+monolith_base_prisoner_guard_dead%

;--------------------------------------------
[combat@generators_monolith_base_snipers]
combat_type = monolith

 

[danger_condition@generators_monolith_base_snipers]
danger_expiration_time = 60000
danger_inertion_time =  90000

 

[combat_ignore@generators_monolith_base]
combat_ignore_cond = {=check_fighting(10010)}

;--------------------------------------------

 

 

З.Ы. Если 1 НПС относящийся к одному гулагу принудительно должен находиться некоторое время на территории другого (играет роль пленного), ему нужно создавать отдельное место в этом гулаге, или он никуда не уйдет? При необходимости добавлю секции из all.spawn.

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

 

 

Пиши так: use_sound = interface\inv_detach_addon

эффект тот-же - не воспроизводится звук. Похоже Вы напутали с use_sound, видимо в ТЧ этот параметр конфига не работает.


 

 

ему нужно создавать отдельное место в этом гулаге, или он никуда не уйдет?

Если в логике прописано сидеть и не рыпаться - не уйдет. И пофиг в каком гулаге ему это прописано...

Посмотри пример с Шустрым на АТП на Кордоне(оригинал).

Похоже Вы напутали с use_sound, видимо в ТЧ этот параметр конфига не работает.

Уверен? Если я так говорю, значит я сам проверял.

 

Может путь надо указывать с папки sounds: sounds\use_item\antirad_pills. Просто делал давно, и точно не помню как надо писать путь до звука.

 

Вспомнил, видел такое в Хабар моде, давно было, сам пользовался, потом забыл со временем.

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

Ахмед, AndreySol

Я вопрос с привязкой звуков к использованию предметов решала так:

 

1. В папке gamedata\scripts создаешь новый скриптовый файл zvuki_items.script

local snd_obj

function use_sound_itemz(obj)

local sound_table = {

['bread'] = [[inventory\inv_food]],

['kolbasa'] = [[inventory\inv_food]],

['medkit'] = [[inventory\inv_medic]],

['energy_drink'] = [[inventory\inv_drinking]],

['bandage'] = [[inventory\inv_bandage]],

['matras'] = [[inventory\inv_sleeping]]}

local snd = sound_table[obj:section()]

if snd then

if snd_obj and snd_obj:playing() then snd_obj:stop() end

snd_obj = xr_sound.get_safe_sound_object(snd)

snd_obj:play_at_pos(db.actor, vector(), 0, sound_object.s2d)

end

 

Это основной скрипт, сюда можно по анологии добавлять любые предметы

2. В gamedata\scripts\bind_stalker дописываем

function actor_binder:use_object(obj)

zvuki_items.use_sound_itemz(obj)

end

3. Проверяем, чтобы в указанной папке звуков (gamedata\sounds\inventory) были нужные нам звуки.

 

Все, при неоднократном съедании предмета старый звук глушится и отыгрывается новый.

 

Кто автор метода, простите, не знаю.

Lanta87. там ещё нужно дописать :

в функцию function actor_binder:net_destroy() :

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

в функцию actor_binder:reinit():

self.object:set_callback(callback.use_object, self.use_object, self)
Nazgool.

Да, верно. В чистом ТЧ в бинд-сталкере этого нет, нужно будет дописать колбэки. Запамятовала)))

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

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

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

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

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

Войти

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

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

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