_Val_ 2 225 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 @BossBoroda А что ты делаешь в теме Скриптование? Ссылка на комментарий
aka_sektor 1 476 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 (изменено) Словил тут вылет, когда помер в ЗП: xr_conditions.script:2196: attempt to index field 'actor' (a nil value) Точнее при загрузке последнего сохранения. В кондишнс у меня добавлен код: function sad_predateli_pda() if (db.actor:object("sad_mudak_pda") ~= nil) and not (db.actor:has_info("sad_predateli_info")) then db.actor:give_info_portion("sad_predateli_info") end end 2196 это вторая строка, которая if В чем тут дело? Изначальная функция взята отсюда: http://www.amk-team.ru/forum/topic/8806-cop-kvesty/?page=2&tab=comments#comment-349951 Изменено 5 Декабря 2017 пользователем aka_sektor Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
dsh 3 824 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 @aka_sektor db.actor не определен похоже dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
aka_sektor 1 476 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 @dsh предложили добавить проверку актора на nil: function sad_predateli_pda() if db.actor ~= nil and db.actor:object("sad_mudak_pda") ~= nil and not db.actor:has_info("sad_predateli_info") then db.actor:give_info_portion("sad_predateli_info") end end Проверил, теперь не вылетает. Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
buffy 4 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 @aka_sektor вылет, возможно, происходит тогда, когда карта уже загрузилась и ты вызываешь эту функцию, а игрок ещё не появился. Соответственно db.actor ещё не существует(равен nil). Ссылка на комментарий
Nazgool 250 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 Не, всё нормально вроде. Но... Ну не принято так что-ли. Ну когда много раз вызывают одно и то же, то как-бы принято кэшировать. Не я же придумал. function sad_predateli_pda() local actor = db.actor if actor ~= nil and actor:object("sad_mudak_pda") ~= nil and not actor:has_info("sad_predateli_info") then actor:give_info_portion("sad_predateli_info") end end Ссылка на комментарий
Fenrir02 199 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 Подскажите, что делать: добавил уникального персонажа в НС 2016 на Кордоне. Задал ему логику стоять на месте. Всё работает, но после его спавна, происходят постоянные вылеты с непонятным для меня логом: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...ogrammes\s.t.a.l.k.e.r\gamedata\scripts\_util.script:20: attempt to perform arithmetic on local 'a' (a nil value) Что это за ошибка? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
dsh 3 824 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 21 minutes ago, Nazgool said: local actor = db.actor Это экономия на спичках. Имеет смысл только в очень частых и нагруженных циклах и то, сначала бы померить нужно. Возможно в условиях выполнения около 50 раз в секунду, если мы возьмем апдейт актора, это ни при каких условиях не будет иметь смысла. 3 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
AndreySol 215 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 1 час назад, Fenrir02 сказал: [error]Arguments : LUA error: ...ogrammes\s.t.a.l.k.e.r\gamedata\scripts\_util.script:20: attempt to perform arithmetic on local 'a' (a nil value) Что это за ошибка? Открой редактором, у которого есть нумерация строк, файл gamedata\scripts\_util.script и смотри, что в нем на 20-й строке прописано. Ссылка на комментарий
Fenrir02 199 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 Вот что в этой строчке: local a ; a = 1/a; get_console():execute( "quit" ) Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Fenrir02 199 Опубликовано 6 Декабря 2017 Поделиться Опубликовано 6 Декабря 2017 1 час назад, AndreySol сказал: Открой редактором, у которого есть нумерация строк, файл gamedata\scripts\_util.script и смотри, что в нем на 20-й строке прописано. local a ; a = 1/a; get_console():execute( "quit" ) - не знаю что это означает. Пробовал удалить эту строку - получаю вылет с ссылкой на другой фаил Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 7 Декабря 2017 Поделиться Опубликовано 7 Декабря 2017 (изменено) 16 часов назад, dsh сказал: Это экономия на спичках. спички при этом с легкостью необычайной могут выглядеть как bd.actor, dd.actor, bb.actor или даже db,actor Кроме того, это реально может быть actor без предварительного actor = db.actor не по тому, что "экономили на спичках", а по тому, что "пишу то, что думаю". Есть еще вариант, когда обращение к актору зачем-то надо до того, как он вошел в онлайн, и конструкция if db.actor then foo( db.actor, .... ) else foo( db.actor_proxy, ... ) end - написанная раз, этак, много - это уже не про "экономию на спичках", а куда-то в разряд развлечений с латексом, наручниками и плетками. (С чего, собственно, и начался этот трэд.) 14 часов назад, Fenrir02 сказал: local a ; a = 1/a; get_console():execute( "quit" ) А немного выше - русский текст про принудительную остановку игры и вывод того, что не нравится в "добавленном уникальном персонаже на кордоне". И все это есть в логе. Изменено 7 Декабря 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dsh 3 824 Опубликовано 7 Декабря 2017 Поделиться Опубликовано 7 Декабря 2017 @Dennis_Chikin все, что угодно, может стать всем, чем угодно, в результате очепятки. И actor на следующей строке с лёгкостью может стать aktor-ом. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 7 Декабря 2017 Поделиться Опубликовано 7 Декабря 2017 Может. Чем больше набиваем - тем больше опечаток. А когда при достижении некоторого объема в ход идет копипаста - вот здесь и начинается настоящее веселье... Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 9 Декабря 2017 Поделиться Опубликовано 9 Декабря 2017 Господа, а никто не реализовывал такую вещь, чтобы НПС стреляли реальными патронами из инвентаря? То есть нет патронов - нечем стрелять НПСишке. Прошу прощения у модеров, если не в ту ветку строчу. Ссылка на комментарий
BossBoroda 7 Опубликовано 9 Декабря 2017 Поделиться Опубликовано 9 Декабря 2017 Кто знает, может можно в сталкере физику машин нормальную сделать, или кто-то уже сделал и можно её из мода достать? Ссылка на комментарий
Graff46 598 Опубликовано 12 Декабря 2017 Поделиться Опубликовано 12 Декабря 2017 Можно ли добавлять свои данные (в конец) для сохранения или смещение тут нельзя трогать? xr_logic.script ТЧ Скрытый текст function save_obj(obj, packet) printf("save_obj: obj:name()='%s'", obj:name()) local npc_id = obj:id() local st = db.storage[npc_id] printf("save_obj: ini_filename='%s'", utils.to_str(st.ini_filename)) printf("save_obj: section_logic='%s'", utils.to_str(st.section_logic)) printf("save_obj: active_section='%s'", utils.to_str(st.active_section)) printf("save_obj: gulag_name='%s'", utils.to_str(st.gulag_name)) if st.ini_filename then packet:w_stringZ(st.ini_filename) else packet:w_stringZ("") end if st.section_logic then packet:w_stringZ(st.section_logic) else packet:w_stringZ("") end if st.active_section then packet:w_stringZ(st.active_section) else packet:w_stringZ("") end --if st.active_scheme then -- packet:w_stringZ(st.active_scheme) --else -- packet:w_stringZ("") --end if st.gulag_name then packet:w_stringZ(st.gulag_name) else packet:w_stringZ("") end --packet:w_s32(st.stype) save_logic(obj, packet) if st.active_scheme then issue_event(obj, db.storage[npc_id][st.active_scheme], "save") end pstor_save_all(obj, packet) end Ссылка на комментарий
dsh 3 824 Опубликовано 13 Декабря 2017 Поделиться Опубликовано 13 Декабря 2017 @Graff46 можно. Почему нет. Главное обратно прочитать в правильном порядке и за границу нетпакета не вылезти. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Kirgudu 1 218 Опубликовано 13 Декабря 2017 Поделиться Опубликовано 13 Декабря 2017 (изменено) @Graff46 дополню ответ dsh очевидным (хотя, может, и не для всех) уточнением: после таких изменений нужна новая игра, старые сейвы, не содержащие добавленных данных, читаться будут некорректно. Изменено 13 Декабря 2017 пользователем Kirgudu Инструмент Ссылка на комментарий
Graff46 598 Опубликовано 13 Декабря 2017 Поделиться Опубликовано 13 Декабря 2017 13 часов назад, Kirgudu сказал: после таких изменений нужна новая игра А что у нас по пстор'у ? Эта система вроде более гибкая? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти