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

Скриптование


Svoboда

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

 

 

в чистой игре нет такого.

Может тогда имеется функция подмены actor.ltx ?

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение
Максимум, на десяток процентов, а далее ГГ начинает стукаться о воздух.

Да, получилось, скриптом, но увеличение совсем не заметно, но ГГ спотыкается на ровном месте, получает xит.

 

 

В ogse_actor_conditions_mgr.script добавил такой код:


if db.actor:item_in_slot(6) and db.actor:item_in_slot(6):section() == "mon_nano_speed" then
	local cur_sprint_koef = override_sprint_koef or sprint_koef
	if act.satiety < light_hunger_limit then
	  cur_sprint_koef = 1 + (
	    ( cur_sprint_koef + 5 ) * ( act.satiety / light_hunger_limit )
	  )
	end
	if act.power < 1 then
	  cur_sprint_koef = 1 + (
	    ( cur_sprint_koef + 5 ) * ( act.power / 1 )
	  )
	end
	set_sprint_factor( cur_sprint_koef )
end
 

 

 

Изменено пользователем Romann
  • Не нравится 1
 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

Подскажите пожалуйста функцию, которая наносит хит всему живому, в опред. радидиусе от ГГ.

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

вроде так:

А вот тут:

   hit:bone("bip01_head") -- удар приходится на голову

можно ли перечисллять части тела , через запятую? Или хит только по одной косточке?

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

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

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

А вообще для полетов камеры по локациям есть level.add_cam_effector2. Только тут нужно делать кат-сцену в X-ray SDK.

Я делал кат-сцену, таким образом, вешал на рестриктор, это не помогло, остаётся худ и пушка в руках.

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

Ты наверное использовал функцию level.add_cam_effector вместо level.add_cam_effector2.

Вот функция:

function blya_desant()
    level.add_cam_effector2("camera_effects\\blya_desant.anm", 30, false, "")
    local snd_obj = xr_sound.get_safe_sound_object([[helicopter\see_enemy_3]])
    snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end

Вот так это выглядит:

(кат-сцена с 2м.50с.)

 

 

 

 

Чтобы снять видео, я скрыл худ, и убрал пушку вручную.

  • Нравится 1
 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

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

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение
Так и делать.

Что-то типа этого?

function bla_bla_bla()
  for id=1,65534 do
    local obj = level.object_by_id(id)
    if obj and get_clsid(obj) == IAmAStalker then
       bla_bla.bla()
    end
  end
end

Мне нужно изменить код из этого примера , а то и правда можно хитовать и ящики с БТРами. Вот я попытался переписать ещё и так, чтоб проверялись объекты не на всей локации а только в онлайне:

 

 

	  
--local radius_sqr = 100 -- квадрат радиуса
--local actor_position = db.actor:position() -- позиция актора
-- по идее, лучший вариант сделать биндеры на все живие объекты
-- и регистрировать их в определённую таблицу, которую будем 
-- перебирать и проверять, живой ли объект. Но обойдёмся этим:
-- перебор объектов в онлайне (медленно!)
  local PositionActor = db.actor:position()
for id,o in pairs(db.storage)  do  -- апд: был 0, могло стукнуть актора 
    -- берём с локации
	local obj = level.object_by_id(id)
	-- если объект по ид есть, то
    if obj and get_clsid(obj) == IAmAStalker and obj.alive and obj:alive() then
	    -- если макс хп у объекта не равно -1, значит объект живой
	    if obj:max_health() > 0 then
		    -- если квадрат дистанции, между позицией актора и объектом меньше либо равен макс радиусу в квадрате, то ( distance_to_sqr быстрей вроде как)
		    if obj:position():distance_to(PositionActor) <= 50 then
			    -- Наносим хит (ну тут можно брать и какие то определённые параметры)
			    hit = hit() -- создание объекта класса hit
			   hit.direction = vector():set(1,0,0) --дирекция по оси x
			   hit.draftsman = db.actor --нанёс урон актор
			   hit.impulse = 600 --импульс
			   hit.power = 1.45 --хит
			   hit.type = 2 --тип урона - выстрел
			   hit:bone("bip01_head") -- удар приходится на голову
			   -- наносим урон
			   obj:hit(hit)
			end
		end	
	end
end  

 

 

Я не скриптер, если что-то не так поправьте пожалуйста.

Изменено пользователем 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.

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

Поделиться этим сообщением


Ссылка на сообщение
Изначально грешил на таблицу(мол получение звука неверно), но и без неё вылетает...

Я бы сделал так:

 
local s_obj = {
[[ep\military\ml1]],
[[ep\military\ml2]],
[[ep\military\ml3]],
}

local snd_flag = false

function mil_sound_update()
local s_obj=s_obj[ math.random(#s_obj) ]
local snd_obj = sound_object(s_obj)
local level_gg = level.name()
    if snd_flag == false and level_gg == "l07_military" then
        snd_flag = true
    end
	if snd_flag then
           snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
	end
end
Изменено пользователем Romann
  • Спасибо 1
 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

Проблема была в самом файле скрипта... И не понятно, какого она вообще рода...

Ну это уже надо смотреть сам скрипт, мало ли, может те же переменные пересекаются в скрипте - названия надо давать оригинальные.

А вообще у тебя в коде с таблицей получается две разные переменные с одинаковым названием:

local s_obj = {
...
}

и

local s_obj=s_obj[ math.random(#s_obj) ]

Надо так:

 
local snd_tbl = {
[[ep\military\ml1]],
[[ep\military\ml2]],
[[ep\military\ml3]],
}

local snd_flag = false

function mil_sound_update()
local s_obj=snd_tbl[ math.random(#snd_tbl) ]
local snd_obj = sound_object(s_obj)
local level_gg = level.name()
    if snd_flag == false and level_gg == "l07_military" then
           snd_flag = true
    end
	if snd_flag then
           snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
	end
end
 
Изменено пользователем Romann
  • Спасибо 1
 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

Доброго времени суток, народ подскажите как скриптом заспавнить машину/бтр ?

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

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

  • Согласен 3
  • Полезно 1
 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение

Всем привет, кто может помочь разобраться со скриптом?(платформа СоС 1.4.22)

Задача такая: если актор подxодит к "термо аномалиям" - выдаём инфопоршень. С костром проблем нету, у него свой биндер, а вот с жарками проблема, биндер один на все аномалии, уже перепробовали кучу вариантов, последний такого вида:

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

 


function anomaly_zone_binder:update(delta, obj)
	object_binder.update(self, delta)
	--Система замерзания, чтоб греться у термо аномалий.
	if(obj) then
		local s_obj = alife():object(obj:id())
		local thermal_zones_tbl =
								{
									"zone_field_thermal",
									"zone_field_thermal_weak",
									"zone_field_thermal_average",
									"zone_field_thermal_strong",
								
									"zone_mine_thermal",
									"zone_mine_thermal_weak",
									"zone_mine_steam",
									"zone_mine_steam_weak",
									"zone_mine_steam_average",
								
									"zone_zharka_static",
									"zone_zharka_static_weak",
									"zone_zharka_static_average",
									"zone_zharka_static_strong"
								}
		if (s_obj) then
			for i = 1, #thermal_zones_tbl do
				if (s_obj:section_name() == thermal_zones_tbl[i]) 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
    		end
    	end
    end
	--Система замерзания, чтоб греться у термо аномалий.
  ...
  ...
  ...
  end

 

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

Изменено пользователем 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.

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

Поделиться этим сообщением


Ссылка на сообщение

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

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

			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.

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

Поделиться этим сообщением


Ссылка на сообщение
29 минут назад, Fenrir02 сказал:

А вот как сделать проверку на приближение ГГ к костру ума не приложу...

А зачем именно на приближение? - Почему бы не дёрнуть функцию розжига костра ГГ из СоС? Или попробовать перенести полностью биндер костров?

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение
19 минут назад, Fenrir02 сказал:

Но возможно ли реализовать данную фичу на ТЧ?

Думаю возможно, то и дело между платформами "тягают" фичи туда-сюда, ещё и не такой сложности, тут вопрос другой - придётся ли при этом "поправлять" движок.... Если есть возможность вносить правки в движок - то в любом случае проблем не должно возникнуть.

Изменено пользователем 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.

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

Поделиться этим сообщением


Ссылка на сообщение
2 часа назад, mdm64 сказал:

Думается, так оно и реализовано. Хотя, может быть и ошибаюсь...

Ошибаешься.

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

большинство кода можно перенести из платформы в платформу

Я как-то тоже подумывал перенести "невидимку" на КоК, там конечно есть свой "маскхалат", но вот хочется именно тот самый скрипт невидимки от @НаноБот, там используется некий "инвиз", что за зверь и где он в скриптах вообще объявляется я так и не нашёл(или плохо искал), или может он из движка не знаю, так и забил на это.

 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение
11 минут назад, WinCap сказал:

самый простой вариант

Ну не всё так просто - это не реализация "невидимки", это всего лишь некий игнор, враг просто не будет атаковать, но по факту актора будут все видеть, и даже на него реагировать. И назвать такое "невидимкой" у меня лично язык не повернётся, ИМХО. А вот сделать полную реализацию невидимки, когда мобы актора не просто игнорят - а полностью не видят и не реагируют - вот это уже "невидимка".

  • Согласен 4
 

Мать: 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.

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

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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