А не проще?:
function yan_actor_sleep (actor, npc)
db.actor:set_actor_position(patrol("yan_actor_sleep"):point(0))
local dir = patrol("yan_actor_sleep"):point(1):sub(patrol("yan_actor_sleep"):point(0))
db.actor:set_actor_direction(-dir:getH())
end
Взял из xr_effects.script - "yan_actor_sleep" это путь в all.spawn, вида:
[yan_actor_sleep]
points = p0,p1
p0:name = wp00
p0:position = 178.100952148438,-7.22282981872559,-103.089378356934
p0:game_vertex_id = 1451
p0:level_vertex_id = 134044
p0:links = p1(1)
p1:name = wp01
p1:position = 177.048889160156,-7.24236726760864,-103.062507629395
p1:game_vertex_id = 1451
p1:level_vertex_id = -1
p0 - типа walk (ГГ в ней стоит)
p1 - типа look (ГГ в неё "смотрит")
Эта функция предназначена для логики и используется в оригинале, во время замеров. Зато, можно нацепить различные эффекты камеры, постэффекты... В общем, глянь в файл yan_sleep_restrictor.ltx из распаковки игры. Чтоб завести это дело, нужно поставить space_restrictor и сделать ему логику.