Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
XRay 15 Опубликовано 6 октября, 2020 Цитата Igor_Misery Ошибочка, не aim, а iam. И af_iam тоже контейнер, а не артефакт. У них нету absorbation и не быть не должно. Должно, эти контейнеры работают как артефакты, только у контейнеров с "артефактами" указывается класс SCRPTART, поэтому секция "absorbation" должна быть. Спойлер [af_aac]:af_base $spawn = "artefacts\af_aac" class = II_ANTIR visual = dynamics\equipments\item_aac inv_name = st_af_aac_name inv_name_short = st_af_aac_name description = st_af_aac_descr inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 0 inv_grid_y = 30 cost = 10000 inv_weight = 1.0 belt = false jump_height = 0.0 af_rank = 0 eat_health = 0 eat_satiety = 0 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = 1 hit_absorbation_sect = af_aac_absorbation <============== Название секции. artefact_activation_seq = af_activation_bold ;particles = artefact\af_thermal_idle det_show_particles = artefact\af_thermal_show det_hide_particles = artefact\af_thermal_hide particles_bone = joint2 lights_enabled = false trail_light_color = 0.9,0.4,0.2 trail_light_range = 2.0 attach_angle_offset = 1.922,1.551,-0.740 attach_position_offset = 0.15,0.002,0.25 attach_bone_name = bip01_r_hand auto_attach = false ;скорости увеличения (уменьшения) health_restore_speed = 0 radiation_restore_speed = 0 satiety_restore_speed = 0 power_restore_speed = 0 bleeding_restore_speed = 0 [af_aac_absorbation] <======================= Сама секция. burn_immunity = 0 strike_immunity = 0 shock_immunity = 0 wound_immunity = 0 radiation_immunity = 0 telepatic_immunity = 0 chemical_burn_immunity = 0 explosion_immunity = 0 fire_wound_immunity = 0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Misery 433 Опубликовано 7 октября, 2020 Такс, ну я кое-что поменял теперь нету вылета. Но есть другая проблема. Я ничего не могу класть в контейнер, нету кнопки действия, хоть у меня есть скрипт, отвечающий за это. Clear Sky: Gunslinger Addon Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 8 октября, 2020 Как округлять число в send_tip? Нужно показать всего лишь десятичную дробь с разрядом до тысячных. Миллионных и десятитысячных мне не нужно. Вызываю функцию:local lc = actor:object("device_torch"):condition() * 100 news_manager.send_tip(db.actor, batt_cond..tostring(lc).."%.", nil, "noise_icon", 4085, nil) При получении сообщения появляется очень длинная десятичная дробь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 945 Опубликовано 9 октября, 2020 (изменено) Winzor -- Объявление функции (дополняет библиотеку math) ОКРУГЛЯЕТ ЧИСЛО ДО УКАЗАННОЙ ТОЧНОСТИ math.round = function(num, idp) local mult = 10^(idp or 0) return math.floor(num * mult + 0.5) / mult end --Использование функции math.round(3.27893, 2) -- должно вернуть 3.28 Изменено 9 октября, 2020 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 9 октября, 2020 denis2000 Получается вот это, и если вызывать число с помощью tostring(..) то будет тоже самое: Спойлер Вызов: local lc = actor:object("device_torch"):condition() * 100 news_manager.send_tip_no_sound(db.actor, batt_cond..math.round(lc, 2).."%.", nil, "noise_icon", 4085, nil) Нужно как-то убрать числа находящиеся после второго ноля. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 496 Опубликовано 9 октября, 2020 Один из извращённых способов, но рабочий: local number = 2.62243242351 local new_string = string.sub(tostring(number), 1, 4) -- отрубаем от строки первые 4 символа В строке new_string будет 2.62. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 945 Опубликовано 9 октября, 2020 Winzor Так вам же не округление нужно, а форматирование строки! Пробуйте так: news_manager.send_tip(db.actor, batt_cond..string.format("%.2f", lc).."%.", nil, "noise_icon", 4085, nil) 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kirasir8 0 Опубликовано 9 октября, 2020 Всем привет. Извините если не туда пишу. При загрузке сохранялки в конце загрузки происходит вылет. Подскажите как решить проблемму. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 9 октября, 2020 17 минут назад, kirasir8 сказал: Всем привет. Извините если не туда пишу. При загрузке сохранялки в конце загрузки происходит вылет. Подскажите как решить проблемму. Очень много причин для возникновения этой проблемы. В какой мод играете? Лог вылета? Все сейвы ломаются или только определённый? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kirasir8 0 Опубликовано 9 октября, 2020 Мод Аномали. Ошибки не выдает. Игра грузится до определенного момента и затем без обьяснений вылетает. Рабочий стол пуст сведений почему так происходит нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 945 Опубликовано 9 октября, 2020 kirasir8 С такими проблемами обращаются к разработчику мода! Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 10 октября, 2020 Существует ли возможность правильно реализовать боевые смарт-каверы? Обычно происходит вылет при появлении НПС поблизости от них Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 10 октября, 2020 1 час назад, Gerbys сказал: Существует ли возможность правильно реализовать боевые смарт-каверы? Сначала нужно понять, что боевые смарт-каверы в ЗП, впрочем как и в ЧН, используются разрабами для "картинки" баталий. НПС якобы ведут бой. На самом деле они всего лишь отыгрывают анимацию, при полном отключении ИИ ведения боя. По-русски - НПС просто, например, ложится, достает пушку и стреляет... в никуда. "Картинка" ведения боя НПС вроде как приемлемая, только толку от этой стрельбы НПС никакого. Зато красиво! Для более сносного ведения боя с использованием смарт-каверов, без правок движка, я в логике НПС скриптами назначал НПС боевой смарт кавер, при появлении врага, плюс правил саму схему поведения НПС в смарт каверах. На апдейте постоянно вычислялся враг и происходил разворот НПС в смарт кавере в пределах сектора стрельбы. Вот только тогда НПС стал "попадать" во врага, а не изображать ведение боя. И ещё, НПС, использующие движковый бой, ВСЕГДА валят НПС, которые используют боевые смарт каверы. 1 3 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
0ouch 143 Опубликовано 10 октября, 2020 (изменено) makdm, эти каверы больше предназначены для красивых кат-сцен (как в госпитале/на ЧАЭС в приквеле), нежели реальных боевых действий. Хотя я и сам до определенного момента не знал, что НПС в них, оказывается, не могут адекватно наносить урон, несмотря на присутствие в СДК галочки "can fire" при их установке. Но! Разве в ЗП боевые смарт-каверы вообще работают? Насколько я помню, игра либо вообще крашит, если они есть на локации, либо просто ничего не происходит, поэтому их надо восстанавливать. Возможно, конечно, я неправильно их как-то ставил. Поправьте меня, если я не прав. Изменено 10 октября, 2020 пользователем Stgs Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 10 октября, 2020 На декомпилированной Припяти обнаружил целую кучу этих самых боевых смарт каверов. Попробовал на своей локации поставить по аналогии, такие же настройки выставил в смарт кавере - игра крашится при приближении НПС к каверу Дополнено 0 минут спустя 20 минут назад, makdm сказал: Для более сносного ведения боя с использованием смарт-каверов, без правок движка, я в логике НПС скриптами назначал НПС боевой смарт кавер, при появлении врага, плюс правил саму схему поведения НПС в смарт каверах. На апдейте постоянно вычислялся враг и происходил разворот НПС в смарт кавере в пределах сектора стрельбы. Вот только тогда НПС стал "попадать" во врага, а не изображать ведение боя. Метод крутой! Но реализовывать наверное долго... Дополнено 1 минуту спустя Хотя бы просто сделать попробовать стандартные работающие "для картинки" Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 10 октября, 2020 10 минут назад, Stgs сказал: Разве в ЗП боевые смарт-каверы вообще работают? По умолчанию при ведении НПС боевых действий не работают. Принудительно - работают на Ура! 8 минут назад, Gerbys сказал: Но реализовывать наверное долго... Файл xr_smartcoverscript В методе check_target() после строки elseif self.st.target_enemy ~= nil then пишем Спойлер self.target_condlist = xr_logic.parse_condlist( object, self.st.active_section, "target_enemy", self.st.target_enemy ) self.target_object = xr_logic.pick_section_from_condlist( db.actor, object ,self.target_condlist ) if self.target_object == "best_enemy" then self.target_enemy_id = object:best_enemy() and object:best_enemy():id() else self.target_enemy_id = get_story_object( self.target_object ) and get_story_object( self.target_object ):id() end В методе execute() после строки self:check_target_selector() пишем Спойлер if self.st.target_enemy ~= nil then self.target_object = xr_logic.pick_section_from_condlist( db.actor, self.object ,self.target_condlist ) if self.target_object == "best_enemy" then self.target_enemy_id = self.object:best_enemy() and self.object:best_enemy():id() else self.target_enemy_id = get_story_object( self.target_object ) and get_story_object( self.target_object ):id() end if self.target_enemy_id ~= nil then local target = level.object_by_id( self.target_enemy_id ) if target and target:alive() then self.object:set_smart_cover_target( target ) self.fire_pos = target:position() end end end В логике НПС пишем Спойлер [smartcover@stalker_1] cover_name = val_a10_smartcover_4 use_in_combat = true cover_state = fire_target target_enemy = best_enemy meet = no_meet Где val_a10_smartcover_4 - это имя боевого смарт кавера. 1 2 1 1 1 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 10 октября, 2020 3 минуты назад, makdm сказал: В логике НПС пишем Логика (Скрыть контент) [smartcover@stalker_1] cover_name = val_a10_smartcover_4 use_in_combat = true cover_state = fire_target target_enemy = best_enemy meet = no_meet Где val_a10_smartcover_4 - это имя боевого смарт кавера. Ок, тогда придется возвращаться к старой проблеме - сколько не пытался, не удавалось логику НПС создать, не видит её упорно, уже кучу уроков давно смотрел, потом забил в итоге... Надо снова пробовать, самое интересное, что тут даже ошибок никаких не выдаёт, просто НПС пофиг на логику прописанную Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 10 октября, 2020 makdm А есть дополнение к посту, что нужно ещё поправить в движке для улучшенной работы? Или этого достаточно? 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 10 октября, 2020 Немного другой вопрос ещё есть. Сделал новую локацию, поставил первый смарт-террейн (не кавер) - при разных попытках заспавнить в нём сквад такой вылет: Спойлер User Message: ---------------------------------------- Expression : !m_error_code Function : raii_guard::~raii_guard File : ..\xrServerEntities\script_storage.cpp Line : 748 Description : ...all of pripyat\gamedata\scripts\smart_terrain.script:1139: attempt to perform arithmetic on field 'arrive_dist' (a nil value) Раньше подобного не наблюдалось на другой локации Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 672 Опубликовано 10 октября, 2020 (изменено) 13 минут назад, Winzor сказал: Или этого достаточно? Алгоритм примерно такой: 1. Вычисляем есть ли рядом с нпс боевой смарт кавер 2. Вычисляем находится ли враг в секторе стрельбы из смарт кавера 3. Если все истина, то занимаем смарт кавер и ведем бой 4. Если враг убит и нет других врагов в секторе стрельбы, то покидаем смарт кавер 5. Если враг ушел из сектора стрельбы - покидаем смарт кавер или выбираем другой 6. Враг приблизился на расстояние ( ??? ) - покидаем смарт кавер или выбираем другой Это приблизительный алгоритм. В процессе тестирования могут возникнуть и другие нюансы Изменено 10 октября, 2020 пользователем makdm 5 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 945 Опубликовано 10 октября, 2020 52 минуты назад, Gerbys сказал: при разных попытках заспавнить в нём сквад такой вылет Настройки смарта приводите. Дополнено 2 минуты спустя 54 минуты назад, Gerbys сказал: smart_terrain.script:1139: attempt to perform arithmetic on field 'arrive_dist' (a nil value) Говорит о том, что параметр смарта arrive_dist оказался nil вместо числа. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gerbys 7 Опубликовано 10 октября, 2020 (изменено) 31 минуту назад, denis2000 сказал: Настройки смарта приводите. В game_graphs прописан, .ltx файл создан Изменено 10 октября, 2020 пользователем Gerbys Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 10 октября, 2020 Как называется файл с анимацией камеры ГГ, которая используется в момент атаки бюрера? В момент атаки выносливость ГГ становится маленькая и возможно выпадает оружие из рук. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 945 Опубликовано 10 октября, 2020 4 часа назад, Winzor сказал: Как называется файл с анимацией камеры ГГ, которая используется в момент атаки бюрера? Это не анимация - это эффектор действующий в том числе и на камеру ГГ m_burer_attack_effector. Дополнено 0 минут спустя Gerbys Содержимое tt_base_1.ltx засекречено? Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
санек2005 3 Опубликовано 10 октября, 2020 люди, как создать lua функцию, которая будет "работать в фоне"? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты