Перейти к контенту

Рекомендуемые сообщения

Это как бы означает, что все обязаны срочно скачать мод ?

Или кто-то все ж поделиться кодом сохранения ?

 

Очевидно, оное сохранение повисло аккурат после  object_binder.save(), что именно там повисло - вопрос - не имея кода - явно к экстрасенсам.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Upd: кстати, вот только в новой соли аналогичную проблему поймал. Правда там вылетает прямо при сохранении. Разбираюсь. Конкретно смотрю, что  у кого сохраняется, и где повиснет.

Ссылка на комментарий
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 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

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 я где-то давал код сохранения/загрузки с контролем по осмысленности прямо по ходу действия. Там вылет более надежен, и не надо проверять конец пакета в биндерах.

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий

Это мне поможет узнать если опять в сохраняемую инфу полезет что-то не то - я поймаю вылет, в логе увижу результаты этого безобразия.

Но уже полученный убитый сейв получается никак не оживить и не выяснить почему он убился?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

@Zander_driver, то, что там 6 строчек - это ничего не значит. Вот тот же trade_manager прекрасно может битый сейв сделать. Из свежих воспоминаний. Соляночный Седой на АТП. Из-за наличия легкого бреда в конфиге торговли, сейв с ним в онлайне получался битый.

Но уже полученный убитый сейв получается никак не оживить

Ну почему не оживить. По тому, что ты показывал, у тебя не записалась онлайновая часть для Сахарова. Ну и бог бы с ним. Убери в скрипте для него abort, загрузись и переспаунь инвалида.

Ссылка на комментарий

Да это то понятно) и одна строчка может бред сотворить.

Меня таки интересуют мои возможности выяснить причины проблем, не дожидаясь когда это всплывет второй раз.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Вопрос, наверно, глупый, но как вызывать функции из других скриптов без указания имени скрипта, в котором функция находится? Как это сделано, например, в _g.script. Там, полагаю, и нужно решать все это дело.

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

А как заставить Lua работать с Русскими буквами? Вот код и он не работает:

local say = "Гора" -- Текст на Русском языке

local say = say:match("(.)$")

function as()
if say == "а" then
print(say)
end
end

as()

print(say)

Выдает вот такой символ: "�". А сама функция не работает

  • Согласен 1
Ссылка на комментарий
@Dennis_Chikin, что не так? Повторю. Как можно вызывать функции из других скриптов, при это не указывая их имя(скриптов, разумеется). Вот есть _1.script, в нем функция 123, как её вызвать из других скриптов без указания имени скрипта? _1.123(), а я хочу 123(). Где надо свои скрипты регистрировать, чтобы это работало?

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

 

 

Где надо свои скрипты регистрировать, чтобы это работало?

 

Я не заморачиваюсь с принцпиальностью. Этот твой вызов местного значения, для конкретного документа. Трудно ниже создать функцию?

function 123()

end

 

Неужели твоя функция такая важная, что бы её можно было внедрять в других документах, по твоему желанию. Даже разрабы незаморачивались и делали _1.123()

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
@Дизель, ну я же задал вопрос. Ответа в твоём посте что-то не вижу, по делу, пожалуйста. Какая разница, для каких мне целей оно надо? Для удобства.

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

Вот теперь понятно.

 

function _G.blabla()

...

end

 

Или function blabla()

...

end

 

_G.blabla = this.blabla

 

В обоих случах скрипт должен быть сначала хоть раз откуда-нибудь вызван с любой целью.

хоть дернуть за function init() end

 

 

или, для текущего скрипта this.blabla = 123.blabla

и далее везде можно писать просто blabla()

Изменено пользователем Dennis_Chikin
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

del

...Дошло до ума тема, благодаря Денису.

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@Дизель, give_info, abort. Только они зареганы в _g.script, а я хочу в своём файле сделать подобное.

 

Денис, спасибо, сразу твой пост не заметил. С телефона просто...

Изменено пользователем BoBaH_671

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий
_g.script,

этот файл является родительским для некоторых функций. потому тебе там всё равно надо регистрировать.

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Этот файл не является "родительским". Он является запускаемым по умолчанию.

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

Изменено пользователем Dennis_Chikin
Ссылка на комментарий
@Kober(BRUC), в Луа 5.3 завезли юникод, сохраняй файл в UTF-8. Если ты про сталкеровскую Луа, попробуй сохранить в cp1251.
  • Спасибо 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...