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

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

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

1 hour ago, AndrewMor said:

Возможно, это пофиксили в ОГСЕ, ОГСР и им подобных...

Не пофиксили, т.к. движок этим не занимается. Этим скрипты занимаются.

  • Согласен 1
Ссылка на комментарий
49 минут назад, AndrewMor сказал:

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

Почему нельзя-то прочитать? Можно вроде как, и как раз скриптами:
 получаем через  xr_gulag.get_npc_gulag( obj ), где obj - наш "клиентский" непись.
Это если надо "на лету"  определить. 

А если надо, чтобы из LTX-файла при создании НПС-а ему присваивался гулаг, то надо не в файле логики smart_terrain прописывать, а в файле _кастомдаты_, и через отдельную секцию этого нпс спавнить с сразу с указанной кастомдатой, через custom_data = имя_файла_кастомдаты ( где  указать смарт и, если надо, ссылку на внешний ltx-файл с логикой, чтоб логику менять отдельно от кастомдаты при необходимости )

  • Согласен 1
  • Полезно 1

След от кругов на воде - это тоже след (с)

Ссылка на комментарий
9 часов назад, AndrewMor сказал:

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

Почему же только для этого? На гитхабе к примеру есть Вики к движку, с примерами применения функций и прочего, изменения и нововведения в движке относительно оригинала.

  • Согласен 1
Ссылка на комментарий
04.08.2022 в 23:05, Okichi сказал:

А если надо, чтобы из LTX-файла при создании НПС-а ему присваивался гулаг, то надо не в файле логики smart_terrain прописывать, а в файле _кастомдаты_, и через отдельную секцию этого нпс спавнить с сразу с указанной кастомдатой, через custom_data =

Вот именно. И пока мне это не объяснили, я долго пыхтел...

04.08.2022 в 21:54, dsh сказал:

Не пофиксили, т.к. движок этим не занимается. Этим скрипты занимаются.

Имелось в виду, что может быть и скрипты изменили, до кучи так сказать.

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

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

А можно как-то заспавнить определённую вещь для НПС скриптом?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@Houdini_one , 

Скрытый текст

alife():create(item,npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id())   
или

alife():create(item,npc.position,npc.m_level_vertex_id,npc.m_game_vertex_id,npc.id)

 

Изменено пользователем mole venomous
  • Спасибо 1
  • Нравится 1

Здесь могла быть ваша реклама.

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

Добрый вечер всем!:drinks:
Вопрос такой.... Как сделать так, чтобы при клацании на предмет в инвентаре, начался проигрываться какой либо аудиофайл?
И ещё один.. Вот есть у меня waypoint, как сделать так, чтобы непись начал ходить по нему тогда, когда я захочу (например, после какого то диалога)?

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

@mole venomous подскажи, может чего не так сделал, но оружие не появляется у НПС
 

Скрытый текст

function test()
local npc = level_object_by_sid(5504)
   alife():create(wpn_ak74,npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id())
end

 

23 минуты назад, Hind сказал:

начался проигрываться какой либо аудиофайл?

звук при использовании предмета
 

24 минуты назад, Hind сказал:

когда я захочу

Переключай логику с помощью on_info
 

Скрытый текст

[logic]
active = remark

[remark]
target = actor
on_info = {+info} walker

[walker]

path_walk = walk

path_look = look

 

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
1 час назад, Hind сказал:

как сделать так, чтобы непись начал ходить по нему тогда, когда я захочу (например, после какого то диалога)

НПС находится в схеме логики 1, где стоит/ходит по путям 1. В этой схеме возможен переход в схему 2 по условию (выдача инфопоршена в конце диалога, например).

Скрытый текст

[walker@esc_finder] ; схема 1
path_walk = esc_finder_walk 
path_look = esc_finder_look 
on_info = {+esc_trader_can_leave} walker@esc_finder2 ; для перехода на схему 2 нужен инфо "esc_trader_can_leave"

 

[walker@esc_finder2] ; схема 2
path_walk = esc_finder2_walk 
path_look = esc_finder2_look 

В конце диалога выдаём инфопоршень. 

Скрытый текст

<phrase id="32111">
                <text>escape_trader_start_dialog_32111</text>
                <give_info>esc_trader_can_leave</give_info> <!-- выдаём инфо -->
                ...
</phrase>

После запускается схема логики 2, где НПС переходит на вэйпоинты 2

Скрытый текст

[walker@esc_finder2]
path_walk = esc_finder2_walk 
path_look = esc_finder2_look 

 

1 час назад, Houdini_one сказал:

level_object_by_sid(5504)

По sid'у можно так (хотя, тоже самое...)

Скрытый текст

--[[
    Для спавна в инвентарь актёра/НПСа/тайника (только онлайн!) 
    Не указываем второй аргумент - спаун актёру
    Указываем вторым аргументом цифру, это будет sid объекта (НПС или инвентарный ящик)
]]    
function spawn_item_in_inv(item,npc)
    if npc == nil then npc = db.actor end
    
    if npc then
        if type(npc)=='number' then
            npc = level_object_by_sid(npc)
        end
    end
    
    return alife():create(item,npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id())
end

 

Или получше вариант, дёрнул из одного модуля

Скрытый текст

function AddItemInv(sSection, Box, idBox)
    local sini = system_ini()
    local sim  = alife()
    if not idBox then
        if not Box then Box = db.actor end
        idBox = (type(Box.id) == 'number' and Box.id) or Box:id()
    end
    if type(sSection) == 'string' and sini:section_exist(sSection) then
        return sim:create(sSection, vector(), 0, 0, idBox) --/>
    end
end

 

Пример:

local Box = level_object_by_sid(6)
AddItemInv("wpn_tiger", Box)

 

 

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

Здесь могла быть ваша реклама.

Ссылка на комментарий
2 часа назад, Houdini_one сказал:

но оружие не появляется у НПС

Уточни, что ты имел в виду: непись его в руки должен взять или просто наличие в инвентаре?

Ссылка на комментарий
14 часов назад, mole venomous сказал:

По sid'у можно так (хотя, тоже самое...)

Спасибо за ещё варианты, но оказалось всё проще - я забыл в своей функции добавить "" до и после wpn_ak74.

 

 

11 часов назад, AndreySol сказал:

непись его в руки должен взять

Да, в руки.
Сейчас всё работает, но почему-то НПС на время выбрасывает бинокль с инвентаря, потом подбирает его.

Правда эта функция не этому НПС будет выдавать оружие, этому я для теста выдал, но такой косяк имеется.

Во всяком случае у других НПС биноклей не будет, так что думаю и так годится.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
4 минуты назад, Houdini_one сказал:

я забыл в своей функции добавить ""

Это я заметил, но не придал значения. Может, такая локальная на рандомный АК... 

  • Нравится 1

Здесь могла быть ваша реклама.

Ссылка на комментарий
2 часа назад, Houdini_one сказал:

Да, в руки.

Поройся в теме справочника, и поиском: неписи имеют настраиваемый в конфигах приоритет использования оружия. Т.е. он не возьмет в руки то, что ему не прописано. Там, кстати, довольно заморочно это реализовано и работает. Я в этом вопросе особо не разбирался, попробуй спросить тута, ну и может в теме "Система ALife. Логика поведения игровых объектов", может кто знает побольше об этом.

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

@AndreySol ну я в таком случае поступаю иначе - просто прописываю патроны, тогда НПС охотно берёт оружие.

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

Не берёт он АКС-74У. Может ибо оружейный пак и такой прикол (ранее другой стоял и такие проблемы с гадюкой были).

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

@gam да нет, обычное оружие.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
1 час назад, Houdini_one сказал:

@gam да нет, обычное оружие.

Возможно, дело в профиле/конфиге НПСа. Вот например. Всем известный сталкер на Агро, что нас встречает и опять "помоги, там же наши". При этом машет обрезом ТОЗа. Если прописать ему любой другой ствол, то он зависнет. Есть какой-то параметр в конфиге. Но я не упомню, давно было. И ещё. Не подключён ли у тебя, какой-нибудь АИ пак, где есть схема " Собирательство ".

"Кругом зомби.....у меня кончаются патроны...."

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

@Houdini_one 

В базовой секции [stalker]:

can_select_items          = true ; позволяет выбрать лучший предмет из каждого типа (пистолет и т.д)
use_single_item_rule    = true ; если true, нпс выкинет всё, что не подошло в can_select_items

Для торговцев, оба параметра false. Начиная с ЧН, use_single_item_rule = false теперь для всех.

 

По поводу сценок с анимками, в которых нпс бросает оружие. Можно сделать дубликат нужной в state_lib.script, к примеру psy_pain_hw = {weapon = "drop", -- бросает, "none" или nil - прячет и т.п.

  • Полезно 1
Ссылка на комментарий

Товарищи знающие, а есть где-то описание алгоритма как, вообще, это всё работает?

Т.е.:

help_agr = {prop = { maxidle = 1,
                     sumidle = 2,
                     rnd = 100 },
            into = { [3] = { "help_3_idle_0", {s="agr_stalker_help_2"}, "help_3_idle_1" }},
                        out = nil,
                        idle = nil,
                        rnd = nil},

Циферки, буковки :biggrin:. Что за что отвечает и что делает?

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

@Купер может, здесь найдёшь для себя что-то полезное (если ты об этом конечно).

18 часов назад, BFG сказал:

есть схема " Собирательство ".

Такого нет.
 

 

14 часов назад, h0N0r сказал:

can_select_items          = true ; позволяет выбрать лучший предмет из каждого типа (пистолет и т.д)
use_single_item_rule    = true ; если true, нпс выкинет всё, что не подошло в can_select_items

У меня везде true.
 

 

14 часов назад, h0N0r сказал:

nil

nil - значит прячет? Это подойдёт думаю, спасибо.

Подскажите.
Мне нужно, чтобы НПС взял в руки объект, в данном случае бита.

Сделал так:
 

Скрытый текст

[wpn_hand_bat_a]:identity_immunities
GroupControlSection        = spawn_group
discovery_dependency    =
$spawn                    = "food and drugs\wpn_hand_bat_a"
cform                   = skeleton
class                    = II_ATTCH
visual                        = weapons\knife\wpn_hand_bat.ogf
cost                    = 20
description                    = enc_weapons1_hand_bat
inv_name                    = st_wpn_hand_bat
inv_name_short                        = st_wpn_hand_bat
inv_weight                = .3
inv_grid_width            = 1
inv_grid_height            = 1
inv_grid_x                = 11
inv_grid_y                = 9

attach_angle_offset        = -0.287979, 1.560923, 1.544060
attach_position_offset    = 0.096910, -0.013594, 0.107925
attach_bone_name        = bip01_r_hand
auto_attach                = false

// should be deleted after update
bone_name                = bip01_r_hand
position_offset             = 0.0,0.0,0.0
angle_offset             = 1.570790,1.570790,3.92699

Скрытый текст

    bita = {    weapon = "strapped",
                movement = nil,
                mental = nil,
                bodystate = nil,
                animstate = nil,
                animation = "bita"
            },

Скрытый текст

        bita    = {    prop        = { maxidle = 1,
                                    sumidle = 1,
                                    rnd = 100 },    
                        into    = { [0]    = {"idle_10_idle_0", {a="wpn_hand_bat_a"}, "idle_10_idle_0"} },
                        out        = nil,
                        idle    = { [0]    = "idle_10_idle_0"},
                        rnd        = nil},


Но НПС в руки объект не берёт.
Если вместо wpn_hand_bat_a написать какое-то оружие, то в руках держать будет.

Прописывал wpn_hand_bat_a в секции [spawn] в профиле НПС, пробовал и через инклуд character_items.xml.

Может в профиле и нет у них такого, посмотреть не могу никак.
Что может быть не так?

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

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

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

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

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

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

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

Войти

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

Войти

AMK-Team.ru

×
×
  • Создать...