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

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


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

Мужики, как сделать так, чтобы не было отображений аномалий? Т.е чтобы не было ряби и шума при подходе к ним.
 

@Hind 
idle_particles        = static\buble_distort00
это вроде партикл который играется всегда, не знаю, можно ли его закомментить, попробуй так сделать:
;idle_particles        = static\buble_distort00

idle_sound            = ambient\fire2                    ;iinoiyiiue caoe
звук, можно тоже попробовать закомментить, но думаю будет вылетать, звук - можно поставить пустой, заглушку, с партиклом так же.

 

 

 

 

 

Скрипт level.tasks
Таблица:
 

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

local jump_level_by_name = {
    l01_escape                = "l02_garbage",
    l02_garbage                = "l03_agroprom",
    l03_agroprom            = "l03u_agr_underground",
    l03u_agr_underground    = "l04_darkvalley",
    l04_darkvalley            = "l04u_labx18",
    l04u_labx18                = "l05_bar",
    l05_bar                    = "l06_rostok",
    l06_rostok                = "l07_military",
    l07_military            = "l08_yantar",
    l08_yantar                = "l08u_brainlab",
    l08u_brainlab            = "l10_radar",
    l10_radar                = "l10u_bunker",
    l10u_bunker                = "l11_pripyat",
    l11_pripyat                = "l12_stancia",
    l12_stancia                = "l12u_sarcofag",
    l12u_sarcofag            = "l12u_control_monolith",
    l12u_control_monolith    = "l12_stancia_2",
    l12_stancia_2            = "l01_escape"
}

Зачем нужна? Какое применение ей?

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

Как сделать проверку? Типа, если нет n'ого предмета, то не появляется ветка диалога..

И подскажите функцию на отдавание бабок актором пожалуйста

  

32 minutes ago, Houdini_one said:

Скрипт level.tasks

В ЗП есть аналогичная таблица в [jump_level.script] и обработчик "найти активную карту, переместиться на сопоставленную с ней следующую карту или на Затон, после чего выйти из игры".

В ЧН такая же схема, только реализованная через if … elseif … вместо таблицы.

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

 

@Hind 
        <precondition>dialog_darkvalley.has_babki_1</precondition>

function outmoney(first_speaker, second_speaker)
    dialogs.relocate_money(second_speaker, 2500, "out")
end
 

@Norman Eisenherz можно получается стереть функцию?
Если я изменю названия уровней на свои - ничего не произойдёт?

 

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

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

1. Пока нет активации через флаг или инфо, это просто старый тестовый код. Даже при наличии такой активации надо еще разлочить команду для "прыжков" по картам – если не нарушать синтаксис файла, игра никак не реагирует на удаление частей скрипта.

 

2. Сброс предмета: db.actor:drop_item(ссылка на объект).

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

Можно создать список id сброшенных предметов и скидывать их снова через событие actor_binder:on_item_take(obj), если разрешение не получено. В этом случае придется заносить список в pstor для переноса через сейв/загрузку, что при большом количестве предметов может и переполнить pstor (8 кб).

 

Нельзя ли обойтись более простой схемой работы, с перемещением предметов в коробку или сбросом только некоторых предметов?

10 минут назад, Norman Eisenherz сказал:

Даже при наличии такой активации надо еще разлочить команду для "прыжков" по картам

В ОГСР есть.

 

11 минут назад, Norman Eisenherz сказал:

Нельзя ли обойтись более простой схемой работы, с перемещением предметов в коробку или сбросом только некоторых предметов?

Распакованный ТЧ.

sounds/characters_voice/human_03/stalker/talk/stories/story006

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

Можно отобрать управление через level.disable_input(), потом по таймеру скидывать  предметы раз в секунду или еще как-то, в конце процесса выставить ГГ за дверь и включить телепорт, который будет откидывать ГГ чуть назад, ну или саму дверь сделать неинтерактивной.

@Norman Eisenherz хочу реализовать так:
гг подойдёт к столу, на нём будет закуска (взять нельзя) и водка, вот эти голоса всякие, в один момент эта водка станет доступна, гг как только возьмёт предмет сразу активируется выпивка (тоже не знаю как сделать, что именно водку со стола взял, можно наверное подсекцию создать водки специально), после чего вернётся управление, но вещи забрать всё ещё не получится, гг вылезет через окно.

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

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

19 часов назад, Hind сказал:

отображений аномалий? Т.е чтобы не было ряби и шума при подходе к ним.

postprocess = -> ; postprocess = в конфиге нужных аномалий  в начале соответствующей строки  ( ";" - знак комментирования для файлов с расширением .ltx). Или просто удалить строку.

 

Изменено пользователем Купер

@Houdini_one 

1. Нетпакет проще всего редактировать через подключаемый модуль [m_netpk.script] от Артоса. Флаг "можно брать" хранится в нетпакете по пути data.object_flags + Interactive. Пример действий для сброса флага:

Spoiler
function clear_useful_for_ai( sobj )
	local pk = get_netpk( sobj, 1)				-- [m_netpk] прочитать нетпакет
	local data = pk:get()							-- [m_netpk] вывести данные в таблицу
	data.object_flags = bit_xor( data.object_flags, 8 )		-- двоичное сравнение и сброс флага "интерактивно" на 0 (позиция 8 или 2^3 справа налево: …1xxx или …0xxx –> …0xxx)
			)
	data.object_flags = bit_or( data.object_flags, 8 )			-- то же для поднятия флага при любых исходных значениях
	pk:set( data )									-- [m_netpk] записать данные в нетпакет по измененной таблице
end

 

 

2. Взятие и активация водки: actor_binder:on_item_take(obj) + db.actor:eat(obj) с проверкой "водка в заданной комнате" или "водка с известным id".

 

Для начала, найди и подключи [m_netpk.script] и попытайся сделать один предмет неактивным.

@Norman Eisenherz тяжело понять что ты под спойлером написал.

Модуль подключен в огср изначально, а как сделать то, чтобы предмет выпал из инвентаря у меня лишь такой вариант:
 

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

    if obj:section() == "bolt" then            -- всегда удаляется первым
        restart = true
    end

    if obj:section() == "wpn_ak74" then
        if not restart then
            db.actor:drop_item(obj, db.actor)
        end
    end


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

1. Какая именно часть вызывает вопросы: чтение, запись, редактирование значений? Если интересует порядок значений, можно сделать pk:dumpDesc() и отправить полученный текст в сообщение.

2. Это был вариант для transfer_item – в варианте drop_item ГГ указывается только один раз. Проверка на перезапуск (bolt + restart) тоже не требуется.

3. Для тестов можно сделать триггер через расход бинта в actor_binder:use_inventory_item(obj), либо через нажатие клавиши в главном меню – [ui_main_menu.script].

4 минуты назад, Norman Eisenherz сказал:

1. Какая именно часть вызывает вопросы: чтение, запись, редактирование значений?

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

Кажется, есть решение: расширенная скриптовая база OGSR. В файле [_g.script] должны быть обработчики set_item_untakeable( item ) и set_item_takeable( item ), которые через дополнительные флаги состояния позволяют управлять статусом предмета.

Примерно так:

local obj = db.actor:object(…)

set_item_untakeable(obj)

Простой поиск через Ctlr+F в указанном файле не дает совпадений? Строка 1204.

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

@Norman Eisenherz простой поиск, чистый _g.script что идёт в комплекте с огср, строка 1204:
    local new_point = nil

Что же у меня за версия тогда? И в OGSE, и в OGSR обработчики флагов состояния есть.

Тогда попробуй просто вызвать метод set_item_untakeable(obj) со ссылкой на существующий объект – если библиотека xrgame.dll изменена, игра должна знать такую конструкцию.

 

Ссылки с фразой global_flags в [_g.script] есть?

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

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

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

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

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

Войти

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

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

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