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

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

Всем привет!

Имею такой код:

Скрытый текст

function actor_on_update(status)
    local tm = task_manager.get_random_task()
    local active = tm.active_task_by_type
    for k, task_id in pairs(active) do
    local task_status = tm.task_info[task_id].status
        if task_status == "completed" then --// Если завершили таск
            ----
        end
    end
end

Хочу сделать что бы при взятии задания на убиство нпс задание завершалось автоматически а не бежать обратно за наградой. Как завершить принудительно выполненый таск?


Подарки

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

    Никто случайно не вникал (и соответственно) не правил работу стейт менеджера?

    Проблема в том, что НПС отыгрывает анимации лишь с into, a out и idle прекрасно игнорирует.

    Проблема касается ТЧ и ЧН, как обстоят дела в ЗП - не знаю (но судя по одному скриншоту где НПС "ищет" артефакты в аномалии, то могу предложить что там могли исправить).

    ищу человека, который смог бы заняться разработкой погоды на OGSR.
    кто может помочь - пишите в ЛС.

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

    Добрый день.

    Как у нпц поменять имя? Для серверного объекта способ нашёл:

    local sobj = alife():object( id )	
    local pk = m_netpk.get(sobj, 1)
    local data = pk:get()
    local name = data.checked_characters
    --ВОТ ТУТ МЕНЯЕМ
    data.checked_characters = "Джек Потрошитель"
    pk:set(data)

    А как тоже самое сделать для клиентского объекта?

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

    Для серверного объекта способ нашёл

    Не очень понимаю, как такое может сработать, ведь свойства checked_characters нет в оригинальном модуле Артоса для работы с нет-пакетами (который тут, судя по всему, и используется).

    3 часа назад, phalcor сказал:

    А как тоже самое сделать для клиентского объекта

    Воспользоваться аналогичным кодом, но поменять свойство character_name.

    Это, однако, не поможет, поскольку имя персонажа в журнале, диалогах и при наведении курсора берётся из профиля.

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

    Имхо, без редактирования движка на все 100 задачу не выполнить.

    • Спасибо 1
    • Согласен 1
    Ссылка на комментарий
    19 минут назад, Kirgudu сказал:

    ведь свойства checked_characters нет в оригинальном модуле Артоса

    У меня от ОП 2.2, там есть, и работает.

    20 минут назад, Kirgudu сказал:

    Воспользоваться аналогичным кодом, но поменять свойство character_name.

    Не соображу, как именно это провернуть с клиентским объектом? Если можно, поясни в двух словах.

    p.s. Я пока пытаюсь схитрить - увожу нпц в оффлайн, меняю имя и снова вывожу в онлайн, но что-то не все хотят уходить в оффлайн, при том, что sobj.can_switch_offline = true. Видимо, есть ещё какой-то ограничитель.

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

    @phalcor можно попробовать воспользоваться встроенной в модуль функцией автоматического перевода объекта онлайн-оффлайн-онлайн:

    m_netpk.do_switchings(id)

    Она в публичный интерфейс автором не выведена, поскольку предназначена в первую очередь для изменения абстрактной части из коллбэка, но дёрнуть её напрямую ничто не мешает.

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

    Здрасьте.

     

    При чтении одного и того же текстового файла (что-нибудь вроде "123abc") через getFS():r_open(path):r_stringZ() к видимым знакам добавляются какие-то случайные знаки, часто со сломанной кодировкой.
    При обозначении каждой строки как [секции] таких знаков обнаруживается меньше.

    Иногда знаки складываются во что-то осмысленное, вроде Vks_aim0, reload_9 или o_7_run_1 – такое впечатление, что ловятся фрагменты загруженных в память конфигов.

     

    Вроде попадалось на просторах форума упоминание о такой проблеме, но кто автор и что именно говорилось в том посте, не помню.
    Как эти знаки правильно исключить из читаемого текста?

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

    Шпаргалка

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

    @Norman Eisenherz

    Функция r_stringZ читает строку до первого символа с кодом 0.

    Поскольку таких символов в "обычном" текстовом файле быть не может, то функция читает из памяти всё, что попадется до первого символа 0.

     

    В качестве решения проблемы могу предложить оформить нужный файл как ini-файл и открывать, используя функцию ini_file(filename).

    • Нравится 2

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

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

    Получается возвращение к вопросу "Как прочитать конфиг построчно, если в нем нет общей секции [l i s t]".

    Видимо, для простых текстов остается только жестко ограничивать шаблон поиска…

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

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

    Шпаргалка

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

    [ТЧ 1.0006]

    Пара вопросов по классу FS:

    1. В папке […\STALKER Shadow of Chernobyl\bin\…] читается только "корень" – папки [BattleEye\], [dedicated\] и файлы в них не обнаруживаются ни проверкой fs:exist(…), ни построением списка. Длина пути явно меньше 256 знаков – до папки [bin\] всего 60. Чем вызван "запрет" обработки этих папок? 

    2. При построении расширенного списка file_list_open_ex($name$, mask, "folder\\*") часть файлов пропускается. Например, в [config\misc\] не обнаруживаются конфиги инвентарных предметов, квестов, тайников и торговли, а в [config\creatures\] – конфиг ГГ, защитных свойств брони и основной конфиг мутантов. В простом списке с текстовыми путями видны все файлы. В чем может быть причина?

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

    Шпаргалка

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

    Вопрос по скриптовому управлению перемещением живности. Работаю на ТЧ.

    Задаю экшн зверьку - action(obj,move(move.run_fwd,pos))

    В некоторых ситуациях монстр бежит по прямой, как мне и нужно. Но в некоторых - оббегает хрен знает зачем за тридевять земель. Даже когда точка в паре метров от него, описывает огромную такую "дугу", чтобы добежать до точки. Подскажите, где искать причину?

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

    где искать причину?

    Возможно на пол-пути находится рестриктор куда монстру нельзя заходить. Или просто дырка в АИ-сетке.

    • Полезно 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.

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

    Давно использую модули @Artos'а для работы с нет-пакетами. Проблем не было, пока не решил использовать таймеры (модуль m_timers) из того же комплекта. Всё отлично работает до загрузки сохранённого таймера. После сейв/лоад с таймера убегает прилично времени - визуально, таймер на худе становится короче на ~2 секунды в чистом ТЧ, на целых ~8 секунд в ТЧ ОГСР.

    Прикинул, что дело может быть в сохранении/загрузке данных и подключил хранилище (модуль se_store) оттуда же. Результат аналогичен. Чего я недоглядел такого, чего нет в гайде по подключению? В логе красочно указано, когда чекаю, что каждый подключенный модуль "SUCCESS". Или оставить идею с конкретно этими таймерами? Может, кто сталкивался, пните...

    • Полезно 1

    Здесь могла быть ваша реклама.


    Подарки

  • 3
  • 4
  • 2
  • 5
  • Ссылка на комментарий

    Может, дело в том, что часть времени съедается на загрузку игры? В ЗП когда прикручивал таймеры (простые, не от Артоса) к индикаторам расходников, пришлось вводить проверку значения счетчика до и после загрузки – поправка доходила до 10–12 секунд (в ТЧ на моем ПК теряется 5–6 секунд).

    • Согласен 2
    • Полезно 1

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

    Шпаргалка

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

    [ТЧ 1.0006]

    Мод по образцу "Мясника" со сбором трофеев без открывания инвентаря, запись состояния "тушка обыскана" в конец нетпакета мутанта:

    packet:w_bool(self.looted)

    self.looted = reader:r_bool()

     

    Результат: для кабанов, собак и плотей состояние успешно сохраняется и читается после перезагрузки, для псевдособак – нет, хотя состояние точно меняется: тушка становится неактивной после обыска, но после сейва и перезагрузки состояние переменной self.looted сбрасывается на дефолтное значение false.

     

    У псевдособак как-то иначе работает биндер?

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

    Шпаргалка

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

    Подставил единственный скрипт из этого мода: https://ap-pro.ru/forums/topic/1083-tch-butcher/ – состояние тушки псевдособаки не сохраняется.

     

    Взял чистый [bind_monster.script], добавил use_callback и одну логическую переменную:

    init__ – создать как false

    update – скрыть подсказку, если true

    use_callback – выдать как есть в сообщение + задать true

    save – сохранить

    load – прочитать

    Результат: тот же сбой на псевдособаке. Кто-нибудь может потестить у себя?

    https://drive.google.com/file/d/1vbfO2Y_Uf_a0hyt7Pm5tFlEbIbQ47ujx

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

    Шпаргалка

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

    Было дело, очень давно, правда, работал над скриптом с GUI-функциями и пришлось бросить - псевдо-собака! С работающим GUI-скриптом при атаке псевдо-собаки был стабильный безлоговоый вылет. И никаких скриптовых и любых других пересечений с псевдо-собакой ни в чём не было. И это было только если она атаковала. Если просто бродила или не работал скрипт - всё было ОК. Я предполагал, что был конфликт при выводе хитов на экран и какой-то конкретной GUI-функции. Но обойти так и не удалось, а без той функции скрипт не имел смысла.

    Хотя вряд-ли Вам это поможет.

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

    всё легко

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

    @Norman Eisenherz 

    Давно кто-то об этом писал, просто сохранил пост как ещё один баг для исправления:

    Скрытый текст

    Решил я сохранить некие данные в псторе мобов. Всё было хорошо пока я не вышел с уровня. Как только я ушёл и сразу вернулся, то обнаружил, что все мои данные благополучно потерялись. Стал смотреть в чём дело, оказалось что при переходе между уровнями, а так же при загрузке с автосейва, не вызывается функция load для байндереров мобов и неписей. Из-за чего весь их пстор обнуляется. Если учесть, что все параметры активной логики неписей и мобов хранятся именно в псторе, то его обнуление может неожиданным образом сказаться на их поведении. Например, многоэтапная логика сбросится в своё начало.

    Последовательность вызова функций binder-ов мобов и неписей.
    При загрузке обычного сейва:
    reload
    reinit
    load
    xr_logic.pstor_load_all
    mob_net_spawn
    При смене уровня:
    reload
    reinit
    mob_net_spawn

    Просматривая историю правок script_binder.cpp:

    Раньше было так:
    
    void CScriptBinder::Load			(LPCSTR section)
    {
    	inherited::Load			(section);
    }
    
    Забавно, но в день дурака (1.04.04) разрабы изменили на это:
    void CScriptBinder::Load			(LPCSTR section)
    {
    }

     

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

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