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

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


Svoboда

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

37 минут назад, I am Dead сказал(а):

хочу заблокировать бег

В этом движке есть методы condition.cant_spint_power_begin и condition.cant_spint_power_end

Если поставить

  get_actor_obj().condition.cant_spint_power_begin = 1
  get_actor_obj().condition.cant_spint_power_end   = 1

то актор перестанет бежать.

  • Полезно 1

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


Ссылка на сообщение
2 минуты назад, I am Dead сказал(а):

о есть бег будет принудительно сбрасываться на шаг?

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

3 минуты назад, I am Dead сказал(а):

И есть ли что то подобное для других состояний

  -- Блокировка шага актора
  get_actor_obj().condition.cant_walk_power_begin = 1
  get_actor_obj().condition.cant_walk_power_end   = 1

Кстати, все эти методы есть в lua_help к движку OGSR.

  • Спасибо 1

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


Ссылка на сообщение
2 часа назад, I am Dead сказал(а):

Как запустить анимацию через add_cam_effector циклично

Вот так - 

level.add_cam_effector("camera_effects\\earthquake.anm", 2002, true, "")

true в данном случае и определяет повторять ли анимацию.

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


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

Как очистить определенный инвентарный ящик по ID?

Вот так можно -

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

function clear_box( box_id )  -- ID ящика, который нужно очистить
  for a = 1, 65535, 1 do
    local sobj = alife():object( a )
    if sobj and sobj.parent_id == box_id then
      alife():release( sobj, true )
    end
  end
end

 

Причём, неважно, в онлайне ящик или нет.

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

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


Ссылка на сообщение
9 часов назад, Colder сказал:

Пытаюсь дать рандомный хит заспавненому предмету ГГ в рюкзак

Хит наносится так - 

Скрытый текст
	local h = hit()
	h.power = 0.3
	h.direction = vector():set(0, 0, 0)
	h.impulse = 0
	h.draftsman = db.actor
	h.type = hit.fire_wound
	obj:hit(h)  -- obj в данном случае клиентский объект, которому наносится хит

 

 item:set_condition((math.random(5)+15)/100)

Метод set_condition применяется к клиентским объектам. А в вашем случае item - это, скорее всего, строка, поэтому и вылет.

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

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


Ссылка на сообщение
3 часа назад, mole venomous сказал:

вернуть значение параметра на текущем уровне

Скрытый текст
if system_ini():line_exist(item:section(), "hit_power") then
	local hp = system_ini():r_string(item:section(), "hit_power")
	if hp then
		local t = {}
		for a in string.gfind(hp, "[%w_%-%.]+") do
			table.insert(t, a)
		end

		local dhp = t[level.get_game_difficulty() + 1] or t[1] -- параметр hit_power в зависимости от уровня сложности игры

	end
end

 

 

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

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


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

@Colder Выдаст рандомный тайник -

Скрытый текст
function CTreasure:create_random_stash()
	local t = {}
	for k, v in pairs(self.treasure_info) do
		table.insert(t, k)
	end
	self:give_treasure(t[math.random(#t)])
end

 

 

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

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


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

@mole venomous 

Скрытый текст
local excluded_ids = {}
for i = 0, db.actor:belt_count() - 1 do	-- цикл всех предметов на поясе
	local item = db.actor:item_on_belt(i)
	if item then
		excluded_ids[item:id()] = true
	end
end
-- проверка на исключение:
if excluded_ids[id] then	-- id здесь предмета, который нужно проверить
end

 

 

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

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


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

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