Overf1rst 1 499 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arkada 428 Опубликовано 28 сентября, 2021 ian98 Сформулируй вопрос... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 28 сентября, 2021 Да ладно вам, что никогда не сталкивались в играх с большими инвентаряси? В таких игра часто есть функция маркировки важных предметов, чтобы случайно их не продать или выкинуть - добавить в избранное Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hunter 2 508 Опубликовано 28 сентября, 2021 ian98 ты про какие-то особые рпг? Да и зачем это? Люди не складируют тонну предметов в рюкзачке. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 29 сентября, 2021 Hunter в сталкере-то? По-моему, именно в этой игре появилась такая дисциплина как трупотаскание, и это единственная игра, где я вообще видел такое. Не из-за огромного ли количества предметов это? Это по теме особых рпг. И, что, никто по ошибке никогда не терял нужный предмет из-за не очень удобного и откровенно забаганного инвентаря? Хотя бы скрипт, который бы запрещал проводить любое действие над предмет, пока не вытащить его из активного слота. Хоть я и не знаю точно как его написать, но подозреваю, что хотя бы так можно было бы сделать. Можно? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 29 сентября, 2021 (изменено) 11 часов назад, ian98 сказал: нажал на звездочку в оригинальном движке нет коллбека нажатия клавиш (в моддвижках есть), в контекстное меню не добавить пунктов (не знаю, есть ли на тч моддвижки с возможностью скриптами или конфигами их добавить, на зп есть кок) 35 минут назад, ian98 сказал: Хотя бы скрипт, который бы запрещал проводить любое действие над предмет, пока не вытащить его из активного слота можно попробовать запоминать предметы в слотах, и в коллбеке actor_binder:on_item_drop возвращать их обратно в инвентарь. На огср движке в external.ltx можно включить подсветку предметов, находящихся в слотах и на поясе (и запретить их продавать) Изменено 29 сентября, 2021 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 29 сентября, 2021 vader_33 Движок у меня самый обычный, не думал я об этом, а переносить уже не хочется. возвращать обратно в инвентарь это как будет выглядеть? И как это можно сделать) Вот у меня есть скрипт, полностью рабочий, но считает и забирает в итоге все предметы, даже, возможно, необходимые, что в слотах активных. Конечно, можно нужный предмет выложить из инвентаря перед активацией скрипта, но можно ли просто внести предметы в активных слотах в список исключений? Я даже примерно представляю как можно попробовать, хотя нет не очень, в общем я попытался так. Попытался в строке, где написано ВОТ ЗДЕСЬ.. -- 10 Предметов обычной редкости меняем на 1 предмет необычной редкости. function remove_random_common_final(npc, npz) local first_wpn_slot = 1 local second_wpn_slot = 2 local outfit_slot = 5 -- local sys_ini = system_ini() эти две строки, по-моему, вообще лишние -- local current_weapon_id = nil local important_objects = { -- Предметы, которые нужно сплавить. Их редкость "Обычный" [ "harmonica_a" ] = true, [ "guitar_a" ] = true,... } local tbl = {} db.actor:iterate_inventory( function( dummy, obj ) if (important_objects[ obj:section() ] and not db.actor:item_in_slot(first_wpn_slot) and db.actor:item_in_slot(second_wpn_slot) and db.actor:item_in_slot(outfit_slot)) then -- ВОТ ЗДЕСЬ Я ПОПЫТАЛСЯ УКАЗАТЬ НУЖНЫЕ УСЛОВИЯ, но неправильно. Работает не так как мне мечталось бы. table.insert( tbl, obj:id() ) end end ) if table.getn(tbl) < 10 then return end if table.getn(tbl) >= 10 then for i=1,10 do local rnd = math.random(1,#tbl) local sobj = alife():object(tbl[rnd]) if sobj then news_manager.relocate_item( db.actor, "out", sobj:section_name() ) alife():release( sobj, true ) table.remove(tbl, rnd) db.actor:give_info_portion("trade_completed") end end end local chance_weapon = 0.5 local chance_some = 0.5 if (math.random() < chance_weapon) then local reward_item_weapon = math.random(1,2) -- 1 случайный предмет, редкость которого Необычный if reward_item_weapon == 1 then dialogs.relocate_item_section(npc, "wpn_bm16_6", "in") end if reward_item_weapon == 2 then dialogs.relocate_item_section(npc, "wpn_bm16_7", "in") end if (math.random() > chance_some) then local reward_item_some = math.random(1,2) -- 1 случайный предмет, редкость которого Необычный if reward_item_some == 1 then dialogs.relocate_item_section(npc, "ammo_12x70_buck", "in") end if reward_item == 2 then dialogs.relocate_item_section(npc, "ammo_11.43x23_fmj", "in") end end end end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 29 сентября, 2021 (изменено) 41 минуту назад, ian98 сказал: а переносить уже не хочется перенести будет быстрее и проще, чем все эти изобретения костылей и велосипедов. Реально большинство проблем, которые вы тут за всё время писали, решаются огср движком, лучше потратить время и пересесть на него, а не жевать кактус. В коллбек on_item_drop уже передается объект, который убирается из инвентаря актора, не нужно инвентарь перебирать. Сохранить иды объектов в слотах, сравнить с идом предмета с коллбека, и если ид совпадает - или переносить или спавнить новый, смотря как он пропадает из инвентаря Изменено 29 сентября, 2021 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 29 сентября, 2021 (изменено) есть у кого информация по левел вертексам и гейм вертексам для всех оригинальных локаций в тч? Если нет, но знаете где посмотреть, где? Если это сдк, то подскажете как? Хотя бы намеками. Ой нафиг, спавнить нпс скриптом в больших количествах всегда черевато вылетом, или я это делаю кривым скриптом просто и неправильно вообще его вызываю?(висит на калбеке смерти нпс) Скрипт нашел в инете, выглядит вот так. Спойлер local level_vertexes={ l01_escape = {lvid=595499, gvid=1}, l02_garbage = {lvid=382663, gvid=252}, l03_agroprom = {lvid=437420, gvid=416}, l03u_agr_underground = {lvid=-1, gvid=703}, l04_darkvalley = {lvid=390124, gvid=811}, l04u_labx18 = {lvid=-1, gvid=1109}, l05_bar = {lvid=99538, gvid=1168}, l06_rostok = {lvid=67712, gvid=1308}, l07_military = {lvid=418267, gvid=1545}, l08_yantar = {lvid=141470, gvid=1438}, l08u_brainlab = {lvid=1, gvid=1529}, l10_radar = {lvid=227188, gvid=1862}, l10u_bunker = {lvid=-1, gvid=2661}, l11_pripyat = {lvid=261218, gvid=2117}, l12_stancia = {lvid=477922, gvid=2273}, l12_stancia_2 = {lvid=-1, gvid=2517}, l12u_sarcofag = {lvid=-1, gvid=2402}, l12u_control_monolith ={lvid=-1, gvid=2467} } local npc = { "mil_freedom_respawn_sniper", "agr_stalker_veteran", "agr_soldier_veteran", "agr_bandit_respawn_1", "pri_monolith_respawn_1", "gar_dolg_respawn_1", "rad_zombied_respawn_1", "yan_ecolog_respawn_1", "cit_killer_respawn_1", "agr_stalker_veteran", "agr_soldier_veteran", "agr_bandit_respawn_1", "pri_monolith_respawn_1", "gar_dolg_respawn_1", "rad_zombied_respawn_1", "yan_ecolog_respawn_1", "cit_killer_respawn_1", "snork_arena", "snork_indoor", "snork_outdoor", "snork_jumper", "psy_dog_radar", "psy_dog", "pseudodog_arena", "pseudodog_strong", "pseudodog_normal", "gigant_normal", "gigant_strong", "flesh_strong", "flesh_normal", "flesh_weak", "dog_strong", "dog_normal", "dog_weak", "boar_strong", "boar_normal", "boar_weak", "bloodsucker_mil", "bloodsucker_arena", "bloodsucker_strong", "bloodsucker_normal", "bloodsucker_weak" } function random_npc_spawn() local count = 1 local section = npc[math.random(table.getn(npc))] -- выбираем секцию моба local lv = math.random(level_vertexes[level.name()]["lvid"]) --выбираем левел вертекс local gv = level_vertexes[level.name()]["gvid"] --выбираем гэйм вертекс for ind = 1, count do alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса end end Изменено 29 сентября, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Бессмертный 2 Опубликовано 29 сентября, 2021 При попытке скомпилировать в СДК геометрию локации получаю вылет. Использую СДК 0.4. от Yara. Лог прикладываю. Спойлер [09/29/21 19:32:37] * Detected CPU: AuthenticAMD AMD Ryzen 5 2600 Six-Core Processor , F143/M8/S2 [09/29/21 19:32:37] * CPU Features: RDTSC, MMX, SSE, SSE2, SSE3, SSE4.1, SSE4.2 [09/29/21 19:32:37] [09/29/21 19:32:37] Initializing File System... [09/29/21 19:32:37] [09/29/21 19:32:37] !WARNING: not found file! [09/29/21 19:32:37] using fs-ltx fsgame.ltx [09/29/21 19:32:37] FS: 32870 files cached, 6273Kb memory used. [09/29/21 19:32:37] Init FileSystem 0.928224 sec [29.09.21 19:32:37.866] 'xrCore' build 7723, Mar 30 2020 [29.09.21 19:32:37.866] [29.09.21 19:32:37.885] Startup time: 19:32:37 [29.09.21 19:32:38.105] [29.09.21 19:32:38.105] * New phase started: Reading project [escape_1935]... [29.09.21 19:32:38.105] | | version: 17 [29.09.21 19:32:38.118] [29.09.21 19:32:38.118] * New phase started: Converting data structures... [29.09.21 19:32:38.118] | Vertices... [29.09.21 19:32:38.154] | | * vertices: 373696 [29.09.21 19:32:38.154] | Faces... [29.09.21 19:32:38.330] | | * faces: 663894 [29.09.21 19:32:38.330] | Models and References [29.09.21 19:32:38.331] | | * Loading model: 'levels\escape_1935\escape_1935_lod0000' - v(312/312), f(505/505) [29.09.21 19:32:38.344] DEBUG CONTEXT DUMP: [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] Unhandled exception stack trace: [29.09.21 19:32:38.344] [29.09.21 19:32:38.344] , memmove() [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.344] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe [29.09.21 19:32:38.345] 0x00000000006F0073 (0x00000000 0x00000000 0x00000000 0x00000000) xrLC.exe Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 29 сентября, 2021 ian98 вертексы можно посмотреть, например, в программе GraphViewer (там и схематично можно их посмотреть) 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
I am dead 1 182 Опубликовано 29 сентября, 2021 (изменено) ian98 Спойлер -- Здесь перечислены все интервалы game_vertex для каждого -- уровня. Можно не запуская игру смотреть, на каком уровне спавнится -- объект local game_vertexes = { l01_escape = { 0, 251 }, l02_garbage = { 252, 415 }, l03_agroprom = { 416, 702 }, l03u_agr_underground = { 703, 810 }, l04_darkvalley = { 811, 1108 }, l04u_labx18 = { 1109, 1167 }, l05_bar = { 1168, 1307 }, l06_rostok = { 1308, 1437 }, l08_yantar = { 1438, 1528 }, l08u_brainlab = { 1529, 1544 }, l07_military = { 1545, 1861 }, l10_radar = { 1862, 2116 }, l11_pripyat = { 2117, 2272 }, l12_stancia = { 2273, 2401 }, l12u_sarcofag = { 2402, 2466 }, l12u_control_monolith = { 2467, 2516 }, l12_stancia_2 = { 2517, 2660 }, l10u_bunker = { 2661, 2791 }, } -- кол-во левел вертексов на локации level_vertexes = { l01_escape = 595499, l02_garbage = 382663, l03_agroprom = 437421, l03u_agr_underground = 4932, l04_darkvalley = 390125, l04u_labx18 = 7581, l05_bar = 99539, l06_rostok = 67713, l07_military = 418268, l08_yantar = 141471, l08u_brainlab = 8008, l10_radar = 227189, l10u_bunker = 8821, l11_pripyat = 261219, l12_stancia = 477923, l12_stancia_2 = 264577, l12u_control_monolith = 3982, l12u_sarcofag = 10672, } Дополнено 7 минуты спустя 10 часов назад, ian98 сказал: но можно ли просто внести предметы в активных слотах в список исключений Делаешь проверку что это тот самый предмет и что этот предмет активен. Изменено 29 сентября, 2021 пользователем I am dead 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 29 сентября, 2021 vader_33 Будем посмотреть, что там за программка .I am dead ух, чую с этой простой проверкой придется пыхтеть будет завтра пару часов не меньше ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
I am dead 1 182 Опубликовано 29 сентября, 2021 11 минут назад, ian98 сказал: придется пыхтеть Думаешь? А мне кажется ты не прав... Спойлер local gun = db.actor:active_item() if gun and (gun:section() == "wpn_psy" or gun:section() == "wpn_laser") then тырыпыр и что должно произойти если активный предмет wpn_psy или wpn_laser end 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 30 сентября, 2021 I am dead пришлось. Не лезет она в тот скрипт, ну куда я ее не пихал. И с поршнями, и без, и в самый вверх, и по серединке, и вообще везде) Дошло уже до такого, когда понял, что все. Отчаялся пытаться. Спойлер -- переписать -- За предоставленный скрипт спасибо добрым людям (AP-PRO) -- 10 Предметов обычной редкости меняем на 1 предмет необычной редкости. function remove_random_common_final(npc, npz) local gun = db.actor:active_item() if db.actor and has_alife_info("trade_alert") then db.actor:disable_info_portion("trade_alert") end if gun and (gun:section() == "wpn_pm" or gun:section() == "wpn_pb" or gun:section() == "wpn_fort" or gun:section() == "wpn_pm_6" or gun:section() == "wpn_pm_7" or gun:section() == "wpn_pm_8" or gun:section() == "wpn_pm_9" or gun:section() == "wpn_pm_10" or gun:section() == "wpn_pm_11" or gun:section() == "wpn_pm_12" or gun:section() == "wpn_pm_13" or gun:section() == "wpn_pm_14" or gun:section() == "wpn_pb_6" or gun:section() == "wpn_pb_7" or gun:section() == "wpn_pb_8" or gun:section() == "wpn_pb_9" or gun:section() == "wpn_pb_10" or gun:section() == "wpn_pb_11" or gun:section() == "wpn_pb_12" or gun:section() == "wpn_pb_13" or gun:section() == "wpn_pb_14" or gun:section() == "wpn_fort_6" or gun:section() == "wpn_fort_7" or gun:section() == "wpn_fort_8" or gun:section() == "wpn_fort_9" or gun:section() == "wpn_fort_10" or gun:section() == "wpn_fort_12" or gun:section() == "wpn_fort_13" or gun:section() == "wpn_fort_11" or gun:section() == "wpn_fort_14") then db.actor:give_info_portion("trade_alert") local important_objects = { -- Предметы, которые нужно сплавить. Их редкость "Обычный" [ "harmonica_a" ] = true, [ "guitar_a" ] = true, [ "wpn_pm" ] = true, [ "wpn_pb" ] = true, [ "wpn_fort" ] = true, [ "wpn_pm_6" ] = true, [ "wpn_pm_7" ] = true, [ "wpn_pm_8" ] = true, [ "wpn_pm_9" ] = true, [ "wpn_pm_10" ] = true, [ "wpn_pm_11" ] = true, [ "wpn_pm_12" ] = true, [ "wpn_pm_13" ] = true, [ "wpn_pm_14" ] = true, [ "wpn_pb_6" ] = true, [ "wpn_pb_7" ] = true, [ "wpn_pb_8" ] = true, [ "wpn_pb_9" ] = true, [ "wpn_pb_10" ] = true, [ "wpn_pb_11" ] = true, [ "wpn_pb_12" ] = true, [ "wpn_pb_13" ] = true, [ "wpn_pb_14" ] = true, [ "wpn_fort_6" ] = true, [ "wpn_fort_7" ] = true, [ "wpn_fort_8" ] = true, [ "wpn_fort_9" ] = true, [ "wpn_fort_10" ] = true, [ "wpn_fort_12" ] = true, [ "wpn_fort_13" ] = true, [ "wpn_fort_14" ] = true, [ "wpn_fort_11" ] = true, [ "bread" ] = true, [ "kolbasa" ] = true, [ "conserva" ] = true, [ "vodka" ] = true, [ "bandage" ] = true } local tbl = {} db.actor:iterate_inventory( function( dummy, obj ) if (important_objects[ obj:section() ]) then table.insert( tbl, obj:id() ) end end ) if table.getn(tbl) < 10 then return end if table.getn(tbl) >= 10 and db.actor and has_alife_info("trade_alert") then return end if table.getn(tbl) >= 10 then for i=1,10 do local rnd = math.random(1,#tbl) local sobj = alife():object(tbl[rnd]) if sobj then news_manager.relocate_item( db.actor, "out", sobj:section_name() ) alife():release( sobj, true ) table.remove(tbl, rnd) db.actor:give_info_portion("trade_completed") end end end local chance_weapon = 0.5 local chance_some = 0.5 if (math.random() < chance_weapon) then local reward_item_weapon = math.random(1,41) -- 1 случайный предмет, редкость которого Необычный if reward_item_weapon == 1 then dialogs.relocate_item_section(npc, "wpn_bm16_6", "in") end if reward_item_weapon == 2 then dialogs.relocate_item_section(npc, "wpn_bm16_7", "in") end if reward_item_weapon == 3 then dialogs.relocate_item_section(npc, "wpn_bm16_8", "in") end if reward_item_weapon == 4 then dialogs.relocate_item_section(npc, "wpn_bm16_9", "in") end if reward_item_weapon == 5 then dialogs.relocate_item_section(npc, "wpn_bm16_10", "in") end if reward_item_weapon == 6 then dialogs.relocate_item_section(npc, "wpn_bm16_11", "in") end if reward_item_weapon == 7 then dialogs.relocate_item_section(npc, "wpn_bm16_12", "in") end if reward_item_weapon == 8 then dialogs.relocate_item_section(npc, "wpn_bm16_13", "in") end if reward_item_weapon == 9 then dialogs.relocate_item_section(npc, "wpn_bm16_14", "in") end if reward_item_weapon == 10 then dialogs.relocate_item_section(npc, "wpn_bm16", "in") end if reward_item_weapon == 11 then dialogs.relocate_item_section(npc, "wpn_beretta", "in") end if reward_item_weapon == 12 then dialogs.relocate_item_section(npc, "wpn_beretta_6", "in") end if reward_item_weapon == 13 then dialogs.relocate_item_section(npc, "wpn_beretta_7", "in") end if reward_item_weapon == 14 then dialogs.relocate_item_section(npc, "wpn_beretta_8", "in") end if reward_item_weapon == 15 then dialogs.relocate_item_section(npc, "wpn_beretta_9", "in") end if reward_item_weapon == 16 then dialogs.relocate_item_section(npc, "wpn_beretta_10", "in") end if reward_item_weapon == 17 then dialogs.relocate_item_section(npc, "wpn_beretta_11", "in") end if reward_item_weapon == 18 then dialogs.relocate_item_section(npc, "wpn_beretta_12", "in") end if reward_item_weapon == 19 then dialogs.relocate_item_section(npc, "wpn_beretta_13", "in") end if reward_item_weapon == 20 then dialogs.relocate_item_section(npc, "wpn_beretta_14", "in") end if reward_item_weapon == 21 then dialogs.relocate_item_section(npc, "wpn_mp5", "in") end if reward_item_weapon == 22 then dialogs.relocate_item_section(npc, "wpn_mp5_6", "in") end if reward_item_weapon == 23 then dialogs.relocate_item_section(npc, "wpn_mp5_7", "in") end if reward_item_weapon == 24 then dialogs.relocate_item_section(npc, "wpn_mp5_8", "in") end if reward_item_weapon == 25 then dialogs.relocate_item_section(npc, "wpn_mp5_9", "in") end if reward_item_weapon == 26 then dialogs.relocate_item_section(npc, "wpn_mp5_10", "in") end if reward_item_weapon == 27 then dialogs.relocate_item_section(npc, "wpn_mp5_11", "in") end if reward_item_weapon == 28 then dialogs.relocate_item_section(npc, "wpn_mp5_12", "in") end if reward_item_weapon == 29 then dialogs.relocate_item_section(npc, "wpn_mp5_13", "in") end if reward_item_weapon == 30 then dialogs.relocate_item_section(npc, "wpn_mp5_14", "in") end if reward_item_weapon == 31 then dialogs.relocate_item_section(npc, "grenade_rgd5", "in") end if reward_item_weapon == 32 then dialogs.relocate_item_section(npc, "wpn_walther", "in") end if reward_item_weapon == 33 then dialogs.relocate_item_section(npc, "wpn_walther_6", "in") end if reward_item_weapon == 34 then dialogs.relocate_item_section(npc, "wpn_walther_7", "in") end if reward_item_weapon == 35 then dialogs.relocate_item_section(npc, "wpn_walther_8", "in") end if reward_item_weapon == 36 then dialogs.relocate_item_section(npc, "wpn_walther_9", "in") end if reward_item_weapon == 37 then dialogs.relocate_item_section(npc, "wpn_walther_10", "in") end if reward_item_weapon == 38 then dialogs.relocate_item_section(npc, "wpn_walther_11", "in") end if reward_item_weapon == 39 then dialogs.relocate_item_section(npc, "wpn_walther_12", "in") end if reward_item_weapon == 40 then dialogs.relocate_item_section(npc, "wpn_walther_13", "in") end if reward_item_weapon == 41 then dialogs.relocate_item_section(npc, "wpn_walther_14", "in") end if (math.random() >= chance_some) then local reward_item_some = math.random(1,5) -- 1 случайный предмет, редкость которого Необычный if reward_item_some == 1 then dialogs.relocate_item_section(npc, "ammo_12x70_buck", "in") end if reward_item == 2 then dialogs.relocate_item_section(npc, "ammo_11.43x23_fmj", "in") end if reward_item == 3 then dialogs.relocate_item_section(npc, "energy_drink", "in") end if reward_item == 4 then dialogs.relocate_item_section(npc, "medkit", "in") end if reward_item == 5 then dialogs.relocate_item_section(npc, "antirad", "in") end db.actor:disable_info_portion("trade_alert") end end end end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
I am dead 1 182 Опубликовано 30 сентября, 2021 (изменено) ian98 омг, твой код сводится к нулю, ниже цитирую из за чего 2 часа назад, ian98 сказал: if table.getn(tbl) >= 10 and db.actor and has_alife_info("trade_alert") then return end Зачем? Ты вначале функции выдаешь поршень, далее у тебя идёт проверка на этот поршень - если он есть то нихера дальше не делать, то есть по русски говоря у тебя функция ниже цитируемой мной строчки не идёт. Дополнено 1 минуту спустя И это лишь часть того к чему можно поидраться. Непонятно кст зачем у тебя таблица внутри функции,. Дополнено 4 минуты спустя 2 часа назад, ian98 сказал: if gun and (gun:section() == "wpn_pm" or gun:section() == "wpn_pb" or gun:section() == "wpn_fort" or gun:section() == "wpn_pm_6" or gun:section() == "wpn_pm_7" or gun:section() == "wpn_pm_8" or gun:section() == "wpn_pm_9" or gun:section() == "wpn_pm_10" or gun:section() == "wpn_pm_11" or gun:section() == "wpn_pm_12" or gun:section() == "wpn_pm_13" or gun:section() == "wpn_pm_14" or gun:section() == "wpn_pb_6" or gun:section() == "wpn_pb_7" or gun:section() == "wpn_pb_8" or gun:section() == "wpn_pb_9" or gun:section() == "wpn_pb_10" or gun:section() == "wpn_pb_11" or gun:section() == "wpn_pb_12" or gun:section() == "wpn_pb_13" or gun:section() == "wpn_pb_14" or gun:section() == "wpn_fort_6" or gun:section() == "wpn_fort_7" or gun:section() == "wpn_fort_8" or gun:section() == "wpn_fort_9" or gun:section() == "wpn_fort_10" or gun:section() == "wpn_fort_12" or gun:section() == "wpn_fort_13" or gun:section() == "wpn_fort_11" or gun:section() == "wpn_fort_14") then Это вообще какой то страшный сон, почему бы просто не составить таблицу? Изменено 30 сентября, 2021 пользователем I am dead Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 30 сентября, 2021 I am dead я вообще планировал в будущем через классы отсеивать, вроде получалось, а про код-то я понимаю, что там бред полный. Я к этому пришел от отчаяния, пытаясь уже хоть как-нибудь, что иногда у меня получается. По началу я делал вот так if gun and (gun:section() == "wpn_pm" or gun:section() == "wpn_pb" or gun:section() == "wpn_fort" or gun:section() == "wpn_pm_6" or gun:section() == "wpn_pm_7" or gun:section() == "wpn_pm_8" or gun:section() == "wpn_pm_9" or gun:section() == "wpn_pm_10" or gun:section() == "wpn_pm_11" or gun:section() == "wpn_pm_12" or gun:section() == "wpn_pm_13" or gun:section() == "wpn_pm_14" or gun:section() == "wpn_pb_6" or gun:section() == "wpn_pb_7" or gun:section() == "wpn_pb_8" or gun:section() == "wpn_pb_9" or gun:section() == "wpn_pb_10" or gun:section() == "wpn_pb_11" or gun:section() == "wpn_pb_12" or gun:section() == "wpn_pb_13" or gun:section() == "wpn_pb_14" or gun:section() == "wpn_fort_6" or gun:section() == "wpn_fort_7" or gun:section() == "wpn_fort_8" or gun:section() == "wpn_fort_9" or gun:section() == "wpn_fort_10" or gun:section() == "wpn_fort_12" or gun:section() == "wpn_fort_13" or gun:section() == "wpn_fort_11" or gun:section() == "wpn_fort_14") then return end перед if table.getn(tbl) < 10 then return end Насчет таблицы не заморачивался особо, потому что скрипт не мой, мне его подарили, и работает он, и ладно в общем. Если речь, речь вообще о какой таблице? С удаляемыми предметами? Или эта проверка стала быть похожа уже на таблицу? Мне нужно все обьяснять в этих делах очень понятно, такое) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Manool 128 Опубликовано 30 сентября, 2021 ian98 Такую таблицу лучше составить - Спойлер local wpn_tbl = { [ "wpn_pm" ] = true, [ "wpn_pb" ] = true, -- продолжить таблицу... } if gun and wpn_tbl[ gun:section() ] then return end 13 минут назад, ian98 сказал: через классы отсеивать Вообще, такое действительно лучше по классам проверять 1 1 Объединённый Пак OGSR Engine Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Бессмертный 2 Опубликовано 30 сентября, 2021 При компиляции геометрии локации на средних настройках (драфт проходит нормально), на этапе Build UV mapping компилятор слетает. Использую x64 компилятор, СДК 0.4. от Policai. Фрагмент лога прячу под спойлер. Спойлер [30.09.21 23:23:38.385] | | ::compact:: 90 verts removed [30.09.21 23:23:38.390] | | ::compact:: 24 verts removed [30.09.21 23:23:38.396] | | ::compact:: 1660 verts removed [30.09.21 23:23:38.400] | | ::compact:: 288 verts removed [30.09.21 23:23:38.405] | | ::compact:: 32 verts removed [30.09.21 23:23:38.409] | | ::compact:: 8 verts removed [30.09.21 23:23:38.413] | | ::compact:: 8 verts removed [30.09.21 23:23:38.417] | | ::compact:: 112 verts removed [30.09.21 23:23:38.422] | | ::compact:: 224 verts removed [30.09.21 23:23:38.427] | | ::compact:: 212 verts removed [30.09.21 23:23:38.431] | | ::compact:: 317 verts removed [30.09.21 23:23:38.436] | | ::compact:: 194 verts removed [30.09.21 23:23:38.440] | | ::compact:: 171 verts removed [30.09.21 23:23:38.444] | | ::compact:: 188 verts removed [30.09.21 23:23:38.449] | | ::compact:: 80 verts removed [30.09.21 23:23:38.453] | | ::compact:: 296 verts removed [30.09.21 23:23:38.457] | | ::compact:: 146 verts removed [30.09.21 23:23:38.462] | | ::compact:: 647 verts removed [30.09.21 23:23:38.467] | | ::compact:: 258 verts removed [30.09.21 23:23:38.471] | | ::compact:: 6 verts removed [30.09.21 23:23:38.475] | | ::compact:: 14 verts removed [30.09.21 23:23:38.480] | | ::compact:: 384 verts removed [30.09.21 23:23:38.485] | | ::compact:: 1010 verts removed [30.09.21 23:23:38.491] | | model 'levels\escape_1935\escape_1935_lod0031' - REF_lighted. [30.09.21 23:23:38.491] | | model 'levels\escape_1935\escape_1935_lod0032' - 2 subdivisions [30.09.21 23:23:38.491] | | ...model 'levels\escape_1935\escape_1935_lod0032' - building collision [30.09.21 23:23:38.491] | | ::compact:: 834 verts removed [30.09.21 23:23:38.492] | | ...model 'levels\escape_1935\escape_1935_lod0032' - lighting [30.09.21 23:23:38.539] | | ::compact:: 7946 verts removed [30.09.21 23:23:38.548] | | ::compact:: 316 verts removed [30.09.21 23:23:38.552] | | ::compact:: 24 verts removed Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
xorda 2 Опубликовано 2 октября, 2021 С какими настройками нужно сохранять текстуры персонажей (из папки act), чтобы ничего не повредилось и не сломалось в игре? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Бессмертный 2 Опубликовано 3 октября, 2021 Скомпилировал локацию на средних настройках. Добавил растительность из AN3 с официального пака. Шейдеры, отсутствующие в оригинале, заменил по аналогии со стандартными моделями растительности. В итоге, в игре у деревьев (ивы, например) виден только ствол, а камыши вообще не видны. При этом актер проходит мимо них, что подтверждается характерным звуком. В чем может быть проблема? Не те шейдеры? Скриншоты из СДК и игры прикрепляю. Спойлер Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
oleg19966 296 Опубликовано 3 октября, 2021 xorda непрозрачные текстуры - DXT1, прозрачные - DXT5. 1 Внимание! Ищу любые фиксы/исправления для оригинального ТЧ. Спойлер Или людей, которые желают помочь с этим делом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 8 октября, 2021 Как можно отследить конкретный артефакт на поясе гг? Нужно как условие, я пробовал так if db.actor:item_in_slot(10) and db.actor:object("af_medusa") then Но не сработало Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 8 октября, 2021 (изменено) ian98 костылями только, в оригинале нет перебора пояса. Посмотрите в солянке, вроде скрипт называется inventory.script (щас солянок установленных нет, точно не подскажу). Если коротко - там используется особенность inventory_for_each, он не перебирает всё кучей как iterate_inventory, а по порядку рюкзак, пояс, слоты (или рюкзак, слоты, пояс, щас точно не вспомню). И там до перебора спавнится разделитель, по нему уже разграничивают. В общем, в скрипте увидите. А в огср движке добавили удобную функцию по перебору предметов на поясе iterate_belt и коллбек вешанья предмета на пояс, и никакие костыли с разделителем не нужны Изменено 8 октября, 2021 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 244 Опубликовано 8 октября, 2021 vader_33 Я понял, что огср хорош) Я не перехожу туда, потому что он на стим версию не ставится, а я и не знаю почему мне так удобнее. Да и от оригинала сильно отличается. Новые квесты там, все такое... Попробую с солянкой, это какая? Я слышал про 2016, можно там поискать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кефир 769 Опубликовано 8 октября, 2021 15 минут назад, ian98 сказал: на стим версию не ставится Ставится. При запуске в св-вах ярлыка указать -steam. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты