Overf1rst 1 496 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 18 июня, 2021 Сам цвет задаётся от 0 до 3, а не от 0 до 255 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 18 июня, 2021 (изменено) Alex Kireev да это ерунда. Оно и так работает. Пробовал я и до 3. Там ведь ргба палитра вроде. Изменено 18 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 18 июня, 2021 В 16.06.2021 в 06:58, ian98 сказал: мне хочется сделать два разных фонаря Дополнено 7 минуты спустя 5 минут назад, ian98 сказал: Там ведь ргба палитра вроде Да, и задаётся она от 0 до 3 то есть полностью синий цвет в паинте это 0, 0, 255, а в сталкере 0.0, 0.0, 3.0 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 18 июня, 2021 Alex Kireev все равно не работает. Там сам фонарик не активируется. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 18 июня, 2021 ian98 замени изменённые файлы light_night.script items.ltx modules.script xr_motivator.script xr_light.script То есть те файлы, которые менял из этого списка, замени на не изменённые (оригинальные) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 18 июня, 2021 (изменено) Alex Kireev я ничего не трогал из списка, а если кто-то что-то трогал, то это ai addiction 2.0 и это скрипты xr_motivator.script и modules.script. А зачем? В общем, сделал. Изменено 18 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 18 июня, 2021 После заходи в файл light_night.script И меняй color = 1.0, 1.0, 1.0, 0.2 color_r2 = 1.2, 1.2, 1.2, 0.2 На color = 0.0, 0.0, 3.0, 1.0 color_r2 = 0.0, 0.0, 3.0, 1.0 Дополнено 1 минуту спустя ian98 не понял, как ты пытался сделать фонарь? Дополнено 3 минуты спустя Файлы которые я скинул, отвечают за работу фонарика, я сейчас это проверил и изменил цвет фонарика, отредактировав файл light_night.script Дополнено 4 минуты спустя 5 минут назад, ian98 сказал: В общем, сделал. А, ну тогда ладно, спокойной ночи Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 18 июня, 2021 Alex Kireev https://drive.google.com/file/d/1Knsfswo8FzUkJk95_K_7JFcgeYsUKXQp/view?usp=sharing Дополнено 8 минуты спустя Alex Kireev Спокойной Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 19 июня, 2021 (изменено) 10 часов назад, Alex Kireev сказал: окно консоли, которое открывается при нажатии на тильду (~(Ё)) это движковая функция или скриптовая? движковое Дополнено 0 минут спустя ian98 новую секцию еще надо прописать в "actor.ltx" в "attachable_items". Может еще в "system.ltx" slot_persistent_*** (где прописан фонарик) надо поменять на false, я уже точно не помню Изменено 19 июня, 2021 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 19 июня, 2021 vader_33 не подскажешь как быстро можно отредактировать движок? Мне надо добавить одно условие и обработку нажатия на клавишу Дополнено 4 минуты спустя Или может быть скрипт какой есть для перехвата событий консоли? Дополнено 5 минуты спустя ian98 спасибо, по позже посмотрю Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 19 июня, 2021 vader_33 А если я хотел бы, чтобы у нпс также были разные фонари? в "всевозможныхstalker.ltx" в "attachable_items" все прописал и ничего. Ходят с обычными. Потом я понял, что для нпс есть скрипт sr_light и функция check_light(stalker), но ничего там не получается. Получается только включить какой-то один из фонарей. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 19 июня, 2021 ian98 скорее всего для нпс есть один объект (клас, функции или что то в этом роде), где описаны настройки фонарика и все энпси берут описание оттуда Если это так, то можно сделать функцию рандом для каждого нпс, функция передает получившийся параметр в описание настроек фонарика То есть есть бандит Васька, при доставания фонарика, включается рандом, и этот рандом передает 3 значения в описание цвета фонарика Можно ещё сделать таблицу цветов, где для каждого нпс будет прописан свой статический цвет, который не меняется Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 19 июня, 2021 Alex Kireev наверное да, мои представления об этом крайне малы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 19 июня, 2021 Alex Kireev насчет движка не подскажу, не разбираюсь в нём. Если нужен коллбек на нажатия клавиш - проще использовать уже готовый мод движок, ogsr например Дополнено 0 минут спустя ian98 еще в файле xr_light.script надо добавить новую секцию фонаря 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 18 Опубликовано 19 июня, 2021 ian98 скачал, закинул, в инвенторе только фонарик, а не повесить не включить его не получается, можно только выбросить, версия 1.0004, честь ТЧ Дополнено 12 минуты спустя 2 часа назад, vader_33 сказал: еще в файле xr_light.script надо добавить новую секцию фонаря А, так я про это писал, только я имел ввиду не добавить, а отредактировать текущий фонарь, что бы он работал, так как надо, а потом сделать дубликат с новым цветом Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 19 июня, 2021 В оригинальной игре много разных багов, к чему я привык давно. Только этот один, который вызывает у меня раздражение Спойлер Мешает буковка k перед F. Она не всегда появляется. Раз через раз примерно, с чем связано? Можно ли поправить раз и навсегда? Помнится, в детстве еще, наверное на ранних патчах, не было такого бага с этими надписями. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 20 июня, 2021 (изменено) можно ли как-то менять визуалы через скрипты без последствий в виде вылетов? Меняю визуалы скриптом из ai addiction, я его повесил в закреп. Все работает, но в какой-то момент игра начинает засыпать вылетами. Примерно со свалки это начинается. Я могу предположить, что это из-за анимаций, но как такое можно исправить в таком случае? Сделать всем скинам одну анимацию, обычную? В общем, стоило убрать только сюжетных нпс, например того же юрика и 3 бандитов, и вылеты прекратились. Спойлер ! error in stalker with visual actors\bandit\stalker_bandit_4 -- тут может быть любой визуал stack trace: 0023:07FD234B xrGame.dll БЫВАЕТ ЕЩЕ ТАКОЙ ! error in stalker with visual actors\stalker_mp\stalker_sv_military_vet stack trace: 0023:75ABA6F2 KERNELBASE.dll 0023:649D8E89 MSVCR80.dll, EH_prolog() 0023:0043ACD0 XR_3DA.exe, Feel::Touch::operator=() 0023:0046605A XR_3DA.exe, CEvent::operator=() 0023:00466518 XR_3DA.exe, CEvent::operator=() xrs_armor.script Дополнено 53 минуты спустя Ладно, со скинами разобрался, выдам их через конфиги, а вот с рангом бы подсказку. Как их выдавать случайно? Собрал что-то из скриптом имеющихся интуитивно, и вроде смотрится, ну мне, красиво и работать должно, а вылет. Спойлер local npc_tbl = { [ "esc_wolf" ] = true, ... [ "yan_fresh_Zombied" ] = true } function change_rank_2() local sobj = alife():object( a ) if sobj and is_stalker( sobj ) and sobj:alive() and sobj.rank and sobj:rank()~=0 then local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ] if is_tbl_npc then sobj:set_rank(upgrade_exp*lvl+math.random(1,1000)) end end end Изменено 20 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 21 июня, 2021 (изменено) 14 часов назад, ian98 сказал: actors\stalker_mp\stalker_sv_military_vet в ai Additions shoc 2.0f4 для чистого тч нету такой строчки, видимо файл с какой-то адаптации для какого-то мода. Если не используется мод, к которому шла эта адаптация - лучше поставить для чистого тч. Дополнено 4 минуты спустя 14 часов назад, ian98 сказал: local sobj = alife():object( a ) что назначается этому "а" в скобках? И где назначается 14 часов назад, ian98 сказал: sobj.rank and sobj:rank()~=0 "sobj.rank" нету такого. Проверяйте в файле lua_help.script, как именно писать Дополнено 6 минуты спустя 14 часов назад, ian98 сказал: а вылет. лог вылета прикладывайте, проще будет разобраться в причине Изменено 21 июня, 2021 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 21 июня, 2021 (изменено) vader_33 визуал оригинальный, просто хитрость такая для выдачи одного и того же визуала. Без нее скрипт вылетает с логом предмет не может быть создан, так как уже создан. Спойлер local npc_tbl = { [ "esc_wolf" ] = true, [ "esc_fanat" ] = true, [ "esc_fox" ] = true, [ "esc_tutorial_wounded" ] = true, [ "esc_shustryi" ] = true, [ "esc_killer_specnaz" ] = true, [ "esc_bandit_novice" ] = true, [ "esc_stalker_novice" ] = true, [ "esc_ranger" ] = true, [ "esc_soldier_commander" ] = true, [ "esc_soldier_regular" ] = true, [ "esc_soldier_blockpost_commander" ] = true, [ "esc_soldier_blokpost" ] = true, [ "esc_soldier_specnaz" ] = true, [ "esc_killer_master" ] = true, [ "esc_provodnik" ] = true, [ "gar_seriy" ] = true, [ "gar_dram_novice" ] = true, [ "gar_bandit_novice_wounded" ] = true, [ "gar_bandit_leader" ] = true, [ "gar_bandit_novice" ] = true, [ "gar_bandit_general" ] = true, [ "gar_stalker_general" ] = true, [ "gar_wounded_bandit" ] = true, [ "gar_dolg_blokpost" ] = true, [ "gar_dolg_blokpost_commander" ] = true, [ "gar_sniper" ] = true, [ "gar_bandit_dm" ] = true, [ "agr_krot" ] = true, [ "agr_ratcatcher" ] = true, [ "agr_nii_commander" ] = true, [ "agr_stalker_general" ] = true, [ "agr_soldier_regular" ] = true, [ "agr_soldier_specnaz" ] = true, [ "agr_soldier_commander" ] = true, [ "agr_soldier_sniper" ] = true, [ "agr_bandit_general" ] = true, [ "sim_bandit_novice" ] = true, [ "sim_bandit_general" ] = true, [ "sim_bandit_veteran" ] = true, [ "sim_bandit_master" ] = true, [ "sim_stalker_novice" ] = true, [ "sim_stalker_general" ] = true, [ "sim_stalker_veteran" ] = true, [ "sim_stalker_master" ] = true, [ "sim_stalker_sniper" ] = true, [ "sim_dolg_regular" ] = true, [ "sim_dolg_veteran" ] = true, [ "sim_dolg_master" ] = true, [ "sim_dolg_sniper" ] = true, [ "sim_Svoboda_regular" ] = true, [ "sim_Svoboda_specnaz" ] = true, [ "sim_Svoboda_master" ] = true, [ "sim_Svoboda_sniper" ] = true, [ "sim_killer_general" ] = true, [ "sim_killer_veteran" ] = true, [ "sim_killer_master" ] = true, [ "sim_killer_sniper" ] = true, [ "sim_monolith_regular" ] = true, [ "sim_monolith_specnaz" ] = true, [ "sim_monolith_master" ] = true, [ "sim_monolith_sniper" ] = true, [ "sim_ecolog" ] = true, [ "sim_zombied_novice" ] = true, [ "sim_zombied_veteran" ] = true, [ "sim_zombied_master" ] = true, [ "sim_fresh_Zombied" ] = true, [ "sim_Soldier_regular" ] = true, [ "sim_Soldier_specnaz" ] = true, [ "sim_Soldier_commander" ] = true, [ "sim_Soldier_sniper" ] = true, [ "sim_Soldier_master" ] = true, [ "sim_stalker_veteran_gusarov" ] = true, [ "sim_Svoboda_specnaz_leshii" ] = true, [ "sim_stalker_master_chuchelo" ] = true, [ "sim_stalker_general_upir" ] = true, [ "sim_stalker_master_diador" ] = true, [ "sim_ecolog_zob" ] = true, [ "sim_stalker_novice_neumeha" ] = true, [ "sim_bandit_master_kocherga" ] = true, [ "sim_dolg_veteran_barin" ] = true, [ "sim_stalker_veteran_vorobey" ] = true, [ "sim_stalker_master_master" ] = true, [ "sim_dolg_veteran_prapor" ] = true, [ "sim_svoboda_specnaz_prut" ] = true, [ "sim_stalker_veteran_umnik" ] = true, [ "sim_bandit_master_fraer" ] = true, [ "sim_stalker_master_polkan" ] = true, [ "bar_arena_stalker_1" ] = true, [ "bar_arena_stalker_2" ] = true, [ "bar_arena_stalker_3_1" ] = true, [ "bar_arena_stalker_3_2" ] = true, [ "bar_arena_stalker_4_1" ] = true, [ "bar_arena_stalker_4_2" ] = true, [ "bar_arena_stalker_4_3" ] = true, [ "bar_arena_stalker_4_4" ] = true, [ "bar_arena_stalker_5_1" ] = true, [ "bar_arena_stalker_5_2" ] = true, [ "bar_arena_stalker_6_1" ] = true, [ "bar_arena_stalker_6_2" ] = true, [ "bar_arena_stalker_6_3" ] = true, [ "bar_arena_stalker_6_4" ] = true, [ "bar_arena_stalker_6_5" ] = true, [ "bar_arena_stalker_6_6" ] = true, [ "bar_arena_stalker_7" ] = true, [ "bar_arena_stalker_8_1" ] = true, [ "bar_arena_stalker_8_2" ] = true, [ "bar_arena_stalker_8_3" ] = true, [ "bar_arena_stalker_8_4" ] = true, [ "mil_Svoboda_specnaz" ] = true, [ "mil_Svoboda_engineer" ] = true, [ "mil_Svoboda_regular" ] = true, [ "mil_Svoboda_sniper" ] = true, [ "mil_Svoboda_stukach" ] = true, [ "mil_Svoboda_zoneguard" ] = true, [ "mil_Svoboda_bodyguard" ] = true, [ "mil_Svoboda_leader" ] = true, [ "mil_Svoboda_trader" ] = true, [ "mil_Svoboda_master_Max" ] = true, [ "mil_Svoboda_master" ] = true, [ "mil_Svoboda_cook" ] = true, [ "mil_Svoboda_blockpost_leader" ] = true, [ "mil_Svoboda_master_Ugrumiy" ] = true, [ "mil_Dolg_specnaz" ] = true, [ "mil_Dolg_specnaz_silence" ] = true, [ "mil_Dolg_specnaz_cherep" ] = true, [ "mil_Killer_informator" ] = true, [ "mil_Killer_specnaz" ] = true, [ "mil_killer_sniper" ] = true, [ "mil_killer_master" ] = true, [ "mil_Stalker_master" ] = true, [ "mil_Stalker_veteran" ] = true, [ "mil_Svoboda_zombi_stalker" ] = true, [ "mil_Monolit_regular" ] = true, [ "mil_Monolit_master" ] = true, [ "bar_stalker_white_novice" ] = true, [ "bar_stalker_brown_novice" ] = true, [ "bar_stalker_general" ] = true, [ "bar_stalker_dolg" ] = true, [ "bar_stalker_bandit" ] = true, [ "bar_stalker_killer" ] = true, [ "bar_stalker_guard" ] = true, [ "bar_bar_osvedomitel" ] = true, [ "bar_bar_hunter" ] = true, [ "bar_bar_drunk_dolg" ] = true, [ "bar_bar_lisiy" ] = true, [ "bar_psih" ] = true, [ "bar_arena_manager" ] = true, [ "bar_arena_guard" ] = true, [ "bar_arena_savage" ] = true, [ "bar_dolg_leader" ] = true, [ "bar_dolg_petrenko" ] = true, [ "bar_dolg_ivancov" ] = true, [ "bar_dolg_guard_commander" ] = true, [ "bar_zastava_commander" ] = true, [ "bar_ecolog_professor" ] = true, [ "bar_svoboda_attack_commander" ] = true, [ "bar_killer_ambush_tiran" ] = true, [ "bar_crazy_veterans_lucky" ] = true, [ "bar_crazy_veterans" ] = true, [ "bar_stalker_freeman" ] = true, [ "bar_dolg_regular" ] = true, [ "bar_dolg_sniper" ] = true, [ "bar_dolg_veteran" ] = true, [ "bar_dolg_master" ] = true, [ "bar_stalker_novice" ] = true, [ "bar_stalker_general" ] = true, [ "bar_stalker_veteran" ] = true, [ "bar_ecolog_guard" ] = true, [ "bar_killer_regular" ] = true, [ "bar_killer_sniper" ] = true, [ "bar_killer_sniper_on_enter" ] = true, [ "bar_killer_rpg" ] = true, [ "bar_killer_specnaz" ] = true, [ "val_bandit_borov" ] = true, [ "val_bandit_bodyguard" ] = true, [ "val_bandit_novice" ] = true, [ "val_bandit_general" ] = true, [ "val_bandit_veteran" ] = true, [ "val_watchtower_bandit_guard" ] = true, [ "val_watchtower_bandit_sniper" ] = true, [ "val_dolg_regular" ] = true, [ "val_escort_halfdead" ] = true, [ "val_escort_nap1" ] = true, [ "val_escort_captive" ] = true, [ "val_monolith_regular" ] = true, [ "val_soldier_regular" ] = true, [ "val_soldier_specnaz" ] = true, [ "val_stalker_novice" ] = true, [ "val_stalker_general" ] = true, [ "dar_stalker_explorer" ] = true, [ "dar_corpse" ] = true, [ "dar_corpse_kalugin" ] = true, [ "dar_military_scout" ] = true, [ "aes_Monolit_rpg" ] = true, [ "aes_Monolit_specnaz" ] = true, [ "aes_Monolit_specnaz_rg6" ] = true, [ "aes_Monolit_sniper" ] = true, [ "aes_Monolit_sniper_gauss" ] = true, [ "aes_Monolit_master" ] = true, [ "aes_Soldier_commander" ] = true, [ "aes_Soldier_military" ] = true, [ "aes_Soldier_specnaz" ] = true, [ "aes_Soldier_specnaz_aes" ] = true, [ "aes_Soldier_sniper" ] = true, [ "aes_x" ] = true, [ "pri_monolith_ambush" ] = true, [ "pri_monolith_ambush_specnaz" ] = true, [ "pri_monolith_ambush_exo" ] = true, [ "pri_monolith_regular" ] = true, [ "pri_monolith_specnaz" ] = true, [ "pri_monolith_exo" ] = true, [ "pri_monolith_leader" ] = true, [ "pri_followers_bomber" ] = true, [ "pri_followers_leader" ] = true, [ "pri_followers_stalker" ] = true, [ "pri_soldier_suicide" ] = true, [ "pri_zombied_suicide" ] = true, [ "pri_zombied_veteran" ] = true, [ "pri_zombied" ] = true, [ "rad_monolit_bunker" ] = true, [ "rad_monolit_sniper" ] = true, [ "rad_monolit_specnaz" ] = true, [ "rad_monolit_master" ] = true, [ "rad_monolit_rpg" ] = true, [ "rad_zombied" ] = true, [ "rad_zombied_veteran" ] = true, [ "rad_stalker_master" ] = true, [ "rad_soldier_specnaz" ] = true, [ "rad_Svoboda_master" ] = true, [ "rad_dolg_master" ] = true, [ "rad_ecolog" ] = true, [ "sar_monolith_specnaz" ] = true, [ "sar_monolith_exo" ] = true, [ "sar_monolith_commander" ] = true, [ "sar2_monolith_regular" ] = true, [ "sar2_monolith_specnaz" ] = true, [ "sar2_monolith_exo" ] = true, [ "sar2_monolith_specnaz2" ] = true, [ "sar_monolith_exo_crystal" ] = true, [ "yan_ecolog_help" ] = true, [ "yan_Semenov" ] = true, [ "yan_ecolog_vasilyev" ] = true, [ "yan_ghost" ] = true, [ "yan_ecolog" ] = true, [ "yan_zombied" ] = true, [ "yan_zombied_veteran" ] = true, [ "yan_zombied_ambush" ] = true, [ "yan_zombied_master" ] = true, [ "yan_zombied_dolg" ] = true, [ "yan_fresh_Zombied" ] = true } function change_rank_2() local sobj = is_stalker( sobj ) if sobj and sobj:alive() and sobj:rank()~=0 then local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ] if is_tbl_npc then sobj:set_rank(upgrade_exp*lvl+math.random(1,1000)) end end end function is_stalker( sobj ) return sobj:clsid() == clsid.script_stalker end Как мне понимается, то sobj - вообще сталкер. Если сталкер, если он живой и если его ранк равен нулю тогда стол, там всякие проверки, дать ранг от 1 до 1000. Это так понимаю этот скрипт я, а вот игра его понимает вот так Спойлер FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:30: attempt to call field 'change_rank2' (a table value) stack trace: Еще, да, скрипт висит на нетспавне, нормально ему там будет? Изменено 21 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 21 июня, 2021 (изменено) 24 минуты назад, ian98 сказал: Без нее скрипт вылетает с логом предмет не может быть создан, так как уже создан оригинальный вылетает? Не замечал такой проблемы. Проверку на визуал там не сделать? 24 минуты назад, ian98 сказал: Sobj.rank взял из трго же скрипта из ai addiction там это используется по-другому. Как обращение к таблице и в нет-пакетах, как переменная self.rank, но не применяется непосредственно к объекту (опять же, в паке для оригинала) 24 минуты назад, ian98 сказал: лог вылета line 73 a nil value раз указана строчка - должно быть и название скрипта, который вылетает. Скриптов с 73 строчкой много. Больше лога выкладывайте 24 минуты назад, ian98 сказал: можно выдавать скриптом ранг и репутацию? можно Изменено 21 июня, 2021 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 21 июня, 2021 (изменено) vader_33 может и сделать, но там такой скрипт, что мне никогда не разобраться. Очень большой и совершенно непонятный. Да, и скорее, в будущем, потихоньку буду отказываться от него. Слишком с ним много вылетов, причем я его не менял, просто туда много очень визуалов всунул(около 200) и раздал каждому нпс по 4 броника с разными пробами: броня 1 ранга - 100, 2 - 40, 3 - 25, 4 - 5., т.е каждый нпс в игре 100% менял визуал, а то и по несколько раз + там реализована '''раскачка'' нпс, что-то вроде Нпс с броней первого ранга имеет ранг новичок-опытный, ну и т.д до мастера. Думал на легке визуалы замиксовать, причем все визуалы тоже из оригинала и вообще были запакованы, пришлось распаковать, чтобы продублировать их по 4 раза каждый. После чего всплыли другие проблемы, уже совершенно непонятные, игра просто крашилась с логом error with visual и я ничего не мог поделать, ничего понять не мог. Лишь со временем обнаружилось, что сюжетные нпс, когда меняют визуал через этот скрипт, либо вообще не выходят из оффлайна, либо выходят частично(как пример бандиты на свалке, которые находились в онлайне только пока был жив бес и при его смерти просто исчезали или сталкеры и вояки на агропроме, или может еще где-то), либо выходят полностью калеками и ломают игру ужасными вылетами стоит им только дать хит или убить. в общем, сплошное расстройство, блин, и большая трагедия. Изменено 21 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 21 июня, 2021 43 минуты назад, ian98 сказал: function change_rank_2() local sobj = is_stalker( sobj ) sobj не может из неоткуда взяться. Если вам скажут порезать яблоко, его же должны откуда-то взять, не материализуется просто так перед носом. Надо либо в "function change_rank_2()" передавать объект "function change_rank_2(sobj)" либо перебором искать. Переборы такие - если сталкер в онлайне, то так for k, v in pairs (db.storage) do local obj = level.object_by_id(k) Если не в онлайне - так: for a=1,65535 do local obj = alife():object(a) 44 минуты назад, ian98 сказал: его ранк равен нулю тогда ~=0 - это не равен 0. Равен будет == 45 минут назад, ian98 сказал: bind_stalker.script:30: attempt to call field 'change_rank2' (a table value) что в этой строчке в бинд сталкере? Дополнено 2 минуты спустя 52 минуты назад, ian98 сказал: local sobj = is_stalker( sobj ) is_stalker( sobj ) - это проверка, она вернет или true или false. К нему не получится применить sobj:alive() and sobj:rank()~=0, это не объект В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 21 июня, 2021 (изменено) vader_33 там просто вызов change_rank2.change_rank2() 9 минут назад, vader_33 сказал: for a=1,65535 do local obj = alife():object(a) и так пробовал. Так было в скрипте на рандомную выдачу предмета. Вот тогда у меня был лог уже, что нулевое значение. 9 минут назад, vader_33 сказал: ~=0 - это не равен 0. Равен будет == А я думал это проверка, что ранг нулево, как с проверкой на предметы в инвентаре у гг. Там также было ~=. Ну и == я тоже много раз замечал. Дополнено 2 минуты спустя function change_rank_2() for a = 1, 65534, 1 do local sobj = alife():object( a ) if sobj and is_stalker( sobj ) and sobj:alive() and sobj:rank()==0 then local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ] if is_tbl_npc then sobj:set_rank(upgrade_exp*lvl+math.random(1,1000)) end end end function is_stalker( sobj ) return sobj:clsid() == clsid.script_stalker end а так? даже тестить нет смысла)? Я просто, вроде, уже так пытался. Ничего не выходило. Да, так точно нет смысла. Спойлер Expression : fatal error Function : CScriptEngine::lua_error File : .\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:30: attempt to index global 'change_rank2' (a nil value) Изменено 21 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 21 июня, 2021 19 минут назад, ian98 сказал: там просто вызов change_rank2.change_rank2() скрипт так и называется change_rank2? Либо в самом скрипте синтаксическая ошибка Дополнено 0 минут спустя 21 минуту назад, ian98 сказал: function change_rank_2() функция не закрыта end Дополнено 5 минуты спустя 25 минут назад, ian98 сказал: А я думал это проверка, что ранг нулево, как с проверкой на предметы в инвентаре у гг вот поэтому надо сначала изучить основы луа, как видите, если делать что-то наугад - будут проблемы и вылеты. Язык очень простой В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 230 Опубликовано 21 июня, 2021 vader_33 Действительно, а ведь я её 100500 раз пропускал через чекер. На самом деле, у меня там на рабочем столе такой ахтунг, что проверить и совсем не тот скрипт Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты