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

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

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

4 часа назад, egorkaufman1 сказал:

spawner

Что значит не работает? Оллспавновый НПС, имеющий эту секцию, будет спавниться по условию (выдать/забрать инфопорцию). Если всё правильно сделано. 

  • Согласен 3

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

@Colder а если написать?

if db.actor:active_slot()==11 and st and ItTank(obj) then
Изменено пользователем Labadal

God save Hatsune Miku!

09.07.2022 в 03:17, egorkaufman1 сказал:

но та-же секция [spawner] в логике НПС попросту не работает

НПС как создан? Правка алл.спавн с исп. АСДС или СДК+xrAI? Если первое, то давай сюда код секции, поглядим на ошибки.

 

@Colder 

В item_to_slot(obj) что  передается в качестве obj? Точнее, что там должно быть? По коду ф-ции ItTank там должен быть объект с секцией "test_att"?

  • Согласен 1

Здравствуйте, хотелось бы задать вопрос:

 

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

 

Возникла идея сделать худ ПНВ, отдельный для каждого поколения(по типу того, как для каждого ЭОП в Таркове разный худ), при его включении. И хоть статические элементы выводить - дело нехитрое, но с поиском условия для if возникли проблемы

(Если есть метод менее геморройный, чем отслеживание ppe-шек, подскажите, буду благодарен) 

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

1. Изменение HUD согласно типу ПНВ есть в Anomaly 1.5.1, но как именно реализовано переключение – не знаю.

2. Можно подключить скриптовый кейлоггер и включать эффекты ПНВ самостоятельно с любыми условиями при нажатии клавиши (обычную привязку отключить).

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

Шпаргалка

6 часов назад, ElPablo сказал:

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

А еще есть скриптовые постэффекты, которые не только запускаются, но и управляются скриптом. Соответственно, скриптом можно получать всю информацию об их состоянии, а также это состояние из скрипта изменять, прямо в процессе работы постэффекта.
 

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

 

Пример такого эффекта из СЗ. Правда, это выброс, и ТЧ. Но на ЗП такое вроде тоже можно делать. И ПНВ на этих эффектах делается, принцип тот же.

-- класс
class "SurgeFade" (effector) -- Скриптовый постэффект со скриптовым же управлением.
function SurgeFade:__init(  ) super( 6669, 1000 )
		self.params = effector_params(  )
		self.params.color_base    	= color( 0.50, 0.50, 0.50 )
		self.params.color_gray    	= color( 0.50, 0.50, 0.50 )
		self.params.color_add     	= color( 0.0, 0.0, 0.0 )
		self.params.gray 			= 0.0
		self.params.dual        	= duality( 0.0,  0.0 )
		self.params.noise        	= noise( 0, 0, 0 )
		self.params.blur        	= 0.0
		self.on_last 				= nil
		self:run(0)
		effector.process( self,  self.params )
		self:start(  )
end
function SurgeFade:run(st) -- Запуск указанной стадии
	self.stage 					= st
	self.stage_time 			= time_global(  )
end
function SurgeFade:set_callback(f) -- Функция будет вызвана на последнем кадре эффекта
	self.on_last = f
end

function SurgeFade:process( pp )
    local dt = time_global(  ) - self.stage_time
	if dt < 0 then return true end
    if self.stage == 0 then
		local stageFactor = dt / 5000
		self.params.noise        	= noise( stageFactor, 0.5, 10 )
		self.params.color_base    	= color( 0.60 - (stageFactor / 2), 0.50 - (stageFactor / 2), 0.50 - (stageFactor / 2) )
		self.params.gray 			= stageFactor
	elseif self.stage == 1 then
		self.params.noise        	= noise( 1.0, 0.5, 10 )
		local clrAmp = math.sin( dt / 1000.0 )
		local r = 0.0 + (math.random() * clrAmp * 0.001)
		local g = 0.0
		local b = 0.0
		self.params.color_base    	= color( r, g, b )
		self.params.gray 			= 1.0
	elseif self.stage == 2 then
		local stage2Factor = 1 - (dt / 10000)
		if stage2Factor < 0 then 
			if self.on_last ~= nil then self.on_last() end
			self:finish()
		else
			self.params.noise        	= noise( stage2Factor, 0.5, 10 )
			self.params.color_base    	= color( 0.50 * stage2Factor, 0.50 * stage2Factor, 0.50 * stage2Factor )
			self.params.gray 			= stage2Factor
		end
	end
    effector.process( self,  pp )
    pp:assign( self.params )
    return true
end

-- использование
surge_fade_effector = nil -- объявление

surge_fade_effector = surge_day_system.SurgeFade() -- запуск
surge_fade_effector:set_callback(begin_drop_effects)

if surge_fade_effector then surge_fade_effector:run(1) -- переключение состояний постэффекта 
  --(в принципе любое управление его параметрами в процессе его активности)
  
function begin_drop_effects()
   	-- будет вызвана когда постэффект завершит работу. 
end

Если вместо параметров выброса, вписать сюда эффекты ПНВ, то примерно то что нужно и получится.

 

 

  • Спасибо 1
  • Полезно 2

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

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

6 часов назад, ElPablo сказал:

чем отслеживание ppe-шек

Наверное, надо состояние ПНВ отслеживать, а не рре-эффекты?

2 часа назад, AndreySol сказал:

Наверное, надо состояние ПНВ отслеживать, а не рре-эффекты?

Исходя из мной прочитанного, я знаю можно просто отследить включено/выключено ПНВ. Без привязки к поколению. 

 

Я же изначально уточнил, что худ должен отображаться в зависимости от поколения ЭОПа. 

43 минуты назад, ElPablo сказал:

худ должен отображаться в зависимости от поколения ЭОПа

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

  • Согласен 1
12 минут назад, AndreySol сказал:

читаем из секции текущего ПНВ настройки для этого худа. 

Ввиду недостатка опыта, немного не понимаю. Под секцией ПНВ подразумевается конфиг?

 

 

@ElPablo 

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

  • Нравится 1

Возможно ли вернуть текущий вес поклажи ГГ (без горождения переборов и прочего)? ОГСР. 

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

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

6 часов назад, Купер сказал:

R1 к OGSR

:offtopic: Это отрицательное развитие.

  • Сочувствую 1

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Здравствуйте. Есть мод Call of Misery и дополнение на миникарту. Хочу сделать итем на пояс, который тратит энергию и включает эту миникарту.
Хоть примерно скрипт накидайте или наводку на пример похожего функционала из других модов. Звучит максимально просто, но без примера и знания языка не могу реализовать сам.

:unsure:

 

Можно ли в GUI окне вывести Fillist с иконками итемов а не имя как это видно на скрине. Где можно подсмотреть? https://disk.yandex.ru/i/RrPaSNJ4OCr7Eg

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

Есть функция которая выдает все тайники

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

function CTreasure:create_random_stash()
    for k,v in pairs(self.treasure_info) do
    self:give_treasure(k)
end
end

Помогите сделать что бы она выдавала 1 тайник.

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

@Colder 

Скрытый текст
function CTreasure:create_random_stash()
	for k, v in pairs(self.treasure_info) do
		self:give_treasure(k)
		break
	end
end

 

 

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

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

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

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

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

Войти

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

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

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