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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


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

Потестил еще: на Кордоне уведомление отображается всегда после 1-й загрузки, на Свалке или после перехода Кордон > Свалка > Кордон всегда после 2-й загрузки. В обоих случаях тестил с выходом из игры и с обычной перезагрузкой. Сделал add_call на прогрузку ГГ – уведомление отображается каждый раз.

(Инфо-поршень "esc_bridge_pass_off", как выяснилось, вообще не выдается до возврата на Кордон, но это уже другой вопрос).

 

@naxac "Первый апдейт" – привязаться к actor_binder:update(delta) и остановить выполнение после однократного выведения статика, или речь о чем-то другом?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz, да. В ТЧ со статиками всегда такая фигня: после перехода между локациями они не выводится из нет-спавна, где-то что-то, видимо, не успевает отработать как надо, потому что новый уровень грузится.

  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@Norman Eisenherz, осмелюсь предложить свой вариант.

Для разрешения прохода нужно выдать "esc_bridge_pass_on".

Когда ГГ воспользуется проходом, или его по каким-то причинам отменят, нужно удалить "esc_bridge_pass_on".

 

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

local need_update = true
local has_static = false

-- // actor_binder:info_callback(npc, info_id) // --
function info(info_id)
	if info_id == "esc_bridge_pass_on" then
		local time_hrs = level.get_time_hours() + 1
		local time_min = level.get_time_minutes()
		time_min = math.ceil(time_min/10)*10
		if time_min == 60 then
			time_min = 0
			time_hrs = time_hrs + 1
		end
		if time_hrs > 23 then time_hrs = time_hrs - 24 end
		xr_logic.pstor_store(db.actor, "time_hrs", time_hrs)
		xr_logic.pstor_store(db.actor, "time_min", time_min)
		need_update = true
	end
end

-- // actor_binder:update(delta) // --
function update()
	if not need_update then return end

	if not db.actor:has_info("esc_bridge_pass_on") then
		get_hud():RemoveCustomStatic("bridge_pass")
		need_update = false
		has_static = false
		return
	end
	
	local time_hrs = level.get_time_hours()
	local time_min = level.get_time_minutes()	
	local pstor_hrs = xr_logic.pstor_retrieve(db.actor, "time_hrs", 0)
	local pstor_min = xr_logic.pstor_retrieve(db.actor, "time_min", 0)
	if (time_hrs >= pstor_hrs) and (time_min > pstor_min) then
		db.actor:disable_info_portion("esc_bridge_pass_on")
		return
	end
	
	if has_static then return end
	local st = get_hud():AddCustomStatic("bridge_pass", true)
	st:wnd():SetTextST(string.format("Проход до %02d:%02d", pstor_hrs, pstor_min))
	has_static = true
end

 

 

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

Здрасьте.

 

Попадалась информация о старой версии мода "Худ рук", в которой текстура рук подменялась за счет классов то ли оружия, то ли брони. Кто-нибудь помнит, как этот мод работал? Хочется назначить 3–4 вида перчаток без полной замены моделей рук и перехода на правозатворное оружие.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
3 часа назад, Norman Eisenherz сказал:

о старой версии мода "Худ рук"

Там, емнип, была целая куча худовых моделей оружия: на каждую пушку под каждый костюм, и столько же секций оружия: на каждый худ по секции. И, в зависимости от одетой брони, в руки спавнилось оружие с нужным худом.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Подскажите по системе зон в которые НПС не могут ходить? Вроде это сделано рестрикторами. И какие есть методы ограничивать навигацию НПС в игре.

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

Если про исходно-ТЧ-оригинальный механизм, то там у них в нетпакете хранится табличка in-рестрикторов и out-рестрикторов.

Хранятся там собственно id объектов. В шейп которых нельзя заходить / нельзя выходить. И там же дивные заморочки на тему того, что если рестриктор допустим удаляется, то его упоминания надо удалять из памяти все нпс и мутантов (а у них такая же система). Иначе непременный вылет, и конечно же, без лога. Как же иначе-то. Но так же не возбраняется в любой момент рестриктор создать-настроить, и записать в память всем кому надо.

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

  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

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

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Здрасьте.

 

ТЧ 1.0006, Армейские склады: сообщение "Сталкер, ты подходишь к барьеру" выдается дважды. В описании рестриктора только одно сообщение, в [xr_effects] такого сообщения нет. Где искать лишнюю копию?

 

Spoiler

[alife_l07_military.ltx]
name = mil_actor_blockpost					-- текст сообщения
type = tips							-- тип сообщения: "send_tip"
on_info = {=mil_actor_enemy_freedom} nil			-- проверка друг/враг
on_actor_inside = %+mil_blockpost_free_task%			-- инфо "mil_blockpost_free_task" (+ задание "mil_blockpost_job")
on_info2 = {+mil_blockpost_free_task} sr_sound_act		-- звуковое сообщение при получении инфо-поршня
sender = freedom						-- отправитель текстового сообщения
on_signal = tip_sended | sr_idle				-- ? (деактивация рестриктора)

 

 

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz, забыли добавить single = true, наверное.

Мне кажется, правильным будет такой вариант:

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

[sr_tip1]
name = mil_actor_blockpost
type = tips
sender = freedom
on_info = {=mil_actor_enemy_freedom} nil
on_actor_inside = sr_sound_act %+mil_blockpost_free_task%

 

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

Кто знает, что с Шустрым не так? Он, зараза, спаунится с НИ, несмотря на то, что в all.spawn ему указал

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

[spawner]
cond = {+tutorial_wounded_start}

С бандитами на АТП это работает.

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

Ссылка на комментарий
On 3/28/2020 at 9:37 PM, WinCap said:

@Norman Eisenherz, забыли добавить single = true, наверное.

Мне кажется, правильным будет такой вариант:

  [sr_tip1] (Reveal hidden contents)

[sr_tip1]
name = mil_actor_blockpost
type = tips
sender = freedom
on_info = {=mil_actor_enemy_freedom} nil
on_actor_inside = sr_sound_act %+mil_blockpost_free_task%

 

Добрался, наконец, попробовать: просто "single = true" в имеющейся логике убирает второй текст, но затыкает и звук, и задачу. Без "single = true" сообщений, как ни крути, выдается два. В итоге, вот такой порядок дает нужный результат:

Spoiler

[alife_l07_military.ltx]
name = mil_before_blockpost_restriktor
…
[logic]
active = sr_idle

[sr_idle]
on_info = {=mil_actor_enemy_freedom} nil
on_actor_inside = %+mil_blockpost_free_task%
on_info2 = {+mil_blockpost_free_task} sr_tip

[sr_tip]
name = mil_actor_blockpost
type = tips
sender = freedom
single = true
on_signal = tip_sended | sr_sound_act

[sr_sound_act]
snd = characters_voice\scenario\military\pda\mil_pda_7
on_signal = sound_end | nil

 

 

Добавлено  HellRatz,

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

  • Нравится 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz, Я всегда, кстати, думал, где, как и почему выдается сообщение, логику копал. А дело-то в рестрикторе.

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

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

Здрасьте.

 

Есть ли какой-то фикс для меток, которые остаются после сюжетных заданий (АТП, X-16, РГ-6)? Пробовал удалять метки по инфо-поршням завершения заданий – удаление срабатывает через раз, как будто инфо-поршни не выдаются, хотя сами задания засчитываются стабильно.

ТЧ 1.0006

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Что это значит: https://ap-pro.ru/forum/100-9999-826370-16-1452102986

Цитата

уникальный id объекта который ему назначил движек при спавне.
alife():object(id) - возвращает объект, с таким номером.

?

 

Это какая-то проверка, помогающая найти ID объекта? Если да, то как правильно и куда ещё вписывать, чтобы потом прочесть в логе.

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Ссылка на комментарий
03.04.2020 в 02:32, Norman Eisenherz сказал:

Есть ли какой-то фикс для меток, которые остаются после сюжетных заданий (АТП, X-16, РГ-6)?

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

 

Добавлю: та еще мутота, но все решаемо. В частности, по РГ-6 долго не мог добиться результата, в итоге все ж  сделал. Но где и что правил - увы, не помню.

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

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

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

Как переместить всё содержимое некоторого тайника в инвентарь НПС ?

Как-то так

treasure:transfer_item(obj, npc)

Где treasure, obj, npc - это клиентские объекты тайника, перемещаемого итема, и НПС, соответственно. И делать надо в цикле, перебирая все итемы в тайнике.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

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

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

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

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

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

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

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

Войти

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

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

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