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

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

@Купер 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...\level_editor\gamedata\scripts\dialog_manager.script:393: attempt to compare number with nil

Что тут, тогда? при сейвлоаде летит. 

God save Hatsune Miku!

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

@Labadal , там весь скрипт переделывать надо, в том числе и в тех местах, где создаются уникальные id для фраз. Возьми просто родной скрипт от 6-го патча.

Изменено пользователем naxac
  • Нравится 2
  • Полезно 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@naxac

В том и дело, что взял. 

 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...\level_editor\gamedata\scripts\dialog_manager.script:393: attempt to compare number with nil

этот получаю при загрузке сохранения (НИ грузит норм). 

Переменная ver в функции function load(npc, reader, ver) почему-то уходит в nil. и при сравнении:

	if ver >= 7 then
		flag = reader:r_stringZ()
	else
		flag = tostring(reader:r_s16())
	end

 даёт такой вылет. Я, конечно, сделал ver = 8, чтобы избавиться от вылета, однако это ведь не решение. 

God save Hatsune Miku!

Ссылка на комментарий
1 час назад, Labadal сказал:

Переменная ver в функции function load(npc, reader, ver) почему-то уходит в nil

См. строку 342 в xr_motivator.script (патч 1.0006).

Мало заменить функцию из одного патча функцией из другого, надо ещё понимать, что ты делаешь. Если число аргументов увеличилось, откуда взяться значению добавленного аргумента? Только из места вызова самой функции, иначе будет пресловутый nil.

  • Нравится 1
  • Согласен 1
Ссылка на комментарий
1 час назад, Labadal сказал:

это ведь не решение

У тебя стоит какой-то мод, предназначенный для 4 патча, а движок - 6 патча. Отсюда и все проблемы с зависанием нпс, и вот эта трабла с диалог_менеджером тоже.

  • Спасибо 1
  • Нравится 1
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@naxac если говорить в целом, игра была полностью под 1.0006 и всё работало. Случилась кое какая проблема (та проблема ранее, с безлоговым вылетом), я грешным делом подумал, что она из-за скриптов, почистил скрипты и недостающие (в основном xr_, _manager) взял из другой геймдаты, видимо из 1.0004. Сейчас попробую закинуть их из 1.0006. Посмотрим.

Да, дело в этом. в Xr_manager на 340 строке у меня - dialog_manager.load(self.object, reader), а в 1.0006 dialog_manager.load(self.object, reader, self.npc_script_version)

God save Hatsune Miku!

Ссылка на комментарий
02.08.2024 в 16:51, Labadal сказал:
local task_status = db.actor:get_task_state("тут пишешь id квеста", 0) -- id квеста из <game_task id="id квеста">

if task_status == 0 then
    -- Действия, если задание провалено
elseif task_status == 2 then
    -- Действия, если задание выполнено
elseif task_status == 1 then
    -- Действия, если задание активно
elseif task_status == -1 then
    -- Действия, если задания нет ни в проваленных, ни в выполненных, ни в активных
end

Не работает проверка на взятый квест почему-то...

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

@Капрал Хикс Попробуй в лог вывести что выводится в task_status.
 

То бишь:

local task_status = db.actor:get_task_state("тут пишешь id квеста", 0)
get_console():execute(task_status)

Дальше посмотрим.

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

God save Hatsune Miku!

Ссылка на комментарий
19 часов назад, Капрал Хикс сказал:
if task_status == 0 then

В lua_help есть такой класс:

C++ class task {

    const completed = 2;
    const fail = 0;
    const in_progress = 1;
    const task_dummy = -1;

};

Из названий констант, думаю, понятно, какая что значит.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@naxac Да я-то ему уже подробно расписал, другое дело интересно почему не работает. 

Такой вопросик интересный, возможно дело в логике, хотя её не трогал. Суть вот в чём, командир блокпоста с кордона, раньше при спавне всегда шёл к себе в комнату, на свои координаты, а сейчас почему-то при спавне сначала уходит к бункеру сидоровича, садится там возле забора, достаёт колбасу, исчезает, появляется на блокпосту и идёт на своё место. (если ранить в процессе ухода с блокпоста, и отбежать с глаз долой, то как успокоится идет на свои координаты) Вижу такое впервые.

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

God save Hatsune Miku!

Ссылка на комментарий
03.08.2024 в 02:19, ted.80 сказал:

последняя строчка    eat_portions_num = -1  обозначает что предмет можно есть бесконечно 

он не пропадает из инвентаря и спавнить заново не нужно - пользуйся

Надо ж, не знал, впервые слышу

  • Полезно 1

Сталкер - наше всё!

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

@Labadal , добавил строчку с выводом в лог, получил в консоли красным такое при заходе в спейс-рестриктор:

! Unknown command:   -1

Вылета нет.

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

@Капрал Хикс Так у тебя всё работает. -1 значит, что задание у тебя не взято.  

local task_status = db.actor:get_task_state("тут пишешь id квеста", 0) -- id квеста из <game_task id="id квеста">

if task_status == 0 then
    -- Действия, если задание провалено
elseif task_status == 2 then
    -- Действия, если задание выполнено
elseif task_status == 1 then
    -- Действия, если задание активно
elseif task_status == -1 then
    -- Действия, если задания нет ни в проваленных, ни в выполненных, ни в активных (твой случай)
end

 

Изменено пользователем Labadal
  • Нравится 1

God save Hatsune Miku!

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

@Labadal , очень странно... Буду перепроверять все названия, может где-то опечатка.

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

Разобрался... Работает, но есть нюанс. Корректно проверяется название взятого квеста из файла game_tasks_by_vendor.xml, например eliminate_lager_trader. Т.е., как я понимаю, проверяется наличие взятого у квестодателя любого квеста данного типа. Если подставить название конкретного квеста из task_manager.ltx, например tm_eliminate_camp_1, то проверка не срабатывает.

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

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

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

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

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

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

Войти

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

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

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