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

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

@Romann, Жаркам может свои биндеры сделать?

В секции аномалии нужно смотреть ключ "script_binding"

Или так:

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

local thermal_zones_tbl =
	{
		zone_field_thermal = true,
		zone_field_thermal_weak = true,
		zone_field_thermal_average = true,
		zone_field_thermal_strong = true,
	
		zone_mine_thermal = true,
		zone_mine_thermal_weak = true,
		zone_mine_steam = true,
		zone_mine_steam_weak = true,
		zone_mine_steam_average = true,
	
		zone_zharka_static = true,
		zone_zharka_static_weak = true,
		zone_zharka_static_average = true,
		zone_zharka_static_strong = true
	}

function anomaly_zone_binder:update(delta, obj)
	object_binder.update(self, delta)
	--Система замерзания, чтоб греться у термо аномалий.
		
	if thermal_zones_tbl[self.object:section()] then
		if db.actor:position():distance_to(self.object:position()) <= 4 then
    		if not has_alife_info("EugeniumFreezingSystemWarm") then
    			db.actor:give_info_portion("EugeniumFreezingSystemWarm")
			end
	end
	--Система замерзания, чтоб греться у термо аномалий.
  ...
  ...
  ...
  end

 

Но я бы отдельный биндер сделал...

Изменено пользователем Graff46
  • Спасибо 1
Ссылка на комментарий
15 часов назад, Romann сказал:

Как ещё можно проверить - "жарка ли это"?

Правильно советуют тебе - сделай свой биндер для необходимых аномалий.

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

Господа, подскажите пожалуйста, что и где подкрутить чтобы откорректировать цветовую гамму игры? Запустил оригинал сталкера сегодня и чуть не расплакался от той самой оригинальной картинки на мониторе. Солянка делает картинку какой-то желтоватой чтоли... Какой-то менее выразительней в плане цветопередачи, не знаю описать. Будто насыщенность выкрутили и температуру картинки сделали желтой, не знаю. Оригинальная картинка была какая-то розовато-синяя, чтоли. Подскажите пожалуйста?

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

Привет, снова я. Имеем такую функцию:

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

			local current_outfit = db.actor:item_in_slot(7)
			if current_outfit then
				local outfit_section = current_outfit:section()
				if outfit_properties[outfit_section] then
					outfit_protection = outfit_properties[outfit_section]
				end
				news_manager.send_tip(db.actor, "%c[250, 0, 255, 0]".."Б-р-р-р, прохладно.", nil, nil, nil)
			end

 

 

Проблема в строчке сообщения, во первыx - сообщение надо отправить когда мы снимаем броню, а не когда она в слоте, во вторыx - сообщение отправляется постоянно, а нужно: сняли броню - отправили сообщение, одели броню - не отправляем сообщение, сняли - опять отправили. Кто подскажет, как лучше сделать?

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

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

@Romann
Здравствуйте!

Как вариант, можно однократно вызвать сообщение с помощью инфопоршня:

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

			local current_outfit = db.actor:item_in_slot(7)
			if current_outfit then
				if not has_alife_info("check_outfit") then
					db.actor:give_info_portion("check_outfit")
					-- Здесь одноразовое срабатывание при надевании костюма
				end
				local outfit_section = current_outfit:section()
				if outfit_properties[outfit_section] then
					outfit_protection = outfit_properties[outfit_section]
				end
			else
				if has_alife_info("check_outfit") then
					db.actor:disable_info_portion("check_outfit")
					news_manager.send_tip(db.actor, "%c[250, 0, 255, 0]".."Б-р-р-р, прохладно.", nil, nil, nil)
					-- Здесь одноразовое срабатывание при снятии костюма
				end
			end

 

 

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

Важнейшая задача цивилизации - научить человека мыслить.

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

Здрасьте.

 

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

Проблема: обнаруженная в скриптах конструкция "level.add_pp_effector("name.ppe", ###, false)" включает эффектор ненадолго и сразу для всей карты (как дополнительный эффект погоды, что ли), а надо сымитировать включение ПНВ в броне и оставить его до следующего нажатия клавиши "ПНВ вкл./выкл.".

Как это сделать?

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

Шпаргалка

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

Что делает эта ф-ция?

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

function mob_capture(mob, reset_actions)
    if reset_actions == nil then
        abort("mob_capture: reset_actions parameter's value is not specified")
    end

    if reset_actions then
        reset_action(mob, script_name())
    else
        if not mob:get_script() then
            mob:script(true, script_name())
        end
    end
end

 

И что делают эти классы\методы?

reset_action(mob, script_name())

mob:script(true, script_name())

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

@Graff46, это для установления контроля за мобом. Т.е. он будет выполнять то, что ты ему скриптом скажешь. Например бежать в определенном направлении.  Для примера, посмотри вот этот скрипт

https://github.com/dsh2dsh/op2ogse/blob/3f7514f804eaf1dc875cc3ce8513d8537dd53bc2/gamedata/scripts/dsh_battle_radius.script#L135

Это аналог mob_home, только без путей. Там как раз используется такой захват контроля над мобом, что бы заставить его вернуться внутрь.

 

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

а надо сымитировать включение ПНВ в броне и оставить его до следующего нажатия клавиши "ПНВ вкл./выкл.".

Это явно из разряда "Овчинка выделки не стоит". Можно, конечно, все это скриптами наворотить(причем объем костылей и извращений будет не маленьким), вот только ради чего ?

 

Изменено пользователем AndreySol
Ссылка на комментарий
В 17.11.2018 в 07:44, Romann сказал:

а нужно: сняли броню - отправили сообщение, одели броню - не отправляем сообщение, сняли - опять отправили. Кто подскажет, как лучше сделать?

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

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

@AndreySol Ради того, что достало каждый раз оказываться в темноте. В оригинале это еще не такая большая проблема, а в "солянке", где броню можно снимать с трупов, уже основательно надоедает.

Я так понимаю, прямой функции "включить ПНВ" нет? Может, есть способ изобразить нажатие определенной клавиши скриптом?

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

Шпаргалка

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

Кто может помочь, знает как сделать так, чтобы фонарики НПС не гасли после их смерти, а оставались светить, как в старых билдах ? Желательно без движковых исправлений. Или может кто знает мод где такое уже есть ?

jpwsa5byp73nyaufrbis15dcci1y.png
 

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

как сделать так, чтобы фонарики НПС не гасли после их смерти, а оставались светить

Смотри в xr_motivator.script ф-цию motivator_binder:death_callback, в ней есть

sr_light.check_light(self.object)
...    
death_manager.drop_manager(self.object):create_release_item()

В sr_light может быть отключение фонарика у померших, а в death_manager может быть удаление фонарика из инвентаря моба, соответственно отключение по факту удаления.

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

Из X-Ray extensions:

send_event_key_press(int<DIK_keys>) - имитация события нажатия кнопки

Как именно применить это на практике? Допустим, при нажатии клавиши F3 нужно вызвать какое-то действие. Как это сделать?

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
В 18.11.2018 в 17:48, Fenrir02 сказал:

Как именно применить это на практике?

@Fenrir02,

в нужную функцию вставляем:

level.send_event_key_press(DIK_keys.DIK_F3) 

-- вместо "DIK_F3" может быть любая другая клавиша.

 

Результатом будет имитация нажатия,

как будто ты нажал на кл."F3" (не касаясь пальцем физически).

 

Только вот не помню, должна ли быть локация загружена в этот  момент,

так как используется пространство "level".

На всякий, может проверку поставить, типа "if level then ... end"

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

И снова здравствуйте!

Подскажите, как с помощью скрипта разжечь костёр, к которому подходит ГГ на определённое расстояние?

Важнейшая задача цивилизации - научить человека мыслить.

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

Какая платформа? Для ЗП делал так: bind_campfire.script:

function turn_off_campfire_by_name(name)
	if name then
		local campfire = campfire_table_by_name[name]
		if campfire and campfire:is_on() then
			campfire:turn_off()
		end
	end
end

function turn_on_campfire_by_name(name)
	if name then
		local campfire = campfire_table_by_name[name]
		if campfire and not campfire:is_on() then
			campfire:turn_on()
		end
	end
end

В самом верху объявил массив:

campfire_table_by_name = {}

В методе net_spawn заполняем его:

campfire_table_by_name[self.object:name()] = self.campfire

Собственно, использование:

bind_campfire.turn_off_campfire_by_name("campfire_name")
bind_campfire.turn_on_campfire_by_name("campfire_name")

 

Ранее был известен под ником BoBaH_671.

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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