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

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

Доброго времени суток, господа.

 

Благодарю за внимание, и попрошу сильно не пинать, (Заранее извиняюсь за возможный оффтоп, если уже было(а я не знал))

Как сделать такую картину: ГГ открывает инвентарь, и убирает все оружие (по открытию инвентаря, все оружие в активных слотах, убирается),

Потому как, у меня пока получились только:

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

Тени Чернобыля, Версия игры 1.0004 

 

Сделал так: 

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

 Создал отдельный файл и вписал ф-ию: 

 

 function inv()
 if active_slot~=inventory_slots.NO_ACT_SLOT then
local gg = db.actor
local item = gg:item_in_slot(1),(2),(3),(4),(5) then
      if item and item:section() == "item" then
     db.actor:hide_weapon()
      end
end

 

И две другие ниже (из фикса оп.2.1 "фикс - убирания оружия при открытии инвентаря")

 (убрал комментарии)


    -- Апдейт прятание оружия игрока во время диалога
    if weapon_hide == true or self.object:is_talking() then
        if self.weapon_hide == false then
            self.object:hide_weapon()
            self.weapon_hide = true
        end
    else
        if self.weapon_hide == true then
            self.object:restore_weapon()
            self.weapon_hide = false
        end
    end    


--function start()
hide_and_disable=function()
    local active_slot=db.actor:active_slot()
    keyvals():set("active_weapon_slot",active_slot) --ключ в контейнере по умолчанию
    if active_slot~=inventory_slots.NO_ACT_SLOT then
    db.actor:activate_slot(inventory_slots.NO_ACT_SLOT,true) --спрячем с анимацией активное оружие
    end
    db.actor:hide_weapon() --запретим использование слотов
end
show_and_enable=function()
    db.actor:clear_blocked_slots() --разрешим использование слотов
    local stored_slot=keyvals():get("active_weapon_slot",inventory_slots.NO_ACT_SLOT) --ключ в контейнере по умолчанию
    if stored_slot~=inventory_slots.NO_ACT_SLOT then
    db.actor:activate_slot(stored_slot,true) --активируем с анимацией сохраненный слот
    end
end
    need_update = true
end

 

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

Подключал к bind_stalker.script к actor:reinit , в начале. 

Поправьте меня пожалуйста, потому что эффект "третьей руки", хочется пофиксить у себя в сборочке.  

 

Поправьте/направьте, подскажите как, где и с чем это едят, желательно ткните носом.

Поиск по форуму, мне мало что дал, может я карлан и мало что знаю (Не там ищу). 

 

Изменено пользователем EGER.OVERKILL WF
Ссылка на комментарий
35 минут назад, EGER.OVERKILL WF сказал:

ГГ открывает инвентарь, и убирает все оружие

В файле inventory.script:

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

-- Открытие/закрытие инвентаря
function on_inventory_info(info_id)

    if info_id == "ui_inventory" then
        inventory_open = true
        if debug == true then get_console():execute("inventory_open") end
        bind_stalker.hide_weapon()   -- убираем ствол
    elseif info_id == "ui_inventory_hide" then
        inventory_open = false
        need_update = true
        if debug == true then get_console():execute("inventory_close") end
        bind_stalker.restore_weapon()
    end
end

 

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

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

В файле inventory.script:

  Показать

-- Открытие/закрытие инвентаря
function on_inventory_info(info_id)

    if info_id == "ui_inventory" then
        inventory_open = true
        if debug == true then get_console():execute("inventory_open") end
        bind_stalker.hide_weapon()   -- убираем ствол
    elseif info_id == "ui_inventory_hide" then
        inventory_open = false
        need_update = true
        if debug == true then get_console():execute("inventory_close") end
        bind_stalker.restore_weapon()
    end
end

 

Спасибо, а подскажи пожалуйста, где его искать, потому что я по путям config/scripts , и scripts не нашел ничего похожего.

 

Добавлено  Опричник,

Изучите "Правила цитирования".

 

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

Если там нет, распакуй последние архивы gamedata.db... или обратись сюда.  

Распаковал, к сожалению, такого файла у меня нет. 

Спасибо, надеюсь найду то что ищу.

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

В файле inventory.script:

 Я конечно дико извиняюсь,  а по точнее можно про этот файл?

 

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

eaylO.png

 

Ссылка на комментарий
50 минут назад, ted.80 сказал:

а по точнее можно про этот файл?

Я просто надеюсь, что быть может он подумал из-за названии функции (fuction inv), так и обозвал этот файл. (потому как у меня файл в котором это все написано, называется по другому)

Но тем не менее, тогда наклевывается следующий: к чему подключать это в bind_stalker.script (если это вообще, к нему отношение имеет). 

3 минуты назад, mole venomous сказал:

Расширение .script

Я же указал.

 

А это точно тч? Может версия другая, ну потому как я на голой игре, и в распакованных .db архивах , его не вижу

(Аналогично по пути gamedata/config/scripts) , а по запросу в гугле, выдает вообще картинки, с инвентарем ЗП

11 минут назад, mole venomous сказал:

Значит, его нет в оригинале.

Тогда, у меня предсказуемо, выходит еще один вопрос:

 А где мне его тогда взять, и к чему подключать?

 

Какой-то  непонятный совет получился.

 Скажи хоть откуда ты его взял-то. 

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

@EGER.OVERKILL WF 

В бинд_сталкер на коллбек actor_binder:info_callback повесь вызов 

function actor_binder:info_callback(npc, info_id)

...

    inventory.on_inventory_info(info_id)

...

end

А вот файл, поправь его под себя, если надо inventory

12 минут назад, EGER.OVERKILL WF сказал:

Скажи хоть откуда ты его взял-то

Моя ошибка. Забыл, что файл не из оригинала. Скинул на диск, думаю, разберёшься.

  • Нравится 1

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

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

поправь его под себя, если надо inventory

Признателен, за файл и за пояснения.

 

Надеюсь если я оставлю только все что связанно с инвентарем, приколов не будет. 

@mole venomous

Не-а, Не фурычит. 

И с поршнями инвентаря игрался , взятые с gameplay/info_portions 

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

    <info_portion id="ui_trade">
        <disable>ui_trade_hide</disable>
    </info_portion>
    <info_portion id="ui_trade_hide">
        <disable>ui_trade</disable>
    </info_portion>

И к коллбекам подключил , без вылетов, но ничего не происходит.

Как ни прыгал, ни тужился, ничего , абсолютно. 

1 час назад, EGER.OVERKILL WF сказал:

Как ни прыгал, ни тужился, ничего , абсолютно. 

Исключая возможность своей болезни "кривых рук", 

Проверял только что на своем квесте, при/после взятия квеста пушку достать нельзя.

При/после сдачи, пушку снова можно доставать. 

 

Что-то либо с кодом ф-ции, либо в подключении.

  • Жуть! 1
Ссылка на комментарий

@EGER.OVERKILL WF Привет, всё намного проще, никакие доп. файлы и скрипты не нужны,

в bind_stalker.script  уже есть проверка - скрыто ли оружие при диалоге (в апдейте)

Скрытый текст
	-- Апдейт прятание оружия игрока во время диалога
	if weapon_hide == true or self.object:is_talking() then
		if self.weapon_hide == false then
			self.object:hide_weapon()
			self.weapon_hide = true
		end
	else
		if self.weapon_hide == true then
			self.object:restore_weapon()
			self.weapon_hide = false
		end
	end	

 

 

нужно лишь добавить в нее - всё что нам нужно - просто замени этот кусок кода - вот так:

 

Скрытый текст
	-- Апдейт прятание оружия игрока во время диалога
	if  weapon_hide == true or
		self.object:is_talking() or
		db.actor:has_info("ui_inventory") or 
		db.actor:has_info("ui_trade") or
		db.actor:has_info("ui_car_body") or
		db.actor:has_info("ui_pda") or
		db.actor:has_info("ui_pda_jobs") then
		if self.weapon_hide == false then
			self.object:hide_weapon()
			self.weapon_hide = true
			level.set_time_factor(1)
		end
	else
		if self.weapon_hide == true then
			self.object:restore_weapon()
			self.weapon_hide = false
			level.set_time_factor(10)
		end
	end	

 

 

:good2: пользуйся

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

Всем привет)

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

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

А есть где-то на просторах интернета/форумов "пособие" по скриптовым настройкам диалогов? Т.е. то, как например реализованы рандомные фразы у НПС в оригинале (истории, про работу и т.п., которые настраиваются в dialog_manager.script). Т.е. то, как добавлять эти диалоги НПС и актору скриптами. Вроде когда-то видел, но точно не помню, а поисковики выдают только обычные диалоги. Желательно для ЗП, если там вообще есть разница в функциях :)

@Seraph Прописывай логику для всех НПС в смарте (в том числе для дефолтов), ставь, к примеру, таймер, или условие через xr_condition.script, и по достижению поставленной цели (условие или таймер), переключай логику на другую работу. Для разных работ ночью и днём, используй в suitable функцию is_day.

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

@ARTLantist Ты не понял мой вопрос)

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

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

А можно как то скриптом получить значение фпс в игре. В Судьбе Зоны как то получают значение. Мнеб тоже так сделать (изменять радиус алайфа) т.к уровни имеют разный фпс.

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

@Stalkersof , если по старинке (OGSE+), то как-то так. И посмотреть куда оно по "сигнальной" схеме подключается.

  • Спасибо 1
  • Нравится 1
  • Полезно 1
  • Жуть! 1
Ссылка на комментарий
8 часов назад, Stalkersof сказал:

А можно как то скриптом получить значение фпс в игре

В файл ui_custom_msgs.xml добавь строки

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

	<fps_static  x="436" y="0" width="114" height="40">
		<texture x="570" y="0" width="114" height="40">ui_hud_frame_clock</texture>
	</fps_static>

	<show_fps x="444" y="5" width="100" height="35">
		<text x="0" y="0" font="graffiti32" r="200" g="255" b="200" a="255" align="c"/>
	</show_fps>

 

 

Создай скрипт - допустим fps.script - в него добавь функцию

 

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

local showtimer1 = 0

function show()
	local showtimer2 = time_global()
	local hud = get_hud()
	local dev = device()
	local fps = hud:GetCustomStatic("show_fps")
	if db.actor ~= nil and db.actor:alive() and showtimer1 < showtimer2 then
		if fps == nil then
			hud:AddCustomStatic("fps_static", true)
			hud:AddCustomStatic("show_fps", true)
			fps = hud:GetCustomStatic("show_fps")
		end
		local msg = 1 / dev.f_time_delta
		if fps ~= nil then 
			fps:wnd():SetText(msg - msg%1)
			if msg >=100 then
				fps:wnd():SetTextColor(255,55,255,55)
			elseif msg <100 and msg > 50 then
				fps:wnd():SetTextColor(255,255,255,55)
			elseif msg < 50 then
				fps:wnd():SetTextColor(255,255,55,55)
			elseif msg < 1 then
				fps:wnd():SetTextColor(255,255,55,55)
				dev:pause(true)
			end
		end
		showtimer1 = showtimer2 + 100
	end
end

 

в апдейт актора добавь строчку

Скрытый текст
 if fps then fps.show() end

 

 пользуйся  :good2:

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

Добрый вечер, Вопрос такой

 

В большой сборке маленьких модификаций, присутствует "Встречают по одежке", лично мне это мешает и я ищу способ ее отключить. 

Прошу помощи, подскажите. Если оффтоп , направьте.

Ссылка на комментарий
17.02.2022 в 02:33, EGER.OVERKILL WF сказал:

Добрый вечер, Вопрос такой

 

В большой сборке маленьких модификаций, присутствует "Встречают по одежке", лично мне это мешает и я ищу способ ее отключить. 

Прошу помощи, подскажите. Если оффтоп , направьте.

И еще вопрос как ограничить инветарь? Подскажите, мне например 6х6 хватит вполне, мысль такая:

Что сделать чтоб не появлялся скрол-бар (прокрутка вниз/вверх) ? 

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

Хотел поинтересоваться, что это такое в консоли выскакивает:

ProcessGameEvents, spawn event postponed. Events rest = 1 

ProcessGameEvents, spawn event postponed. Events rest = 8

ProcessGameEvents, spawn event postponed. Events rest = ... (или другое число)

Игра Тени Чернобыля на движке 1.0007

Такая лабуда выскакивает в консоли всякий раз, когда подходишь к новому заспавненному НПС, и происходит микрофриз пока весь ProcessGameEvents не пройдёт.

Можно ли как-то эту проверку отключить, чтобы избавиться от фриза?

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

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

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

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

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

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

Войти

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

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

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