Malandrinus
Жители-
Число публикаций
1 930 -
Регистрация
-
Последнее посещение
-
Дней в топе
13 -
AMKoin
160 [Подарить AMKoin]
Весь контент пользователя Malandrinus
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Monnoroch, непись стоит там, откуда не добраться по сетке до пути -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
npc:alive() npc - клиентский объект (game_object) -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Трупы оживить невозможно. Можно убрать труп и заспавнить вместо него живого непися. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Kirag, вся логика вроде как парсится в файле xr_logic.script. А там как раз и прописаны файлы xr_conditions.script и xr_effects.script. Я бы просто создал в этих файлах псевдонимы функций, вынесенных в другие файлы. Типа такого fun = another_file.fun -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Может кому-то пригодится... В качестве альтернативы вывода в лог можно использовать перенаправление консольного вывода в текстовый файл. В этом случае работает функция Lua print(). Вывод буферизированный, способа флушить его я не нашёл (т.е. если движок крашнется, то часть потеряется). Зато можно выводить произвольно форматированный текст с пробелами, табуляциями, переносами строки и т.п. -
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Изменения в скриптах вступают в силу после перезагрузки уровня (скрипты грузятся заново). Поскольку переход на новый уровень реализован фактически через механизм сохранения/загрузки, то к тому-же эффекту приводит смена уровня. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
npc:accessible(vertex) кажется так -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
mangust, -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Я просто с трудом представляю, как можно сделать мало-мальски похожую на правду анимацию скелета из нескольких десятков костей. Ну можно так можно. Но тогда и сталкер не сможет на это место встать. Упрётся лбом и будет "идти" на месте до бесконечности. И в этом случае, как я понимаю, не сможет сработать нужный эвалуатор "пришёл на место и можно садиться". Надо наверное, как-то помудрить с моделью стула. Сделать типа как у вертолёта оболочку проницаемую для всего. А как называется анимация? Я так думаю, проблема именно во взаимодействии с физическими объектами. А Сидор - это монстр со своим набором костей, анимация у него своя, и стул - часть геометрии уровня. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Сяк, я вижу здесь одну задачу и одну проблему. задача - это сделать анимации "сидеть на стуле", "встать со стула", "сесть на стул". Решаемо наверное, но ведь анимации делают методом съёмки живых актёров. На коленке не сделаешь. Проблема - это как заставить сталкера прийти туда, где стоит стул. Я так думаю, если сделать стул частью геометрии уровня, то можно под стулом сделать вертекс, и тогда это получится. А вот если это будет физический объект, то сталкер будет отталкивать его при приближении к нему. В общем гемор нехилый. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
dan, между "stalker" и у примеру твоим "my_trader" принципиальной разницы нет. Всё это секции, которые находятся в system.ltx. С секцией "stalker" можно заспавнить и скриптом, а секцию "my_trader" можно прописать кому-то для спавна через all.spawn. Мне не понятно другое, почему у 4ufak спавнится с одной секцией, а потом при проверке секция другая. По-моему, он просто другого сталкера проверяет. Я проверил по-другому. Записал как и у 4ufak проверку в коллбек биндера на использование. По-любому секция выводится та, с которой был создан. Для меня вопрос закрыт. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Как он может выдать "stalker", если спавнил "bar_dolg_respawn_1"? Может там попросту не тот непись проверяется? Насколько я знаю, "stalker" - это секция для всех или почти всех неписей из all.spawn. На всякий случай. Вот мой тестовый код: if not db.test_st then local actor_gvid = db.actor:game_vertex_id() local actor_lvid = db.actor:level_vertex_id() local actor_pos = db.actor:position() db.test_st = alife():create("bar_dolg_respawn_1", actor_pos, actor_lvid, actor_gvid) else local con = get_console() local st = level.object_by_id(db.test_st.id) con:execute(db.test_st:section_name()) con:execute(st:section()) con:execute(db.test_st:profile_name()) con:execute(st:profile_name()) end Его надо выполнить подряд два раза. При первом выполнении заспавнится долговец (слегка подвинет ГГ), при втором - для него выведется информация. У меня чётко выводится та секция, которую спавнил. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Заспавнил этого долговца. Что для серверного объекта snpc:section_name(), что для клиентского cnpc:section() выдаёт одинаково "bar_dolg_respawn_1". Откуда у тебя "stalker" взялся непонятно. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
вылетает, если делать переименование до загрузки игры. Если загрузиться и сделать переименование, то вылета нет. Почему так, без понятия. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Спецификой Lua является то, что сам по себе он не предоставляет почти ничего, только даёт доступ к функциям хост-приложения. Были бы экспортированы, к примеру, функции для создания и синхронизации потоков - были бы потоки. А в самом Lua искать их бессмысленно =) -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
В смысле? Поставь цикл длинный, вот и тормоз будет. Если имеешь в виду поток в суспенд отправить, то этого нет. Функции луа вызываются как подпрограммы движка. Тормозишь функцию луа - тормозишь по любому всю игру. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Вношу поправку. В папке сейвов тоже работает. Надо использовать корень $game_saves$ Да может и в остальных папках тоже работает. Просто если не работает, то нифига не говорит, поэтому сложно ошибки определять. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
local f1 = getFS():update_path("$game_data$","ai\\test\\a.txt") local f2 = getFS():update_path("$game_data$","ai\\test\\a1.txt") local overwrite_existing_files = true local res = getFS():file_rename(f1, f2, overwrite_existing_files) Работает. Файл gamedata\ai\test\a.txt. Кроме $game_data$ есть и ещё пути. Их список можно посмотреть в fs.ltx, хотя вроде как работают не все. "Левые" файлы и каталоги мне удалось сделать и переименовать только в пределах папки gamedata. Дополнение: Файл должен существовать до запуска игры (до запуска программы, а не загрузки уровня). После уже игра отслеживает изменение имени, но если файл появится во время игры, то игра его проигнорирует. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Это означает, что где-то стоит вызов: printf("%s", <второй аргумент - строка>) и этот второй аргумент либо равен nil либо просто отсутствует. Вот где этот вызов стоит, там и надо копать. Выяснять, почему там не передаётся строка. Мест таких наверняка не одно, но это уже зацепка. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
в районе 20-й строки было бы достаточно. Вот этот фрагмент: function printf(fmt,...) log(string.format(fmt,...)) -- это 20-я строка end Видим, что ошибка происходит в функции format. У неё должны быть дополнительные аргументы. Но сказать какие, можно только узнав строку fmt. Попробуй вставить туда дополнительную строчку: function printf(fmt,...) get_console():execute(string.gsub(fmt, " ", "_")) log(string.format(fmt,...)) -- это 20-я строка end Когда будет вылет по крайней мере узнаешь, что выводилось. Может сможешь понять, откуда была вызвана функция. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Может быть всё, что угодно. Что такое битый сейв? Это когда в нетпакет при сохранении (а больше ничего не сохраняется) попадает мусор. Это может случиться по нескольким причинам: - неверный алгоритм. Пишется не то, что читается. Таких ситуаций может быть море и как-то их классифицировать сложно. - переполнение буфера. Записал слишком много, вышел за пределы нетпакета и наехал на чужие структуры данных. Хотя это обычно вызывает немедленные вылеты, но может вызвать и отложенный вылет. - более тонкие причины могут быть связаны с асинхронными операциями. Движок, который работает в несколько потоков, при некорректной их синхронизации может одновременно что-то записывать и оттуда же что-то читать. Вполне возможно, что квиксейвы портятся по этой причине. Если выходишь в меню, то все процессы останавливаются. При этом сохранение происходит корректно. А если сохраняешься на ходу, то в процессе сохранения ещё что-то работает и меняет какие-то данные. В итоге выходит некое противоречие в данных, которое потом и сказывается в виде ошибок и вылетов. Это всё разумеется из области предположений. Читай внимательней. Там про левел и гейм вертексы в самых первых строках говорится. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Какую статью ты имеешь в виду? Об этом везде пишут в первую очередь. alife():create(section, pos, lvid, gvid) -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
_g.script содержит много общих функций, на которые ссылаются из других файлов. Примерно в районе 20-й строки должна быть функция вывода в лог. Видимо она у тебя где-то вызывается и её передаются неправильные аргументы. Хоть бы привёл кусок своего _g.script, а то гадай, что у тебя там в 20-й строке. Как минимум, неправильно задаются координаты спавна. Для спавна надо указывать координаты и соответствующие этим координатам gvid и lvid. Облёт камерой тебе в этом не поможет. Надо побегать самому и в точках спавна снять эти параметры. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
На самом деле нет. Кстати, рекомендую использовать для распаковки плагины для Total Commandera (см. мою подпись). Отдельно взятый файл искать существенно удобнее.
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды