Dennis_Chikin 3 658 Опубликовано 12 Июля 2016 Поделиться Опубликовано 12 Июля 2016 Upd: кстати, вот только в новой соли аналогичную проблему поймал. Правда там вылетает прямо при сохранении. Разбираюсь. Конкретно смотрю, что у кого сохраняется, и где повиснет. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 335 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 function motivator_binder:save(packet) -- printf("motivator_binder:save(): self.object:name()='%s'", self.object:name()) object_binder.save(self, packet) packet:w_bool(self.treasure_processed) xr_logic.save_obj(self.object, packet) dialog_manager.save(self.object, packet) trade_manager.save(self.object, packet) end Собственно вот, больше там ничего нет. Учитывая что у меня на руках есть сейв где при загрузке - виснет, но нету такого с которого я мог бы сохраниться и получить суть проблемы в методе save(), а сама проблема пока встретилась единственный раз - я не совсем представляю как мне это ловить... Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 (изменено) local save_ok = 0 function motivator_binder:save(packet) if save_ok ~= 0 then bind_stalker.error = true; abort( ... ) end object_binder.save(self, packet) save_ok = 1 и т.д. после каждой строчки, save_ok = 0 end В обновлении актора - проверка error и вылет с руганью. Для xr_logic я где-то давал код сохранения/загрузки с контролем по осмысленности прямо по ходу действия. Там вылет более надежен, и не надо проверять конец пакета в биндерах. Изменено 13 Июля 2016 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 335 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 Это мне поможет узнать если опять в сохраняемую инфу полезет что-то не то - я поймаю вылет, в логе увижу результаты этого безобразия. Но уже полученный убитый сейв получается никак не оживить и не выяснить почему он убился? Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
dsh 3 824 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 @Zander_driver, то, что там 6 строчек - это ничего не значит. Вот тот же trade_manager прекрасно может битый сейв сделать. Из свежих воспоминаний. Соляночный Седой на АТП. Из-за наличия легкого бреда в конфиге торговли, сейв с ним в онлайне получался битый. Но уже полученный убитый сейв получается никак не оживить Ну почему не оживить. По тому, что ты показывал, у тебя не записалась онлайновая часть для Сахарова. Ну и бог бы с ним. Убери в скрипте для него abort, загрузись и переспаунь инвалида. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Zander_driver 10 335 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 Да это то понятно) и одна строчка может бред сотворить. Меня таки интересуют мои возможности выяснить причины проблем, не дожидаясь когда это всплывет второй раз. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Overfirst 630 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 Вопрос, наверно, глупый, но как вызывать функции из других скриптов без указания имени скрипта, в котором функция находится? Как это сделано, например, в _g.script. Там, полагаю, и нужно решать все это дело. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 Вопрос не столько глупый, сколько непонятный. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 А как заставить Lua работать с Русскими буквами? Вот код и он не работает: local say = "Гора" -- Текст на Русском языке local say = say:match("(.)$") function as() if say == "а" then print(say) end end as() print(say) Выдает вот такой символ: "�". А сама функция не работает 1 Ссылка на комментарий
Overfirst 630 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 @Dennis_Chikin, что не так? Повторю. Как можно вызывать функции из других скриптов, при это не указывая их имя(скриптов, разумеется). Вот есть _1.script, в нем функция 123, как её вызвать из других скриптов без указания имени скрипта? _1.123(), а я хочу 123(). Где надо свои скрипты регистрировать, чтобы это работало? Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Expropriator 2 118 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 Где надо свои скрипты регистрировать, чтобы это работало? Я не заморачиваюсь с принцпиальностью. Этот твой вызов местного значения, для конкретного документа. Трудно ниже создать функцию? function 123() end Неужели твоя функция такая важная, что бы её можно было внедрять в других документах, по твоему желанию. Даже разрабы незаморачивались и делали _1.123() Ссылка на комментарий
Overfirst 630 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 @Дизель, ну я же задал вопрос. Ответа в твоём посте что-то не вижу, по делу, пожалуйста. Какая разница, для каких мне целей оно надо? Для удобства. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 (изменено) Вот теперь понятно. function _G.blabla() ... end Или function blabla() ... end _G.blabla = this.blabla В обоих случах скрипт должен быть сначала хоть раз откуда-нибудь вызван с любой целью. хоть дернуть за function init() end или, для текущего скрипта this.blabla = 123.blabla и далее везде можно писать просто blabla() Изменено 13 Июля 2016 пользователем Dennis_Chikin 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Overfirst 630 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 (изменено) @Дизель, give_info, abort. Только они зареганы в _g.script, а я хочу в своём файле сделать подобное. Денис, спасибо, сразу твой пост не заметил. С телефона просто... Изменено 13 Июля 2016 пользователем BoBaH_671 Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Expropriator 2 118 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 (изменено) _g.script, этот файл является родительским для некоторых функций. потому тебе там всё равно надо регистрировать. Изменено 13 Июля 2016 пользователем Дизель Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Июля 2016 Поделиться Опубликовано 13 Июля 2016 (изменено) Этот файл не является "родительским". Он является запускаемым по умолчанию. http://www.lua.ru/doc/6.html Практическое применение, из модифицированного amk.script: this.parse_custom_data = parse_custom_data -- для идиотов, устраивающих "войны правок" this.gen_custom_data = gen_custom_data local force_offline = _G.force_offline if not force_offline then force_offline = {} _G.force_offline = force_offline end convert_npc = force_offline Изменено 13 Июля 2016 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Desertir 202 Опубликовано 14 Июля 2016 Поделиться Опубликовано 14 Июля 2016 @Kober(BRUC), в Луа 5.3 завезли юникод, сохраняй файл в UTF-8. Если ты про сталкеровскую Луа, попробуй сохранить в cp1251. 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Gray Hawk 0 Опубликовано 14 Июля 2016 Поделиться Опубликовано 14 Июля 2016 @Kober(BRUC), кодировка неправильная, у тебя неправильная кодировка в самом скрипте 1 Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 14 Июля 2016 Поделиться Опубликовано 14 Июля 2016 (изменено) Добрый день. Где же я упустил ошибку?: local number = 10 say_tbl_one_ru = { -- Таблица с русскими ответами. 'Угадай число'; "Не верно. Чуть больше.", "Не верно. Чуть меньше.", "Вы угадали! Число равно:" } local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000 function gl() if complexity == 'esay' then local cly = 25 elseif complexity == 'normal' then local cly = 100 elseif complexity == 'hard' then local cly = 1000 elseif complexity == 'random' then local ran_data = math.randomseed(os.time()) local ran_data = math.random(100, 10000) local cly = ran_data local num = math.random(1, cly) if number < num then print(say_tbl_one_ru[1]) elseif number > num then print(say_tbl_one_ru[2]) elseif number == num then print(say_tbl_one_ru[3]) end end end gl() Изменено 14 Июля 2016 пользователем Kober(BRUC) Ссылка на комментарий
Kirgudu 1 204 Опубликовано 14 Июля 2016 Поделиться Опубликовано 14 Июля 2016 (изменено) @Kober(BRUC), 1. "local cly = 25" и т. п., если не ошибаюсь, видно только в пределах своей ветки if ... else. Следует объявить переменную до if, а внутри только задавать значение. 2. math.randomseed результат не возвращает, а только задаёт случайное смещение для последующего math.random. Присваивание переменной в данном случае лишнее. 3. Выбор фразы для печати ты делаешь в одной из веток внутри if, а не за пределами оного. Конкретно, печать у тебя происходит только в случае опции "random". 4. Судя по всему, навыки чтения кода у тебя не очень высокие. В этом случае, чтобы делать меньше ошибок, будет хорошей практикой использовать отступ для вложенных элементов. local number = 10 say_tbl_one_ru = { -- Таблица с русскими ответами. 'Угадай число'; "Не верно. Чуть больше.", "Не верно. Чуть меньше.", "Вы угадали! Число равно:" } local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000 function gl() if complexity == 'esay' then local cly = 25 elseif complexity == 'normal' then local cly = 100 elseif complexity == 'hard' then local cly = 1000 elseif complexity == 'random' then local ran_data = math.randomseed(os.time()) local ran_data = math.random(100, 10000) local cly = ran_data local num = math.random(1, cly) if number < num then print(say_tbl_one_ru[1]) elseif number > num then print(say_tbl_one_ru[2]) elseif number == num then print(say_tbl_one_ru[3]) end end end gl() local number = 10 say_tbl_one_ru = { -- Таблица с русскими ответами. 'Угадай число'; "Не верно. Чуть больше.", "Не верно. Чуть меньше.", "Вы угадали! Число равно:" } local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000 function gl() local cly if complexity == 'esay' then cly = 25 elseif complexity == 'normal' then cly = 100 elseif complexity == 'hard' then cly = 1000 elseif complexity == 'random' then math.randomseed(os.time()) cly = math.random(100, 10000) end local num = math.random(1, cly) if number < num then print(say_tbl_one_ru[1]) elseif number > num then print(say_tbl_one_ru[2]) else print(say_tbl_one_ru[3]) end end gl() Изменено 14 Июля 2016 пользователем Kirgudu 1 1 Инструмент Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти