Давно пробовал сочинить простенький скрипт ловушки какой-нибудь, в голову пришла идея с кольями из-под земли. Испытания прошли успешно, но вот фантазии применить это где-то у меня не хватило. Не в курсе, есть ли что-то подобное, но выложу всё равно, авось кому пригодится.
Проверял на предварительно подготовленной карте "Руины"(в мульте). Поместил точки(entry point) с номерами 88 и 89 так, что бы координаты Х и Y точки 89 были больше, чем у точки 88. Между ними воткнул колья(spike). В mission_templates в код детматча после триггера ti_after_mission_start поместил следующее:
#rusmod spikes up
(0, 0, 4, [
(entry_point_get_position, pos1, 88),
(entry_point_get_position, pos3, 89),
(position_get_x,":x1",pos1),
(position_get_x,":x3",pos3),
(position_get_y,":y1",pos1),
(position_get_y,":y3",pos3),
(try_for_agents, ":cur_agent"),
(store_agent_hit_points,":hp",":cur_agent"),
(gt,":hp",0),
(agent_get_position, pos5, ":cur_agent"),
(position_get_x,":x",pos5),
(position_get_y,":y",pos5),
(ge, ":x", ":x1" ),
(le, ":x", ":x3" ),
(le, ":y", ":y3" ),
(ge, ":y", ":y1" ),
(scene_prop_get_num_instances, ":count_of_spikes", "spr_spike_a"),
(try_for_range, ":cur_spike", 0, ":count_of_spikes"),
(scene_prop_get_instance, ":dfd", "spr_spike_a", ":cur_spike"),
(prop_instance_get_starting_position, pos12, ":dfd"),
(prop_instance_get_position, pos11, ":dfd"),
(position_get_x, ":xx", pos11),
(position_get_y, ":yy", pos11),
(ge, ":xx", ":x1" ),
(le, ":xx", ":x3" ),
(le, ":yy", ":y3" ),
(ge, ":yy", ":y1" ),
(copy_position,pos11,pos12),
(prop_instance_set_position, ":dfd", pos11),
(particle_system_burst, "psys_game_hoof_dust", pos11, 1),
(agent_set_hit_points, ":cur_agent",0),
(agent_deliver_damage_to_agent,":cur_agent",":cur_agent"),
(try_end),
(try_end),
], []),
#rusmod spikes down
(0, 0, 0, [
(entry_point_get_position, pos1, 88),
(entry_point_get_position, pos3, 89),
(position_get_x,":x1",pos1),
(position_get_x,":x3",pos3),
(position_get_y,":y1",pos1),
(position_get_y,":y3",pos3),
(scene_prop_get_num_instances, ":count_of_spikes", "spr_spike_a"),
(try_for_range, ":cur_spike", 0, ":count_of_spikes"),
(scene_prop_get_instance, ":dfdd", "spr_spike_a", ":cur_spike"),
(prop_instance_get_position, pos14, ":dfdd"),
(position_get_x, ":xxd", pos14),
(position_get_y, ":yyd", pos14),
(position_get_z, ":zzd", pos14),
(ge, ":xxd", ":x1" ),
(le, ":xxd", ":x3" ),
(le, ":yyd", ":y3" ),
(ge, ":yyd", ":y1" ),
(ge, ":zzd", -1200),
(position_move_z, pos14, -1),
(prop_instance_set_position, ":dfdd", pos14),
(try_end),
], []),
Результат: при прохождении кем-либо этой зоны из земли выскакивали эти колья и лишали несчастного всех хитов
В код можно задать любое время срабатывания триггера(красная цифра); изменить способ ограничивания зоны на круговую, а не прямоугольную(если нужно).
ЗЫ. координаты кольев проверяются затем, чтобы сразу было видно, какие из них точно входят в описываемую зону.