Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RicoNRT 228 Опубликовано 26 сентября Paracetamol Игнор ВСЕХ нпс: [logic] active = remark combat_ignore = combat_ignore [remark] anim = hello combat_ignore_cond = always danger = danger_condition@shustryi meet = default_meet@master target = actor [danger_condition@shustryi] ignore_distance = 0 Ну а вот видос, как поговорить с врагом: 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 900 Опубликовано 28 сентября Господа, как получить профиль НПС скриптом? Дополнено 4 минуты спустя А также: как получить список шмоток у НПС? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 28 сентября 1 час назад, Paracetamol сказал: получить профиль НПС скриптом Готового метода нет, да и зачем? 1 час назад, Paracetamol сказал: получить список шмоток у НПС Через итерацию инвентаря можно. Спойлер self.object:iterate_inventory( function(_, item) if item then --log1("hass item") --if has_alife_info(known_inf_desc) then --log1("hasss part !!!!") local sec_item = tostring(item:section()) alife():create(sec_item, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) olr.del(item) olr.snd([[ol3\koan\KnifeStow1-m]]) --log1("hasss part - ") --self.object:drop_item(item) -- тут вылет dBodyStateValide(b) --self.object:transfer_item(item, db.actor) --log1("has part - "..item:name().."") olr.hud_tip("", game.translate_string("st_bind_monster_received_items")..item:get_name().."", 2) take_flag = 1 local wait_time = 0 wait_time = time_global() + 1000 level.add_call( function() return time_global() > wait_time end, function() self.object:set_tip_text(game.translate_string("st_bind_monster_no_needed_parts")) end ) --else --log1(" non has part ") --end else local wait_time = 0 wait_time = time_global() + 1000 level.add_call( function() return time_global() > wait_time end, function() self.object:set_tip_text(game.translate_string("st_bind_monster_no_needed_parts")) end ) end end ) Нашёл тут в олр использование этой функции, ты всяко лучше меня понимаешь по скриптам. Уверен, разберёшься. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 28 сентября (изменено) 10 часов назад, Paracetamol сказал: как получить профиль НПС скриптом? npc:profile_name(), если ты про это Изменено 28 сентября пользователем N42 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 900 Опубликовано 30 сентября Как заспавнить повреждённый предмет в ящик? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 1 октября @Paracetamol, тут писали. Можно также через `alife:spawn_item` создать `item_to_broke` и сделать `item_to_broke:set_condition(0.78)`. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 900 Опубликовано 1 октября Если предмет находится в инвентаре актора/нпс, то он находится в онлайне и для него можно привязать кастом дату, верно я понимаю? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 1 октября Paracetamol движок оригинальный? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 900 Опубликовано 1 октября Только что, N42 сказал: Paracetamol движок оригинальный? ОГСР Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 1 октября (изменено) 36 минут назад, Paracetamol сказал: ОГСР В огср можно сразу после alife():create... менять состояние, не ждя выхода в онлайн (по крайней мере, в старых версиях огср так было) local sobj = alife():create.... sobj.item_condition = 0.1 5 часов назад, Paracetamol сказал: и для него можно привязать кастом дату Какую кастом дату? Изменено 1 октября пользователем N42 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 900 Опубликовано 1 октября 1 минуту назад, N42 сказал: Какую кастом дату? Типа хочу сделать изменение имени предмета когда он в онлайне (соответствующая функция есть в движке), но нужно знать, что этот предмет сейчас в онлайне Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 1 октября (изменено) Paracetamol проверь, может для серверных переименовка тоже работает. Раньше вроде и у клиентских не работало, хотя в вики было, может щас уже работает, хз, давно уже не смотрел огср, но лучше проверь сразу. Разово надо переименовать один объект или несколько раз? И у скольких объектов? Если повально переименовываешь, может проще биндер прилепить и на net_spawn менять Изменено 1 октября пользователем N42 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RicoNRT 228 Опубликовано 1 октября Всем привет. Кто знаете, как сделать так что-бы когда НПС входил в АГР, то ГГ выдавался бы инфопоршень? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Balavnik 9 Опубликовано 1 октября (изменено) RicoNRT Любой нпс или с заранее указанной логикой? Если с логикой, то попробуй Цитата [combat] on_info = %+info -info =func% Изменено 1 октября пользователем Balavnik 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RicoNRT 228 Опубликовано 1 октября Balavnik Короче, будет база 40 человек, её мы должны пройти по стелсу, но если нас замечает хоть 1 человек, то стелс срывается и они все на нас агрятся. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Balavnik 9 Опубликовано 1 октября (изменено) RicoNRT Скорее всего если нужно, чтобы все одновременно, понадобится делать гулаг. Еще есть секция danger = danger_condition но я её не тестил. Посмотри реализацию агропрома из ТЧ. Изменено 1 октября пользователем Balavnik Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oleg19966 296 Опубликовано 1 октября RicoNRT привет. Я думаю, можно просто в логику НПС прописать что-то типа такого: on_actor_dist_le = 50 | %=killactor% В тот же walker к примеру. Либо так: on_actor_dist_le = 50 | %=actor_enemy% Если ГГ в поле видимости НПС и ближе 50м метров - НПС становится врагом. А далее через функцию подключить к этому НПС весь гулаг: function killactor (actor, npc) xr_gulag.setGulagEnemy ("название смарта", actor) end Возможно, стоит создать такую же функцию но с другим названием, что бы не пересекалась с оригиналом. 1 Внимание! Ищу любые фиксы/исправления для оригинального ТЧ. Спойлер Или людей, которые желают помочь с этим делом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RicoNRT 228 Опубликовано 1 октября oleg19966 типо так: [smart_terrains] Смарт_террейн = true логика НПС в террейне: [logic] active = walker [walker] path_walk = pioner_way_2 path_look= pioner_look_2 on_actor_dist_le = 50 | %=baza_emeny% А это в функцию писать в любой файл логики: function baza_emeny (actor, npc) xr_gulag.setGulagEnemy ("название смарта", actor) end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 1 октября 4 часа назад, N42 сказал: не ждя выхода в онлайн Да это и в ванили же есть, разве нет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 1 октября Hrust неа, нету Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oleg19966 296 Опубликовано 1 октября RicoNRT да, функцию в скрипт писать. Можно в xr_effects.script. Если не сработает, то привяжи функцию к инфопоршню, типа так: on_actor_dist_le = 50 | %+become_enemies% И создай новый поршень с функцией: <info_portion id="become_enemies"> <action>xr_effects.baza_emeny</action> </info_portion> Внимание! Ищу любые фиксы/исправления для оригинального ТЧ. Спойлер Или людей, которые желают помочь с этим делом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 1 октября 30 минут назад, oleg19966 сказал: on_actor_dist_le = 50 Как по-мне, лучше see_actor использовать, а то такое себе когда через стену унюхивают Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oleg19966 296 Опубликовано 1 октября (изменено) N42 Вообще-то, НПС с этой логикой, через стенку не должен "видеть" ГГ. Тут уже больше вопрос к самом качестве локации. Я сам больше предпочитаю on_actor_dist_le только потому, что не всегда надо, что бы НПС открывал огонь, например со 100м по ГГ. Изменено 1 октября пользователем oleg19966 Внимание! Ищу любые фиксы/исправления для оригинального ТЧ. Спойлер Или людей, которые желают помочь с этим делом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 1 октября (изменено) oleg19966 сколько ни пробовал на оригинальных локах, вечно чуяли за стенами. С ограничением расстояния и добавкой see_actor работало как надо. Ну не было возможности часто менять носки после долгих походов, что поделать Изменено 1 октября пользователем N42 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CiberZold 848 Опубликовано 2 октября 10 часов назад, RicoNRT сказал: on_actor_dist_le = 50 | %=baza_emeny% не слабая у тебя база по размеру наверное, если надо держать дистанцию в 50 м (треть дистанции онлайна нпс по дефолту) от каждого часового Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты