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

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

@CiberZold ой, я не такой извращенец, чтоб в блокноте кодить)) Саблайм 3)) Ну или нотпад на крайний случай)

@naxac@CiberZold 

Смотрите, какая забавная вещь получается. Взял сейчас чистый ТЧ. Запустил - играбельно. Распаковал кордон, залез, внес кое-какие правки, для теста. сделал build (без ошибок), сделал xrAi с ключами -f -g -m -s, тоже без ошибок. Запускаю игру - опять получаю безлоговый вылет, сам лог файл так же заканчивается этим: 

Сервер: Старт...
! Unknown command:  start_game_callback_called

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

God save Hatsune Miku!

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

@CiberZold Unknown command - обычно пишет, когда ты записи в лог отправляешь. В данном случае "start_game_callback_called" отправляется функцией:

 

function start_game_callback()
	printf	("start_game_callback called") ←←← вот эта вот строка
	task_manager.clear_task_manager()
	treasure_manager.clear_treasure_manager()
	xr_sound.clear_all_sound_object()
	dialog_manager.fill_phrase_table()	
end


 

@Купер для ясности - распаковал ОРИГИНАЛЬНУЮ локацию, добавил на карту ОДИН ЭКЗОСКЕЛЕТ, сбилдил заново и собрал с помощью xrAI. После чего ловлю безлоговый вылет.  Не думаю, что это правка как-то сильно повлияла на происходящее. 

God save Hatsune Miku!

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

собрал с помощью xrAI

значит коряво собрал локацию, логику смотри - по твоим словам - единственная манипуляция распаковал Кордон (кордон рабочий ), собрал обратно - вылет (значит коряво собрал, или ошибка в тексте сборщика или сам сборщик косячный).

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

@Labadal я же говорю, ты сам может накосячил в тексте, я когда впервые разбирал спавн ACDC, я правя текстовые файлы спавна, то ли пропустил номер секции спавна , они шли не подряд, сборщиком собрал спавн ,не было никаких ошибок при сборке - всё собралось, но игра вылетала при загрузке спавна, потом всё перепроверил и пришлось вручную проверять чтоб не было пропуском номеров секций, ведь это же не SDK  ,который тебе сам всё корректно проставит, при компиляции, а сторонний сборщик, который переводит бинарные файлы в текстовые и обратно, тут нельзя самому юзеру нарушать структуру исходников.

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

В каком тексте я накосячил? Причем тут вообще ACDC??

при том что это был пример, проблема у тебя из-за твоих косяков, а мы по минимуму инфы должны гадать что ты там косячишь:)

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

@Labadal попробуй запустить на OGSR-Engine. Так у тебя должен появиться нормальный лог. Без него так и будешь дальше тыкаться как слепой котенок.

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

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

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

1. Прошлый ответ не подошел или был пропущен?

https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/616/#comment-1480857

 

2. Статьи выдаются только через инфо-поршни – их и проверять.

2.1. Статья не является обязательной частью описания квеста.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
31.07.2024 в 13:39, Labadal сказал:

Запускаю игру - опять получаю безлоговый вылет

Была у меня когда-то давно такая история при сборке спавна с помощью xrAI. Проблема, насколько я понял тогда, в самом xrAI. Есть, вроде как, какая-то правленая версия, но я тогда её так и не нашёл - перешел на АСДС.

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

naxac.gif

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

@naxac всё оказалось намного проще, нужно было просто скомпилировать локу с помощью xrLC а потом через xrAI графы и спавн собирать))

Такой еще вопросик:
ловлю безлоговый вылет при разговоре с НПС, зачастую в момент когда отправлю неписю предпоследнюю фразу диалога, за которой он должен ответить последней. Первым делом тоже подумал, что отсутствует функция, которая выдаётся после этой фразы, но нет, вылетает даже  в пустых от различных функций диалоги. Есть моменты, когда вылатает при попытке поговорить. Есть моменты, когда нпс тупо стоит на месте спавна и с ним не поговорить, однако вдупляется после сейвлоада. в логфайле последней записью почти всегда это: 

*INFO*:_npc='single_player'_id='ui_talk_hide'

в некоторых случаях пишет это: *INFO*:_npc='single_player'_id='ид_нпс_с_которым_разговор'

God save Hatsune Miku!

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

Есть моменты, когда нпс тупо стоит на месте спавна и с ним не поговорить, однако вдупляется после сейвлоада

Снова проблемы с повисающей логикой. Разбираться с причиной, а не последствиями.

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

@Купер оказалось, что это не моя проблема. в оригинале этот же нпс так же "подвисает" (в деревне новичков). Понимаю, что нужно разбираться с причиной, однако её бы найти сначала.

God save Hatsune Miku!

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

@Norman Eisenherz , я к стыду своему так и не понял, как сделать привязку согласно совету. Не хватает знаний.

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

@Капрал Хикс Вообще не понятно зачем это нужно? Но даже если и так, в самом деле, задания просто так не выдаются, - поршнем зачастую. Вот и отслеживай этот поршень, если он у тебя есть, и выдавай другой, например. Можешь что-то типа этого: 

local function name(actor, info_pairs)
    for _, pair in ipairs(info_pairs) do
        if actor:has_info(pair.check) then
            actor:give_info_portion(pair.give)
            break
        end
    end
end

local info_pairs = {
    {check = "поршень, по которому выдаётся первый квест", give = "инфопоршень, который выдаётся, если он есть"},
    {check = "поршень, по которому выдаётся второй квест", give = "инфопоршень, который выдаётся, если он есть"},
    {check = "поршень, по которому выдаётся третий квест", give = "инфопоршень, который выдаётся, если он есть"}
}

check_and_give_info(db.actor, info_pairs)

это лишь примерная конструкция, я бы даже сказал псевдокод. 

Ну, или стандартным: 

if db.actor:has_info("поршень, по которому выдаётся первый квест") then 
   db.actor:give_info_portion("инфопоршень, который выдаётся, если он есть")
elseif db.actor:has_info("поршень, по которому выдаётся второй квест") then 
   db.actor:give_info_portion("инфопоршень, который выдаётся, если он есть")
elseif db.actor:has_info("поршень, по которому выдаётся третий квест") then 
   db.actor:give_info_portion("инфопоршень, который выдаётся, если он есть")


 

@Капрал Хикс кстати, есть ещё такой вариант, он отлавливает состояние квеста, попробуй его:

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!

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

кстати, есть ещё такой вариант, он отлавливает состояние квеста, попробуй его:

О, пожалуй его и буду пробовать. Суть такой странной пожелалки вот в чём: я создал тип квеста на основе стандартного однотипного, где вместо поиска предмета задание засчитывается при выдаче определённого инфопоршня. Т.е. в таргете стоит не хвост собаки получить например, а имя инфопоршня.

Нужный инфопоршень конкретного 1 квеста на пробу пера выдаётся при наличии 4-х, которые выдаются при заходе ГГ в 4 спейс-рестриктора. Так вот, мне нужно в логике спейс-рестриктора добавить условие-заглушку, чтобы инфопоршень выдавался только при наличии активного квеста. Иначе, если игрок раньше времени придёт туда, квест как нужно работать не будет.

Разумеется, всё это можно было бы сделать гораздо проще через отдельно созданный квест, где бы в диалоге на его взятие выдавался бы поршень, который можно уже отследить, но захотелось мне вот ещё модифицировать стандартный task_manager, после того как я добавил туда возможность выдачи квестов на поиск предметов на любом классе.

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

Для привязки достаточно обернуть указанные действия в функцию и вызывать ее по необходимости – можно из логики того же рестриктора:

on_actor_inside = … %=info_check%

 

[xr_effects.script]

function info_check()

local tm = task_manager.get_random_task()
local task = tm.task_info[type_parent]
if task.status = "selected" then 

end

 

Требуется только подставить заголовок нужной задачи (artefact_wolf какой-нибудь) и конечное действие.

  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

Будем делать, за советы спасибо!

Ещё, други, в Зове Припяти можно при клике на найденные КПК в инвентаре слушать звуковое сообщение, которое выдаётся при его нахождении. Кто-нибудь в ТЧ такое перетаскивал?

Ссылка на комментарий
2 часа назад, Капрал Хикс сказал:

в Зове Припяти можно при клике на найденные КПК в инвентаре слушать звуковое сообщение,

ЕМНИП - сообщение воспроизводится при поднятии КПК, а при наведении курсора - во всплывающем окошке появляется текст,

подобное в ТЧ было в нычке стрелка при поднятии флешки, вот тут память меня подводит или в AMK нашем и родном :hm:

или в НарСоль, ну или маразм меня подводит :russian_ru:

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

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

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

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

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

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

Войти

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

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

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