Overf1rst 1 486 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 18 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 559 Опубликовано Воскресенье в 21:16 Знающие люди, подскажите, какие параметры в конфиге отвечают за пси-атаку контроллера в ЗП (с приближением экрана), ну за расстояние, с которого он может её делать и т. д. Если такие есть, конечно (у других монстров вроде есть для всех их уникальных атак) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
andreyholkin 88 Опубликовано Воскресенье в 21:35 (изменено) Mawrak , там движково. Это не расстояние, а интервал от и до в поле зрения. Точно не помню как. Пси аура заканчивается и в следующем радиусе ближе к монстру. Изменено Понедельник в 01:14 пользователем andreyholkin 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 559 Опубликовано Понедельник в 01:34 andreyholkin посмотрел в движке, судя по всему берется параметр "tube_condition_min_distance" в конфиге. Спасибо за наводку! 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 217 Опубликовано Понедельник в 12:50 Neptun Как должна выглядеть схема companion@1? В документации по SDK про неё ни слова, а один хороший сайт со всеми логиками закрыли Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Prostomod 1 264 Опубликовано Понедельник в 12:55 Skala Есть у меня .pdf файл, в котором похоже всё про логику с того сайта находится, но там не вижу ни слова про xr_companion. https://drive.google.com/file/d/1I6U8WMAtGpRGqRtlflu0I1ciqauPXrEz/view?usp=sharing Мод в разработке - X-7: Эпицентр Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 910 Опубликовано Понедельник в 13:03 (изменено) Skala xr_companion не имеет встроенных параметров! И соответственно не может настраиваться из логики - это тот минус о котором я говорил. Изменено Понедельник в 13:04 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 217 Опубликовано Понедельник в 13:05 Prostomod denis2000 Это печально Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 910 Опубликовано Понедельник в 13:08 (изменено) Skala А чего специфического вам может понадобиться? Эта логика заставляет НПС идти, бежать или рашить в строну ГГ в стандартных состояниях движения. Изменено Понедельник в 13:12 пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 217 Опубликовано Понедельник в 13:10 denis2000 Мне и нужно, чтобы нпс в отряде бежали к игроку и стреляли. Если вы в call of duty играли, то должны понять, что я имею в виду. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 910 Опубликовано Понедельник в 13:15 (изменено) Skala Ну так они и будут это даелать. Пока не видят врага, бегут с оружием, подбежав на дистанцию боя и заметив противника, начнут стрелять и стрейфиться, поскольку перейдут в состояние боя. Изменено Понедельник в 13:17 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 217 Опубликовано Понедельник в 13:23 denis2000 Так а в логику сквада её как прописать? Я это не понимаю. Просто [companion@1], или к этой секции ещё какие-то приписки есть? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 910 Опубликовано Понедельник в 13:51 (изменено) 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] ..... Изменено Понедельник в 13:52 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
нн здесь 1 Опубликовано Вторник в 11:52 (изменено) Очень тупой вопрос хочу задать, но нигде не нашёл рабочего решения. Каким способом можно заспавнить аномалию (мину) через Спейс рестриктор. Понятно, что нужно внести функцию в xr_effects, но вопрос касается самой функции, потому что все, что мне удалось найти, либо просто не работает, либо вызывает вылеты. Enable функция тоже не работает корректно конкретно для мин. =spawn_object, понятное дело, также не работает. Отдельно партиклы спавнить не вариант. Может быть есть знающие люди, а то я второй день голову ломаю. Изменено Вторник в 11:53 пользователем нн здесь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 910 Опубликовано Вторник в 12:08 нн здесь Ищите спавн аномалий скриптом. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 497 Опубликовано Вторник в 12:20 @нн здесь, такое не прокатит? 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 Опубликовано Вторник в 12:57 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 497 Опубликовано Вторник в 13:01 @нн здесь, ладно, это ассерт по неназначенному шейпу, можно сделать аномалию через сдк со стейтом disabled и в нужный момент включить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ayden 74 Опубликовано Вторник в 13:16 Как сделать рестриктор, чтобы он мгновенно убивал ГГ при входе в него? Это контролёр? Это псевдогигант? А, это моя бывшая. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 910 Опубликовано Вторник в 13:17 (изменено) 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 Изменено Вторник в 13:18 пользователем denis2000 2 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 497 Опубликовано Вторник в 13:24 @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 Опубликовано Вторник в 20:11 (изменено) Доброго вечера! Не знаю в правильный ли топик обратился, вопрос больше по 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. Или другой вариант, что ниже определенного процента невозможно будет отремонтировать. Прошу помощи, не вдупляю как это сделать вообще. Изменено Вторник в 20:20 пользователем ishps Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Skala 217 Опубликовано Вторник в 20:15 (изменено) Возникла такая проблема, что начиная с этих сквадов игра вылетает: Спойлер ;ТРЕТЬЯ ВОЛНА [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 нпс, и возможно есть какое-то ограничение, в которое упирется движок, но к моменту спавна третьей волны те нпс уже были мертвы. Изменено Вторник в 20:19 пользователем Skala Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hrust 497 Опубликовано Вторник в 20:31 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 Опубликовано Вторник в 21:00 Hrust Огромное спасибо! Очень выручил! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 879 Опубликовано вчера в 00:00 Skala проблема в логике нпс Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты