Показывает, что происходит, когдаNPC срывается в бой. on_combat = combat
[combat]on_info = %+info -info =func% эффекты, которые вызываются на каждом раунде боя. Для задания различных типов скриптовых боёв для различных ситуаций используется параметр combat_type. В следующем примере сталкер сражается: * по-кемперски, если враг=актёр и он дальше Х метров * по-монолитовски, если любой враг дальше Y метров * иначе - движковый бой
[logic]active = walker on_combat = combat
[walker]path_walk = ...
[combat]combat_type = {=fighting_actor =fighting_ge_X_meters} camper, {=fighting_ge_Y_meters} monolith Пример такой функции: нам надо чтобы на расстоянии свыше 20 метров npc переходил бы в кемперский комбат. function fighting_dist_ge_20(actor, npc) return db.storage[npc:id()].enemy:position():distance_to ( npc:position() ) >= 400 end 400 – это 202 . Примечание – мыпишем квадрат нужного нам расстояния, для экономии системных ресурсов. Ещё один пример. Сталкер ходит под симуляцией, но у него бой не движковый, а всегда зомбированый:
[logic]active = nil on_combat = combat
[combat]combat_type = zombied Если в разных секциях для персонажа требуются разные типы боя или разные условия, то можно воспользоваться оверрайдом combat_type. Помните: оверрайд всегда будет перекрывать настройку в секции combat. Т.е., если у вас логика на 5 секций и в четырёх нужен кемперский комбат, а в пятой монолитовский, то можно задать так:
[logic]active = walker1 on_combat = combat [walker1] ... [walker2] ... [walker3] ... [walker4] ... [walker5] ... combat_type = monolith
[combat]combat_type = camper (scheme - задает тип боя (monolith, camper,zombied), иначе - универсальный бой) disable_combat_handler – функция отключающая секцию combat. Файл: \gamedata\scripts\xr_combat.script
Желаю всем удачного модостроения Ростян:-) Если вы хотите отправить сообщение шлите на Yandayks3003
|