=VENOM= 51 Опубликовано 23 Февраля 2011 @"StreloK", вот полностью рабочая логика для гражданского зомбаря: [smart_terrains] none = true [logic] active = mob_fake_death [mob_fake_death] ;on_info = {!is_day} mob_home on_info = {=is_day =dist_to_enemy_le(8)} mob_home, {!is_day} mob_home [mob_home] path_home = sleep_zombie_home home_min_radius = 20 home_max_radius = 25 ;on_info = {=is_day} mob_fake_death on_info = {=is_day =dist_to_enemy_ge(8)} mob_fake_death on_signal = sig_attacked | mob_combat [mob_combat] on_timer = 10000 | mob_home Здесь днём зомби будет загорать в травке на солнышке, пока к нему не приблизится враг (игрок) на расстояние, менее 8 метров. В этом случае он подскочит, и очень сильно постарается замочить того, кто мешает ему отдыхать. Но если отойти от потревоженного зомби более, чем на 8 метров, он снова мирно уляжется баю-бай ... Ночью зомби будет активен (по умолчанию в xr_conditions.script - от 21 вечера до 6 часов утра). Если нужно, чтобы зомби валялся днём, ни на кого не реагируя, просто зарэмь "длинные схемы" и раскомментируй "короткие". Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 24 Февраля 2011 Видимо, у тебя на схеме mob_walker или на mob_camp логика построена, а меня на mob_home. Mob_home тем и выгоден, что неписи автоматически подыскивают для себя каверы, а не ходят тупо по путям, определённым разработчиками. Конечно, не всегда это удобно - в частности, не подходит для скриптовых сцен. А вот для симуляции "free alife" самое то ... Кстати, правильнее будет ещё ввести задержку по времени, чтобы зомбарь не падал, как подкошенный, как только отойти от него на условленное расстояние. Тогда мертвяк ещё немного побродит, поругается, а потом свалится отдыхать ... Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 24 Февраля 2011 Как и предполагал, mob_walker наличествует . Задержку я имел в виду, чтобы зомби не сразу падал, а через некоторое время после окончания "тревоги" - тут можно после окончания действия условий тревоги переключиться, например, на схему mob_remark, а в ней задать условие on_timer = 10000 | mob_fake_death. А как сделать, чтобы не сразу падал, а "медленно"... даже не знаю . И ещё у тебя есть условие (on_actor_dist_le = 5 | nil), по нему, если игрок приблизится к зомби менее, чем на 5 м., монстр уйдёт из-под логики, и обратно его под управление уже не взять. К тому же, по этому условию зомби будет реагировать только на игрока - рекомендую всё же использовать dist_to_enemy_le, и переключаться не на nil (выход монстра из-под логики), а на какую-нибудь существующую схему. Вдруг к "отдыхающему" зомби подберётся какой-нибудь "природный" враг (или сталкер), а не игрок, тогда on_actor_dist_le не сработает. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 26 Февраля 2011 (изменено) @"StreloK", по поводу активации точки респона. Сама точка респона у тебя настроена работать безо всяких условий. То есть, она будет спонить неписей через положенные промежутки времени, независимо от рестриктора-"активатора". Для того, чтобы респоновая точка (я так понимаю, функция, которая у тебя прописана в кустодате рестриктора должна была активировать не только респон, но и включить смарт впридачу?) действительно начала работать только после вхождения игрока в рестриктор, в кустодате точки респона, как уже было упомянуто, нужно добавить вот такое условие: conditions = {+infoportion} 100, 0 А для активации смарта (в кустодате смарттеррейна) вот такое: cond = {+infoportion} Функция, указанная у тебя в кустодате рестриктора (=cit_gulag_1_restavn), действительно не нужна, нужен только "эффект" с получением инфопоршна: on_actor_inside = nil %+infoportion% Тогда, как только игрок войдёт в рестриктор, будет получен инфопоршн, который автоматически активирует точку респона и смарт (если нужно). Смарт включится, а респоновая точка начнёт плодить неписей в соответствии с глобальными настройками респона. А сам рестриктор "уйдёт в nil", чтобы не обрабатывать в дальнейшем условия этого рестриктора. Кстати, правильно условия указываются перед именем новой схемы, а эффекты - после: on_actor_inside = {условия +(-)инфопоршны и (или) =(!)функции} новая схема %эффекты +(-)инфопоршны и (или) =функции% Конечно, можно указывать вообще одни только эффекты, если условие не для переключения на другую схему, а только для получения нужного инфопоршна и (или) запуска нужной функции. Изменено 26 Февраля 2011 пользователем =VENOM= Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 26 Февраля 2011 TRAMP14, по крайней мере гейм- и левелвертексы в норме (для подземелья Агропрома). Непись вообще не спонится (то есть при запуске игры сам игрок уже находится в подземке Агропрома) или когда игрок через некоторое время добирается до подземки, непися там нет? Что у него в логике? Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 11 Марта 2011 Jurok, для того, чтобы непись подошёл к игроку в "олспон" лезть ни к чему. Это исключительно настройка логики. Подскажу - юзайте схему follower, а для @"StreloK" - схема и соответствующая модификация xr_attendant практически готова - только отшлифую ещё пару функций, и в ЛС отбарабаню . Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 11 Марта 2011 Нет, это для сценок нападения на игрока - онлайн. Схема follower всё обсчитывает автоматически, её нужно только чуть-чуть подрихтовать. Поэтому непись пойдёт не туда, где игрок "должен быть", а прямо к игроку, даже если пытаться уйти от непися. Ну, а дельше всё зависит от фантазии разработчика ... Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 12 Марта 2011 Куфзук, (тоже оффтоп, но общедоступное пояснение необходимо) я отработал по конкретному заказу (поэтому заказчику в ЛС), который подразумевал под собой вполне конкретную сценку. Для полностью универсальной схемы просто не хватает окончательной "огранки" (и... лень немного), плюс требуется составление дополнительной техдокументации по модифицированной схеме follower (я специально не стал создавать отдельный клон схемы - просто нужно будет использовать дополнительные параметры существующей). Это необходимо, т.к. для скриптера, ясное дело, всё будет понятно, но ведь настройщик логики (режиссёр скриптовых сценок) вовсе не обязан быть таковым - и я с этим фактом полностью согласен. Если всё это действительно кому-то интересно - доделаю "универсалку" и выложу . Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 14 Марта 2011 (изменено) Вот модифицированный xr_attendant (схема follower), для использования в скриптовых сценках, а также для организации примитивных отрядов, возглавляемых игроком. Инструкция внутри. Я не знаком с этой схемой, но, в принципе, в любую схему можно добавить кучу самых разнообразных органичений, и настроить её соответственно ... Добавлено через 207 мин.: Внимание! В выложенном мной скрипте обнаружена ошибка, которая может приводить к "вылету" без лога при безусловном переключении на другую схему логики. В функцию action_follow:free () в самом начале нужно добавить строку: local section = self.object:section() Приношу извинения за причинённые неудобства ... Изменено 14 Марта 2011 пользователем Куфзук Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 18 Марта 2011 Вот так : function some_spawn(first_speaker, second_speaker) local shit = {"wpn_ak74", "wpn_abakan", "kolbasa", "bread", "vodka", "medkit", "bandage"} local item = shit[math.random(table.getn(shit))] alife():create(item,db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) end Капрал Хикс, в amk/anoms/anoms.ltx прописываются "противоаномальные" зоны - то есть места, где динамические аномалии спониться не будут. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 18 Марта 2011 А у меня вот какой вопрос: возможно ли как-то изменить отношение непися к игроку в оффлайне? Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 19 Марта 2011 Полтергейст, кто ищет, тот найдёт . Для одной локации я уже всё решил и написал. А вот если непись находится на другой - тут по-моему уже ничего не поделать. Дело не в стрельбе, а в изменении отношений по условию, в другом месте. Именно для того, чтобы не париться с нетспоном - переходом в онлайн и обратно. Зачем весь этот геморрой? Вот есть же очень удобные функции для изменения отношений группировок, хоть онлайн, хоть оффлайн - без разницы... А с отдельными неписями, независимо от того, в какой он группировке, вот так мудрить приходится ... Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 9 Апреля 2011 Создал - это хорошо. А под какой схемой логики они "не встают"? Они walker'ы? Camper'ы? Или сидят вокруг костра? Что прописано у них в путях в all.spawn (анимации)? Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 10 Апреля 2011 strelok200, в секции [logic] указывают обычно: inv_max_weight = 10000 trade = <путь к конфигурационному ltx-файлу настроек торговли NPC> И укажи в профиле непися минимальное и максимальное кол-во денег у торговца. И чтобы у NPC деньги не заканчивались, укажи там же infinitive = "1". Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 14 Апреля 2011 Например, вот так: local distance = obj:position():distance_to(db.actor:position()) Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 14 Мая 2011 Disord, 1. для организации "неподвижности" игрока можно использовать функцию set_inactivate_input_time(xxx), в которой xxx это время, в течение которого отключается ввод команд для ГГ. Эта функция используется, например, в ситуации, когда ГГ получает удар в физиономию за слишком настойчивые приставания к сталкерам. Либо напрямую использовать level.disable_input()/level.enable_input(). 2. Вот такая конструкция подойдёт ? function clear_player_inventory() db.actor:iterate_inventory( function(dummy,item) local nameid = item:section() if nameid ~= "bolt" then alife():release(alife():object(item:id()), true) end end, nil) db.actor:give_money(-db.actor:money()) end Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 21 Мая 2011 korshyn-3, укажи в логике, в конкретной секции NPC (walker или кто он у тебя) параметр meet = no_meet. strelok200, в диалоге получай инфопоршн, который будет условием переключения логики NPC на другую секцию, например: on_info = {+infoportion} walker@go_to_new_location. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 22 Мая 2011 Disord, сам инфопоршн на "последней" точке пути NPC выдать не сможет. Но. В путях на последней точке можно установить так называемый сигнал: [walk] points = p0 p0:name = wp01|a=walk|sig=arrif ... а в логической схеме NPC прописать реакцию на этот сигнал, в том числе и получение инфопоршна, примерно так: [walker@tra_la_la] ... on_signal = arrif | walker@tro_lo_lo %+infoportion% ... По второму вопросу - менять нужно у ГГ не только direction, но и параметр upd:o_torso. Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 22 Мая 2011 В АМК главная функция тянет за собой сервисную. Вот готовая, удаляет предмет из инвентаря ГГ по имени. Только не пытайтесь удалять болт : function del_from_player_inventory(item_name) local obj = db.actor:object(item_name) if obj then alife():release(alife():object(obj:id()), true) end end Поделиться этим сообщением Ссылка на сообщение
=VENOM= 51 Опубликовано 22 Мая 2011 А сам инфопоршн зарегистрировал в каком-нибудь файле с инфопоршнами? Если нет, то вот это и причина для вылета. Вторая возможная причина - отсутствие path_look в секции [walker@walker1]. Поделиться этим сообщением Ссылка на сообщение