Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Всем привет! Хочу задать такой вопрос. До этого момента, не занимался артефактами особо как-то, но сейчас решил за них взяться. Проблема в следующем. Артефактам не прописывается несколько иммунитетов: пулестойкость, защита от ударов, защита от взрывов и защита от рваных ран. Все бы ничего, но вроде бы как такие параметры в ЗП есть, но артефактам они почему-то не присваиваются. Вырезаны в движке? И если да, то можно ли их вернуть?
Сообщение отредактировал Detron - Пятница, 16.03.2018, 01:24
Вопрос по скриптам в CoC. Вообще я писал вопрос сюда, но там как то тихо и никто особо не отвечает. CoC и ЗП в плане функций особо не различаются, так что пожалуй напишу сюда. В OGSE была такая фича: чтобы пройти сквозь пси-излучение на радаре и янтаре, нужно переместить пси-шлем в слот, а не только иметь его в инвентаре. Я как понял это делается в скриптах и их конфигах и вот что я нашел в файлах OGSE (файл bun_psy_zone.ltx):
Функцию =actor_wear_helmet я так же нашел в xr_conditions.script:
Код
-- true если у актора одет шлем указанной секции function actor_wear_helmet(actor, npc, p) return p[1] ~= nil and actor:object( p[1] ) ~= nil and actor:item_in_slot(10) ~= nil and actor:item_in_slot(10):section() == p[1] end
Сначала я просто перенес скрипт из OGSE в CoC, понятное дело не получилось, ибо у ТЧ и ЗП немного разные форматы скриптов. Потому решил сделать так (файл xr_conditions.script из CoC):
Код
-- true если у актора одет шлем указанной секции function actor_wear_helmet(actor, npc, p) local story_actor = get_story_object("actor") return p[1] ~= nil and story_actor and story_actor:object( p[1] ) ~= nil and story_actor:item_in_slot(11) ~= nil and story_actor:item_in_slot(11):section() == p[1] end
Не сработало. Что нужно сделать, чтобы когда ты переносишь предмет в ячейку шлема, пси-излучение на янтаре и радаре тебя не трогало? Вот на всякий случай файл yantar_psi_radiotion_55.ltx из CoC:
Значит плохо пробовали, нахождение имени предмета в этой секции не только сигнал death_manager.script не удалять предмет из инвентаря трупа, но и сигнал release_body_manager.script не удалять труп с таким предметом. AlexeyAlexey, Этот код прекрасно работает, если помнить что в ЗП слот шлема 12:
Код
-- true если у актора одет шлем указанной секции function actor_wear_helmet(actor, npc, p) return p[1] ~= nil and actor:object( p[1] ) ~= nil and actor:item_in_slot(12) ~= nil and actor:item_in_slot(12):section() == p[1] end
Сообщение отредактировал denis2000 - Пятница, 16.03.2018, 21:09
denis2000, _S_k_i_F_, спасибо за ответ. Отключены лишь иконки, а это хорошо. Можно значит включить. Тогда еще один вопрос по части gui. Вот вывожу я сообщение через news_manager. И вижу, что сообщение слишком мелкое. И иконка и текст. Сам я не нашел где править. Надеюсь, кто-нибудь знает. И надеюсь правки нужно делать не в движке
Добро. Хотел создать возможность отображения артефактов в аномалии путём наведения курсора на локацию (то же самое, что и на Юпитере по заданию учёных). Но не работает. Делал и так и эдак, а список артефактов всё равно не появлялся. Делаю на новой локации, делал по абсолютной аналогии. Сейчас предоставлю конечный вариант моих попыток, который мне необходим к результату:
Код
local change_objects_tbl = { {target = "a6_esc_anomal_zone_sr", hint = "esc_a6_anomal_zone_name", zone = "esc_a6_gravitational_anomal_zone", enabled = "{+esc_a6_anomal_scanner_good_work} true, false"}, {target = "esc_a23_anomaly_zone_sr", hint = "esc_a23_anomaly_zone_sr_name", zone = "esc_a23_gravitational_anomal_zone", enabled = "{+esc_a23_anomal_scanner_good_work} true, false"},
}
И
Код
function change_anomalies_names() if level.name() ~= "l01_escape" then return end for k,v in pairs(change_objects_tbl) do if v.enabled then local obj_id = get_story_object_id(v.target) if (obj_id) and (level.map_has_object_spot(obj_id, "primary_object") ~= 0) then level.map_remove_object_spot(obj_id, "primary_object") end local hint = game.translate_string(v.hint).."\\n".." \\n" local has_af = false local af_table = {} has_af, af_table = xr_conditions.anomaly_has_artefact(db.actor, nil, {v.zone}) if has_af then hint = hint..game.translate_string("st_jup_b32_has_af") for k,v in pairs(af_table) do hint = hint.."\\n"..game.translate_string("st_"..v.."_name") end else hint = hint..game.translate_string("st_jup_b32_no_af") end if (obj_id) and level.map_has_object_spot(obj_id, "primary_object") == 0 then level.map_add_object_spot(obj_id, "primary_object", hint) end end end end
Редактировал только скрипт pda.
Добавлено (17.03.2018, 07:20) --------------------------------------------- alanbrose, вот логика Лоцмана: gamedata\configs\scripts\jupiter\zat_b215_stalker_guide_jupiter Создай дополнительную секцию логику с walk, где бы Лоцман шагал сначала по координатам, а по достижении финальной точки переходил в анимпоинт. В way: wp00|sig=final В логике: on_signal = final | переход на логику.
{target = "yan_north_anomal_spot", hint = "yan_north_anomal_spot_name", zone = "yan_anomal_zone_3", group = "yan_scaner_1_clicked_2", enabled = false},
yan_scaner_1_clicked_2 - поршень после которого отображать артефакты в аномалии yan_anomal_zone_3 - имя аномальной зоны А ф-ция change_anomalies_names() такая:
Код
function change_anomalies_names() if has_alife_info("red_lesnik_start_dialog") then -- любой поршень который будет выдан в начале игры for k,v in pairs(change_objects_tbl) do if has_alife_info(v.group) and not v.enabled then v.enabled = true end end end for k,v in pairs(change_objects_tbl) do if v.enabled then local obj_id = get_story_object_id(v.target) if (obj_id) and (level.map_has_object_spot(obj_id, "primary_object") ~= 0) then level.map_remove_object_spot(obj_id, "primary_object") end local hint = game.translate_string(v.hint).."\\n".." \\n" local has_af = false local af_table = {} has_af, af_table = xr_conditions.anomaly_has_artefact(db.actor, nil, {v.zone}) if has_af then hint = hint..game.translate_string("st_jup_b32_has_af") for k,v in pairs(af_table) do hint = hint.."\\n"..game.translate_string("st_"..v.."_name") end else hint = hint..game.translate_string("st_jup_b32_no_af") end if (obj_id) and level.map_has_object_spot(obj_id, "primary_object") == 0 then level.map_add_object_spot(obj_id, "primary_object", hint) end end end end