Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Это невозможно, сквады в симуляции и как раз должны уходить с локации.
Я уже ответил вам. Ограничьте движение сквадов определенной группировки точками смартов на локации. Будут бродить от смарта к смарту и за пределы локации не выйдут. В чем сложность?
В том, что это противоречит задумке чуть менее, чем полностью. Сквады должны уходить с локации, но не должны использовать для этого одну из двух точек перехода. Я пытаюсь придумать способ блокировать по предусловию отдельные граф-пойнты, но пока не выходит. Вот и спрашиваю - можно ли как-то регулировать движение по гейм-графу.
В том, что это противоречит задумке чуть менее, чем полностью.
Мы должны угадывать ваши задумки? Вот ваш вопрос:
ЦитатаAurelio ()
Можно ли создать IN-рестриктор, пропускающий сквады определенной фракции?
Где тут ваши задумки?
Движок перемещает сквады по локации по граф поинтам. Движение сквадов не хаотичное, а от смарта к смарту. Или от одного места работ к другому месту работ, тут уж как вам удобно так и рассуждайте. Всё что вы можете, так это прописать движение сквадов от смарта к смарту. Таким образом вы заставляете двигаться сквады по тому направлению, которое вам видится правильным. Вот и расставляйте смарты так как вам нужно и прописывайте движение сквадов от смарта к смарту так, чтобы сквады двигались в нужную вам "дырку" перехода.
На этот вопрос ответ я получил. Спасибо. Как следствие возник следующий
ЦитатаAurelio ()
Есть ли какой-нибудь другой способ регулировать движение сквадов по геймграфу, раз рестрикторы не работают?
И в том же посте уточнил
ЦитатаAurelio ()
сквады в симуляции и как раз должны уходить с локации
На что получаю
Цитатаmakdm ()
Ограничьте движение сквадов определенной группировки точками смартов на локации. Будут бродить от смарта к смарту и за пределы локации не выйдут.
Серьезно?
Очевидно, что прописывание путей вручную не совместимо с режимом симуляции. Что так можно я и сам знаю, но это не то, что мне надо. Что перемещение идет между смартами по граф-пойнтам мне тоже известно. Что мне неизвестно - можно ли влиять на маршрут движения (детально, на уровне отдельных граф-пойнтов) между смартами. Подозреваю, что без движковых правок это невозможно, но на всякий случай решил уточнить у более опытных модостроителей.
Подозреваю, что без движковых правок это невозможно, но на всякий случай решил уточнить у более опытных модостроителей.
Давайте вместе подождем более опытных модостроителей. Может узнаем что-то более интересное, чем я вам посоветовал. Я не против! Учиться никогда не поздно!
Aurelio, Посмотрите вот этот пост возможно мысли в нем помогут вам сделать задуманное. Возможно изложенные там суждения ошибочны или более не работают в текущих версиях движка, но все же.
Сообщение отредактировал denis2000 - Суббота, 04.05.2019, 19:46
Aurelio, Посмотрите вот этот пост возможно мысли в нем помогут вам сделать задуманное. Возможно изложенные там суждения ошибочны или более не работают в текущих версиях движка, но все же.
Глянул, спасибо. Попробовал такой вариант: 1)Перекинул один из смартов из локации 3 в локацию 2 (в СоС все смарты находятся в локациях 0 и 3, для SDK соответственно 1 и 4). 2)Привязал к нему переходный граф-пойнт. [location_2] 000 = "..." 001 = "not for the player" 002 = "esc_smart_terrain_2_14"
[esc_smart_terrain_2_14] 255,255,002,255
При установке террейна для сталкеров вида terrain = stalker_terrain [stalker_terrain] 255,000,255,255 переход оставался доступным, а если сменить маску на 255,000,000,255 - то переход блокируется, причем сквад сразу начинает движение по обходному пути. Пробовал третьим значением ставить 253, 3 и 1 - во всех случаях это делало переход достуным. Установить маску отдельно для сталкеров какой-либо группировки пока не получается.
Есть ли способ через скрипты менять маску смарт-террейна, перенося его с одной локации на другую (при условии наличия там свободных позиций)?
1) Хочу создать физический объект с логикой. То есть через Сдк 0.7 создаю физический обьект, destroyed object к примеру ЯЩИК и хочу чтобы когда к нему подходишь и нажимаешь кнопку использовать. Он пропадал.
2) И второй вопрос, как создать точку которую можно использовать. Например квесты по типу установи прибор, то есть приходишь в заданную точку и ставишь прибор, чтобы эту точку нельзя было повторно использовать и прибор реально устанавливался.
Например квесты по типу установи прибор, то есть приходишь в заданную точку и ставишь прибор, чтобы эту точку нельзя было повторно использовать и прибор реально устанавливался.
function jup_b32_place_scanner(actor, npc) for i = 1, 5 do if xr_conditions.actor_in_zone(actor, npc, {"jup_b32_sr_scanner_place_"..i}) and not has_alife_info("jup_b32_scanner_"..i.."_placed") then db.actor:give_info_portion("jup_b32_scanner_"..i.."_placed") db.actor:give_info_portion("jup_b32_tutorial_done") remove_item(actor, npc, {"jup_b32_scanner_device"}) spawn_object(actor, nil, {"jup_b32_ph_scanner","jup_b32_scanner_place_"..i}) end end end
Есть ли способ через скрипты менять маску смарт-террейна
Нет, такого метода в движке не предусмотрено или в справочнике lua_help.script его не приведено.
ЦитатаAurelio ()
Установить маску отдельно для сталкеров какой-либо группировки пока не получается.
От чего же, это несложно, более того, в ТЧ это было сделано некоторым мутантам (например контролерам). Ко всему прочему террейн у мобов или НПС может иметь несколько масок:
Код
[controller_terrain] 255,000,255,255 010,001,255,255 ;Разрешено ходить по опасным местам на янтаре 014,001,255,255 ;Разрешено ходить по опасным местам на радаре 016,001,255,255 ;Разрешено ходить по опасным местам на припяти
Вот есть секция сталкеров:
Код
[stalker]
В которой есть параметр (например в таком виде):
Код
terrain = stalker_terrain
Который стало быть ссылается на другую секцию:
Код
[stalker_terrain] 255,000,255,255
Значит можно сделать и секцию:
Код
[dolg]:stalker
В которой можно прописать параметр:
Код
terrain = dolg_terrain
Который ссылается соответсвенно на:
Код
[dolg_terrain] 255,255,000,255
Теперь вы спавните долговцев (всех или на конкретном уровне или в конкретных группах или строго конкретных НПС) наследуя секцию dolg, а не stalker:
Код
[jup_b207_duty_security_squad_leader]:dolg ... community = dolg
Сообщение отредактировал denis2000 - Понедельник, 06.05.2019, 12:36
Нет, такого метода в движке не предусмотрено или в справочнике lua_help.script его не приведено.
Я вот тоже не нашел. И вообще в скриптах работу с маской встретил только в 2 файлах (sim_squad_scripted.script и smart_terrain.script). Во втором скрипте файл smart_terrain_masks.ltx используется только для проверки наличия в нем маски при инициализации смарта. А вот во втором интереснее
-- setup location types local location_types = {} do -- to localize below local locations_ini = ini_file("misc\\smart_terrain_masks.ltx")
local function itr(section) local a,key,val = locations_ini:r_line_ex(section,0,"","") location_types[key] = key end
locations_ini:section_for_each(itr) end
При инициализации сквада
function sim_squad_scripted:init_squad() .......... self:set_location_types_section("squad_terrain") self:set_location_types_section("stalker_terrain") ..........
и при апдейте (флажок need_to_reset_location_masks устанавливается в true при загрузке в методе sim_squad_scripted:STATE_Read(packet, size))
if self.need_to_reset_location_masks then self:set_location_types() self.need_to_reset_location_masks = false end
Методы set_location_types и set_location_types_section
function sim_squad_scripted:set_location_types_section (section) local location = location_types[section] if (location) then self:add_location_type(location) end end
function sim_squad_scripted:set_location_types(new_smart_name) self:clear_location_types()
local old_target = self.assigned_target_id and db.smart_terrain_by_id[self.assigned_target_id] if (old_target) then self:set_location_types_section(old_target:name()) end
if (new_smart_name) then self:set_location_types_section(new_smart_name) else for id,se_obj in pairs(db.smart_terrain_by_id) do local props_base = se_obj.props and se_obj.props["base"] if (props_base and tonumber(props_base) ~= 0) then self:set_location_types_section(se_obj:name()) end end end end
А вот вызываемый add_location_type(location) в файле почему-то отсутствует, хотя вызывается из self, и это не способствует пониманию всей этой конструкции.
Цитатаdenis2000 ()
От чего же, это несложно
Ну я так и задавал, как под спойлером написано, но что-то не взлетело. Реакцию на изменение маски удалось получить только меняя stalker_terrain. Вот пример с контролером - 255,000,255,255 должна разрешать доступ во все смарты локаций 0, 2 и 3, так? А маски 010,001,255,255 014,001,255,255 016,001,255,255 должны разрешить доступ в смарты 10, 14 и 16 с локации 1? Или же все смарты локации 1, находящиеся на уровнях 10, 14 и 16 (Янтарь, Радар, Приять судя по комментариям)?