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

Kirgudu

Жители
  • Число публикаций

    1 629
  • Регистрация

  • Последнее посещение

  • Дней в топе

    27
  • AMKoin

    15,150 [Подарить AMKoin]

Весь контент пользователя Kirgudu

  1. Kirgudu

    Инструмент

    Было бы, конечно, здорово получить обратную связь от тех, кто уже скачал Инструмент и опробовал его в игре. Буду благодарен не только сообщениям о багах (надеюсь, таковых будет минимум), но и предложениям по дальнейшему улучшению, внедрению новых фич. В любом случае бросать Инструмент в обозримом будущем я пока не собираюсь. Есть пара новых идей, озвучивать которые пока рановато, поскольку их реализация вполне может натолкнуться на то, что я не смогу это сделать. Кроме того, не исключено, что рано или поздно появятся версии, адаптированные для ТЧ и ЗП, или же общий универсальный вариант на три игры сразу. Посмотрим. Всё будет зависеть от качества и востребованности того, что уже сейчас сделано для ЧН.
  2. ИНСТРУМЕНТ Авторы: @Kirgudu, @monk Краткое описание: реинкарнация Повелителя зоны Платформа: Тени Чернобыля (1.0006 и 1.0004), OGSR x64 v2.1.416 (+), Чистое небо (1.5.10), Зов Припяти (1.6.02) Ссылка на общее хранилище: https://disk.yandex.ru/d/iK_zA5HmIreu-g Дата сборки: 2024-10-31
  3. Kirgudu

    Скриптование

    @Pavel_2000 в том же скрипте, посредством которого ты отправляешь сообщение, есть функция получения идентификатора наименования предмета через его секцию: get_inv_name(section). Пример: local obj = db.actor:object("af_medusa") if obj and not db.actor:has_info("medusa") then db.actor:give_info_portion("medusa") local news_text = game.translate_string("st_find_af")..": "..game.translate_string(news_manager.get_inv_name(obj:section())) db.actor:give_game_news(game.translate_string("st_tip"), news_text, "ui_inGame2_D_gonets_pravosudiya", 0, 3000, 0) end
  4. Ну тогда далеко ходить не надо, есть и обратный пример: cм. функцию death_manager.keep_item, вызываемую из iterate_inventory, и в ней alife():release(). Я подумал, есть запреты, связанные с высвобождением ресурсов на уровне движка, но пока это не подтверждается. Потом при случае пороюсь в плюсах.
  5. Соавтор актуального кода далеко не весь код писал сам, часто за неимением времени просто вставлял найденную главным автором мода функцию как есть. Так что не определю. Да и вылет лично у меня не повторяется - только что успешно облучил для проверки все три типа еды в инвентаре без каких бы то ни было изменений кода, вылета не было. @WinCap чем обусловлена рекомендация? Я, конечно, и сам могу поискать в движке, но трудно и долго, а ответ, возможно, уже есть готовый.
  6. @!Stars! Я таких не знаю. Специалистов по ЧН мало, регулярно заходящих на форум ещё меньше, а тех, кто захочет или сможет поделиться знаниями, раз, два и обчёлся. От меня ответа ждать не стоит, всегда интересовался больше технической стороной дела - читай, скриптами - в конфиги же предпочитаю не лезть, хоть и могу. Но если вдруг у меня возникло бы такое желание, то пошёл изучать то, что сделано до меня, в том числе и в оригинале. Поверь, инфы там вполне достаточно. https://stalkerin.gameru.net/wiki/ - здесь ещё можно поискать, хотя почти уверен, что по ЧН мало что найдётся.
  7. @!Stars! не могу сказать точно. С Faction Commander никогда не то что не работал, но и не использовал в игре, не хотелось и вряд ли захочется. Проблему такую в ОГСМ, честно говоря, не особо помню, хотя в последней версии (1.8 CE) лично исправлял много ошибок симуляции. Разве что вспоминается, что для монстров, в отличие от полноценных группировок, получение и возврат секции спавна был необязателен - и то, что я сейчас вижу (но не могу с ходу объяснить), это вроде бы подтверждает... Если всё так, достаточно в скрипте sim_faction.script в местах, предшествующих указанному вылету (там их несколько похожих), добавить проверку на то, что расчёт делается не для монстров. См. строку 299 этого скрипта из мода ОГСМ и похожие выше, при сравнении со скриптом из оригинала (if not self.player_name == "monster" and ...). Но я не поручусь, что данное изменение - единственное требующееся, слишком давно вносил эти правки. Надо пробовать.
  8. @Balavnik именно в тот лог и выводит. А вообще, было предложено 4 варианта (3 без модифицированных движков), но вопрос почему-то возник только по одному из них. Остальные, видимо, не пробовал? В конце концов, если приспичило использовать именно printf, но штатный вариант по каким-то причинам не срабатывает, можно сделать переопределение самым топорным и древним вариантом, на который уже указывал @Zander_driver. local console printf = function(fmt,...) if not console then console = get_console() end console:execute("load ~:"..string.format(fmt,...)) end И добавить это в самый конец _g.script.
  9. @!Stars! выглядит избыточно сложно - с одной стороны. А с другой - цели в секциях expansion конфигов группировок (из первого вопроса было непонятно, что речь идёт именно о них, есть ведь и оторванные от войны группировок задания на захват смартов) выдаются автоматически симуляцией, и врезаться в них не так просто. Да, можно попробовать сделать именно так, только подумать, что именно прописать в логике смарта, какую проверку сделать до того, как запустить функцию. Более короткая альтернатива - врезаться с условием куда-нибудь в sim_faction_brain_human.faction_brain_human:init_player_task и сделать всё на скриптовом уровне. Но тут уровень владения скриптами в целом и скриптами/логикой симуляции ВГ в частности потребуется изрядный. Войну группировок легко поломать. Так да, всё вполне возможно.
  10. @Colder 1. форматируй код так, чтобы закрывающий элемент был на одном уровне с открывающим. Трудновато читать твои примеры взглядом, лишний раз это делать не хочется. 2. Где вызывается функция cashback()? В какой момент? Ни малейших следов вызова не представлено, опять с тобой приходится играть в гадалки. 3. По существу: при первой итерации у тебя local actor_last_money = 0, поэтому ты сваливаешься в условие "if cashback < 1 then" со всеми вытекающими.
  11. @!Stars! есть штатная для ЧН функция установки отношения группировки к игроку, вызывается из кучи мест в логике, например: %=set_faction_community_to_actor(stalker:enemy)% Разумеется, никто не запрещает при необходимости вызвать её и из скрипта: xr_effects.set_faction_community_to_actor(nil, nil, { "stalker", "enemy" })
  12. @Pir@t@s дописать и использовать свои функции, например что-то вроде такого:
  13. Kirgudu

    STALKER CS: Final stroke 0.9

    @Купер, не торопись. Мы сейчас исправляем критические и не очень баги, найденные разными игроками за прошедшие после публикации 2 недели. Не исключено, что потом придётся "переактуализировать" и "перепереактуализировать". Так-то я потом могу это сделать, когда и если а) автор найдёт время обновить данную тему (после грядущего исправления багов) и б) ты дашь конкретный список желаемых дополнений со ссылками на устаревшие исходники - у меня их нет, не использовал. На второй вопрос ответить не могу.
  14. Kirgudu

    Скриптование

    @Алекс Мутный поищи Script Syntax Checker, возможно где-то рабочие ссылки остались. Или воспользуйся Lua плагином к Notepad++ от Charsi: https://disk.yandex.ru/d/UIMIb8_8vZtMD У тебя явно ошибка синтаксиса в скрипте xr_motivator образовалась после слияния, раз он не загружается. Может скобку какую не закрыл или лишний end вставил. Upd: нашёлся какой-то архив с чекером. https://disk.yandex.ru/d/TeUbiQ0sGjqW-w
  15. Масса, емнип, есть только для физических объектов в state части их пакета.
  16. Вот как раз чтобы не писать руками в каждом необходимом случае. Один раз поправил нужные биндеры - и затем хоть сотню разных однотипных объектов в разных местах кода и с разными условиями перемещай, коллбэк сделает всё за тебя. Не знаю. Мне это кажется достаточно удобным. Зависит от требований к масштабируемости.
  17. @Zander_driver, оговорился. Не будет работать запись в абстрактную часть пакета, которая возможна только при выходе в онлайн. А это - STATE_Write.
  18. Ну конечно. Иначе как раз переключение оффлайн-онлайн работать не будет. А class_registrator в большинстве случаев нужен только затем, чтобы посмотреть, какой биндер и где искать. Потому что вызов данных команд в паре приводит к исходному положению дел. Ведь даже в комментарии поста сказано, что первая - сброс флага, тогда как вторая - поднятие оного. В итоге флаг привязки к сетке после парного выполнения остаётся установленным. Аптечки... честно говоря, не помню, есть ли у них биндер в принципе.
  19. data.object_flags = bit_and(data.object_flags, bit_not(128)) -- сброс UsedAI_Locations Полный список флагов можно посмотреть в том же m_netpk в конце файла, где "_G.object_flags = ..." и далее. Или так, наверное. Только что-то одно.
  20. @div, ну тут одно из двух: либо дьявол в неучтённых мелочах, либо, как мы раньше писали, для NPC это не сработает. Изучать и экспериментировать.
  21. @div готовый тестовый пример с вентилятором: https://disk.yandex.ru/d/T2v4KZ0WfBOp4g Внутри сейвы у Сидоровича и в подвале деревни после переноса (сделаны на Steam версии ТЧ, поэтому скорее всего не загрузятся), скриншоты для визуального подтверждения. Для лёгкости понимания вставок упаковал 2 папки: оригинальную из Steam-версии и уже с изменениями. WinMerge или аналог покажет разницу между изменёнными файлами. Не мудрствуя лукаво, повесил запуск телепорта вентилятора на апдейт актора, через 10 секунд после первого апдейта (чтобы успеть сбросить начальный ролик и увидеть телепорт глазами). Дальше самостоятельно, код писать больше не буду. Имхо, технических сведений вполне достаточно, может просто не хватило внимательности при реализации.
  22. Тоже не знаю. Убирал флаги перехода в оффлайн у БТР, сбрасывал какие-то флаги у физ. объектов - проблем не было. НПС спавнить в воздухе в голову не приходило.
  23. Может и так, не проверял. Правда, внутри самого модуля она в шапке не упомянута. @Zander_driver, кстати, там level.add_call под капотом, см. do_switchings и execute_switchings. Так что очень может быть, что заработает. Не нужно. При изменении абстрактной части нет-пакета модуль проделывает необходимые манипуляции автоматически, как и написано в readme. Если интересно, см. упомянутые выше функции модуля do_switchings и execute_switchings, там всё уже есть. Для NPC - скорее se_stalker.script Не уверен, что подействует на живой объект, но можно попробовать при спавне НПС снять флаг use_ai_locations = 128 (привязка к сетке). Делается это в том же модуле m_netpk, примеры есть на форуме, например этот из свежих: В общем, дальше надо экспериментировать.
  24. @div, нет, я писал про пункты 1), 2) и 3) чуть пониже процитированной строки. Но это действительно может быть совершенно не важно. Речь-то, как справедливо тут заметили, о версии 1.0004, а я на это не обратил внимания. Модуль Артоса предназначен для 1.0006.
  25. @div, в readme_m_netpk.txt есть раздел "Про специальный нет-пакет 'abstract'". Инструкции из него выполнены?
×
×
  • Создать...