Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 625 Опубликовано 20 октября Знающие люди, подскажите, какие параметры в конфиге отвечают за пси-атаку контроллера в ЗП (с приближением экрана), ну за расстояние, с которого он может её делать и т. д. Если такие есть, конечно (у других монстров вроде есть для всех их уникальных атак) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
andreyholkin 109 Опубликовано 20 октября (изменено) Mawrak , там движково. Это не расстояние, а интервал от и до в поле зрения. Точно не помню как. Пси аура заканчивается и в следующем радиусе ближе к монстру. Изменено 21 октября пользователем andreyholkin 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 625 Опубликовано 21 октября andreyholkin посмотрел в движке, судя по всему берется параметр "tube_condition_min_distance" в конфиге. Спасибо за наводку! 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 292 Опубликовано 21 октября Neptun Как должна выглядеть схема companion@1? В документации по SDK про неё ни слова, а один хороший сайт со всеми логиками закрыли Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 309 Опубликовано 21 октября Skala Есть у меня .pdf файл, в котором похоже всё про логику с того сайта находится, но там не вижу ни слова про xr_companion. https://drive.google.com/file/d/1I6U8WMAtGpRGqRtlflu0I1ciqauPXrEz/view?usp=sharing Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 21 октября (изменено) Skala xr_companion не имеет встроенных параметров! И соответственно не может настраиваться из логики - это тот минус о котором я говорил. Изменено 21 октября пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 292 Опубликовано 21 октября Prostomod denis2000 Это печально Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 21 октября (изменено) Skala А чего специфического вам может понадобиться? Эта логика заставляет НПС идти, бежать или рашить в строну ГГ в стандартных состояниях движения. Изменено 21 октября пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 292 Опубликовано 21 октября denis2000 Мне и нужно, чтобы нпс в отряде бежали к игроку и стреляли. Если вы в call of duty играли, то должны понять, что я имею в виду. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 21 октября (изменено) Skala Ну так они и будут это даелать. Пока не видят врага, бегут с оружием, подбежав на дистанцию боя и заметив противника, начнут стрелять и стрейфиться, поскольку перейдут в состояние боя. Изменено 21 октября пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 292 Опубликовано 21 октября denis2000 Так а в логику сквада её как прописать? Я это не понимаю. Просто [companion@1], или к этой секции ещё какие-то приписки есть? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 21 октября (изменено) Skala Я же говорю: нет никаких доп параметров. База такая: [logic@***_1] suitable = {=target_squad_name(***)} true prior = 200 active = companion@1 [companion@1] [logic@***_2] suitable = {=target_squad_name(***)} true prior = 200 active = companion@2 [companion@2] ..... Изменено 21 октября пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
нн здесь 1 Опубликовано 22 октября (изменено) Очень тупой вопрос хочу задать, но нигде не нашёл рабочего решения. Каким способом можно заспавнить аномалию (мину) через Спейс рестриктор. Понятно, что нужно внести функцию в xr_effects, но вопрос касается самой функции, потому что все, что мне удалось найти, либо просто не работает, либо вызывает вылеты. Enable функция тоже не работает корректно конкретно для мин. =spawn_object, понятное дело, также не работает. Отдельно партиклы спавнить не вариант. Может быть есть знающие люди, а то я второй день голову ломаю. Изменено 22 октября пользователем нн здесь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 22 октября нн здесь Ищите спавн аномалий скриптом. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 22 октября @нн здесь, такое не прокатит? function spawn_minefield() local obj = alife():create("zone_mine_field", vector():set(105.76, 12.17, -45.00), db.actor:level_vertex_id() , db.actor:game_vertex_id() ) end Только я не помню, как в ЗП секция мины называлась. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
нн здесь 1 Опубликовано 22 октября 36 минут назад, Hrust сказал: @нн здесь, такое не прокатит? function spawn_minefield() local obj = alife():create("zone_mine_field", vector():set(105.76, 12.17, -45.00), db.actor:level_vertex_id() , db.actor:game_vertex_id() ) end Только я не помню, как в ЗП секция мины называлась. [error]Expression : assertion failed [error]Function : CCustomZone::CalcDistanceTo [error]File : F:\ 2.5.40\SourcesAXR\xrGame\CustomZone.cpp [error]Line : 1561 [error]Description : nearest_s Впринципе так же как и прошлые способы выдает. Никогда с таким ранее не сталкивался Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 22 октября @нн здесь, ладно, это ассерт по неназначенному шейпу, можно сделать аномалию через сдк со стейтом disabled и в нужный момент включить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ayden 110 Опубликовано 22 октября Как сделать рестриктор, чтобы он мгновенно убивал ГГ при входе в него? Эх, Самара- городок, ветер северный, отожрал я себе пузо, как беременный.:) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 951 Опубликовано 22 октября (изменено) Hrust нн здесь Просто спавна не достаточно. Нужно через правку нетпакета прописать недостающие параметры. Спойлер function create_anomalies(section,rad_anom,x,y,z,lv,gv,mode) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) packet:w_s32(on_off_mode_enabled_time) packet:w_s32(on_off_mode_disabled_time) packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode == nil then packet:w_u8(last_spawn_time_present) end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end Изменено 22 октября пользователем denis2000 2 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 22 октября @Ayden, в файле логики рестриктора: [logic] active = sr_idle@kill_actor [sr_idle@kill_actor] on_actor_inside = sr_idle@nil %=kill_actor% [sr_idle@nil] В xr_effects: function kill_actor(actor, npc) db.actor:kill(db.actor) end 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ishps 8 Опубликовано 22 октября (изменено) Доброго вечера! Не знаю в правильный ли топик обратился, вопрос больше по anomaly, но я думаю что вопрос имеет много общего с COP. Вообщем есть функция Спойлер function how_much_repair( item_name, item_condition ) local cost = ini_sys:r_u32(item_name, "cost") local class = ini_sys:r_string_ex(item_name, "class") local cof = game_difficulties.get_eco_factor("repair") or 3.67 --return math.floor( cost * math.pow(1 - item_condition , 3.63) ) return math.floor( cost * (1 - item_condition) * 3 ) -- CoP formula end Нужно что бы скрипт расчитал цену определенным образом, но никак не могу понять как это сделать, в скриптах вообще не ало. Нужно что бы цена расчитавалась, что бы ниже определенного процента состояния предмета, цена увеличивалась например в 3 раза, а больше определенного состояния процента оставалась х1 скажем. Ну например у брони состояние больше 80% - цена х1, меньше 80% - цена х3. Или другой вариант, что ниже определенного процента невозможно будет отремонтировать. Прошу помощи, не вдупляю как это сделать вообще. Изменено 22 октября пользователем ishps Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 292 Опубликовано 22 октября (изменено) Возникла такая проблема, что начиная с этих сквадов игра вылетает: Спойлер ;ТРЕТЬЯ ВОЛНА [dolg_third_wave_1_squad]:online_offline_group faction = dolg relationship = enemy npc = sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4 target_smart = final_fight spawn_point = final_fight_1_spawn_point [dolg_third_wave_2_squad]:online_offline_group faction = dolg relationship = enemy npc = sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4 target_smart = final_fight spawn_point = final_fight_3_spawn_point [dolg_third_wave_3_squad]:online_offline_group faction = dolg relationship = enemy npc = sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4 target_smart = final_fight spawn_point = final_fight_2_spawn_point [dolg_third_wave_4_squad]:online_offline_group faction = dolg relationship = enemy npc = sim_default_duty_3, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4 target_smart = final_fight spawn_point = final_fight_1_spawn_point [dolg_third_wave_5_squad]:online_offline_group faction = dolg relationship = enemy npc = sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4 target_smart = final_fight spawn_point = final_fight_3_spawn_point Спойлер ! [LUA] SCRIPT RUNTIME ERROR [LUA] Error: [string "smart_terrain"]:586: attempt to index local 'job_data' (a nil value) FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : C:\Users\Dmitry\ixray-1.6-stcop\src\xrScripts\script_storage.cpp [error]Line : 533 [error]Description : see call_stack for details! stack trace: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : C:\Users\Dmitry\ixray-1.6-stcop\src\xrScripts\script_engine.cpp [error]Line : 61 [error]Description : <no expression> [error]Arguments : LUA error: [string "smart_terrain"]:586: attempt to index local 'job_data' (a nil value) stack trace: ! [LUA] SCRIPT RUNTIME ERROR [LUA] Error: [string "smart_terrain"]:586: attempt to index local 'job_data' (a nil value) Сначала думал, что это из-за того, что у меня в строчке npc_in_squad было значение 6, 8. Я думал, что может движок не поддерживает такое, потому что всегда видел значение 3, 5. Но нет, вылет не изчез. Ещё у меня до этих сквадов спавнится 7 сквадов по 5-6 нпс, т.е. суммарно выходит 35-40 нпс, и возможно есть какое-то ограничение, в которое упирется движок, но к моменту спавна третьей волны те нпс уже были мертвы. Изменено 22 октября пользователем Skala Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 520 Опубликовано 22 октября 12 минут назад, ishps сказал: Ну например у брони состояние больше 80% - цена х1, меньше 80% - цена х3. function how_much_repair( item_name, item_condition ) local cost = ini_sys:r_u32(item_name, "cost") local class = ini_sys:r_string_ex(item_name, "class") local cof = game_difficulties.get_eco_factor("repair") or 3.67 local final_cost = cost if item_condition <= 0.8 then final_cost = cost * 3 end --return math.floor( cost * math.pow(1 - item_condition , 3.63) ) return math.floor(final_cost * (1 - item_condition) * 3) -- CoP formula end От балды накинул такое, можно и алгебраическую прогрессию сделать, но это матан подучить стоит. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ishps 8 Опубликовано 22 октября Hrust Огромное спасибо! Очень выручил! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 23 октября Skala проблема в логике нпс Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты